// Copyright 2014 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. #include "chrome/browser/component_updater/chrome_component_updater_configurator.h" #include #include #include "base/strings/sys_string_conversions.h" #include "base/threading/sequenced_worker_pool.h" #include "base/version.h" #if defined(OS_WIN) #include "base/win/win_util.h" #endif #include "chrome/browser/component_updater/component_patcher_operation_out_of_process.h" #include "chrome/browser/update_client/chrome_update_query_params_delegate.h" #include "chrome/common/channel_info.h" #if defined(OS_WIN) #include "chrome/installer/util/google_update_settings.h" #endif #include "components/component_updater/configurator_impl.h" #include "content/public/browser/browser_thread.h" namespace component_updater { namespace { class ChromeConfigurator : public update_client::Configurator { public: ChromeConfigurator(const base::CommandLine* cmdline, net::URLRequestContextGetter* url_request_getter); // update_client::Configurator overrides. int InitialDelay() const override; int NextCheckDelay() const override; int StepDelay() const override; int OnDemandDelay() const override; int UpdateDelay() const override; std::vector UpdateUrl() const override; std::vector PingUrl() const override; base::Version GetBrowserVersion() const override; std::string GetChannel() const override; std::string GetLang() const override; std::string GetOSLongName() const override; std::string ExtraRequestParams() const override; std::string GetDownloadPreference() const override; net::URLRequestContextGetter* RequestContext() const override; scoped_refptr CreateOutOfProcessPatcher() const override; bool DeltasEnabled() const override; bool UseBackgroundDownloader() const override; scoped_refptr GetSequencedTaskRunner() const override; private: friend class base::RefCountedThreadSafe; ConfiguratorImpl configurator_impl_; ~ChromeConfigurator() override {} }; ChromeConfigurator::ChromeConfigurator( const base::CommandLine* cmdline, net::URLRequestContextGetter* url_request_getter) : configurator_impl_(cmdline, url_request_getter) {} int ChromeConfigurator::InitialDelay() const { return configurator_impl_.InitialDelay(); } int ChromeConfigurator::NextCheckDelay() const { return configurator_impl_.NextCheckDelay(); } int ChromeConfigurator::StepDelay() const { return configurator_impl_.StepDelay(); } int ChromeConfigurator::OnDemandDelay() const { return configurator_impl_.OnDemandDelay(); } int ChromeConfigurator::UpdateDelay() const { return configurator_impl_.UpdateDelay(); } std::vector ChromeConfigurator::UpdateUrl() const { return configurator_impl_.UpdateUrl(); } std::vector ChromeConfigurator::PingUrl() const { return configurator_impl_.PingUrl(); } base::Version ChromeConfigurator::GetBrowserVersion() const { return configurator_impl_.GetBrowserVersion(); } std::string ChromeConfigurator::GetChannel() const { return chrome::GetChannelString(); } std::string ChromeConfigurator::GetLang() const { return ChromeUpdateQueryParamsDelegate::GetLang(); } std::string ChromeConfigurator::GetOSLongName() const { return configurator_impl_.GetOSLongName(); } std::string ChromeConfigurator::ExtraRequestParams() const { return configurator_impl_.ExtraRequestParams(); } std::string ChromeConfigurator::GetDownloadPreference() const { #if defined(OS_WIN) // This group policy is supported only on Windows and only for computers // which are joined to a Windows domain. return base::win::IsEnrolledToDomain() ? base::SysWideToUTF8( GoogleUpdateSettings::GetDownloadPreference()) : std::string(""); #else return std::string(""); #endif } net::URLRequestContextGetter* ChromeConfigurator::RequestContext() const { return configurator_impl_.RequestContext(); } scoped_refptr ChromeConfigurator::CreateOutOfProcessPatcher() const { return make_scoped_refptr(new ChromeOutOfProcessPatcher); } bool ChromeConfigurator::DeltasEnabled() const { return configurator_impl_.DeltasEnabled(); } bool ChromeConfigurator::UseBackgroundDownloader() const { return configurator_impl_.UseBackgroundDownloader(); } // Returns a task runner to run blocking tasks. The task runner continues to run // after the browser shuts down, until the OS terminates the process. This // imposes certain requirements for the code using the task runner, such as // not accessing any global browser state while the code is running. scoped_refptr ChromeConfigurator::GetSequencedTaskRunner() const { return content::BrowserThread::GetBlockingPool() ->GetSequencedTaskRunnerWithShutdownBehavior( base::SequencedWorkerPool::GetSequenceToken(), base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN); } } // namespace scoped_refptr MakeChromeComponentUpdaterConfigurator( const base::CommandLine* cmdline, net::URLRequestContextGetter* context_getter) { return new ChromeConfigurator(cmdline, context_getter); } } // namespace component_updater