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

Side by Side Diff: chrome/browser/sync/glue/history_model_worker.cc

Issue 352913002: Port HistoryService::ScheduleDBTask to CancelableTaskTracker (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/sync/glue/history_model_worker.h" 5 #include "chrome/browser/sync/glue/history_model_worker.h"
6 6
7 #include "base/memory/ref_counted.h" 7 #include "base/memory/ref_counted.h"
8 #include "base/message_loop/message_loop.h" 8 #include "base/message_loop/message_loop.h"
9 #include "base/synchronization/waitable_event.h" 9 #include "base/synchronization/waitable_event.h"
10 #include "content/public/browser/browser_thread.h" 10 #include "content/public/browser/browser_thread.h"
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 59
60 base::Closure register_callback_; 60 base::Closure register_callback_;
61 }; 61 };
62 62
63 namespace { 63 namespace {
64 64
65 // Post the work task on |history_service|'s DB thread from the UI 65 // Post the work task on |history_service|'s DB thread from the UI
66 // thread. 66 // thread.
67 void PostWorkerTask(const base::WeakPtr<HistoryService>& history_service, 67 void PostWorkerTask(const base::WeakPtr<HistoryService>& history_service,
68 const syncer::WorkCallback& work, 68 const syncer::WorkCallback& work,
69 CancelableRequestConsumerT<int, 0>* cancelable_consumer, 69 base::CancelableTaskTracker* cancelable_tracker,
70 WaitableEvent* done, 70 WaitableEvent* done,
71 syncer::SyncerError* error) { 71 syncer::SyncerError* error) {
72 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 72 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
73 if (history_service.get()) { 73 if (history_service.get()) {
74 scoped_refptr<WorkerTask> task(new WorkerTask(work, done, error)); 74 scoped_refptr<WorkerTask> task(new WorkerTask(work, done, error));
75 history_service->ScheduleDBTask(task.get(), cancelable_consumer); 75 history_service->ScheduleDBTask(task.get(), cancelable_tracker);
76 } else { 76 } else {
77 *error = syncer::CANNOT_DO_WORK; 77 *error = syncer::CANNOT_DO_WORK;
78 done->Signal(); 78 done->Signal();
79 } 79 }
80 } 80 }
81 81
82 } // namespace 82 } // namespace
83 83
84 HistoryModelWorker::HistoryModelWorker( 84 HistoryModelWorker::HistoryModelWorker(
85 const base::WeakPtr<HistoryService>& history_service, 85 const base::WeakPtr<HistoryService>& history_service,
86 syncer::WorkerLoopDestructionObserver* observer) 86 syncer::WorkerLoopDestructionObserver* observer)
87 : syncer::ModelSafeWorker(observer), 87 : syncer::ModelSafeWorker(observer),
88 history_service_(history_service) { 88 history_service_(history_service) {
89 CHECK(history_service.get()); 89 CHECK(history_service.get());
90 } 90 }
91 91
92 void HistoryModelWorker::RegisterForLoopDestruction() { 92 void HistoryModelWorker::RegisterForLoopDestruction() {
93 CHECK(history_service_.get()); 93 CHECK(history_service_.get());
94 history_service_->ScheduleDBTask( 94 history_service_->ScheduleDBTask(
95 new AddDBThreadObserverTask( 95 new AddDBThreadObserverTask(
96 base::Bind(&HistoryModelWorker::RegisterOnDBThread, this)), 96 base::Bind(&HistoryModelWorker::RegisterOnDBThread, this)),
97 &cancelable_consumer_); 97 &cancelable_tracker_);
98 } 98 }
99 99
100 void HistoryModelWorker::RegisterOnDBThread() { 100 void HistoryModelWorker::RegisterOnDBThread() {
101 base::MessageLoop::current()->AddDestructionObserver(this); 101 base::MessageLoop::current()->AddDestructionObserver(this);
102 SetWorkingLoopToCurrent(); 102 SetWorkingLoopToCurrent();
103 } 103 }
104 104
105 syncer::SyncerError HistoryModelWorker::DoWorkAndWaitUntilDoneImpl( 105 syncer::SyncerError HistoryModelWorker::DoWorkAndWaitUntilDoneImpl(
106 const syncer::WorkCallback& work) { 106 const syncer::WorkCallback& work) {
107 syncer::SyncerError error = syncer::UNSET; 107 syncer::SyncerError error = syncer::UNSET;
108 if (BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, 108 if (BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
109 base::Bind(&PostWorkerTask, history_service_, 109 base::Bind(&PostWorkerTask, history_service_,
110 work, &cancelable_consumer_, 110 work, &cancelable_tracker_,
111 work_done_or_stopped(), 111 work_done_or_stopped(),
112 &error))) { 112 &error))) {
113 work_done_or_stopped()->Wait(); 113 work_done_or_stopped()->Wait();
114 } else { 114 } else {
115 error = syncer::CANNOT_DO_WORK; 115 error = syncer::CANNOT_DO_WORK;
116 } 116 }
117 return error; 117 return error;
118 } 118 }
119 119
120 syncer::ModelSafeGroup HistoryModelWorker::GetModelSafeGroup() { 120 syncer::ModelSafeGroup HistoryModelWorker::GetModelSafeGroup() {
121 return syncer::GROUP_HISTORY; 121 return syncer::GROUP_HISTORY;
122 } 122 }
123 123
124 HistoryModelWorker::~HistoryModelWorker() {} 124 HistoryModelWorker::~HistoryModelWorker() {}
125 125
126 } // namespace browser_sync 126 } // namespace browser_sync
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698