summaryrefslogtreecommitdiffstats
path: root/components
diff options
context:
space:
mode:
authorttuttle@chromium.org <ttuttle@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-06-14 22:21:42 +0000
committerttuttle@chromium.org <ttuttle@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-06-14 22:21:42 +0000
commitb5c2b7417067d58590ea7677d73570566d9c520b (patch)
treed9f4e04d8d9ddc2c7d6361defc30a09125bce595 /components
parent97b8e59952b5392c744d63cba45c30a81726cfd5 (diff)
downloadchromium_src-b5c2b7417067d58590ea7677d73570566d9c520b.zip
chromium_src-b5c2b7417067d58590ea7677d73570566d9c520b.tar.gz
chromium_src-b5c2b7417067d58590ea7677d73570566d9c520b.tar.bz2
Domain Reliability: Prepare to switch to BrowserContextKeyedService
Add a BrowserContextKeyedService{,Factory} and rearrange a few things in preparation for starting to use it. Note: The factory calls NOTREACHED() if it is actually asked to produce a service, since it's not supposed to be in use yet. BUG=356791 Review URL: https://codereview.chromium.org/304733002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@277275 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'components')
-rw-r--r--components/domain_reliability.gypi3
-rw-r--r--components/domain_reliability/DEPS3
-rw-r--r--components/domain_reliability/config.h2
-rw-r--r--components/domain_reliability/context.cc2
-rw-r--r--components/domain_reliability/context.h3
-rw-r--r--components/domain_reliability/context_unittest.cc1
-rw-r--r--components/domain_reliability/dispatcher.cc1
-rw-r--r--components/domain_reliability/dispatcher.h5
-rw-r--r--components/domain_reliability/monitor.cc73
-rw-r--r--components/domain_reliability/monitor.h35
-rw-r--r--components/domain_reliability/monitor_unittest.cc19
-rw-r--r--components/domain_reliability/service.cc68
-rw-r--r--components/domain_reliability/service.h66
-rw-r--r--components/domain_reliability/test_util.cc1
-rw-r--r--components/domain_reliability/test_util.h3
-rw-r--r--components/domain_reliability/uploader.cc1
-rw-r--r--components/domain_reliability/uploader.h2
-rw-r--r--components/domain_reliability/uploader_unittest.cc9
-rw-r--r--components/domain_reliability/util.h3
19 files changed, 231 insertions, 69 deletions
diff --git a/components/domain_reliability.gypi b/components/domain_reliability.gypi
index b1ade2c..50412d5 100644
--- a/components/domain_reliability.gypi
+++ b/components/domain_reliability.gypi
@@ -9,6 +9,7 @@
'type': '<(component)',
'dependencies': [
'../base/base.gyp:base',
+ '../components/components.gyp:keyed_service_core',
'../content/content.gyp:content_browser',
'../net/net.gyp:net',
'../url/url.gyp:url_lib',
@@ -35,6 +36,8 @@
'domain_reliability/monitor.h',
'domain_reliability/scheduler.cc',
'domain_reliability/scheduler.h',
+ 'domain_reliability/service.cc',
+ 'domain_reliability/service.h',
'domain_reliability/uploader.cc',
'domain_reliability/uploader.h',
'domain_reliability/util.cc',
diff --git a/components/domain_reliability/DEPS b/components/domain_reliability/DEPS
index faf5b87..bf04311 100644
--- a/components/domain_reliability/DEPS
+++ b/components/domain_reliability/DEPS
@@ -3,8 +3,7 @@
# found in the LICENSE file.
include_rules = [
- "+content/public/browser",
- "+content/public/test",
"+net",
+ "+components/keyed_service/core",
]
diff --git a/components/domain_reliability/config.h b/components/domain_reliability/config.h
index 1ba3c7a..c17bf5a 100644
--- a/components/domain_reliability/config.h
+++ b/components/domain_reliability/config.h
@@ -8,8 +8,8 @@
#include <string>
#include <vector>
-#include "base/compiler_specific.h"
#include "base/json/json_value_converter.h"
+#include "base/macros.h"
#include "base/memory/scoped_ptr.h"
#include "base/strings/string_piece.h"
#include "base/time/time.h"
diff --git a/components/domain_reliability/context.cc b/components/domain_reliability/context.cc
index aae45fc..57c71a3 100644
--- a/components/domain_reliability/context.cc
+++ b/components/domain_reliability/context.cc
@@ -14,6 +14,8 @@
#include "base/values.h"
#include "components/domain_reliability/beacon.h"
#include "components/domain_reliability/dispatcher.h"
+#include "components/domain_reliability/uploader.h"
+#include "components/domain_reliability/util.h"
#include "net/base/net_errors.h"
#include "net/url_request/url_request_context_getter.h"
diff --git a/components/domain_reliability/context.h b/components/domain_reliability/context.h
index c58a222..098e4fc 100644
--- a/components/domain_reliability/context.h
+++ b/components/domain_reliability/context.h
@@ -14,8 +14,6 @@
#include "components/domain_reliability/config.h"
#include "components/domain_reliability/domain_reliability_export.h"
#include "components/domain_reliability/scheduler.h"
-#include "components/domain_reliability/uploader.h"
-#include "components/domain_reliability/util.h"
class GURL;
@@ -23,6 +21,7 @@ namespace domain_reliability {
struct DomainReliabilityBeacon;
class DomainReliabilityDispatcher;
+class DomainReliabilityUploader;
class MockableTime;
// The per-domain context for the Domain Reliability client; includes the
diff --git a/components/domain_reliability/context_unittest.cc b/components/domain_reliability/context_unittest.cc
index d51035d..0f0bb20 100644
--- a/components/domain_reliability/context_unittest.cc
+++ b/components/domain_reliability/context_unittest.cc
@@ -10,6 +10,7 @@
#include "base/bind.h"
#include "base/memory/scoped_ptr.h"
#include "base/message_loop/message_loop_proxy.h"
+#include "components/domain_reliability/beacon.h"
#include "components/domain_reliability/dispatcher.h"
#include "components/domain_reliability/scheduler.h"
#include "components/domain_reliability/test_util.h"
diff --git a/components/domain_reliability/dispatcher.cc b/components/domain_reliability/dispatcher.cc
index e5e11cc..c02fe27 100644
--- a/components/domain_reliability/dispatcher.cc
+++ b/components/domain_reliability/dispatcher.cc
@@ -5,6 +5,7 @@
#include "components/domain_reliability/dispatcher.h"
#include "base/bind.h"
+#include "base/callback.h"
#include "base/message_loop/message_loop.h"
#include "base/stl_util.h"
#include "base/timer/timer.h"
diff --git a/components/domain_reliability/dispatcher.h b/components/domain_reliability/dispatcher.h
index 58c2b27..2c5d2d7 100644
--- a/components/domain_reliability/dispatcher.h
+++ b/components/domain_reliability/dispatcher.h
@@ -7,10 +7,9 @@
#include <set>
-#include "base/callback.h"
+#include "base/callback_forward.h"
#include "base/time/time.h"
#include "components/domain_reliability/domain_reliability_export.h"
-#include "components/domain_reliability/util.h"
namespace tracked_objects {
class Location;
@@ -18,6 +17,8 @@ class Location;
namespace domain_reliability {
+class MockableTime;
+
// Runs tasks during a specified interval. Calling |RunEligibleTasks| gives any
// task a chance to run early (if the minimum delay has already passed); tasks
// that aren't run early will be run once their maximum delay has passed.
diff --git a/components/domain_reliability/monitor.cc b/components/domain_reliability/monitor.cc
index 957a146..fc25dd7 100644
--- a/components/domain_reliability/monitor.cc
+++ b/components/domain_reliability/monitor.cc
@@ -8,72 +8,69 @@
#include "base/logging.h"
#include "base/message_loop/message_loop.h"
#include "base/single_thread_task_runner.h"
+#include "base/task_runner.h"
+#include "base/threading/thread_checker.h"
#include "base/time/time.h"
#include "components/domain_reliability/baked_in_configs.h"
-#include "content/public/browser/browser_thread.h"
#include "net/base/load_flags.h"
#include "net/http/http_response_headers.h"
#include "net/url_request/url_request.h"
#include "net/url_request/url_request_context.h"
#include "net/url_request/url_request_context_getter.h"
-namespace {
-
-bool OnIOThread() {
- return content::BrowserThread::CurrentlyOn(content::BrowserThread::IO);
-}
-
-} // namespace
-
namespace domain_reliability {
DomainReliabilityMonitor::DomainReliabilityMonitor(
- net::URLRequestContext* url_request_context,
const std::string& upload_reporter_string)
: time_(new ActualTime()),
- url_request_context_getter_(scoped_refptr<net::URLRequestContextGetter>(
- new net::TrivialURLRequestContextGetter(
- url_request_context,
- content::BrowserThread::GetMessageLoopProxyForThread(
- content::BrowserThread::IO)))),
upload_reporter_string_(upload_reporter_string),
scheduler_params_(
DomainReliabilityScheduler::Params::GetFromFieldTrialsOrDefaults()),
dispatcher_(time_.get()),
- uploader_(
- DomainReliabilityUploader::Create(url_request_context_getter_)),
was_cleared_(false),
- cleared_mode_(MAX_CLEAR_MODE) {
- DCHECK(OnIOThread());
-}
+ cleared_mode_(MAX_CLEAR_MODE),
+ weak_factory_(this) {}
DomainReliabilityMonitor::DomainReliabilityMonitor(
- net::URLRequestContext* url_request_context,
const std::string& upload_reporter_string,
scoped_ptr<MockableTime> time)
: time_(time.Pass()),
- url_request_context_getter_(scoped_refptr<net::URLRequestContextGetter>(
- new net::TrivialURLRequestContextGetter(
- url_request_context,
- content::BrowserThread::GetMessageLoopProxyForThread(
- content::BrowserThread::IO)))),
upload_reporter_string_(upload_reporter_string),
scheduler_params_(
DomainReliabilityScheduler::Params::GetFromFieldTrialsOrDefaults()),
dispatcher_(time_.get()),
- uploader_(
- DomainReliabilityUploader::Create(url_request_context_getter_)),
was_cleared_(false),
- cleared_mode_(MAX_CLEAR_MODE) {
- DCHECK(OnIOThread());
-}
+ cleared_mode_(MAX_CLEAR_MODE),
+ weak_factory_(this) {}
DomainReliabilityMonitor::~DomainReliabilityMonitor() {
- DCHECK(OnIOThread());
ClearContexts();
}
+void DomainReliabilityMonitor::Init(
+ net::URLRequestContext* url_request_context,
+ const scoped_refptr<base::SingleThreadTaskRunner>& task_runner) {
+ DCHECK(!thread_checker_);
+
+ scoped_refptr<net::URLRequestContextGetter> url_request_context_getter =
+ new net::TrivialURLRequestContextGetter(url_request_context,
+ task_runner);
+ Init(url_request_context_getter);
+}
+
+void DomainReliabilityMonitor::Init(
+ scoped_refptr<net::URLRequestContextGetter> url_request_context_getter) {
+ DCHECK(!thread_checker_);
+
+ DCHECK(url_request_context_getter->GetNetworkTaskRunner()->
+ RunsTasksOnCurrentThread());
+
+ uploader_ = DomainReliabilityUploader::Create(url_request_context_getter);
+ thread_checker_.reset(new base::ThreadChecker());
+}
+
void DomainReliabilityMonitor::AddBakedInConfigs() {
+ DCHECK(thread_checker_ && thread_checker_->CalledOnValidThread());
base::Time now = base::Time::Now();
for (size_t i = 0; kBakedInJsonConfigs[i]; ++i) {
std::string json(kBakedInJsonConfigs[i]);
@@ -89,14 +86,14 @@ void DomainReliabilityMonitor::AddBakedInConfigs() {
}
void DomainReliabilityMonitor::OnBeforeRedirect(net::URLRequest* request) {
- DCHECK(OnIOThread());
+ DCHECK(thread_checker_ && thread_checker_->CalledOnValidThread());
// Record the redirect itself in addition to the final request.
OnRequestLegComplete(RequestInfo(*request));
}
void DomainReliabilityMonitor::OnCompleted(net::URLRequest* request,
bool started) {
- DCHECK(OnIOThread());
+ DCHECK(thread_checker_ && thread_checker_->CalledOnValidThread());
if (!started)
return;
RequestInfo request_info(*request);
@@ -110,7 +107,7 @@ void DomainReliabilityMonitor::OnCompleted(net::URLRequest* request,
void DomainReliabilityMonitor::ClearBrowsingData(
DomainReliabilityClearMode mode) {
- DCHECK(OnIOThread());
+ DCHECK(thread_checker_ && thread_checker_->CalledOnValidThread());
was_cleared_ = true;
cleared_mode_ = mode;
@@ -132,6 +129,7 @@ void DomainReliabilityMonitor::ClearBrowsingData(
DomainReliabilityContext* DomainReliabilityMonitor::AddContextForTesting(
scoped_ptr<const DomainReliabilityConfig> config) {
+ DCHECK(thread_checker_ && thread_checker_->CalledOnValidThread());
return AddContext(config.Pass());
}
@@ -228,4 +226,9 @@ void DomainReliabilityMonitor::OnRequestLegComplete(
context_it->second->OnBeacon(request.url, beacon);
}
+base::WeakPtr<DomainReliabilityMonitor>
+DomainReliabilityMonitor::MakeWeakPtr() {
+ return weak_factory_.GetWeakPtr();
+}
+
} // namespace domain_reliability
diff --git a/components/domain_reliability/monitor.h b/components/domain_reliability/monitor.h
index 92e00ab..48b0329b 100644
--- a/components/domain_reliability/monitor.h
+++ b/components/domain_reliability/monitor.h
@@ -8,6 +8,7 @@
#include <map>
#include "base/memory/ref_counted.h"
+#include "base/memory/weak_ptr.h"
#include "base/time/time.h"
#include "components/domain_reliability/beacon.h"
#include "components/domain_reliability/clear_mode.h"
@@ -22,27 +23,37 @@
#include "net/http/http_response_info.h"
#include "net/url_request/url_request_status.h"
+namespace base {
+class SingleThreadTaskRunner;
+class ThreadChecker;
+} // namespace base
+
namespace net {
class URLRequest;
class URLRequestContext;
class URLRequestContextGetter;
-}
+} // namespace net
namespace domain_reliability {
// The top-level object that measures requests and hands off the measurements
-// to the proper |DomainReliabilityContext|. Lives on the I/O thread, so the
-// constructor accepts a URLRequestContext directly instead of a
-// URLRequestContextGetter.
+// to the proper |DomainReliabilityContext|.
class DOMAIN_RELIABILITY_EXPORT DomainReliabilityMonitor {
public:
- DomainReliabilityMonitor(net::URLRequestContext* url_request_context,
- const std::string& upload_reporter_string);
- DomainReliabilityMonitor(net::URLRequestContext* url_request_context,
- const std::string& upload_reporter_string,
+ explicit DomainReliabilityMonitor(const std::string& upload_reporter_string);
+ DomainReliabilityMonitor(const std::string& upload_reporter_string,
scoped_ptr<MockableTime> time);
~DomainReliabilityMonitor();
+ // Initializes the Monitor.
+ void Init(
+ net::URLRequestContext* url_request_context,
+ const scoped_refptr<base::SingleThreadTaskRunner>& task_runner);
+
+ // Same, but for unittests where the Getter is readily available.
+ void Init(
+ scoped_refptr<net::URLRequestContextGetter> url_request_context_getter);
+
// Populates the monitor with contexts that were configured at compile time.
void AddBakedInConfigs();
@@ -71,6 +82,8 @@ class DOMAIN_RELIABILITY_EXPORT DomainReliabilityMonitor {
private:
friend class DomainReliabilityMonitorTest;
+ // Allow the Service to call |MakeWeakPtr|.
+ friend class DomainReliabilityServiceImpl;
typedef std::map<std::string, DomainReliabilityContext*> ContextMap;
@@ -97,8 +110,10 @@ class DOMAIN_RELIABILITY_EXPORT DomainReliabilityMonitor {
void ClearContexts();
void OnRequestLegComplete(const RequestInfo& info);
+ base::WeakPtr<DomainReliabilityMonitor> MakeWeakPtr();
+
+ scoped_ptr<base::ThreadChecker> thread_checker_;
scoped_ptr<MockableTime> time_;
- scoped_refptr<net::URLRequestContextGetter> url_request_context_getter_;
const std::string upload_reporter_string_;
DomainReliabilityScheduler::Params scheduler_params_;
DomainReliabilityDispatcher dispatcher_;
@@ -108,6 +123,8 @@ class DOMAIN_RELIABILITY_EXPORT DomainReliabilityMonitor {
bool was_cleared_;
DomainReliabilityClearMode cleared_mode_;
+ base::WeakPtrFactory<DomainReliabilityMonitor> weak_factory_;
+
DISALLOW_COPY_AND_ASSIGN(DomainReliabilityMonitor);
};
diff --git a/components/domain_reliability/monitor_unittest.cc b/components/domain_reliability/monitor_unittest.cc
index 58950a4..6859590 100644
--- a/components/domain_reliability/monitor_unittest.cc
+++ b/components/domain_reliability/monitor_unittest.cc
@@ -11,11 +11,11 @@
#include "base/bind.h"
#include "base/memory/scoped_ptr.h"
#include "base/message_loop/message_loop_proxy.h"
+#include "base/test/test_simple_task_runner.h"
#include "components/domain_reliability/baked_in_configs.h"
#include "components/domain_reliability/beacon.h"
#include "components/domain_reliability/config.h"
#include "components/domain_reliability/test_util.h"
-#include "content/public/test/test_browser_thread_bundle.h"
#include "net/base/host_port_pair.h"
#include "net/base/load_flags.h"
#include "net/http/http_response_headers.h"
@@ -48,14 +48,15 @@ class DomainReliabilityMonitorTest : public testing::Test {
typedef DomainReliabilityMonitor::RequestInfo RequestInfo;
DomainReliabilityMonitorTest()
- : bundle_(content::TestBrowserThreadBundle::IO_MAINLOOP),
- url_request_context_getter_(new net::TestURLRequestContextGetter(
- base::MessageLoopProxy::current())),
+ : network_task_runner_(new base::TestSimpleTaskRunner()),
+ url_request_context_getter_(
+ new net::TestURLRequestContextGetter(network_task_runner_)),
time_(new MockTime()),
- monitor_(url_request_context_getter_->GetURLRequestContext(),
- "test-reporter",
- scoped_ptr<MockableTime>(time_)),
- context_(monitor_.AddContextForTesting(MakeTestConfig())) {}
+ monitor_("test-reporter", scoped_ptr<MockableTime>(time_)),
+ context_(NULL) {
+ monitor_.Init(url_request_context_getter_);
+ context_ = monitor_.AddContextForTesting(MakeTestConfig());
+ }
static RequestInfo MakeRequestInfo() {
RequestInfo request;
@@ -93,7 +94,7 @@ class DomainReliabilityMonitorTest : public testing::Test {
return expected_successful == successful && expected_failed == failed;
}
- content::TestBrowserThreadBundle bundle_;
+ scoped_refptr<base::TestSimpleTaskRunner> network_task_runner_;
scoped_refptr<net::URLRequestContextGetter> url_request_context_getter_;
MockTime* time_;
DomainReliabilityMonitor monitor_;
diff --git a/components/domain_reliability/service.cc b/components/domain_reliability/service.cc
new file mode 100644
index 0000000..e10660f
--- /dev/null
+++ b/components/domain_reliability/service.cc
@@ -0,0 +1,68 @@
+// 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 "components/domain_reliability/service.h"
+
+#include "base/bind.h"
+#include "base/callback.h"
+#include "base/single_thread_task_runner.h"
+#include "components/domain_reliability/monitor.h"
+#include "net/url_request/url_request_context_getter.h"
+
+namespace domain_reliability {
+
+class DomainReliabilityServiceImpl : public DomainReliabilityService {
+ public:
+ explicit DomainReliabilityServiceImpl(
+ const std::string& upload_reporter_string)
+ : upload_reporter_string_(upload_reporter_string) {}
+
+ virtual ~DomainReliabilityServiceImpl() {}
+
+ // DomainReliabilityService implementation:
+
+ virtual scoped_ptr<DomainReliabilityMonitor> Init(
+ scoped_refptr<base::SequencedTaskRunner> network_task_runner) OVERRIDE {
+ DCHECK(!network_task_runner_);
+
+ scoped_ptr<DomainReliabilityMonitor> monitor(
+ new DomainReliabilityMonitor(upload_reporter_string_));
+
+ monitor_ = monitor->MakeWeakPtr();
+ network_task_runner_ = network_task_runner;
+
+ return monitor.Pass();
+ }
+
+ virtual void ClearBrowsingData(DomainReliabilityClearMode clear_mode,
+ const base::Closure& callback) OVERRIDE {
+ DCHECK(network_task_runner_);
+
+ network_task_runner_->PostTaskAndReply(
+ FROM_HERE,
+ base::Bind(&DomainReliabilityMonitor::ClearBrowsingData,
+ monitor_,
+ clear_mode),
+ callback);
+ }
+
+ virtual void Shutdown() OVERRIDE {}
+
+ private:
+ std::string upload_reporter_string_;
+ base::WeakPtr<DomainReliabilityMonitor> monitor_;
+ scoped_refptr<base::SequencedTaskRunner> network_task_runner_;
+};
+
+// static
+DomainReliabilityService* DomainReliabilityService::Create(
+ const std::string& upload_reporter_string) {
+ return new DomainReliabilityServiceImpl(upload_reporter_string);
+}
+
+DomainReliabilityService::~DomainReliabilityService() {}
+
+DomainReliabilityService::DomainReliabilityService() {}
+
+} // namespace domain_reliability
diff --git a/components/domain_reliability/service.h b/components/domain_reliability/service.h
new file mode 100644
index 0000000..ec7e3b3
--- /dev/null
+++ b/components/domain_reliability/service.h
@@ -0,0 +1,66 @@
+// 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.
+
+#ifndef COMPONENTS_DOMAIN_RELIABILITY_SERVICE_H_
+#define COMPONENTS_DOMAIN_RELIABILITY_SERVICE_H_
+
+#include <string>
+
+#include "base/callback_forward.h"
+#include "base/macros.h"
+#include "base/memory/ref_counted.h"
+#include "base/memory/scoped_ptr.h"
+#include "base/sequenced_task_runner.h"
+#include "components/domain_reliability/clear_mode.h"
+#include "components/domain_reliability/domain_reliability_export.h"
+#include "components/keyed_service/core/keyed_service.h"
+
+namespace net {
+class URLRequestContextGetter;
+};
+
+namespace domain_reliability {
+
+class DomainReliabilityMonitor;
+
+// DomainReliabilityService is a KeyedService that manages a Monitor that lives
+// on another thread (as provided by the URLRequestContextGetter's task runner)
+// and proxies (selected) method calls to it. Destruction of the Monitor (on
+// that thread) is the responsibility of the caller.
+class DOMAIN_RELIABILITY_EXPORT DomainReliabilityService
+ : public KeyedService {
+ public:
+ // Creates a DomainReliabilityService that will contain a Monitor with the
+ // given upload reporter string.
+ static DomainReliabilityService* Create(
+ const std::string& upload_reporter_string);
+
+ virtual ~DomainReliabilityService();
+
+ // Initializes the Service: given the task runner on which Monitor methods
+ // should be called, creates the Monitor and returns it. Can be called at
+ // most once, and must be called before any of the below methods can be
+ // called. The caller is responsible for destroying the Monitor on the given
+ // task runner when it is no longer needed.
+ virtual scoped_ptr<DomainReliabilityMonitor> Init(
+ scoped_refptr<base::SequencedTaskRunner> network_task_runner) = 0;
+
+ // Clears browsing data on the associated Monitor. |Init()| must have been
+ // called first.
+ virtual void ClearBrowsingData(DomainReliabilityClearMode clear_mode,
+ const base::Closure& callback) = 0;
+
+ // KeyedService implementation:
+ virtual void Shutdown() OVERRIDE = 0;
+
+ protected:
+ DomainReliabilityService();
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(DomainReliabilityService);
+};
+
+} // namespace domain_reliability
+
+#endif // COMPONENTS_DOMAIN_RELIABILITY_SERVICE_H_
diff --git a/components/domain_reliability/test_util.cc b/components/domain_reliability/test_util.cc
index d6cf8f0..e1fb5d7 100644
--- a/components/domain_reliability/test_util.cc
+++ b/components/domain_reliability/test_util.cc
@@ -5,6 +5,7 @@
#include "components/domain_reliability/test_util.h"
#include "base/bind.h"
+#include "base/callback.h"
#include "components/domain_reliability/scheduler.h"
#include "net/url_request/url_request_status.h"
#include "testing/gtest/include/gtest/gtest.h"
diff --git a/components/domain_reliability/test_util.h b/components/domain_reliability/test_util.h
index a0fa27d..a4529dd 100644
--- a/components/domain_reliability/test_util.h
+++ b/components/domain_reliability/test_util.h
@@ -5,10 +5,9 @@
#ifndef COMPONENTS_DOMAIN_RELIABILITY_TEST_UTIL_H_
#define COMPONENTS_DOMAIN_RELIABILITY_TEST_UTIL_H_
-#include "base/callback.h"
+#include "base/callback_forward.h"
#include "base/memory/scoped_ptr.h"
#include "components/domain_reliability/config.h"
-#include "components/domain_reliability/monitor.h"
#include "components/domain_reliability/scheduler.h"
#include "components/domain_reliability/uploader.h"
#include "components/domain_reliability/util.h"
diff --git a/components/domain_reliability/uploader.cc b/components/domain_reliability/uploader.cc
index 7a67a77..5fd35a3 100644
--- a/components/domain_reliability/uploader.cc
+++ b/components/domain_reliability/uploader.cc
@@ -5,6 +5,7 @@
#include "components/domain_reliability/uploader.h"
#include "base/bind.h"
+#include "base/callback.h"
#include "base/memory/scoped_vector.h"
#include "base/metrics/sparse_histogram.h"
#include "base/stl_util.h"
diff --git a/components/domain_reliability/uploader.h b/components/domain_reliability/uploader.h
index a9c5211..95d0e55 100644
--- a/components/domain_reliability/uploader.h
+++ b/components/domain_reliability/uploader.h
@@ -7,7 +7,7 @@
#include <map>
-#include "base/callback.h"
+#include "base/callback_forward.h"
#include "base/memory/ref_counted.h"
#include "components/domain_reliability/domain_reliability_export.h"
#include "url/gurl.h"
diff --git a/components/domain_reliability/uploader_unittest.cc b/components/domain_reliability/uploader_unittest.cc
index 7c8d0a9..362b202 100644
--- a/components/domain_reliability/uploader_unittest.cc
+++ b/components/domain_reliability/uploader_unittest.cc
@@ -9,8 +9,8 @@
#include "base/bind.h"
#include "base/memory/scoped_ptr.h"
#include "base/message_loop/message_loop_proxy.h"
+#include "base/test/test_simple_task_runner.h"
#include "components/domain_reliability/test_util.h"
-#include "content/public/test/test_browser_thread_bundle.h"
#include "net/base/load_flags.h"
#include "net/url_request/test_url_fetcher_factory.h"
#include "net/url_request/url_fetcher_delegate.h"
@@ -24,10 +24,9 @@ namespace {
class DomainReliabilityUploaderTest : public testing::Test {
protected:
DomainReliabilityUploaderTest()
- : test_browser_thread_bundle_(
- content::TestBrowserThreadBundle::IO_MAINLOOP),
+ : network_task_runner_(new base::TestSimpleTaskRunner()),
url_request_context_getter_(new net::TestURLRequestContextGetter(
- base::MessageLoopProxy::current())),
+ network_task_runner_)),
uploader_(DomainReliabilityUploader::Create(
url_request_context_getter_)) {}
@@ -43,7 +42,7 @@ class DomainReliabilityUploaderTest : public testing::Test {
upload_successful_[index] = success;
}
- content::TestBrowserThreadBundle test_browser_thread_bundle_;
+ scoped_refptr<base::TestSimpleTaskRunner> network_task_runner_;
net::TestURLFetcherFactory url_fetcher_factory_;
scoped_refptr<net::TestURLRequestContextGetter> url_request_context_getter_;
scoped_ptr<DomainReliabilityUploader> uploader_;
diff --git a/components/domain_reliability/util.h b/components/domain_reliability/util.h
index 9f49618..aa7cb00 100644
--- a/components/domain_reliability/util.h
+++ b/components/domain_reliability/util.h
@@ -7,8 +7,9 @@
#include <map>
-#include "base/callback.h"
+#include "base/callback_forward.h"
#include "base/compiler_specific.h"
+#include "base/memory/scoped_ptr.h"
#include "base/time/time.h"
#include "base/tracked_objects.h"
#include "components/domain_reliability/domain_reliability_export.h"