Index: ios/chrome/browser/downstream_chromium_browser_provider.mm |
diff --git a/ios/chrome/browser/downstream_chromium_browser_provider.mm b/ios/chrome/browser/downstream_chromium_browser_provider.mm |
new file mode 100644 |
index 0000000000000000000000000000000000000000..de3c9f4cb93f10cce26287b03b5ca9a6c52133c0 |
--- /dev/null |
+++ b/ios/chrome/browser/downstream_chromium_browser_provider.mm |
@@ -0,0 +1,93 @@ |
+// Copyright 2016 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/downstream_chromium_browser_provider.h" |
+ |
+#import <UIKit/UIKit.h> |
+ |
+#include <memory> |
+#include <string> |
+ |
+#include "base/memory/ptr_util.h" |
+#import "components/handoff/handoff_manager.h" |
+#include "ios/chrome/browser/sessions/tab_restore_service_delegate_provider_impl.h" |
+#include "ios/chrome/browser/tabs/tab_model_synced_window_delegate_getter.h" |
+#include "ios/chrome/browser/ui/autofill/card_unmask_prompt_view_bridge.h" |
+#import "ios/chrome/browser/ui/bookmarks/bookmark_interaction_controller.h" |
+#import "ios/chrome/browser/ui/bookmarks/bookmark_promo_controller.h" |
+#import "ios/chrome/browser/ui/browser_list_ios.h" |
+#import "ios/chrome/browser/ui/infobars/infobar_view.h" |
+#include "ios/chrome/browser/ui/webui/chrome_web_ui_ios_controller_factory.h" |
+#import "ios/chrome/common/material_timing.h" |
+ |
+DownstreamChromiumBrowserProvider::DownstreamChromiumBrowserProvider() |
+ : tab_restore_service_delegate_provider_( |
+ base::MakeUnique< |
+ ios_internal::TabRestoreServiceDelegateProviderImpl>()) {} |
+ |
+DownstreamChromiumBrowserProvider::~DownstreamChromiumBrowserProvider() {} |
+ |
+void DownstreamChromiumBrowserProvider::RegisterProfilePrefs( |
+ user_prefs::PrefRegistrySyncable* registry) { |
+ [BookmarkInteractionController registerBrowserStatePrefs:registry]; |
+ [BookmarkPromoController registerBrowserStatePrefs:registry]; |
+ [HandoffManager registerBrowserStatePrefs:registry]; |
+} |
+ |
+InfoBarViewPlaceholder DownstreamChromiumBrowserProvider::CreateInfoBarView( |
+ CGRect frame, |
+ InfoBarViewDelegate* delegate) NS_RETURNS_RETAINED { |
+ return [[InfoBarView alloc] initWithFrame:frame delegate:delegate]; |
+} |
+ |
+ios::LiveTabContextProvider* |
+DownstreamChromiumBrowserProvider::GetLiveTabContextProvider() { |
+ return tab_restore_service_delegate_provider_.get(); |
+} |
+ |
+void DownstreamChromiumBrowserProvider::SetUIViewAlphaWithAnimation( |
+ UIView* view, |
+ float alpha) { |
+ CGFloat oldAlpha = [view alpha]; |
+ if (oldAlpha > 0 && alpha == 0) { |
+ [view setUserInteractionEnabled:NO]; |
+ } |
+ [UIView cr_transitionWithView:view |
+ duration:ios::material::kDuration3 |
+ curve:ios::material::CurveEaseInOut |
+ options:0 |
+ animations:^{ |
+ [view setAlpha:alpha]; |
+ } |
+ completion:^(BOOL) { |
+ if (oldAlpha == 0 && alpha > 0) { |
+ [view setUserInteractionEnabled:YES]; |
+ }; |
+ }]; |
+} |
+ |
+autofill::CardUnmaskPromptView* |
+DownstreamChromiumBrowserProvider::CreateCardUnmaskPromptView( |
+ autofill::CardUnmaskPromptController* controller) { |
+ return new autofill::CardUnmaskPromptViewBridge(controller); |
+} |
+ |
+bool DownstreamChromiumBrowserProvider::IsOffTheRecordSessionActive() { |
+ return BrowserListIOS::IsOffTheRecordSessionActive(); |
+} |
+ |
+void DownstreamChromiumBrowserProvider::GetFaviconForURL( |
+ ios::ChromeBrowserState* browser_state, |
+ const GURL& page_url, |
+ const std::vector<int>& desired_sizes_in_pixel, |
+ const favicon_base::FaviconResultsCallback& callback) const { |
+ ChromeWebUIIOSControllerFactory::GetInstance()->GetFaviconForURL( |
+ browser_state, page_url, desired_sizes_in_pixel, callback); |
+} |
+ |
+std::unique_ptr<sync_sessions::SyncedWindowDelegatesGetter> |
+DownstreamChromiumBrowserProvider::CreateSyncedWindowDelegatesGetter( |
+ ios::ChromeBrowserState* browser_state) { |
+ return base::MakeUnique<TabModelSyncedWindowDelegatesGetter>(browser_state); |
+} |