103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#ifndef COMPONENTS_COMPONENT_UPDATER_COMPONENT_UPDATER_CONFIGURATOR_H_ 603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#define COMPONENTS_COMPONENT_UPDATER_COMPONENT_UPDATER_CONFIGURATOR_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include <string> 91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include <vector> 10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "base/memory/ref_counted.h" 125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "base/memory/scoped_ptr.h" 135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 14116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass GURL; 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)namespace base { 175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class SingleThreadTaskRunner; 185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class SequencedTaskRunner; 19116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass Version; 20a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} 21a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) 22a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)namespace net { 23a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)class URLRequestContextGetter; 245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 25a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) 265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)namespace component_updater { 27a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) 285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class OutOfProcessPatcher; 295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Controls the component updater behavior. 31116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass Configurator { 32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public: 33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual ~Configurator() {} 34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Delay in seconds from calling Start() to the first update check. 36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual int InitialDelay() const = 0; 37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Delay in seconds to every subsequent update check. 0 means don't check. 39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // This function is a mutator for testing purposes. 40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual int NextCheckDelay() = 0; 41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Delay in seconds from each task step. Used to smooth out CPU/IO usage. 43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual int StepDelay() const = 0; 44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Delay in seconds between applying updates for different components, if 46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // several updates are available at a given time. This function is a mutator 47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // for testing purposes. 48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual int StepDelayMedium() = 0; 49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Minimum delta time in seconds before checking again the same component. 51116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual int MinimumReCheckWait() const = 0; 52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 53116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Minimum delta time in seconds before an on-demand check is allowed 54116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // for the same component. 55116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual int OnDemandDelay() const = 0; 56116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // The URLs for the update checks. The URLs are tried in order, the first one 581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // that succeeds wins. 591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual std::vector<GURL> UpdateUrl() const = 0; 60116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // The URLs for pings. Returns an empty vector if and only if pings are 621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // disabled. Similarly, these URLs have a fall back behavior too. 631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual std::vector<GURL> PingUrl() const = 0; 64116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 65116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Version of the application. Used to compare the component manifests. 66116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual base::Version GetBrowserVersion() const = 0; 67116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 68116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Returns the value we use for the "updaterchannel=" and "prodchannel=" 69116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // parameters. Possible return values include: "canary", "dev", "beta", and 70116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // "stable". 71116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual std::string GetChannel() const = 0; 72116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 73116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Returns the language for the present locale. Possible return values are 74116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // standard tags for languages, such as "en", "en-US", "de", "fr", "af", etc. 75116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual std::string GetLang() const = 0; 76116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 77116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Returns the OS's long name like "Windows", "Mac OS X", etc. 78116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual std::string GetOSLongName() const = 0; 79116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 80116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Parameters added to each url request. It can be empty if none are needed. 81116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // The return string must be safe for insertion as an attribute in an 82116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // XML element. 83116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual std::string ExtraRequestParams() const = 0; 84116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 85116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // How big each update request can be. Don't go above 2000. 86116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual size_t UrlSizeLimit() const = 0; 87116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 88116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // The source of contexts for all the url requests. 89116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual net::URLRequestContextGetter* RequestContext() const = 0; 90116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 915f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Returns a new out of process patcher. May be NULL for implementations 925f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // that patch in-process. 935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual scoped_refptr<OutOfProcessPatcher> CreateOutOfProcessPatcher() 945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const = 0; 95116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 96116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // True means that this client can handle delta updates. 97116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual bool DeltasEnabled() const = 0; 98116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 99116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // True means that the background downloader can be used for downloading 100116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // non on-demand components. 101116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual bool UseBackgroundDownloader() const = 0; 1025f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1035f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Gets a task runner to a blocking pool of threads suitable for worker jobs. 1045f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual scoped_refptr<base::SequencedTaskRunner> GetSequencedTaskRunner() 1055f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const = 0; 1065f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1075f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Gets a task runner for worker jobs guaranteed to run on a single thread. 1085f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // This thread must be capable of IO. On Windows, this thread must be 1095f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // initialized for use of COM objects. 1105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual scoped_refptr<base::SingleThreadTaskRunner> 1115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) GetSingleThreadTaskRunner() const = 0; 112116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}; 113116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} // namespace component_updater 1155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 11603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#endif // COMPONENTS_COMPONENT_UPDATER_COMPONENT_UPDATER_CONFIGURATOR_H_ 117