1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "components/component_updater/test/test_configurator.h"
6
7#include "base/run_loop.h"
8#include "base/version.h"
9#include "components/component_updater/component_patcher_operation.h"
10#include "url/gurl.h"
11
12namespace component_updater {
13
14namespace {
15
16std::vector<GURL> MakeDefaultUrls() {
17  std::vector<GURL> urls;
18  urls.push_back(GURL(POST_INTERCEPT_SCHEME
19                      "://" POST_INTERCEPT_HOSTNAME POST_INTERCEPT_PATH));
20  return urls;
21}
22
23}  // namespace
24
25TestConfigurator::TestConfigurator(
26    const scoped_refptr<base::SequencedTaskRunner>& worker_task_runner,
27    const scoped_refptr<base::SingleThreadTaskRunner>& network_task_runner)
28    : worker_task_runner_(worker_task_runner),
29      initial_time_(0),
30      times_(1),
31      recheck_time_(0),
32      ondemand_time_(0),
33      context_(new net::TestURLRequestContextGetter(network_task_runner)) {
34}
35
36TestConfigurator::~TestConfigurator() {
37}
38
39int TestConfigurator::InitialDelay() const {
40  return initial_time_;
41}
42
43int TestConfigurator::NextCheckDelay() {
44  // This is called when a new full cycle of checking for updates is going
45  // to happen. In test we normally only test one cycle so it is a good
46  // time to break from the test messageloop Run() method so the test can
47  // finish.
48  if (--times_ <= 0) {
49    quit_closure_.Run();
50    return 0;
51  }
52  return 1;
53}
54
55int TestConfigurator::StepDelay() const {
56  return 0;
57}
58
59int TestConfigurator::StepDelayMedium() {
60  return NextCheckDelay();
61}
62
63int TestConfigurator::MinimumReCheckWait() const {
64  return recheck_time_;
65}
66
67int TestConfigurator::OnDemandDelay() const {
68  return ondemand_time_;
69}
70
71std::vector<GURL> TestConfigurator::UpdateUrl() const {
72  return MakeDefaultUrls();
73}
74
75std::vector<GURL> TestConfigurator::PingUrl() const {
76  return UpdateUrl();
77}
78
79base::Version TestConfigurator::GetBrowserVersion() const {
80  // Needs to be larger than the required version in tested component manifests.
81  return base::Version("30.0");
82}
83
84std::string TestConfigurator::GetChannel() const {
85  return "fake_channel_string";
86}
87
88std::string TestConfigurator::GetLang() const {
89  return "fake_lang";
90}
91
92std::string TestConfigurator::GetOSLongName() const {
93  return "Fake Operating System";
94}
95
96std::string TestConfigurator::ExtraRequestParams() const {
97  return "extra=\"foo\"";
98}
99
100size_t TestConfigurator::UrlSizeLimit() const {
101  return 256;
102}
103
104net::URLRequestContextGetter* TestConfigurator::RequestContext() const {
105  return context_.get();
106}
107
108scoped_refptr<OutOfProcessPatcher> TestConfigurator::CreateOutOfProcessPatcher()
109    const {
110  return NULL;
111}
112
113bool TestConfigurator::DeltasEnabled() const {
114  return true;
115}
116
117bool TestConfigurator::UseBackgroundDownloader() const {
118  return false;
119}
120
121// Set how many update checks are called, the default value is just once.
122void TestConfigurator::SetLoopCount(int times) {
123  times_ = times;
124}
125
126void TestConfigurator::SetRecheckTime(int seconds) {
127  recheck_time_ = seconds;
128}
129
130void TestConfigurator::SetOnDemandTime(int seconds) {
131  ondemand_time_ = seconds;
132}
133
134void TestConfigurator::SetQuitClosure(const base::Closure& quit_closure) {
135  quit_closure_ = quit_closure;
136}
137
138void TestConfigurator::SetInitialDelay(int seconds) {
139  initial_time_ = seconds;
140}
141
142scoped_refptr<base::SequencedTaskRunner>
143TestConfigurator::GetSequencedTaskRunner() const {
144  DCHECK(worker_task_runner_.get());
145  return worker_task_runner_;
146}
147
148scoped_refptr<base::SingleThreadTaskRunner>
149TestConfigurator::GetSingleThreadTaskRunner() const {
150  // This is NULL because tests do not use the background downloader.
151  return NULL;
152}
153
154}  // namespace component_updater
155