Commit a93cf6db authored by edchin's avatar edchin Committed by Commit Bot

[ios] Migrate ReadingListCoordinator from BVC

Bug: 905524
Change-Id: I883868f373b39fcbcb39b63869e19ff1532369b6
Reviewed-on: https://chromium-review.googlesource.com/c/1340527
Commit-Queue: edchin <edchin@chromium.org>
Reviewed-by: default avatarRohit Rao <rohitrao@chromium.org>
Reviewed-by: default avatarGauthier Ambard <gambard@chromium.org>
Reviewed-by: default avataredchin <edchin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#609350}
parent e962e125
......@@ -175,7 +175,6 @@
#import "ios/chrome/browser/ui/presenters/vertical_animation_container.h"
#import "ios/chrome/browser/ui/print/print_controller.h"
#import "ios/chrome/browser/ui/reading_list/offline_page_native_content.h"
#import "ios/chrome/browser/ui/reading_list/reading_list_coordinator.h"
#import "ios/chrome/browser/ui/reading_list/reading_list_menu_notifier.h"
#import "ios/chrome/browser/ui/recent_tabs/recent_tabs_coordinator.h"
#include "ios/chrome/browser/ui/sad_tab/features.h"
......@@ -479,9 +478,6 @@ NSString* const kBrowserViewControllerSnackbarCategory =
// Used to display the Voice Search UI. Nil if not visible.
scoped_refptr<VoiceSearchController> _voiceSearchController;
// Used to display the Reading List.
ChromeCoordinator* _readingListCoordinator;
// Used to display the Find In Page UI. Nil if not visible.
FindBarControllerIOS* _findBarController;
......@@ -1780,7 +1776,6 @@ applicationCommandEndpoint:(id<ApplicationCommands>)applicationCommandEndpoint
self.typingShield = nil;
if (_voiceSearchController)
_voiceSearchController->SetDispatcher(nil);
_readingListCoordinator = nil;
self.recentTabsCoordinator = nil;
self.primaryToolbarCoordinator = nil;
self.secondaryToolbarContainerCoordinator = nil;
......@@ -4484,14 +4479,6 @@ applicationCommandEndpoint:(id<ApplicationCommands>)applicationCommandEndpoint
[self addToReadingListURL:[command URL] title:[command title]];
}
- (void)showReadingList {
_readingListCoordinator = [[ReadingListCoordinator alloc]
initWithBaseViewController:self
browserState:self.browserState
loader:self];
[_readingListCoordinator start];
}
- (void)preloadVoiceSearch {
// Preload VoiceSearchController and views and view controllers needed
// for voice search.
......
......@@ -8,6 +8,7 @@ source_set("commands") {
"activity_service_commands.h",
"application_commands.h",
"browser_commands.h",
"browser_coordinator_commands.h",
"browsing_data_commands.h",
"command_dispatcher.h",
"command_dispatcher.mm",
......
......@@ -8,6 +8,7 @@
#import <Foundation/Foundation.h>
#import "ios/chrome/browser/ui/commands/activity_service_commands.h"
#import "ios/chrome/browser/ui/commands/browser_coordinator_commands.h"
#import "ios/chrome/browser/ui/commands/page_info_commands.h"
#import "ios/chrome/browser/ui/commands/popup_menu_commands.h"
#import "ios/chrome/browser/ui/commands/qr_scanner_commands.h"
......@@ -19,8 +20,11 @@ class GURL;
// Protocol for commands that will generally be handled by the "current tab",
// which in practice is the BrowserViewController instance displaying the tab.
// TODO(crbug.com/906662) : Extract BrowserCoordinatorCommands from
// BrowserCommands.
@protocol BrowserCommands<NSObject,
ActivityServiceCommands,
BrowserCoordinatorCommands,
PageInfoCommands,
PopupMenuCommands,
QRScannerCommands,
......@@ -50,9 +54,6 @@ class GURL;
// Adds a page to the reading list using data in |command|.
- (void)addToReadingList:(ReadingListAddCommand*)command;
// Shows the Reading List UI.
- (void)showReadingList;
// Preloads voice search on the current BVC.
- (void)preloadVoiceSearch;
......
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef IOS_CHROME_BROWSER_UI_COMMANDS_BROWSER_COORDINATOR_COMMANDS_H_
#define IOS_CHROME_BROWSER_UI_COMMANDS_BROWSER_COORDINATOR_COMMANDS_H_
#import <Foundation/Foundation.h>
// Protocol for commands that will be handled by the BrowserCoordinator.
// TODO(crbug.com/906662) : Rename this protocol to one that is more descriptive
// and representative of the contents.
@protocol BrowserCoordinatorCommands
// Shows the Reading List UI.
- (void)showReadingList;
@end
#endif // IOS_CHROME_BROWSER_UI_COMMANDS_BROWSER_COORDINATOR_COMMANDS_H_
......@@ -31,6 +31,7 @@ source_set("main") {
"//ios/chrome/browser/ui/commands",
"//ios/chrome/browser/ui/coordinators:chrome_coordinators",
"//ios/chrome/browser/ui/qr_scanner:coordinator",
"//ios/chrome/browser/ui/reading_list",
"//ios/chrome/browser/ui/snackbar",
"//ios/public/provider/chrome/browser",
]
......
......@@ -8,8 +8,10 @@
#import "ios/chrome/browser/ui/browser_view_controller.h"
#import "ios/chrome/browser/ui/browser_view_controller_dependency_factory.h"
#import "ios/chrome/browser/ui/commands/application_commands.h"
#import "ios/chrome/browser/ui/commands/browser_coordinator_commands.h"
#import "ios/chrome/browser/ui/commands/command_dispatcher.h"
#import "ios/chrome/browser/ui/qr_scanner/qr_scanner_legacy_coordinator.h"
#import "ios/chrome/browser/ui/reading_list/reading_list_coordinator.h"
#import "ios/chrome/browser/ui/snackbar/snackbar_coordinator.h"
#if !defined(__has_feature) || !__has_feature(objc_arc)
......@@ -30,20 +32,24 @@
@property(nonatomic, strong)
FormInputAccessoryCoordinator* formInputAccessoryCoordinator;
// Coordinator for displaying snackbars.
@property(nonatomic, strong) SnackbarCoordinator* snackbarCoordinator;
// Coordinator for the QR scanner.
@property(nonatomic, strong) QRScannerLegacyCoordinator* qrScannerCoordinator;
// Coordinator for displaying the Reading List.
@property(nonatomic, strong) ReadingListCoordinator* readingListCoordinator;
// Coordinator for displaying snackbars.
@property(nonatomic, strong) SnackbarCoordinator* snackbarCoordinator;
@end
@implementation BrowserCoordinator
@synthesize dispatcher = _dispatcher;
// Private child coordinators
// Child coordinators
@synthesize formInputAccessoryCoordinator = _formInputAccessoryCoordinator;
@synthesize snackbarCoordinator = _snackbarCoordinator;
@synthesize qrScannerCoordinator = _qrScannerCoordinator;
@synthesize readingListCoordinator = _readingListCoordinator;
@synthesize snackbarCoordinator = _snackbarCoordinator;
#pragma mark - ChromeCoordinator
......@@ -53,11 +59,15 @@
self.dispatcher = [[CommandDispatcher alloc] init];
[self createViewController];
[self startChildCoordinators];
[self.dispatcher
startDispatchingToTarget:self
forProtocol:@protocol(BrowserCoordinatorCommands)];
[super start];
}
- (void)stop {
[super stop];
[self.dispatcher stopDispatchingToTarget:self];
[self stopChildCoordinators];
[self destroyViewController];
self.dispatcher = nil;
......@@ -98,13 +108,15 @@
self.formInputAccessoryCoordinator.delegate = self;
[self.formInputAccessoryCoordinator start];
self.snackbarCoordinator = [[SnackbarCoordinator alloc] init];
self.snackbarCoordinator.dispatcher = self.dispatcher;
[self.snackbarCoordinator start];
self.qrScannerCoordinator = [[QRScannerLegacyCoordinator alloc]
initWithBaseViewController:self.viewController];
self.qrScannerCoordinator.dispatcher = self.dispatcher;
/* ReadingListCoordinator is created and started by a BrowserCommand */
self.snackbarCoordinator = [[SnackbarCoordinator alloc] init];
self.snackbarCoordinator.dispatcher = self.dispatcher;
[self.snackbarCoordinator start];
}
// Stops child coordinators.
......@@ -112,11 +124,24 @@
[self.formInputAccessoryCoordinator stop];
self.formInputAccessoryCoordinator = nil;
[self.qrScannerCoordinator stop];
self.qrScannerCoordinator = nil;
[self.readingListCoordinator stop];
self.readingListCoordinator = nil;
[self.snackbarCoordinator stop];
self.snackbarCoordinator = nil;
}
[self.qrScannerCoordinator stop];
self.qrScannerCoordinator = nil;
#pragma mark - BrowserCoordinatorCommands
- (void)showReadingList {
self.readingListCoordinator = [[ReadingListCoordinator alloc]
initWithBaseViewController:self.viewController
browserState:self.browserState
loader:self.viewController];
[self.readingListCoordinator start];
}
#pragma mark - FormInputAccessoryCoordinatorDelegate
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment