Index: ios/chrome/browser/ui/browser_view_controller_dependency_factory.mm |
diff --git a/ios/chrome/browser/ui/browser_view_controller_dependency_factory.mm b/ios/chrome/browser/ui/browser_view_controller_dependency_factory.mm |
new file mode 100644 |
index 0000000000000000000000000000000000000000..fdb89c2f7c87415221b224b33136f4bafc77bf86 |
--- /dev/null |
+++ b/ios/chrome/browser/ui/browser_view_controller_dependency_factory.mm |
@@ -0,0 +1,112 @@ |
+// Copyright 2012 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. |
+ |
+#import "ios/chrome/browser/ui/browser_view_controller_dependency_factory.h" |
+ |
+#import <PassKit/PassKit.h> |
+ |
+#include "base/ios/ios_util.h" |
+#include "components/infobars/core/infobar_manager.h" |
+#include "components/infobars/core/simple_alert_infobar_delegate.h" |
+#include "components/strings/grit/components_strings.h" |
+#include "components/toolbar/toolbar_model_impl.h" |
+#include "ios/chrome/browser/browser_state/chrome_browser_state.h" |
+#import "ios/chrome/browser/tabs/tab_model.h" |
+#import "ios/chrome/browser/ui/activity_services/activity_service_controller.h" |
+#import "ios/chrome/browser/ui/activity_services/share_protocol.h" |
+#import "ios/chrome/browser/ui/alert_coordinator/alert_coordinator.h" |
+#import "ios/chrome/browser/ui/key_commands_provider.h" |
+#import "ios/chrome/browser/ui/preload_controller.h" |
+#include "ios/chrome/browser/ui/toolbar/toolbar_model_delegate_ios.h" |
+#include "ios/chrome/browser/ui/toolbar/toolbar_model_impl_ios.h" |
+#import "ios/chrome/browser/ui/toolbar/web_toolbar_controller.h" |
+#include "ios/chrome/grit/ios_strings.h" |
+#import "ios/third_party/material_components_ios/src/components/Snackbar/src/MaterialSnackbar.h" |
+#include "ui/base/l10n/l10n_util.h" |
+#include "ui/base/l10n/l10n_util_mac.h" |
+ |
+NSString* const kBrowserViewControllerSnackbarCategory = |
+ @"BrowserViewControllerSnackbarCategory"; |
+ |
+@implementation BrowserViewControllerDependencyFactory |
+ |
+- (id)initWithBrowserState:(ios::ChromeBrowserState*)browserState { |
+ self = [super init]; |
+ if (self) { |
+ browserState_ = browserState; |
+ } |
+ return self; |
+} |
+ |
+- (id<ShareProtocol>)shareControllerInstance { |
+ return [ActivityServiceController sharedInstance]; |
+} |
+ |
+- (PKAddPassesViewController*)newPassKitViewControllerForPass:(PKPass*)pass { |
+ return [[PKAddPassesViewController alloc] initWithPass:pass]; |
+} |
+ |
+- (void)showPassKitErrorInfoBarForManager: |
+ (infobars::InfoBarManager*)infoBarManager { |
+ DCHECK(infoBarManager); |
+ SimpleAlertInfoBarDelegate::Create( |
+ infoBarManager, |
+ infobars::InfoBarDelegate::SHOW_PASSKIT_INFOBAR_ERROR_DELEGATE, |
+ infobars::InfoBarDelegate::kNoIconID, gfx::VectorIconId::VECTOR_ICON_NONE, |
+ l10n_util::GetStringUTF16(IDS_IOS_GENERIC_PASSKIT_ERROR), true); |
+} |
+ |
+- (PreloadController*)newPreloadController { |
+ return [[PreloadController alloc] initWithBrowserState:browserState_]; |
+} |
+ |
+- (TabStripController*)newTabStripControllerWithTabModel:(TabModel*)model { |
+ TabStrip::Style style = TabStrip::kStyleDark; |
+ if (browserState_ && browserState_->IsOffTheRecord()) |
+ style = TabStrip::kStyleIncognito; |
+ return [[TabStripController alloc] initWithTabModel:model style:style]; |
+} |
+ |
+- (ToolbarModelIOS*)newToolbarModelIOSWithDelegate: |
+ (ToolbarModelDelegateIOS*)delegate { |
+ return new ToolbarModelImplIOS(delegate); |
+} |
+ |
+- (WebToolbarController*) |
+newWebToolbarControllerWithDelegate:(id<WebToolbarDelegate>)delegate |
+ urlLoader:(id<UrlLoader>)urlLoader |
+ preloadProvider:(id<PreloadProvider>)preload { |
+ return [[WebToolbarController alloc] initWithDelegate:delegate |
+ urlLoader:urlLoader |
+ browserState:browserState_ |
+ preloadProvider:preload]; |
+} |
+ |
+- (KeyCommandsProvider*)newKeyCommandsProvider { |
+ return [[KeyCommandsProvider alloc] init]; |
+} |
+ |
+- (void)showSnackbarWithMessage:(NSString*)text { |
+ MDCSnackbarMessage* message = [MDCSnackbarMessage messageWithText:text]; |
+ message.accessibilityLabel = text; |
+ message.duration = 2.0; |
+ message.category = kBrowserViewControllerSnackbarCategory; |
+ [MDCSnackbarManager showMessage:message]; |
+} |
+ |
+- (AlertCoordinator*)alertCoordinatorWithTitle:(NSString*)title |
+ message:(NSString*)message |
+ viewController: |
+ (UIViewController*)viewController { |
+ AlertCoordinator* alertCoordinator = [[[AlertCoordinator alloc] |
+ initWithBaseViewController:viewController |
+ title:title |
+ message:message] autorelease]; |
+ [alertCoordinator addItemWithTitle:l10n_util::GetNSString(IDS_OK) |
+ action:nil |
+ style:UIAlertActionStyleDefault]; |
+ return alertCoordinator; |
+} |
+ |
+@end |