diff --git a/ios/chrome/browser/ui/browser_view/browser_coordinator.mm b/ios/chrome/browser/ui/browser_view/browser_coordinator.mm index cc68dcfb706587..e7e8a82e8a713b 100644 --- a/ios/chrome/browser/ui/browser_view/browser_coordinator.mm +++ b/ios/chrome/browser/ui/browser_view/browser_coordinator.mm @@ -238,6 +238,9 @@ @interface BrowserCoordinator () GetForBrowserState(browserState) ->SetEnabled(active); } - - // TODO(crbug.com/1272516): Update the WebUsageEnablerBrowserAgent as part of - // setting active/inactive. + self.webUsageEnabled = active; self.viewController.active = active; // Stop the NTP on web usage toggle. This happens when clearing browser @@ -587,6 +588,16 @@ - (void)displayPopupMenuWithBadgeItems:(NSArray>*)badgeItems { #pragma mark - Private +- (void)setWebUsageEnabled:(BOOL)webUsageEnabled { + if (!self.browser->GetBrowserState() || !self.started) { + return; + } + WebUsageEnablerBrowserAgent::FromBrowser(self.browser) + ->SetWebUsageEnabled(webUsageEnabled); + _webUsageEnabled = webUsageEnabled; + self.viewController.webUsageEnabled = webUsageEnabled; +} + // Displays activity overlay. - (void)showActivityOverlay { self.activityOverlayCoordinator = [[ActivityOverlayCoordinator alloc] @@ -638,8 +649,8 @@ - (void)createViewController { // Shuts down the BrowserViewController. - (void)destroyViewController { - // TODO(crbug.com/1272516): Set the WebUsageEnablerBrowserAgent to disabled. self.viewController.active = NO; + self.viewController.webUsageEnabled = NO; // TODO(crbug.com/1415244): Remove when BVC will no longer handle commands. [self.dispatcher stopDispatchingToTarget:self.viewController]; @@ -2372,13 +2383,10 @@ - (UIEdgeInsets)snapshotGenerator:(SnapshotGenerator*)snapshotGenerator WebStateList* webStateList = self.browser->GetWebStateList(); DCHECK_NE(webStateList->GetIndexOfWebState(webState), WebStateList::kInvalidIndex); - BOOL isWebUsageEnabled = - self.browser->GetBrowserState() && self.started && - WebUsageEnablerBrowserAgent::FromBrowser(self.browser) - ->IsWebUsageEnabled(); - if (!isWebUsageEnabled || webState != webStateList->GetActiveWebState()) + if (!self.webUsageEnabled || webState != webStateList->GetActiveWebState()) { return @[]; + } NSMutableArray* overlays = [NSMutableArray array]; diff --git a/ios/chrome/browser/ui/browser_view/browser_view_controller.h b/ios/chrome/browser/ui/browser_view/browser_view_controller.h index c34abb9b39fef2..3922fefa66b924 100644 --- a/ios/chrome/browser/ui/browser_view/browser_view_controller.h +++ b/ios/chrome/browser/ui/browser_view/browser_view_controller.h @@ -137,6 +137,9 @@ typedef struct { // text to speech is playing. @property(nonatomic, assign, readonly, getter=isPlayingTTS) BOOL playingTTS; +// Whether web usage is enabled for the WebStates in `self.browser`. +@property(nonatomic) BOOL webUsageEnabled; + // The container used for infobar banner overlays. @property(nonatomic, strong) UIViewController* infobarBannerOverlayContainerViewController; diff --git a/ios/chrome/browser/ui/browser_view/browser_view_controller.mm b/ios/chrome/browser/ui/browser_view/browser_view_controller.mm index 8020ca559907d2..5eb31489909a8e 100644 --- a/ios/chrome/browser/ui/browser_view/browser_view_controller.mm +++ b/ios/chrome/browser/ui/browser_view/browser_view_controller.mm @@ -327,8 +327,6 @@ @interface BrowserViewController () IsWebUsageEnabled(); -} - -// TODO(crbug.com/1272516): Change webUsageEnabled to be a regular BOOL ivar. -// BrowserCoordinator should update the WebUsageEnablerBrowserAgent. -- (void)setWebUsageEnabled:(BOOL)webUsageEnabled { - if (!self.browserState || _isShutdown) - return; - WebUsageEnablerBrowserAgent::FromBrowser(self.browser) - ->SetWebUsageEnabled(webUsageEnabled); -} - - (void)setInNewTabAnimation:(BOOL)inNewTabAnimation { if (_inNewTabAnimation == inNewTabAnimation) return; @@ -859,7 +841,6 @@ - (void)setActive:(BOOL)active { } _active = active; - self.webUsageEnabled = active; [self updateBroadcastState]; if (active) { @@ -1151,8 +1132,9 @@ - (void)viewWillAppear:(BOOL)animated { // If the controller is suspended, or has been paged out due to low memory, // updating the view will be handled when it's displayed again. - if (!self.webUsageEnabled || !self.contentArea) + if (!self.webUsageEnabled || !self.contentArea) { return; + } // Update the displayed WebState (if any; the switcher may not have created // one yet) in case it changed while showing the switcher. if (self.currentWebState) @@ -3077,8 +3059,9 @@ - (void)initiateNewTabForegroundAnimationForWebState:(web::WebState*)webState { } // Do nothing if browsing is currently suspended. The BVC will set everything // up correctly when browsing resumes. - if (!self.visible || !self.webUsageEnabled) + if (!self.visible || !self.webUsageEnabled) { return; + } self.inNewTabAnimation = YES; __weak __typeof(self) weakSelf = self; diff --git a/ios/chrome/browser/ui/browser_view/browser_view_controller_unittest.mm b/ios/chrome/browser/ui/browser_view/browser_view_controller_unittest.mm index e9fd3ac233e484..5aabaffe8c6fbd 100644 --- a/ios/chrome/browser/ui/browser_view/browser_view_controller_unittest.mm +++ b/ios/chrome/browser/ui/browser_view/browser_view_controller_unittest.mm @@ -274,6 +274,7 @@ void SetUp() override { browserContainerViewController:container_ keyCommandsProvider:key_commands_provider_ dependencies:dependencies]; + bvc_.webUsageEnabled = YES; id NTPCoordinator_ = [[NewTabPageCoordinator alloc] initWithBrowser:browser_.get()];