Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(120)

Unified Diff: chrome/browser/sync/profile_sync_service_typed_url_unittest.cc

Issue 387923002: Make HistoryDBTask not refcounted, and ensure it's destroyed on its origin thread. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: revert unnecessary changes Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/sync/profile_sync_service_typed_url_unittest.cc
diff --git a/chrome/browser/sync/profile_sync_service_typed_url_unittest.cc b/chrome/browser/sync/profile_sync_service_typed_url_unittest.cc
index 1d520fdbd19e0342d01212fc5bde605bc78e8d15..79eeb4e18abf28a90b5574cb1319dfede7bb6cc6 100644
--- a/chrome/browser/sync/profile_sync_service_typed_url_unittest.cc
+++ b/chrome/browser/sync/profile_sync_service_typed_url_unittest.cc
@@ -111,19 +111,45 @@ class HistoryBackendMock : public HistoryBackend {
class HistoryServiceMock : public HistoryService {
public:
- explicit HistoryServiceMock(history::HistoryClient* client, Profile* profile)
- : HistoryService(client, profile) {}
- MOCK_METHOD2(ScheduleDBTask,
- void(scoped_refptr<history::HistoryDBTask>,
- base::CancelableTaskTracker*));
+ HistoryServiceMock(history::HistoryClient* client, Profile* profile)
+ : HistoryService(client, profile), backend_(NULL) {}
+
+ virtual void ScheduleDBTask(scoped_ptr<history::HistoryDBTask> task,
+ base::CancelableTaskTracker* tracker) OVERRIDE {
+ history::HistoryDBTask* task_raw = task.get();
+ task_runner_->PostTaskAndReply(
+ FROM_HERE,
+ base::Bind(&HistoryServiceMock::RunTaskOnDBThread,
+ base::Unretained(this), task_raw),
+ base::Bind(&base::DeletePointer<history::HistoryDBTask>,
+ task.release()));
+ }
+
MOCK_METHOD0(Shutdown, void());
void ShutdownBaseService() {
HistoryService::Shutdown();
}
+ void set_task_runner(
+ scoped_refptr<base::SingleThreadTaskRunner> task_runner) {
+ DCHECK(task_runner);
+ task_runner_ = task_runner;
+ }
+
+ void set_backend(scoped_refptr<history::HistoryBackend> backend) {
+ backend_ = backend;
+ }
+
private:
virtual ~HistoryServiceMock() {}
+
+ void RunTaskOnDBThread(history::HistoryDBTask* task) {
+ EXPECT_TRUE(task->RunOnDBThread(backend_, NULL));
+ }
+
+ scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
+ scoped_refptr<history::HistoryBackend> backend_;
};
KeyedService* BuildFakeProfileInvalidationProvider(
@@ -151,17 +177,6 @@ class TestTypedUrlModelAssociator : public TypedUrlModelAssociator {
virtual void ClearErrorStats() OVERRIDE {}
};
-void RunOnDBThreadCallback(HistoryBackend* backend,
- scoped_refptr<history::HistoryDBTask> task) {
- task->RunOnDBThread(backend, NULL);
-}
-
-ACTION_P2(RunTaskOnDBThread, thread, backend) {
- thread->message_loop()->PostTask(
- FROM_HERE,
- base::Bind(&RunOnDBThreadCallback, base::Unretained(backend), arg0));
-}
-
ACTION_P2(ShutdownHistoryService, thread, service) {
service->ShutdownBaseService();
delete thread;
@@ -221,14 +236,13 @@ class ProfileSyncServiceTypedUrlTest : public AbstractProfileSyncServiceTest {
testing_factories);
invalidation::ProfileInvalidationProviderFactory::GetInstance()->
SetTestingFactory(profile_, BuildFakeProfileInvalidationProvider);
+ history_thread_->Start();
history_backend_ = new HistoryBackendMock();
history_service_ = static_cast<HistoryServiceMock*>(
HistoryServiceFactory::GetInstance()->SetTestingFactoryAndUse(
profile_, BuildHistoryService));
- EXPECT_CALL((*history_service_), ScheduleDBTask(_, _))
- .WillRepeatedly(RunTaskOnDBThread(history_thread_.get(),
- history_backend_.get()));
- history_thread_->Start();
+ history_service_->set_task_runner(history_thread_->task_runner());
+ history_service_->set_backend(history_backend_);
}
virtual void TearDown() {
« no previous file with comments | « chrome/browser/sync/glue/typed_url_data_type_controller.cc ('k') | chrome/browser/sync/test/integration/bookmarks_helper.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698