| Index: chrome/browser/webdata/web_data_service.cc
|
| diff --git a/chrome/browser/webdata/web_data_service.cc b/chrome/browser/webdata/web_data_service.cc
|
| index f7016e7ebfc3e2630f3e3e0ca5fb79bd12ab37b1..d7ea003c364de5b2cc348331bad77f6cd313a5c3 100644
|
| --- a/chrome/browser/webdata/web_data_service.cc
|
| +++ b/chrome/browser/webdata/web_data_service.cc
|
| @@ -80,6 +80,7 @@ WDKeywordsResult::~WDKeywordsResult() {}
|
| WebDataService::WebDataService()
|
| : is_running_(false),
|
| db_(NULL),
|
| + request_manager_(new WebDataRequestManager()),
|
| app_locale_(AutofillCountry::ApplicationLocale()),
|
| autocomplete_syncable_service_(NULL),
|
| autofill_profile_syncable_service_(NULL),
|
| @@ -127,7 +128,7 @@ void WebDataService::UnloadDatabase() {
|
| }
|
|
|
| void WebDataService::CancelRequest(Handle h) {
|
| - request_manager_.CancelRequest(h);
|
| + request_manager_->CancelRequest(h);
|
| }
|
|
|
| content::NotificationSource WebDataService::GetNotificationSource() {
|
| @@ -422,10 +423,6 @@ bool WebDataService::InitWithPath(const FilePath& path) {
|
| return true;
|
| }
|
|
|
| -void WebDataService::RequestCompleted(Handle h) {
|
| - request_manager_.RequestCompleted(h);
|
| -}
|
| -
|
| ////////////////////////////////////////////////////////////////////////////////
|
| //
|
| // The following methods are executed in Chrome_WebDataThread.
|
| @@ -526,11 +523,12 @@ void WebDataService::ScheduleTask(const tracked_objects::Location& from_here,
|
| void WebDataService::ScheduleDBTask(
|
| const tracked_objects::Location& from_here,
|
| const base::Closure& task) {
|
| - WebDataRequest* request =
|
| - new WebDataRequest(this, NULL, &request_manager_);
|
| + scoped_ptr<WebDataRequest> request(
|
| + new WebDataRequest(NULL, request_manager_.get()));
|
| if (is_running_) {
|
| BrowserThread::PostTask(BrowserThread::DB, from_here,
|
| - base::Bind(&WebDataService::DBTaskWrapper, this, task, request));
|
| + base::Bind(&WebDataService::DBTaskWrapper, this, task,
|
| + base::Passed(&request)));
|
| } else {
|
| NOTREACHED() << "Task scheduled after Shutdown()";
|
| }
|
| @@ -541,33 +539,35 @@ WebDataService::Handle WebDataService::ScheduleDBTaskWithResult(
|
| const ResultTask& task,
|
| WebDataServiceConsumer* consumer) {
|
| DCHECK(consumer);
|
| - WebDataRequest* request =
|
| - new WebDataRequest(this, consumer, &request_manager_);
|
| + scoped_ptr<WebDataRequest> request(
|
| + new WebDataRequest(consumer, request_manager_.get()));
|
| + WebDataService::Handle handle = request->GetHandle();
|
| if (is_running_) {
|
| BrowserThread::PostTask(BrowserThread::DB, from_here,
|
| - base::Bind(&WebDataService::DBResultTaskWrapper, this, task, request));
|
| + base::Bind(&WebDataService::DBResultTaskWrapper, this, task,
|
| + base::Passed(&request)));
|
| } else {
|
| NOTREACHED() << "Task scheduled after Shutdown()";
|
| }
|
| - return request->GetHandle();
|
| + return handle;
|
| }
|
|
|
| void WebDataService::DBTaskWrapper(const base::Closure& task,
|
| - WebDataRequest* request) {
|
| + scoped_ptr<WebDataRequest> request) {
|
| InitializeDatabaseIfNecessary();
|
| if (db_ && !request->IsCancelled()) {
|
| task.Run();
|
| }
|
| - request->RequestComplete();
|
| + request_manager_->RequestCompleted(request.Pass());
|
| }
|
|
|
| void WebDataService::DBResultTaskWrapper(const ResultTask& task,
|
| - WebDataRequest* request) {
|
| + scoped_ptr<WebDataRequest> request) {
|
| InitializeDatabaseIfNecessary();
|
| if (db_ && !request->IsCancelled()) {
|
| - request->SetResult(task.Run().Pass());
|
| + request->SetResult(task.Run());
|
| }
|
| - request->RequestComplete();
|
| + request_manager_->RequestCompleted(request.Pass());
|
| }
|
|
|
| void WebDataService::ScheduleCommit() {
|
| @@ -922,11 +922,11 @@ scoped_ptr<WDTypedResult> WebDataService::GetAutofillProfilesImpl() {
|
| std::vector<AutofillProfile*> profiles;
|
| db_->GetAutofillTable()->GetAutofillProfiles(&profiles);
|
| return scoped_ptr<WDTypedResult>(
|
| - new WDResult<std::vector<AutofillProfile*> >(
|
| + new WDDestroyableResult<std::vector<AutofillProfile*> >(
|
| AUTOFILL_PROFILES_RESULT,
|
| + profiles,
|
| base::Bind(&WebDataService::DestroyAutofillProfileResult,
|
| - base::Unretained(this)),
|
| - profiles));
|
| + base::Unretained(this))));
|
| }
|
|
|
| void WebDataService::EmptyMigrationTrashImpl(bool notify_sync) {
|
| @@ -1035,11 +1035,11 @@ scoped_ptr<WDTypedResult> WebDataService::GetCreditCardsImpl() {
|
| std::vector<CreditCard*> credit_cards;
|
| db_->GetAutofillTable()->GetCreditCards(&credit_cards);
|
| return scoped_ptr<WDTypedResult>(
|
| - new WDResult<std::vector<CreditCard*> >(
|
| + new WDDestroyableResult<std::vector<CreditCard*> >(
|
| AUTOFILL_CREDITCARDS_RESULT,
|
| + credit_cards,
|
| base::Bind(&WebDataService::DestroyAutofillCreditCardResult,
|
| - base::Unretained(this)),
|
| - credit_cards));
|
| + base::Unretained(this))));
|
| }
|
|
|
| void WebDataService::RemoveAutofillProfilesAndCreditCardsModifiedBetweenImpl(
|
|
|