chromium/ios/chrome/browser/shared/coordinator/default_browser_promo/non_modal_default_browser_promo_scheduler_scene_agent.h

// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef IOS_CHROME_BROWSER_SHARED_COORDINATOR_DEFAULT_BROWSER_PROMO_NON_MODAL_DEFAULT_BROWSER_PROMO_SCHEDULER_SCENE_AGENT_H_
#define IOS_CHROME_BROWSER_SHARED_COORDINATOR_DEFAULT_BROWSER_PROMO_NON_MODAL_DEFAULT_BROWSER_PROMO_SCHEDULER_SCENE_AGENT_H_

#import "ios/chrome/browser/shared/coordinator/scene/observing_scene_state_agent.h"

// A scene-agent scheduler that determines when to show the non-modal default
// browser promo based on many sources of data.
@interface NonModalDefaultBrowserPromoSchedulerSceneAgent : ObservingSceneAgent

// Handles the user pasting in the omnibox and schedules a promo if necessary.
- (void)logUserPastedInOmnibox;

// Handles the user finishing a share and schedules a promo if necessary.
- (void)logUserFinishedActivityFlow;

// Handles the user launching the app via a first party scheme and schedules a
// promo if necessary.
- (void)logUserEnteredAppViaFirstPartyScheme;

// Handles the promo being dismissed, either through user action or timeout.
- (void)logPromoWasDismissed;

// Handles entering the tab grid, dismissing the promo.
- (void)logTabGridEntered;

// Handles presenting the popup menu, dismissing the promo.
- (void)logPopupMenuEntered;

// Handles the user performing the promo action.
- (void)logUserPerformedPromoAction;

// Handles the user manually dismissing the promo.
- (void)logUserDismissedPromo;

@end

#endif  // IOS_CHROME_BROWSER_SHARED_COORDINATOR_DEFAULT_BROWSER_PROMO_NON_MODAL_DEFAULT_BROWSER_PROMO_SCHEDULER_SCENE_AGENT_H_