1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
2116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// found in the LICENSE file.
4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "components/component_updater/test/test_configurator.h"
6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
7116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/run_loop.h"
8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/version.h"
903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "components/component_updater/component_patcher_operation.h"
10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "url/gurl.h"
11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
12116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace component_updater {
13116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace {
151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistd::vector<GURL> MakeDefaultUrls() {
171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  std::vector<GURL> urls;
181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  urls.push_back(GURL(POST_INTERCEPT_SCHEME
191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                      "://" POST_INTERCEPT_HOSTNAME POST_INTERCEPT_PATH));
201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return urls;
211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}  // namespace
241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTestConfigurator::TestConfigurator(
261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    const scoped_refptr<base::SequencedTaskRunner>& worker_task_runner,
271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    const scoped_refptr<base::SingleThreadTaskRunner>& network_task_runner)
281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    : worker_task_runner_(worker_task_runner),
291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      initial_time_(0),
30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      times_(1),
31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      recheck_time_(0),
32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      ondemand_time_(0),
331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      context_(new net::TestURLRequestContextGetter(network_task_runner)) {
34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
36116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTestConfigurator::~TestConfigurator() {
37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
39116680a4aac90f2aa7413d9095a592090648e557Ben Murdochint TestConfigurator::InitialDelay() const {
40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  return initial_time_;
41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
43116680a4aac90f2aa7413d9095a592090648e557Ben Murdochint TestConfigurator::NextCheckDelay() {
44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // This is called when a new full cycle of checking for updates is going
45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // to happen. In test we normally only test one cycle so it is a good
46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // time to break from the test messageloop Run() method so the test can
47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // finish.
48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  if (--times_ <= 0) {
49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    quit_closure_.Run();
50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    return 0;
51116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  }
52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  return 1;
53116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
54116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
55116680a4aac90f2aa7413d9095a592090648e557Ben Murdochint TestConfigurator::StepDelay() const {
56116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  return 0;
57116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
58116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
59116680a4aac90f2aa7413d9095a592090648e557Ben Murdochint TestConfigurator::StepDelayMedium() {
60116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  return NextCheckDelay();
61116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
62116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
63116680a4aac90f2aa7413d9095a592090648e557Ben Murdochint TestConfigurator::MinimumReCheckWait() const {
64116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  return recheck_time_;
65116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
66116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
67116680a4aac90f2aa7413d9095a592090648e557Ben Murdochint TestConfigurator::OnDemandDelay() const {
68116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  return ondemand_time_;
69116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
70116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistd::vector<GURL> TestConfigurator::UpdateUrl() const {
721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return MakeDefaultUrls();
73116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
74116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistd::vector<GURL> TestConfigurator::PingUrl() const {
76116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  return UpdateUrl();
77116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
78116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
79116680a4aac90f2aa7413d9095a592090648e557Ben Murdochbase::Version TestConfigurator::GetBrowserVersion() const {
80116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // Needs to be larger than the required version in tested component manifests.
81116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  return base::Version("30.0");
82116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
83116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
84116680a4aac90f2aa7413d9095a592090648e557Ben Murdochstd::string TestConfigurator::GetChannel() const {
85116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  return "fake_channel_string";
86116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
87116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
88116680a4aac90f2aa7413d9095a592090648e557Ben Murdochstd::string TestConfigurator::GetLang() const {
89116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  return "fake_lang";
90116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
91116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
92116680a4aac90f2aa7413d9095a592090648e557Ben Murdochstd::string TestConfigurator::GetOSLongName() const {
93116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  return "Fake Operating System";
94116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
95116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
96116680a4aac90f2aa7413d9095a592090648e557Ben Murdochstd::string TestConfigurator::ExtraRequestParams() const {
97116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  return "extra=\"foo\"";
98116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
99116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
100116680a4aac90f2aa7413d9095a592090648e557Ben Murdochsize_t TestConfigurator::UrlSizeLimit() const {
101116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  return 256;
102116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
103116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
104116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnet::URLRequestContextGetter* TestConfigurator::RequestContext() const {
105116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  return context_.get();
106116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
107116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1085f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)scoped_refptr<OutOfProcessPatcher> TestConfigurator::CreateOutOfProcessPatcher()
1095f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    const {
1105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  return NULL;
111116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
112116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
113116680a4aac90f2aa7413d9095a592090648e557Ben Murdochbool TestConfigurator::DeltasEnabled() const {
114116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  return true;
115116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
116116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
117116680a4aac90f2aa7413d9095a592090648e557Ben Murdochbool TestConfigurator::UseBackgroundDownloader() const {
118116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  return false;
119116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
120116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
121116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Set how many update checks are called, the default value is just once.
122116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvoid TestConfigurator::SetLoopCount(int times) {
123116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  times_ = times;
124116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
125116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
126116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvoid TestConfigurator::SetRecheckTime(int seconds) {
127116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  recheck_time_ = seconds;
128116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
129116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
130116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvoid TestConfigurator::SetOnDemandTime(int seconds) {
131116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  ondemand_time_ = seconds;
132116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
133116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
134116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvoid TestConfigurator::SetQuitClosure(const base::Closure& quit_closure) {
135116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  quit_closure_ = quit_closure;
136116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
137116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
138116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvoid TestConfigurator::SetInitialDelay(int seconds) {
139116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  initial_time_ = seconds;
140116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
141116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)scoped_refptr<base::SequencedTaskRunner>
1435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)TestConfigurator::GetSequencedTaskRunner() const {
1441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  DCHECK(worker_task_runner_.get());
1451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return worker_task_runner_;
1465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)}
1475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
1485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)scoped_refptr<base::SingleThreadTaskRunner>
1495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)TestConfigurator::GetSingleThreadTaskRunner() const {
1501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // This is NULL because tests do not use the background downloader.
1511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return NULL;
1525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)}
1535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
154116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}  // namespace component_updater
155