[iOS] Create GLIC Promo Infra Part 2
This CL: - Registers GLICPromoDisplayHandler in registerStandardPromoDisplayHandlerPromos - Implements a basic scene agent to pipe promo manager infra - Starts scene agent behind kPageActionMenu flag in scene controller This CL was meant to have incomplete code in order to make the CL size smaller. Follow up from: crrev.com/c/6505700 Fixed: 414805017 Change-Id: I82e784748f68ac632bc0b3b2a41ba6ec5faf4133 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6508351 Reviewed-by: Mark Cogan <marq@chromium.org> Reviewed-by: Robbie Gibson <rkgibson@google.com> Commit-Queue: Joemer Ramos <joemerramos@google.com> Cr-Commit-Position: refs/heads/main@{#1456980}
This commit is contained in:

committed by
Chromium LUCI CQ

parent
c294bb9143
commit
ecb39c8cb2
ios/chrome/browser
intelligence
promos_manager
shared
coordinator
@ -9,12 +9,17 @@ source_set("coordinator") {
|
|||||||
"glic_consent_mediator.h",
|
"glic_consent_mediator.h",
|
||||||
"glic_consent_mediator.mm",
|
"glic_consent_mediator.mm",
|
||||||
"glic_consent_mediator_delegate.h",
|
"glic_consent_mediator_delegate.h",
|
||||||
|
"glic_promo_scene_agent.h",
|
||||||
|
"glic_promo_scene_agent.mm",
|
||||||
]
|
]
|
||||||
deps = [
|
deps = [
|
||||||
"//base",
|
"//base",
|
||||||
"//components/prefs:prefs",
|
"//components/prefs:prefs",
|
||||||
"//ios/chrome/browser/intelligence/glic/ui",
|
"//ios/chrome/browser/intelligence/glic/ui",
|
||||||
|
"//ios/chrome/browser/promos_manager/model",
|
||||||
|
"//ios/chrome/browser/promos_manager/model:constants",
|
||||||
"//ios/chrome/browser/shared/coordinator/chrome_coordinator",
|
"//ios/chrome/browser/shared/coordinator/chrome_coordinator",
|
||||||
|
"//ios/chrome/browser/shared/coordinator/scene:observing_scene_agent",
|
||||||
"//ios/chrome/browser/shared/model/prefs:pref_names",
|
"//ios/chrome/browser/shared/model/prefs:pref_names",
|
||||||
"//ios/chrome/browser/shared/model/profile",
|
"//ios/chrome/browser/shared/model/profile",
|
||||||
]
|
]
|
||||||
|
3
ios/chrome/browser/intelligence/glic/coordinator/DEPS
Normal file
3
ios/chrome/browser/intelligence/glic/coordinator/DEPS
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
include_rules = [
|
||||||
|
"+ios/chrome/browser/promos_manager/model",
|
||||||
|
]
|
@ -0,0 +1,22 @@
|
|||||||
|
// Copyright 2025 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_INTELLIGENCE_GLIC_COORDINATOR_GLIC_PROMO_SCENE_AGENT_H_
|
||||||
|
#define IOS_CHROME_BROWSER_INTELLIGENCE_GLIC_COORDINATOR_GLIC_PROMO_SCENE_AGENT_H_
|
||||||
|
|
||||||
|
#import <Foundation/Foundation.h>
|
||||||
|
|
||||||
|
#import "ios/chrome/browser/shared/coordinator/scene/observing_scene_state_agent.h"
|
||||||
|
|
||||||
|
class PromosManager;
|
||||||
|
|
||||||
|
// A scene agent that registers the GLIC promo in the promo manager on
|
||||||
|
// SceneActivationLevelForegroundActive.
|
||||||
|
@interface GLICPromoSceneAgent : ObservingSceneAgent
|
||||||
|
|
||||||
|
- (instancetype)initWithPromosManager:(PromosManager*)promosManager;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
#endif // IOS_CHROME_BROWSER_INTELLIGENCE_GLIC_COORDINATOR_GLIC_PROMO_SCENE_AGENT_H_
|
@ -0,0 +1,50 @@
|
|||||||
|
// Copyright 2025 The Chromium Authors
|
||||||
|
// Use of this source code is governed by a BSD-style license that can be
|
||||||
|
// found in the LICENSE file.
|
||||||
|
|
||||||
|
#import "ios/chrome/browser/intelligence/glic/coordinator/glic_promo_scene_agent.h"
|
||||||
|
|
||||||
|
#import "base/memory/raw_ptr.h"
|
||||||
|
#import "ios/chrome/browser/promos_manager/model/constants.h"
|
||||||
|
#import "ios/chrome/browser/promos_manager/model/promos_manager.h"
|
||||||
|
|
||||||
|
@implementation GLICPromoSceneAgent {
|
||||||
|
raw_ptr<PromosManager> _promosManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (instancetype)initWithPromosManager:(PromosManager*)promosManager {
|
||||||
|
self = [super init];
|
||||||
|
if (self) {
|
||||||
|
_promosManager = promosManager;
|
||||||
|
}
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma mark - SceneStateObserver
|
||||||
|
|
||||||
|
- (void)sceneState:(SceneState*)sceneState
|
||||||
|
transitionedToActivationLevel:(SceneActivationLevel)level {
|
||||||
|
switch (level) {
|
||||||
|
case SceneActivationLevelForegroundActive: {
|
||||||
|
[self registerPromoForSingleDisplay];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case SceneActivationLevelUnattached:
|
||||||
|
case SceneActivationLevelBackground:
|
||||||
|
case SceneActivationLevelDisconnected:
|
||||||
|
case SceneActivationLevelForegroundInactive: {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma mark - Private
|
||||||
|
|
||||||
|
// Register the What's New promo for a single display in the promo manager.
|
||||||
|
- (void)registerPromoForSingleDisplay {
|
||||||
|
DCHECK(_promosManager);
|
||||||
|
_promosManager->RegisterPromoForSingleDisplay(
|
||||||
|
promos_manager::Promo::GLICPromo);
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
@ -102,6 +102,7 @@ source_set("ui_bundled") {
|
|||||||
"//ios/chrome/browser/docking_promo/ui",
|
"//ios/chrome/browser/docking_promo/ui",
|
||||||
"//ios/chrome/browser/first_run/ui_bundled:features",
|
"//ios/chrome/browser/first_run/ui_bundled:features",
|
||||||
"//ios/chrome/browser/first_run/ui_bundled/welcome_back/ui",
|
"//ios/chrome/browser/first_run/ui_bundled/welcome_back/ui",
|
||||||
|
"//ios/chrome/browser/intelligence/features",
|
||||||
"//ios/chrome/browser/intelligence/glic/ui",
|
"//ios/chrome/browser/intelligence/glic/ui",
|
||||||
"//ios/chrome/browser/post_restore_signin/ui_bundled",
|
"//ios/chrome/browser/post_restore_signin/ui_bundled",
|
||||||
"//ios/chrome/browser/promos_manager/model:constants",
|
"//ios/chrome/browser/promos_manager/model:constants",
|
||||||
|
@ -5,6 +5,8 @@ include_rules = [
|
|||||||
"+ios/chrome/browser/default_promo/ui_bundled",
|
"+ios/chrome/browser/default_promo/ui_bundled",
|
||||||
"+ios/chrome/browser/docking_promo/ui/docking_promo_display_handler.h",
|
"+ios/chrome/browser/docking_promo/ui/docking_promo_display_handler.h",
|
||||||
"+ios/chrome/browser/feature_engagement/model/tracker_factory.h",
|
"+ios/chrome/browser/feature_engagement/model/tracker_factory.h",
|
||||||
|
"+ios/chrome/browser/intelligence/features",
|
||||||
|
"+ios/chrome/browser/intelligence/glic/ui",
|
||||||
"+ios/chrome/browser/post_restore_signin/ui_bundled",
|
"+ios/chrome/browser/post_restore_signin/ui_bundled",
|
||||||
"+ios/chrome/browser/signin/model",
|
"+ios/chrome/browser/signin/model",
|
||||||
"+ios/chrome/browser/sync/model/sync_service_factory.h",
|
"+ios/chrome/browser/sync/model/sync_service_factory.h",
|
||||||
|
@ -37,6 +37,8 @@
|
|||||||
#import "ios/chrome/browser/feature_engagement/model/tracker_factory.h"
|
#import "ios/chrome/browser/feature_engagement/model/tracker_factory.h"
|
||||||
#import "ios/chrome/browser/first_run/ui_bundled/features.h"
|
#import "ios/chrome/browser/first_run/ui_bundled/features.h"
|
||||||
#import "ios/chrome/browser/first_run/ui_bundled/welcome_back/ui/welcome_back_display_handler.h"
|
#import "ios/chrome/browser/first_run/ui_bundled/welcome_back/ui/welcome_back_display_handler.h"
|
||||||
|
#import "ios/chrome/browser/intelligence/features/features.h"
|
||||||
|
#import "ios/chrome/browser/intelligence/glic/ui/glic_promo_display_handler.h"
|
||||||
#import "ios/chrome/browser/post_restore_signin/ui_bundled/post_restore_signin_provider.h"
|
#import "ios/chrome/browser/post_restore_signin/ui_bundled/post_restore_signin_provider.h"
|
||||||
#import "ios/chrome/browser/promos_manager/model/features.h"
|
#import "ios/chrome/browser/promos_manager/model/features.h"
|
||||||
#import "ios/chrome/browser/promos_manager/model/promo_config.h"
|
#import "ios/chrome/browser/promos_manager/model/promo_config.h"
|
||||||
@ -618,6 +620,12 @@
|
|||||||
_displayHandlerPromos[promos_manager::Promo::WelcomeBack] =
|
_displayHandlerPromos[promos_manager::Promo::WelcomeBack] =
|
||||||
[[WelcomeBackDisplayHandler alloc] init];
|
[[WelcomeBackDisplayHandler alloc] init];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GLIC promo handler.
|
||||||
|
if (IsPageActionMenuEnabled()) {
|
||||||
|
_displayHandlerPromos[promos_manager::Promo::GLICPromo] =
|
||||||
|
[[GLICPromoDisplayHandler alloc] init];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)registerStandardPromoViewProviderPromos {
|
- (void)registerStandardPromoViewProviderPromos {
|
||||||
|
@ -131,6 +131,8 @@ source_set("scene") {
|
|||||||
"//ios/chrome/browser/incognito_interstitial/ui_bundled:coordinator",
|
"//ios/chrome/browser/incognito_interstitial/ui_bundled:coordinator",
|
||||||
"//ios/chrome/browser/incognito_reauth/ui_bundled:incognito_reauth_scene_agent",
|
"//ios/chrome/browser/incognito_reauth/ui_bundled:incognito_reauth_scene_agent",
|
||||||
"//ios/chrome/browser/infobars/model",
|
"//ios/chrome/browser/infobars/model",
|
||||||
|
"//ios/chrome/browser/intelligence/features",
|
||||||
|
"//ios/chrome/browser/intelligence/glic/coordinator",
|
||||||
"//ios/chrome/browser/intents/model:user_activity_browser_agent",
|
"//ios/chrome/browser/intents/model:user_activity_browser_agent",
|
||||||
"//ios/chrome/browser/lens/ui_bundled:lens_entrypoint",
|
"//ios/chrome/browser/lens/ui_bundled:lens_entrypoint",
|
||||||
"//ios/chrome/browser/lens_overlay/model",
|
"//ios/chrome/browser/lens_overlay/model",
|
||||||
|
@ -17,6 +17,8 @@ include_rules = [
|
|||||||
"+ios/chrome/browser/incognito_interstitial/ui_bundled",
|
"+ios/chrome/browser/incognito_interstitial/ui_bundled",
|
||||||
"+ios/chrome/browser/incognito_reauth/ui_bundled/incognito_reauth_scene_agent.h",
|
"+ios/chrome/browser/incognito_reauth/ui_bundled/incognito_reauth_scene_agent.h",
|
||||||
"+ios/chrome/browser/infobars/model",
|
"+ios/chrome/browser/infobars/model",
|
||||||
|
"+ios/chrome/browser/intelligence/features",
|
||||||
|
"+ios/chrome/browser/intelligence/glic/coordinator",
|
||||||
"+ios/chrome/browser/intents/model",
|
"+ios/chrome/browser/intents/model",
|
||||||
"+ios/chrome/browser/lens/ui_bundled",
|
"+ios/chrome/browser/lens/ui_bundled",
|
||||||
"+ios/chrome/browser/lens_overlay/coordinator/lens_overlay_availability.h",
|
"+ios/chrome/browser/lens_overlay/coordinator/lens_overlay_availability.h",
|
||||||
|
@ -93,6 +93,8 @@
|
|||||||
#import "ios/chrome/browser/incognito_interstitial/ui_bundled/incognito_interstitial_coordinator_delegate.h"
|
#import "ios/chrome/browser/incognito_interstitial/ui_bundled/incognito_interstitial_coordinator_delegate.h"
|
||||||
#import "ios/chrome/browser/incognito_reauth/ui_bundled/incognito_reauth_scene_agent.h"
|
#import "ios/chrome/browser/incognito_reauth/ui_bundled/incognito_reauth_scene_agent.h"
|
||||||
#import "ios/chrome/browser/infobars/model/infobar_manager_impl.h"
|
#import "ios/chrome/browser/infobars/model/infobar_manager_impl.h"
|
||||||
|
#import "ios/chrome/browser/intelligence/features/features.h"
|
||||||
|
#import "ios/chrome/browser/intelligence/glic/coordinator/glic_promo_scene_agent.h"
|
||||||
#import "ios/chrome/browser/intents/model/user_activity_browser_agent.h"
|
#import "ios/chrome/browser/intents/model/user_activity_browser_agent.h"
|
||||||
#import "ios/chrome/browser/lens/ui_bundled/lens_entrypoint.h"
|
#import "ios/chrome/browser/lens/ui_bundled/lens_entrypoint.h"
|
||||||
#import "ios/chrome/browser/lens_overlay/coordinator/lens_overlay_availability.h"
|
#import "ios/chrome/browser/lens_overlay/coordinator/lens_overlay_availability.h"
|
||||||
@ -1356,6 +1358,11 @@ SystemIdentityManager::IteratorResult IdentitiesOnDevice(
|
|||||||
syncService:SyncServiceFactory::GetForProfile(profile)
|
syncService:SyncServiceFactory::GetForProfile(profile)
|
||||||
prefService:prefService]];
|
prefService:prefService]];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (IsPageActionMenuEnabled()) {
|
||||||
|
[sceneState addAgent:[[GLICPromoSceneAgent alloc]
|
||||||
|
initWithPromosManager:promosManager]];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Determines the mode (normal or incognito) the initial UI should be in.
|
// Determines the mode (normal or incognito) the initial UI should be in.
|
||||||
|
Reference in New Issue
Block a user