blob: 91ad3a56ee5bf8f7fb743c9fbe689bdfbb6c0fb2 [file] [log] [blame]
// 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/providers/chromium_browser_provider.h"
#include <memory>
#import "ios/chrome/browser/providers/chromium_logo_controller.h"
#import "ios/chrome/browser/providers/chromium_spotlight_provider.h"
#import "ios/chrome/browser/providers/chromium_voice_search_provider.h"
#import "ios/chrome/browser/providers/images/chromium_branded_image_provider.h"
#include "ios/chrome/browser/providers/signin/chromium_signin_resources_provider.h"
#include "ios/chrome/browser/providers/ui/chromium_styled_text_field.h"
#include "ios/public/provider/chrome/browser/distribution/app_distribution_provider.h"
#include "ios/public/provider/chrome/browser/signin/chrome_identity_service.h"
#include "ios/public/provider/chrome/browser/signin/signin_error_provider.h"
#import "ios/public/provider/chrome/browser/ui/fullscreen_provider.h"
#include "ios/public/provider/chrome/browser/user/special_user_provider.h"
#include "ios/public/provider/chrome/browser/user_feedback/user_feedback_provider.h"
#if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support."
#endif
ChromiumBrowserProvider::ChromiumBrowserProvider()
: app_distribution_provider_(std::make_unique<AppDistributionProvider>()),
branded_image_provider_(std::make_unique<ChromiumBrandedImageProvider>()),
signin_error_provider_(std::make_unique<ios::SigninErrorProvider>()),
signin_resources_provider_(
std::make_unique<ChromiumSigninResourcesProvider>()),
user_feedback_provider_(std::make_unique<UserFeedbackProvider>()),
voice_search_provider_(std::make_unique<ChromiumVoiceSearchProvider>()),
special_user_provider_(std::make_unique<SpecialUserProvider>()),
spotlight_provider_(std::make_unique<ChromiumSpotlightProvider>()),
fullscreen_provider_(std::make_unique<FullscreenProvider>()) {}
ChromiumBrowserProvider::~ChromiumBrowserProvider() {}
ios::SigninErrorProvider* ChromiumBrowserProvider::GetSigninErrorProvider() {
return signin_error_provider_.get();
}
ios::SigninResourcesProvider*
ChromiumBrowserProvider::GetSigninResourcesProvider() {
return signin_resources_provider_.get();
}
void ChromiumBrowserProvider::SetChromeIdentityServiceForTesting(
std::unique_ptr<ios::ChromeIdentityService> service) {
chrome_identity_service_ = std::move(service);
}
ios::ChromeIdentityService*
ChromiumBrowserProvider::GetChromeIdentityService() {
if (!chrome_identity_service_) {
chrome_identity_service_ = std::make_unique<ios::ChromeIdentityService>();
}
return chrome_identity_service_.get();
}
UITextField<TextFieldStyling>* ChromiumBrowserProvider::CreateStyledTextField(
CGRect frame) const {
return [[ChromiumStyledTextField alloc] initWithFrame:CGRectZero];
}
VoiceSearchProvider* ChromiumBrowserProvider::GetVoiceSearchProvider() const {
return voice_search_provider_.get();
}
id<LogoVendor> ChromiumBrowserProvider::CreateLogoVendor(
ios::ChromeBrowserState* browser_state) const {
return [[ChromiumLogoController alloc] init];
}
UserFeedbackProvider* ChromiumBrowserProvider::GetUserFeedbackProvider() const {
return user_feedback_provider_.get();
}
AppDistributionProvider* ChromiumBrowserProvider::GetAppDistributionProvider()
const {
return app_distribution_provider_.get();
}
BrandedImageProvider* ChromiumBrowserProvider::GetBrandedImageProvider() const {
return branded_image_provider_.get();
}
SpecialUserProvider* ChromiumBrowserProvider::GetSpecialUserProvider() const {
return special_user_provider_.get();
}
SpotlightProvider* ChromiumBrowserProvider::GetSpotlightProvider() const {
return spotlight_provider_.get();
}
FullscreenProvider* ChromiumBrowserProvider::GetFullscreenProvider() const {
return fullscreen_provider_.get();
}