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

Unified Diff: chrome/browser/webdata/web_data_service.cc

Issue 11783091: Remove GenericRequest templates from WebDataService (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Switch result_ to scopted_ptr Created 7 years, 11 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
« no previous file with comments | « chrome/browser/webdata/web_data_service.h ('k') | chrome/browser/webdata/web_data_service_win.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 7428bfac7588d338da30a212d00082085e2eff97..f7016e7ebfc3e2630f3e3e0ca5fb79bd12ab37b1 100644
--- a/chrome/browser/webdata/web_data_service.cc
+++ b/chrome/browser/webdata/web_data_service.cc
@@ -150,48 +150,35 @@ WebDatabase* WebDataService::GetDatabase() {
//////////////////////////////////////////////////////////////////////////////
void WebDataService::AddKeyword(const TemplateURLData& data) {
- GenericRequest<TemplateURLData>* request =
- new GenericRequest<TemplateURLData>(
- this, NULL, &request_manager_, data);
- ScheduleTask(FROM_HERE, Bind(&WebDataService::AddKeywordImpl, this, request));
+ ScheduleDBTask(
+ FROM_HERE, Bind(&WebDataService::AddKeywordImpl, this, data));
}
void WebDataService::RemoveKeyword(TemplateURLID id) {
- GenericRequest<TemplateURLID>* request =
- new GenericRequest<TemplateURLID>(this, NULL, &request_manager_, id);
- ScheduleTask(FROM_HERE,
- Bind(&WebDataService::RemoveKeywordImpl, this, request));
+ ScheduleDBTask(
+ FROM_HERE, Bind(&WebDataService::RemoveKeywordImpl, this, id));
}
void WebDataService::UpdateKeyword(const TemplateURLData& data) {
- GenericRequest<TemplateURLData>* request =
- new GenericRequest<TemplateURLData>(
- this, NULL, &request_manager_, data);
- ScheduleTask(FROM_HERE,
- Bind(&WebDataService::UpdateKeywordImpl, this, request));
+ ScheduleDBTask(
+ FROM_HERE, Bind(&WebDataService::UpdateKeywordImpl, this, data));
}
WebDataService::Handle WebDataService::GetKeywords(
- WebDataServiceConsumer* consumer) {
- WebDataRequest* request =
- new WebDataRequest(this, consumer, &request_manager_);
- ScheduleTask(FROM_HERE,
- Bind(&WebDataService::GetKeywordsImpl, this, request));
- return request->GetHandle();
+ WebDataServiceConsumer* consumer) {
+ return ScheduleDBTaskWithResult(FROM_HERE,
+ Bind(&WebDataService::GetKeywordsImpl, this), consumer);
}
void WebDataService::SetDefaultSearchProvider(const TemplateURL* url) {
- GenericRequest<TemplateURLID>* request = new GenericRequest<TemplateURLID>(
- this, NULL, &request_manager_, url ? url->id() : 0);
- ScheduleTask(FROM_HERE, Bind(&WebDataService::SetDefaultSearchProviderImpl,
- this, request));
+ ScheduleDBTask(FROM_HERE,
+ Bind(&WebDataService::SetDefaultSearchProviderImpl, this,
+ url ? url->id() : 0));
}
void WebDataService::SetBuiltinKeywordVersion(int version) {
- GenericRequest<int>* request = new GenericRequest<int>(
- this, NULL, &request_manager_, version);
- ScheduleTask(FROM_HERE, Bind(&WebDataService::SetBuiltinKeywordVersionImpl,
- this, request));
+ ScheduleDBTask(FROM_HERE,
+ Bind(&WebDataService::SetBuiltinKeywordVersionImpl, this, version));
}
//////////////////////////////////////////////////////////////////////////////
@@ -202,37 +189,27 @@ void WebDataService::SetBuiltinKeywordVersion(int version) {
void WebDataService::SetWebAppImage(const GURL& app_url,
const SkBitmap& image) {
- GenericRequest2<GURL, SkBitmap>* request =
- new GenericRequest2<GURL, SkBitmap>(
- this, NULL, &request_manager_, app_url, image);
- ScheduleTask(FROM_HERE,
- Bind(&WebDataService::SetWebAppImageImpl, this, request));
+ ScheduleDBTask(FROM_HERE,
+ Bind(&WebDataService::SetWebAppImageImpl, this, app_url, image));
}
void WebDataService::SetWebAppHasAllImages(const GURL& app_url,
bool has_all_images) {
- GenericRequest2<GURL, bool>* request =
- new GenericRequest2<GURL, bool>(
- this, NULL, &request_manager_, app_url, has_all_images);
- ScheduleTask(FROM_HERE,
- Bind(&WebDataService::SetWebAppHasAllImagesImpl, this, request));
+ ScheduleDBTask(FROM_HERE,
+ Bind(&WebDataService::SetWebAppHasAllImagesImpl, this, app_url,
+ has_all_images));
}
void WebDataService::RemoveWebApp(const GURL& app_url) {
- GenericRequest<GURL>* request =
- new GenericRequest<GURL>(this, NULL, &request_manager_, app_url);
- ScheduleTask(FROM_HERE,
- Bind(&WebDataService::RemoveWebAppImpl, this, request));
+ ScheduleDBTask(FROM_HERE,
+ Bind(&WebDataService::RemoveWebAppImpl, this, app_url));
}
WebDataService::Handle WebDataService::GetWebAppImages(
const GURL& app_url,
WebDataServiceConsumer* consumer) {
- GenericRequest<GURL>* request =
- new GenericRequest<GURL>(this, consumer, &request_manager_, app_url);
- ScheduleTask(FROM_HERE,
- Bind(&WebDataService::GetWebAppImagesImpl, this, request));
- return request->GetHandle();
+ return ScheduleDBTaskWithResult(FROM_HERE,
+ Bind(&WebDataService::GetWebAppImagesImpl, this, app_url), consumer);
}
//////////////////////////////////////////////////////////////////////////////
@@ -242,108 +219,71 @@ WebDataService::Handle WebDataService::GetWebAppImages(
//////////////////////////////////////////////////////////////////////////////
void WebDataService::AddWebIntentService(const WebIntentServiceData& service) {
- GenericRequest<WebIntentServiceData>* request =
- new GenericRequest<WebIntentServiceData>(
- this, NULL, &request_manager_, service);
- ScheduleTask(FROM_HERE,
- Bind(&WebDataService::AddWebIntentServiceImpl, this, request));
+ ScheduleDBTask(FROM_HERE,
+ Bind(&WebDataService::AddWebIntentServiceImpl, this, service));
}
void WebDataService::RemoveWebIntentService(
const WebIntentServiceData& service) {
- GenericRequest<WebIntentServiceData>* request =
- new GenericRequest<WebIntentServiceData>(
- this, NULL, &request_manager_, service);
- ScheduleTask(FROM_HERE, Bind(&WebDataService::RemoveWebIntentServiceImpl,
- this, request));
+ ScheduleDBTask(FROM_HERE, Bind(&WebDataService::RemoveWebIntentServiceImpl,
+ this, service));
}
WebDataService::Handle WebDataService::GetWebIntentServicesForAction(
const string16& action,
WebDataServiceConsumer* consumer) {
- DCHECK(consumer);
- GenericRequest<string16>* request =
- new GenericRequest<string16>(
- this, consumer, &request_manager_, action);
- ScheduleTask(FROM_HERE,
- Bind(&WebDataService::GetWebIntentServicesImpl, this, request));
- return request->GetHandle();
+ return ScheduleDBTaskWithResult(FROM_HERE,
+ Bind(&WebDataService::GetWebIntentServicesImpl, this, action), consumer);
}
WebDataService::Handle WebDataService::GetWebIntentServicesForURL(
const string16& service_url,
WebDataServiceConsumer* consumer) {
- DCHECK(consumer);
- GenericRequest<string16>* request =
- new GenericRequest<string16>(
- this, consumer, &request_manager_, service_url);
- ScheduleTask(FROM_HERE, Bind(&WebDataService::GetWebIntentServicesForURLImpl,
- this, request));
- return request->GetHandle();
+ return ScheduleDBTaskWithResult(FROM_HERE,
+ Bind(&WebDataService::GetWebIntentServicesForURLImpl, this, service_url),
+ consumer);
}
WebDataService::Handle WebDataService::GetAllWebIntentServices(
WebDataServiceConsumer* consumer) {
- DCHECK(consumer);
- GenericRequest<std::string>* request =
- new GenericRequest<std::string>(
- this, consumer, &request_manager_, std::string());
- ScheduleTask(FROM_HERE, Bind(&WebDataService::GetAllWebIntentServicesImpl,
- this, request));
- return request->GetHandle();
+ return ScheduleDBTaskWithResult(FROM_HERE,
+ Bind(&WebDataService::GetAllWebIntentServicesImpl, this), consumer);
}
void WebDataService::AddDefaultWebIntentService(
const DefaultWebIntentService& service) {
- GenericRequest<DefaultWebIntentService>* request =
- new GenericRequest<DefaultWebIntentService>(
- this, NULL, &request_manager_, service);
- ScheduleTask(FROM_HERE,
- Bind(&WebDataService::AddDefaultWebIntentServiceImpl, this,
- request));
+ ScheduleDBTask(FROM_HERE,
+ Bind(&WebDataService::AddDefaultWebIntentServiceImpl, this, service));
}
void WebDataService::RemoveDefaultWebIntentService(
const DefaultWebIntentService& service) {
- GenericRequest<DefaultWebIntentService>* request =
- new GenericRequest<DefaultWebIntentService>(
- this, NULL, &request_manager_, service);
- ScheduleTask(FROM_HERE,
- Bind(&WebDataService::RemoveDefaultWebIntentServiceImpl, this,
- request));
+ ScheduleDBTask(FROM_HERE,
+ Bind(&WebDataService::RemoveDefaultWebIntentServiceImpl, this, service));
}
void WebDataService::RemoveWebIntentServiceDefaults(
const GURL& service_url) {
- GenericRequest<GURL>* request =
- new GenericRequest<GURL>(this, NULL, &request_manager_, service_url);
- ScheduleTask(
- FROM_HERE,
- Bind(&WebDataService::RemoveWebIntentServiceDefaultsImpl, this, request));
+ ScheduleDBTask(FROM_HERE,
+ Bind(&WebDataService::RemoveWebIntentServiceDefaultsImpl, this,
+ service_url));
}
WebDataService::Handle WebDataService::GetDefaultWebIntentServicesForAction(
const string16& action,
WebDataServiceConsumer* consumer) {
- DCHECK(consumer);
- GenericRequest<string16>* request = new GenericRequest<string16>(
- this, consumer, &request_manager_, action);
- ScheduleTask(FROM_HERE,
- Bind(&WebDataService::GetDefaultWebIntentServicesForActionImpl,
- this, request));
- return request->GetHandle();
+ return ScheduleDBTaskWithResult(FROM_HERE,
+ Bind(&WebDataService::GetDefaultWebIntentServicesForActionImpl, this,
+ action),
+ consumer);
}
WebDataService::Handle WebDataService::GetAllDefaultWebIntentServices(
WebDataServiceConsumer* consumer) {
- DCHECK(consumer);
- GenericRequest<std::string>* request = new GenericRequest<std::string>(
- this, consumer, &request_manager_, std::string());
- ScheduleTask(FROM_HERE,
- Bind(&WebDataService::GetAllDefaultWebIntentServicesImpl,
- this, request));
- return request->GetHandle();
+ return ScheduleDBTaskWithResult(FROM_HERE,
+ Bind(&WebDataService::GetAllDefaultWebIntentServicesImpl, this),
+ consumer);
}
////////////////////////////////////////////////////////////////////////////////
@@ -354,31 +294,19 @@ WebDataService::Handle WebDataService::GetAllDefaultWebIntentServices(
void WebDataService::SetTokenForService(const std::string& service,
const std::string& token) {
- GenericRequest2<std::string, std::string>* request =
- new GenericRequest2<std::string, std::string>(
- this, NULL, &request_manager_, service, token);
- ScheduleTask(FROM_HERE,
- Bind(&WebDataService::SetTokenForServiceImpl, this, request));
+ ScheduleDBTask(FROM_HERE,
+ Bind(&WebDataService::SetTokenForServiceImpl, this, service, token));
}
void WebDataService::RemoveAllTokens() {
- GenericRequest<std::string>* request =
- new GenericRequest<std::string>(
- this, NULL, &request_manager_, std::string());
- ScheduleTask(FROM_HERE,
- Bind(&WebDataService::RemoveAllTokensImpl, this, request));
+ ScheduleDBTask(FROM_HERE, Bind(&WebDataService::RemoveAllTokensImpl, this));
}
// Null on failure. Success is WDResult<std::string>
WebDataService::Handle WebDataService::GetAllTokens(
WebDataServiceConsumer* consumer) {
-
- GenericRequest<std::string>* request =
- new GenericRequest<std::string>(
- this, consumer, &request_manager_, std::string());
- ScheduleTask(FROM_HERE,
- Bind(&WebDataService::GetAllTokensImpl, this, request));
- return request->GetHandle();
+ return ScheduleDBTaskWithResult(FROM_HERE,
+ Bind(&WebDataService::GetAllTokensImpl, this), consumer);
}
////////////////////////////////////////////////////////////////////////////////
@@ -389,132 +317,91 @@ WebDataService::Handle WebDataService::GetAllTokens(
void WebDataService::AddFormFields(
const std::vector<FormFieldData>& fields) {
- GenericRequest<std::vector<FormFieldData> >* request =
- new GenericRequest<std::vector<FormFieldData> >(
- this, NULL, &request_manager_, fields);
- ScheduleTask(FROM_HERE,
- Bind(&WebDataService::AddFormElementsImpl, this, request));
+ ScheduleDBTask(FROM_HERE,
+ Bind(&WebDataService::AddFormElementsImpl, this, fields));
}
WebDataService::Handle WebDataService::GetFormValuesForElementName(
const string16& name, const string16& prefix, int limit,
WebDataServiceConsumer* consumer) {
- WebDataRequest* request =
- new WebDataRequest(this, consumer, &request_manager_);
- ScheduleTask(FROM_HERE,
- Bind(&WebDataService::GetFormValuesForElementNameImpl,
- this, request, name, prefix, limit));
- return request->GetHandle();
+ return ScheduleDBTaskWithResult(FROM_HERE,
+ Bind(&WebDataService::GetFormValuesForElementNameImpl,
+ this, name, prefix, limit),
+ consumer);
}
void WebDataService::RemoveFormElementsAddedBetween(const Time& delete_begin,
const Time& delete_end) {
- GenericRequest2<Time, Time>* request =
- new GenericRequest2<Time, Time>(
- this, NULL, &request_manager_, delete_begin, delete_end);
- ScheduleTask(FROM_HERE,
- Bind(&WebDataService::RemoveFormElementsAddedBetweenImpl,
- this, request));
+ ScheduleDBTask(FROM_HERE,
+ Bind(&WebDataService::RemoveFormElementsAddedBetweenImpl,
+ this, delete_begin, delete_end));
}
void WebDataService::RemoveExpiredFormElements() {
- WebDataRequest* request =
- new WebDataRequest(this, NULL, &request_manager_);
- ScheduleTask(FROM_HERE,
- Bind(&WebDataService::RemoveExpiredFormElementsImpl,
- this, request));
+ ScheduleDBTask(FROM_HERE,
+ Bind(&WebDataService::RemoveExpiredFormElementsImpl, this));
}
void WebDataService::RemoveFormValueForElementName(
const string16& name, const string16& value) {
- GenericRequest2<string16, string16>* request =
- new GenericRequest2<string16, string16>(
- this, NULL, &request_manager_, name, value);
- ScheduleTask(FROM_HERE,
- Bind(&WebDataService::RemoveFormValueForElementNameImpl,
- this, request));
+ ScheduleDBTask(FROM_HERE,
+ Bind(&WebDataService::RemoveFormValueForElementNameImpl,
+ this, name, value));
}
void WebDataService::AddAutofillProfile(const AutofillProfile& profile) {
- GenericRequest<AutofillProfile>* request =
- new GenericRequest<AutofillProfile>(
- this, NULL, &request_manager_, profile);
- ScheduleTask(FROM_HERE,
- Bind(&WebDataService::AddAutofillProfileImpl, this, request));
+ ScheduleDBTask(FROM_HERE,
+ Bind(&WebDataService::AddAutofillProfileImpl, this, profile));
}
void WebDataService::UpdateAutofillProfile(const AutofillProfile& profile) {
- GenericRequest<AutofillProfile>* request =
- new GenericRequest<AutofillProfile>(
- this, NULL, &request_manager_, profile);
- ScheduleTask(FROM_HERE,
- Bind(&WebDataService::UpdateAutofillProfileImpl, this, request));
+ ScheduleDBTask(FROM_HERE,
+ Bind(&WebDataService::UpdateAutofillProfileImpl, this, profile));
}
void WebDataService::RemoveAutofillProfile(const std::string& guid) {
- GenericRequest<std::string>* request =
- new GenericRequest<std::string>(this, NULL, &request_manager_, guid);
- ScheduleTask(FROM_HERE,
- Bind(&WebDataService::RemoveAutofillProfileImpl, this, request));
+ ScheduleDBTask(FROM_HERE,
+ Bind(&WebDataService::RemoveAutofillProfileImpl, this, guid));
}
WebDataService::Handle WebDataService::GetAutofillProfiles(
WebDataServiceConsumer* consumer) {
- WebDataRequest* request =
- new WebDataRequest(this, consumer, &request_manager_);
- ScheduleTask(FROM_HERE,
- Bind(&WebDataService::GetAutofillProfilesImpl, this, request));
- return request->GetHandle();
+ return ScheduleDBTaskWithResult(FROM_HERE,
+ Bind(&WebDataService::GetAutofillProfilesImpl, this), consumer);
}
void WebDataService::EmptyMigrationTrash(bool notify_sync) {
- GenericRequest<bool>* request =
- new GenericRequest<bool>(this, NULL, &request_manager_, notify_sync);
- ScheduleTask(FROM_HERE,
- Bind(&WebDataService::EmptyMigrationTrashImpl, this, request));
+ ScheduleDBTask(FROM_HERE,
+ Bind(&WebDataService::EmptyMigrationTrashImpl, this, notify_sync));
}
void WebDataService::AddCreditCard(const CreditCard& credit_card) {
- GenericRequest<CreditCard>* request =
- new GenericRequest<CreditCard>(
- this, NULL, &request_manager_, credit_card);
- ScheduleTask(FROM_HERE,
- Bind(&WebDataService::AddCreditCardImpl, this, request));
+ ScheduleDBTask(FROM_HERE,
+ Bind(&WebDataService::AddCreditCardImpl, this, credit_card));
}
void WebDataService::UpdateCreditCard(const CreditCard& credit_card) {
- GenericRequest<CreditCard>* request =
- new GenericRequest<CreditCard>(
- this, NULL, &request_manager_, credit_card);
- ScheduleTask(FROM_HERE,
- Bind(&WebDataService::UpdateCreditCardImpl, this, request));
+ ScheduleDBTask(FROM_HERE,
+ Bind(&WebDataService::UpdateCreditCardImpl, this, credit_card));
}
void WebDataService::RemoveCreditCard(const std::string& guid) {
- GenericRequest<std::string>* request =
- new GenericRequest<std::string>(this, NULL, &request_manager_, guid);
- ScheduleTask(FROM_HERE,
- Bind(&WebDataService::RemoveCreditCardImpl, this, request));
+ ScheduleDBTask(FROM_HERE,
+ Bind(&WebDataService::RemoveCreditCardImpl, this, guid));
}
WebDataService::Handle WebDataService::GetCreditCards(
WebDataServiceConsumer* consumer) {
- WebDataRequest* request =
- new WebDataRequest(this, consumer, &request_manager_);
- ScheduleTask(FROM_HERE,
- Bind(&WebDataService::GetCreditCardsImpl, this, request));
- return request->GetHandle();
+ return ScheduleDBTaskWithResult(FROM_HERE,
+ Bind(&WebDataService::GetCreditCardsImpl, this), consumer);
}
void WebDataService::RemoveAutofillProfilesAndCreditCardsModifiedBetween(
const Time& delete_begin,
const Time& delete_end) {
- GenericRequest2<Time, Time>* request =
- new GenericRequest2<Time, Time>(
- this, NULL, &request_manager_, delete_begin, delete_end);
- ScheduleTask(FROM_HERE, Bind(
+ ScheduleDBTask(FROM_HERE, Bind(
&WebDataService::RemoveAutofillProfilesAndCreditCardsModifiedBetweenImpl,
- this, request));
+ this, delete_begin, delete_end));
}
WebDataService::~WebDataService() {
@@ -636,90 +523,110 @@ void WebDataService::ScheduleTask(const tracked_objects::Location& from_here,
NOTREACHED() << "Task scheduled after Shutdown()";
}
-void WebDataService::ScheduleCommit() {
- if (should_commit_ == false) {
- should_commit_ = true;
- ScheduleTask(FROM_HERE, Bind(&WebDataService::Commit, this));
+void WebDataService::ScheduleDBTask(
+ const tracked_objects::Location& from_here,
+ const base::Closure& task) {
+ WebDataRequest* request =
+ new WebDataRequest(this, NULL, &request_manager_);
+ if (is_running_) {
+ BrowserThread::PostTask(BrowserThread::DB, from_here,
+ base::Bind(&WebDataService::DBTaskWrapper, this, task, request));
+ } else {
+ NOTREACHED() << "Task scheduled after Shutdown()";
}
}
-////////////////////////////////////////////////////////////////////////////////
-//
-// Keywords implementation.
-//
-////////////////////////////////////////////////////////////////////////////////
+WebDataService::Handle WebDataService::ScheduleDBTaskWithResult(
+ const tracked_objects::Location& from_here,
+ const ResultTask& task,
+ WebDataServiceConsumer* consumer) {
+ DCHECK(consumer);
+ WebDataRequest* request =
+ new WebDataRequest(this, consumer, &request_manager_);
+ if (is_running_) {
+ BrowserThread::PostTask(BrowserThread::DB, from_here,
+ base::Bind(&WebDataService::DBResultTaskWrapper, this, task, request));
+ } else {
+ NOTREACHED() << "Task scheduled after Shutdown()";
+ }
+ return request->GetHandle();
+}
-void WebDataService::AddKeywordImpl(GenericRequest<TemplateURLData>* request) {
+void WebDataService::DBTaskWrapper(const base::Closure& task,
+ WebDataRequest* request) {
InitializeDatabaseIfNecessary();
if (db_ && !request->IsCancelled()) {
- db_->GetKeywordTable()->AddKeyword(request->arg());
- ScheduleCommit();
+ task.Run();
}
request->RequestComplete();
}
-void WebDataService::RemoveKeywordImpl(GenericRequest<TemplateURLID>* request) {
+void WebDataService::DBResultTaskWrapper(const ResultTask& task,
+ WebDataRequest* request) {
InitializeDatabaseIfNecessary();
if (db_ && !request->IsCancelled()) {
- DCHECK(request->arg());
- db_->GetKeywordTable()->RemoveKeyword(request->arg());
- ScheduleCommit();
+ request->SetResult(task.Run().Pass());
}
request->RequestComplete();
}
-void WebDataService::UpdateKeywordImpl(
- GenericRequest<TemplateURLData>* request) {
- InitializeDatabaseIfNecessary();
- if (db_ && !request->IsCancelled()) {
- if (!db_->GetKeywordTable()->UpdateKeyword(request->arg())) {
- NOTREACHED();
- return;
- }
- ScheduleCommit();
+void WebDataService::ScheduleCommit() {
+ if (should_commit_ == false) {
+ should_commit_ = true;
+ ScheduleTask(FROM_HERE, Bind(&WebDataService::Commit, this));
}
- request->RequestComplete();
}
-void WebDataService::GetKeywordsImpl(WebDataRequest* request) {
- InitializeDatabaseIfNecessary();
- if (db_ && !request->IsCancelled()) {
- WDKeywordsResult result;
- db_->GetKeywordTable()->GetKeywords(&result.keywords);
- result.default_search_provider_id =
- db_->GetKeywordTable()->GetDefaultSearchProviderID();
- result.builtin_keyword_version =
- db_->GetKeywordTable()->GetBuiltinKeywordVersion();
- request->SetResult(
- new WDResult<WDKeywordsResult>(KEYWORDS_RESULT, result));
+////////////////////////////////////////////////////////////////////////////////
+//
+// Keywords implementation.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+void WebDataService::AddKeywordImpl(const TemplateURLData& data) {
+ db_->GetKeywordTable()->AddKeyword(data);
+ ScheduleCommit();
+}
+
+void WebDataService::RemoveKeywordImpl(TemplateURLID id) {
+ DCHECK(id);
+ db_->GetKeywordTable()->RemoveKeyword(id);
+ ScheduleCommit();
+}
+
+void WebDataService::UpdateKeywordImpl(const TemplateURLData& data) {
+ if (!db_->GetKeywordTable()->UpdateKeyword(data)) {
+ NOTREACHED();
+ return;
}
- request->RequestComplete();
+ ScheduleCommit();
}
-void WebDataService::SetDefaultSearchProviderImpl(
- GenericRequest<TemplateURLID>* request) {
- InitializeDatabaseIfNecessary();
- if (db_ && !request->IsCancelled()) {
- if (!db_->GetKeywordTable()->SetDefaultSearchProviderID(request->arg())) {
- NOTREACHED();
- return;
- }
- ScheduleCommit();
+scoped_ptr<WDTypedResult> WebDataService::GetKeywordsImpl() {
+ WDKeywordsResult result;
+ db_->GetKeywordTable()->GetKeywords(&result.keywords);
+ result.default_search_provider_id =
+ db_->GetKeywordTable()->GetDefaultSearchProviderID();
+ result.builtin_keyword_version =
+ db_->GetKeywordTable()->GetBuiltinKeywordVersion();
+ return scoped_ptr<WDTypedResult>(
+ new WDResult<WDKeywordsResult>(KEYWORDS_RESULT, result));
+}
+
+void WebDataService::SetDefaultSearchProviderImpl(TemplateURLID id) {
+ if (!db_->GetKeywordTable()->SetDefaultSearchProviderID(id)) {
+ NOTREACHED();
+ return;
}
- request->RequestComplete();
+ ScheduleCommit();
}
-void WebDataService::SetBuiltinKeywordVersionImpl(
- GenericRequest<int>* request) {
- InitializeDatabaseIfNecessary();
- if (db_ && !request->IsCancelled()) {
- if (!db_->GetKeywordTable()->SetBuiltinKeywordVersion(request->arg())) {
- NOTREACHED();
- return;
- }
- ScheduleCommit();
+void WebDataService::SetBuiltinKeywordVersionImpl(int version) {
+ if (!db_->GetKeywordTable()->SetBuiltinKeywordVersion(version)) {
+ NOTREACHED();
+ return;
}
- request->RequestComplete();
+ ScheduleCommit();
}
////////////////////////////////////////////////////////////////////////////////
@@ -729,47 +636,30 @@ void WebDataService::SetBuiltinKeywordVersionImpl(
////////////////////////////////////////////////////////////////////////////////
void WebDataService::SetWebAppImageImpl(
- GenericRequest2<GURL, SkBitmap>* request) {
- InitializeDatabaseIfNecessary();
- if (db_ && !request->IsCancelled()) {
- db_->GetWebAppsTable()->SetWebAppImage(
- request->arg1(), request->arg2());
- ScheduleCommit();
- }
- request->RequestComplete();
+ const GURL& app_url, const SkBitmap& image) {
+ db_->GetWebAppsTable()->SetWebAppImage(app_url, image);
+ ScheduleCommit();
}
void WebDataService::SetWebAppHasAllImagesImpl(
- GenericRequest2<GURL, bool>* request) {
- InitializeDatabaseIfNecessary();
- if (db_ && !request->IsCancelled()) {
- db_->GetWebAppsTable()->SetWebAppHasAllImages(request->arg1(),
- request->arg2());
- ScheduleCommit();
- }
- request->RequestComplete();
+ const GURL& app_url, bool has_all_images) {
+ db_->GetWebAppsTable()->SetWebAppHasAllImages(app_url, has_all_images);
+ ScheduleCommit();
}
-void WebDataService::RemoveWebAppImpl(GenericRequest<GURL>* request) {
- InitializeDatabaseIfNecessary();
- if (db_ && !request->IsCancelled()) {
- db_->GetWebAppsTable()->RemoveWebApp(request->arg());
- ScheduleCommit();
- }
- request->RequestComplete();
+void WebDataService::RemoveWebAppImpl(const GURL& app_url) {
+ db_->GetWebAppsTable()->RemoveWebApp(app_url);
+ ScheduleCommit();
}
-void WebDataService::GetWebAppImagesImpl(GenericRequest<GURL>* request) {
- InitializeDatabaseIfNecessary();
- if (db_ && !request->IsCancelled()) {
- WDAppImagesResult result;
- result.has_all_images =
- db_->GetWebAppsTable()->GetWebAppHasAllImages(request->arg());
- db_->GetWebAppsTable()->GetWebAppImages(request->arg(), &result.images);
- request->SetResult(
- new WDResult<WDAppImagesResult>(WEB_APP_IMAGES, result));
- }
- request->RequestComplete();
+scoped_ptr<WDTypedResult> WebDataService::GetWebAppImagesImpl(
+ const GURL& app_url) {
+ WDAppImagesResult result;
+ result.has_all_images =
+ db_->GetWebAppsTable()->GetWebAppHasAllImages(app_url);
+ db_->GetWebAppsTable()->GetWebAppImages(app_url, &result.images);
+ return scoped_ptr<WDTypedResult>(
+ new WDResult<WDAppImagesResult>(WEB_APP_IMAGES, result));
}
////////////////////////////////////////////////////////////////////////////////
@@ -779,126 +669,78 @@ void WebDataService::GetWebAppImagesImpl(GenericRequest<GURL>* request) {
////////////////////////////////////////////////////////////////////////////////
void WebDataService::RemoveWebIntentServiceImpl(
- GenericRequest<WebIntentServiceData>* request) {
- InitializeDatabaseIfNecessary();
- if (db_ && !request->IsCancelled()) {
- const WebIntentServiceData& service = request->arg();
- db_->GetWebIntentsTable()->RemoveWebIntentService(service);
- ScheduleCommit();
- }
- request->RequestComplete();
+ const webkit_glue::WebIntentServiceData& service) {
+ db_->GetWebIntentsTable()->RemoveWebIntentService(service);
+ ScheduleCommit();
}
void WebDataService::AddWebIntentServiceImpl(
- GenericRequest<WebIntentServiceData>* request) {
- InitializeDatabaseIfNecessary();
- if (db_ && !request->IsCancelled()) {
- const WebIntentServiceData& service = request->arg();
- db_->GetWebIntentsTable()->SetWebIntentService(service);
- ScheduleCommit();
- }
- request->RequestComplete();
+ const webkit_glue::WebIntentServiceData& service) {
+ db_->GetWebIntentsTable()->SetWebIntentService(service);
+ ScheduleCommit();
}
-void WebDataService::GetWebIntentServicesImpl(
- GenericRequest<string16>* request) {
- InitializeDatabaseIfNecessary();
- if (db_ && !request->IsCancelled()) {
- std::vector<WebIntentServiceData> result;
- db_->GetWebIntentsTable()->GetWebIntentServicesForAction(request->arg(),
- &result);
- request->SetResult(new WDResult<std::vector<WebIntentServiceData> >(
- WEB_INTENTS_RESULT, result));
- }
- request->RequestComplete();
+scoped_ptr<WDTypedResult> WebDataService::GetWebIntentServicesImpl(
+ const string16& action) {
+ std::vector<WebIntentServiceData> result;
+ db_->GetWebIntentsTable()->GetWebIntentServicesForAction(action, &result);
+ return scoped_ptr<WDTypedResult>(
+ new WDResult<std::vector<WebIntentServiceData> >(
+ WEB_INTENTS_RESULT, result));
}
-void WebDataService::GetWebIntentServicesForURLImpl(
- GenericRequest<string16>* request) {
- InitializeDatabaseIfNecessary();
- if (db_ && !request->IsCancelled()) {
- std::vector<WebIntentServiceData> result;
- db_->GetWebIntentsTable()->GetWebIntentServicesForURL(
- request->arg(), &result);
- request->SetResult(
- new WDResult<std::vector<WebIntentServiceData> >(
- WEB_INTENTS_RESULT, result));
- }
- request->RequestComplete();
+scoped_ptr<WDTypedResult> WebDataService::GetWebIntentServicesForURLImpl(
+ const string16& service_url) {
+ std::vector<WebIntentServiceData> result;
+ db_->GetWebIntentsTable()->GetWebIntentServicesForURL(service_url, &result);
+ return scoped_ptr<WDTypedResult>(
+ new WDResult<std::vector<WebIntentServiceData> >(
+ WEB_INTENTS_RESULT, result));
}
-void WebDataService::GetAllWebIntentServicesImpl(
- GenericRequest<std::string>* request) {
- InitializeDatabaseIfNecessary();
- if (db_ && !request->IsCancelled()) {
- std::vector<WebIntentServiceData> result;
- db_->GetWebIntentsTable()->GetAllWebIntentServices(&result);
- request->SetResult(
- new WDResult<std::vector<WebIntentServiceData> >(
- WEB_INTENTS_RESULT, result));
- }
- request->RequestComplete();
+scoped_ptr<WDTypedResult> WebDataService::GetAllWebIntentServicesImpl() {
+ std::vector<WebIntentServiceData> result;
+ db_->GetWebIntentsTable()->GetAllWebIntentServices(&result);
+ return scoped_ptr<WDTypedResult>(
+ new WDResult<std::vector<WebIntentServiceData> >(
+ WEB_INTENTS_RESULT, result));
}
void WebDataService::AddDefaultWebIntentServiceImpl(
- GenericRequest<DefaultWebIntentService>* request) {
- InitializeDatabaseIfNecessary();
- if (db_ && !request->IsCancelled()) {
- const DefaultWebIntentService& service = request->arg();
- db_->GetWebIntentsTable()->SetDefaultService(service);
- ScheduleCommit();
- }
- request->RequestComplete();
+ const DefaultWebIntentService& service) {
+ db_->GetWebIntentsTable()->SetDefaultService(service);
+ ScheduleCommit();
}
void WebDataService::RemoveDefaultWebIntentServiceImpl(
- GenericRequest<DefaultWebIntentService>* request) {
- InitializeDatabaseIfNecessary();
- if (db_ && !request->IsCancelled()) {
- const DefaultWebIntentService& service = request->arg();
- db_->GetWebIntentsTable()->RemoveDefaultService(service);
- ScheduleCommit();
- }
- request->RequestComplete();
+ const DefaultWebIntentService& service) {
+ db_->GetWebIntentsTable()->RemoveDefaultService(service);
+ ScheduleCommit();
}
void WebDataService::RemoveWebIntentServiceDefaultsImpl(
- GenericRequest<GURL>* request) {
- InitializeDatabaseIfNecessary();
- if (db_ && !request->IsCancelled()) {
- const GURL& service_url = request->arg();
- db_->GetWebIntentsTable()->RemoveServiceDefaults(service_url);
- ScheduleCommit();
- }
- request->RequestComplete();
+ const GURL& service_url) {
+ db_->GetWebIntentsTable()->RemoveServiceDefaults(service_url);
+ ScheduleCommit();
}
-void WebDataService::GetDefaultWebIntentServicesForActionImpl(
- GenericRequest<string16>* request) {
- InitializeDatabaseIfNecessary();
- if (db_ && !request->IsCancelled()) {
- std::vector<DefaultWebIntentService> result;
- db_->GetWebIntentsTable()->GetDefaultServices(
- request->arg(), &result);
- request->SetResult(
- new WDResult<std::vector<DefaultWebIntentService> >(
- WEB_INTENTS_DEFAULTS_RESULT, result));
- }
- request->RequestComplete();
+scoped_ptr<WDTypedResult>
+ WebDataService::GetDefaultWebIntentServicesForActionImpl(
+ const string16& action) {
+ std::vector<DefaultWebIntentService> result;
+ db_->GetWebIntentsTable()->GetDefaultServices(action, &result);
+ return scoped_ptr<WDTypedResult>(
+ new WDResult<std::vector<DefaultWebIntentService> >(
+ WEB_INTENTS_DEFAULTS_RESULT, result));
}
-void WebDataService::GetAllDefaultWebIntentServicesImpl(
- GenericRequest<std::string>* request) {
- InitializeDatabaseIfNecessary();
- if (db_ && !request->IsCancelled()) {
- std::vector<DefaultWebIntentService> result;
- db_->GetWebIntentsTable()->GetAllDefaultServices(&result);
- request->SetResult(
- new WDResult<std::vector<DefaultWebIntentService> >(
- WEB_INTENTS_DEFAULTS_RESULT, result));
- }
- request->RequestComplete();
+scoped_ptr<WDTypedResult> WebDataService::GetAllDefaultWebIntentServicesImpl() {
+ std::vector<DefaultWebIntentService> result;
+ db_->GetWebIntentsTable()->GetAllDefaultServices(&result);
+ return scoped_ptr<WDTypedResult>(
+ new WDResult<std::vector<DefaultWebIntentService> >(
+ WEB_INTENTS_DEFAULTS_RESULT, result));
}
////////////////////////////////////////////////////////////////////////////////
@@ -907,41 +749,24 @@ void WebDataService::GetAllDefaultWebIntentServicesImpl(
//
////////////////////////////////////////////////////////////////////////////////
-// argument std::string is unused
-void WebDataService::RemoveAllTokensImpl(
- GenericRequest<std::string>* request) {
- InitializeDatabaseIfNecessary();
- if (db_ && !request->IsCancelled()) {
- if (db_->GetTokenServiceTable()->RemoveAllTokens()) {
- ScheduleCommit();
- }
+void WebDataService::RemoveAllTokensImpl() {
+ if (db_->GetTokenServiceTable()->RemoveAllTokens()) {
+ ScheduleCommit();
}
- request->RequestComplete();
}
-void WebDataService::SetTokenForServiceImpl(
- GenericRequest2<std::string, std::string>* request) {
- InitializeDatabaseIfNecessary();
- if (db_ && !request->IsCancelled()) {
- if (db_->GetTokenServiceTable()->SetTokenForService(
- request->arg1(), request->arg2())) {
- ScheduleCommit();
- }
+void WebDataService::SetTokenForServiceImpl(const std::string& service,
+ const std::string& token) {
+ if (db_->GetTokenServiceTable()->SetTokenForService(service, token)) {
+ ScheduleCommit();
}
- request->RequestComplete();
}
-// argument is unused
-void WebDataService::GetAllTokensImpl(
- GenericRequest<std::string>* request) {
- InitializeDatabaseIfNecessary();
- if (db_ && !request->IsCancelled()) {
- std::map<std::string, std::string> map;
- db_->GetTokenServiceTable()->GetAllTokens(&map);
- request->SetResult(
- new WDResult<std::map<std::string, std::string> >(TOKEN_RESULT, map));
- }
- request->RequestComplete();
+scoped_ptr<WDTypedResult> WebDataService::GetAllTokensImpl() {
+ std::map<std::string, std::string> map;
+ db_->GetTokenServiceTable()->GetAllTokens(&map);
+ return scoped_ptr<WDTypedResult>(
+ new WDResult<std::map<std::string, std::string> >(TOKEN_RESULT, map));
}
////////////////////////////////////////////////////////////////////////////////
@@ -951,393 +776,305 @@ void WebDataService::GetAllTokensImpl(
////////////////////////////////////////////////////////////////////////////////
void WebDataService::AddFormElementsImpl(
- GenericRequest<std::vector<FormFieldData> >* request) {
- InitializeDatabaseIfNecessary();
- if (db_ && !request->IsCancelled()) {
- AutofillChangeList changes;
- if (!db_->GetAutofillTable()->AddFormFieldValues(
- request->arg(), &changes)) {
- NOTREACHED();
- return;
- }
- request->SetResult(
- new WDResult<AutofillChangeList>(AUTOFILL_CHANGES, changes));
- ScheduleCommit();
-
- // Post the notifications including the list of affected keys.
- // This is sent here so that work resulting from this notification will be
- // done on the DB thread, and not the UI thread.
- content::NotificationService::current()->Notify(
- chrome::NOTIFICATION_AUTOFILL_ENTRIES_CHANGED,
- content::Source<WebDataService>(this),
- content::Details<AutofillChangeList>(&changes));
+ const std::vector<FormFieldData>& fields) {
+ AutofillChangeList changes;
+ if (!db_->GetAutofillTable()->AddFormFieldValues(fields, &changes)) {
+ NOTREACHED();
+ return;
}
+ ScheduleCommit();
- request->RequestComplete();
+ // Post the notifications including the list of affected keys.
+ // This is sent here so that work resulting from this notification will be
+ // done on the DB thread, and not the UI thread.
+ content::NotificationService::current()->Notify(
+ chrome::NOTIFICATION_AUTOFILL_ENTRIES_CHANGED,
+ content::Source<WebDataService>(this),
+ content::Details<AutofillChangeList>(&changes));
}
-void WebDataService::GetFormValuesForElementNameImpl(WebDataRequest* request,
- const string16& name, const string16& prefix, int limit) {
- InitializeDatabaseIfNecessary();
- if (db_ && !request->IsCancelled()) {
- std::vector<string16> values;
- db_->GetAutofillTable()->GetFormValuesForElementName(
- name, prefix, &values, limit);
- request->SetResult(
- new WDResult<std::vector<string16> >(AUTOFILL_VALUE_RESULT, values));
- }
- request->RequestComplete();
+scoped_ptr<WDTypedResult> WebDataService::GetFormValuesForElementNameImpl(
+ const string16& name, const string16& prefix, int limit) {
+ std::vector<string16> values;
+ db_->GetAutofillTable()->GetFormValuesForElementName(
+ name, prefix, &values, limit);
+ return scoped_ptr<WDTypedResult>(
+ new WDResult<std::vector<string16> >(AUTOFILL_VALUE_RESULT, values));
}
void WebDataService::RemoveFormElementsAddedBetweenImpl(
- GenericRequest2<Time, Time>* request) {
- InitializeDatabaseIfNecessary();
- if (db_ && !request->IsCancelled()) {
- AutofillChangeList changes;
- if (db_->GetAutofillTable()->RemoveFormElementsAddedBetween(
- request->arg1(), request->arg2(), &changes)) {
- if (!changes.empty()) {
- request->SetResult(
- new WDResult<AutofillChangeList>(AUTOFILL_CHANGES, changes));
-
- // Post the notifications including the list of affected keys.
- // This is sent here so that work resulting from this notification
- // will be done on the DB thread, and not the UI thread.
- content::NotificationService::current()->Notify(
- chrome::NOTIFICATION_AUTOFILL_ENTRIES_CHANGED,
- content::Source<WebDataService>(this),
- content::Details<AutofillChangeList>(&changes));
- }
- ScheduleCommit();
- }
- }
- request->RequestComplete();
-}
-
-void WebDataService::RemoveExpiredFormElementsImpl(WebDataRequest* request) {
- InitializeDatabaseIfNecessary();
- if (db_ && !request->IsCancelled()) {
- AutofillChangeList changes;
- if (db_->GetAutofillTable()->RemoveExpiredFormElements(&changes)) {
- if (!changes.empty()) {
- request->SetResult(
- new WDResult<AutofillChangeList>(AUTOFILL_CHANGES, changes));
-
- // Post the notifications including the list of affected keys.
- // This is sent here so that work resulting from this notification
- // will be done on the DB thread, and not the UI thread.
- content::NotificationService::current()->Notify(
- chrome::NOTIFICATION_AUTOFILL_ENTRIES_CHANGED,
- content::Source<WebDataService>(this),
- content::Details<AutofillChangeList>(&changes));
- }
- ScheduleCommit();
+ const base::Time& delete_begin, const base::Time& delete_end) {
+ AutofillChangeList changes;
+ if (db_->GetAutofillTable()->RemoveFormElementsAddedBetween(
+ delete_begin, delete_end, &changes)) {
+ if (!changes.empty()) {
+ // Post the notifications including the list of affected keys.
+ // This is sent here so that work resulting from this notification
+ // will be done on the DB thread, and not the UI thread.
+ content::NotificationService::current()->Notify(
+ chrome::NOTIFICATION_AUTOFILL_ENTRIES_CHANGED,
+ content::Source<WebDataService>(this),
+ content::Details<AutofillChangeList>(&changes));
}
+ ScheduleCommit();
}
- request->RequestComplete();
}
-void WebDataService::RemoveFormValueForElementNameImpl(
- GenericRequest2<string16, string16>* request) {
- InitializeDatabaseIfNecessary();
- if (db_ && !request->IsCancelled()) {
- const string16& name = request->arg1();
- const string16& value = request->arg2();
-
- if (db_->GetAutofillTable()->RemoveFormElement(name, value)) {
- AutofillChangeList changes;
- changes.push_back(AutofillChange(AutofillChange::REMOVE,
- AutofillKey(name, value)));
- request->SetResult(
- new WDResult<AutofillChangeList>(AUTOFILL_CHANGES, changes));
- ScheduleCommit();
+void WebDataService::RemoveExpiredFormElementsImpl() {
+ AutofillChangeList changes;
+ if (db_->GetAutofillTable()->RemoveExpiredFormElements(&changes)) {
+ if (!changes.empty()) {
// Post the notifications including the list of affected keys.
+ // This is sent here so that work resulting from this notification
+ // will be done on the DB thread, and not the UI thread.
content::NotificationService::current()->Notify(
chrome::NOTIFICATION_AUTOFILL_ENTRIES_CHANGED,
content::Source<WebDataService>(this),
content::Details<AutofillChangeList>(&changes));
}
+ ScheduleCommit();
}
- request->RequestComplete();
}
-void WebDataService::AddAutofillProfileImpl(
- GenericRequest<AutofillProfile>* request) {
- InitializeDatabaseIfNecessary();
- if (db_ && !request->IsCancelled()) {
- const AutofillProfile& profile = request->arg();
- if (!db_->GetAutofillTable()->AddAutofillProfile(profile)) {
- NOTREACHED();
- return;
- }
+void WebDataService::RemoveFormValueForElementNameImpl(
+ const string16& name, const string16& value) {
+
+ if (db_->GetAutofillTable()->RemoveFormElement(name, value)) {
+ AutofillChangeList changes;
+ changes.push_back(AutofillChange(AutofillChange::REMOVE,
+ AutofillKey(name, value)));
ScheduleCommit();
- // Send GUID-based notification.
- AutofillProfileChange change(AutofillProfileChange::ADD,
- profile.guid(), &profile);
+ // Post the notifications including the list of affected keys.
content::NotificationService::current()->Notify(
- chrome::NOTIFICATION_AUTOFILL_PROFILE_CHANGED,
+ chrome::NOTIFICATION_AUTOFILL_ENTRIES_CHANGED,
content::Source<WebDataService>(this),
- content::Details<AutofillProfileChange>(&change));
+ content::Details<AutofillChangeList>(&changes));
}
- request->RequestComplete();
}
-void WebDataService::UpdateAutofillProfileImpl(
- GenericRequest<AutofillProfile>* request) {
- InitializeDatabaseIfNecessary();
- if (db_ && !request->IsCancelled()) {
- const AutofillProfile& profile = request->arg();
-
- // Only perform the update if the profile exists. It is currently
- // valid to try to update a missing profile. We simply drop the write and
- // the caller will detect this on the next refresh.
- AutofillProfile* original_profile = NULL;
- if (!db_->GetAutofillTable()->GetAutofillProfile(profile.guid(),
- &original_profile)) {
- request->RequestComplete();
- return;
- }
- scoped_ptr<AutofillProfile> scoped_profile(original_profile);
+void WebDataService::AddAutofillProfileImpl(const AutofillProfile& profile) {
+ if (!db_->GetAutofillTable()->AddAutofillProfile(profile)) {
+ NOTREACHED();
+ return;
+ }
+ ScheduleCommit();
- if (!db_->GetAutofillTable()->UpdateAutofillProfileMulti(profile)) {
- NOTREACHED();
- return;
- }
- ScheduleCommit();
+ // Send GUID-based notification.
+ AutofillProfileChange change(AutofillProfileChange::ADD,
+ profile.guid(), &profile);
+ content::NotificationService::current()->Notify(
+ chrome::NOTIFICATION_AUTOFILL_PROFILE_CHANGED,
+ content::Source<WebDataService>(this),
+ content::Details<AutofillProfileChange>(&change));
+}
- // Send GUID-based notification.
- AutofillProfileChange change(AutofillProfileChange::UPDATE,
- profile.guid(), &profile);
- content::NotificationService::current()->Notify(
- chrome::NOTIFICATION_AUTOFILL_PROFILE_CHANGED,
- content::Source<WebDataService>(this),
- content::Details<AutofillProfileChange>(&change));
+void WebDataService::UpdateAutofillProfileImpl(const AutofillProfile& profile) {
+ // Only perform the update if the profile exists. It is currently
+ // valid to try to update a missing profile. We simply drop the write and
+ // the caller will detect this on the next refresh.
+ AutofillProfile* original_profile = NULL;
+ if (!db_->GetAutofillTable()->GetAutofillProfile(profile.guid(),
+ &original_profile)) {
+ return;
}
- request->RequestComplete();
-}
+ scoped_ptr<AutofillProfile> scoped_profile(original_profile);
-void WebDataService::RemoveAutofillProfileImpl(
- GenericRequest<std::string>* request) {
- InitializeDatabaseIfNecessary();
- if (db_ && !request->IsCancelled()) {
- const std::string& guid = request->arg();
+ if (!db_->GetAutofillTable()->UpdateAutofillProfileMulti(profile)) {
+ NOTREACHED();
+ return;
+ }
+ ScheduleCommit();
- AutofillProfile* profile = NULL;
- if (!db_->GetAutofillTable()->GetAutofillProfile(guid, &profile)) {
- NOTREACHED();
- return;
- }
- scoped_ptr<AutofillProfile> scoped_profile(profile);
+ // Send GUID-based notification.
+ AutofillProfileChange change(AutofillProfileChange::UPDATE,
+ profile.guid(), &profile);
+ content::NotificationService::current()->Notify(
+ chrome::NOTIFICATION_AUTOFILL_PROFILE_CHANGED,
+ content::Source<WebDataService>(this),
+ content::Details<AutofillProfileChange>(&change));
+}
- if (!db_->GetAutofillTable()->RemoveAutofillProfile(guid)) {
- NOTREACHED();
- return;
- }
- ScheduleCommit();
+void WebDataService::RemoveAutofillProfileImpl(const std::string& guid) {
+ AutofillProfile* profile = NULL;
+ if (!db_->GetAutofillTable()->GetAutofillProfile(guid, &profile)) {
+ NOTREACHED();
+ return;
+ }
+ scoped_ptr<AutofillProfile> scoped_profile(profile);
- // Send GUID-based notification.
- AutofillProfileChange change(AutofillProfileChange::REMOVE, guid, NULL);
- content::NotificationService::current()->Notify(
- chrome::NOTIFICATION_AUTOFILL_PROFILE_CHANGED,
- content::Source<WebDataService>(this),
- content::Details<AutofillProfileChange>(&change));
+ if (!db_->GetAutofillTable()->RemoveAutofillProfile(guid)) {
+ NOTREACHED();
+ return;
}
- request->RequestComplete();
+ ScheduleCommit();
+
+ // Send GUID-based notification.
+ AutofillProfileChange change(AutofillProfileChange::REMOVE, guid, NULL);
+ content::NotificationService::current()->Notify(
+ chrome::NOTIFICATION_AUTOFILL_PROFILE_CHANGED,
+ content::Source<WebDataService>(this),
+ content::Details<AutofillProfileChange>(&change));
}
-void WebDataService::GetAutofillProfilesImpl(WebDataRequest* request) {
- InitializeDatabaseIfNecessary();
- if (db_ && !request->IsCancelled()) {
- std::vector<AutofillProfile*> profiles;
- db_->GetAutofillTable()->GetAutofillProfiles(&profiles);
- request->SetResult(
- new WDResult<std::vector<AutofillProfile*> >(AUTOFILL_PROFILES_RESULT,
- base::Bind(&WebDataService::DestroyAutofillProfileResult,
- base::Unretained(this)), profiles));
- }
- request->RequestComplete();
+scoped_ptr<WDTypedResult> WebDataService::GetAutofillProfilesImpl() {
+ std::vector<AutofillProfile*> profiles;
+ db_->GetAutofillTable()->GetAutofillProfiles(&profiles);
+ return scoped_ptr<WDTypedResult>(
+ new WDResult<std::vector<AutofillProfile*> >(
+ AUTOFILL_PROFILES_RESULT,
+ base::Bind(&WebDataService::DestroyAutofillProfileResult,
+ base::Unretained(this)),
+ profiles));
}
-void WebDataService::EmptyMigrationTrashImpl(
- GenericRequest<bool>* request) {
- InitializeDatabaseIfNecessary();
- if (db_ && !request->IsCancelled()) {
- bool notify_sync = request->arg();
- if (notify_sync) {
- std::vector<std::string> guids;
- if (!db_->GetAutofillTable()->GetAutofillProfilesInTrash(&guids)) {
- NOTREACHED();
- return;
- }
+void WebDataService::EmptyMigrationTrashImpl(bool notify_sync) {
+ if (notify_sync) {
+ std::vector<std::string> guids;
+ if (!db_->GetAutofillTable()->GetAutofillProfilesInTrash(&guids)) {
+ NOTREACHED();
+ return;
+ }
- for (std::vector<std::string>::const_iterator iter = guids.begin();
- iter != guids.end(); ++iter) {
- // Send GUID-based notification.
- AutofillProfileChange change(AutofillProfileChange::REMOVE,
- *iter, NULL);
+ for (std::vector<std::string>::const_iterator iter = guids.begin();
+ iter != guids.end(); ++iter) {
+ // Send GUID-based notification.
+ AutofillProfileChange change(AutofillProfileChange::REMOVE,
+ *iter, NULL);
+ content::NotificationService::current()->Notify(
+ chrome::NOTIFICATION_AUTOFILL_PROFILE_CHANGED,
+ content::Source<WebDataService>(this),
+ content::Details<AutofillProfileChange>(&change));
+ }
+
+ // If we trashed any profiles they may have been merged, so send out
+ // update notifications as well.
+ if (!guids.empty()) {
+ std::vector<AutofillProfile*> profiles;
+ db_->GetAutofillTable()->GetAutofillProfiles(&profiles);
+ for (std::vector<AutofillProfile*>::const_iterator
+ iter = profiles.begin();
+ iter != profiles.end(); ++iter) {
+ AutofillProfileChange change(AutofillProfileChange::UPDATE,
+ (*iter)->guid(), *iter);
content::NotificationService::current()->Notify(
chrome::NOTIFICATION_AUTOFILL_PROFILE_CHANGED,
content::Source<WebDataService>(this),
content::Details<AutofillProfileChange>(&change));
}
-
- // If we trashed any profiles they may have been merged, so send out
- // update notifications as well.
- if (!guids.empty()) {
- std::vector<AutofillProfile*> profiles;
- db_->GetAutofillTable()->GetAutofillProfiles(&profiles);
- for (std::vector<AutofillProfile*>::const_iterator
- iter = profiles.begin();
- iter != profiles.end(); ++iter) {
- AutofillProfileChange change(AutofillProfileChange::UPDATE,
- (*iter)->guid(), *iter);
- content::NotificationService::current()->Notify(
- chrome::NOTIFICATION_AUTOFILL_PROFILE_CHANGED,
- content::Source<WebDataService>(this),
- content::Details<AutofillProfileChange>(&change));
- }
- STLDeleteElements(&profiles);
- }
+ STLDeleteElements(&profiles);
}
+ }
- if (!db_->GetAutofillTable()->EmptyAutofillProfilesTrash()) {
- NOTREACHED();
- return;
- }
- ScheduleCommit();
+ if (!db_->GetAutofillTable()->EmptyAutofillProfilesTrash()) {
+ NOTREACHED();
+ return;
}
- request->RequestComplete();
+ ScheduleCommit();
}
-void WebDataService::AddCreditCardImpl(
- GenericRequest<CreditCard>* request) {
- InitializeDatabaseIfNecessary();
- if (db_ && !request->IsCancelled()) {
- const CreditCard& credit_card = request->arg();
- if (!db_->GetAutofillTable()->AddCreditCard(credit_card)) {
- NOTREACHED();
- return;
- }
- ScheduleCommit();
-
- // Send GUID-based notification.
- AutofillCreditCardChange change(AutofillCreditCardChange::ADD,
- credit_card.guid(), &credit_card);
- content::NotificationService::current()->Notify(
- chrome::NOTIFICATION_AUTOFILL_CREDIT_CARD_CHANGED,
- content::Source<WebDataService>(this),
- content::Details<AutofillCreditCardChange>(&change));
+void WebDataService::AddCreditCardImpl(const CreditCard& credit_card) {
+ if (!db_->GetAutofillTable()->AddCreditCard(credit_card)) {
+ NOTREACHED();
+ return;
}
- request->RequestComplete();
-}
+ ScheduleCommit();
-void WebDataService::UpdateCreditCardImpl(
- GenericRequest<CreditCard>* request) {
- InitializeDatabaseIfNecessary();
- if (db_ && !request->IsCancelled()) {
- const CreditCard& credit_card = request->arg();
-
- // It is currently valid to try to update a missing profile. We simply drop
- // the write and the caller will detect this on the next refresh.
- CreditCard* original_credit_card = NULL;
- if (!db_->GetAutofillTable()->GetCreditCard(credit_card.guid(),
- &original_credit_card)) {
- request->RequestComplete();
- return;
- }
- scoped_ptr<CreditCard> scoped_credit_card(original_credit_card);
+ // Send GUID-based notification.
+ AutofillCreditCardChange change(AutofillCreditCardChange::ADD,
+ credit_card.guid(), &credit_card);
+ content::NotificationService::current()->Notify(
+ chrome::NOTIFICATION_AUTOFILL_CREDIT_CARD_CHANGED,
+ content::Source<WebDataService>(this),
+ content::Details<AutofillCreditCardChange>(&change));
+}
- if (!db_->GetAutofillTable()->UpdateCreditCard(credit_card)) {
- NOTREACHED();
- return;
- }
- ScheduleCommit();
+void WebDataService::UpdateCreditCardImpl(const CreditCard& credit_card) {
+ // It is currently valid to try to update a missing profile. We simply drop
+ // the write and the caller will detect this on the next refresh.
+ CreditCard* original_credit_card = NULL;
+ if (!db_->GetAutofillTable()->GetCreditCard(credit_card.guid(),
+ &original_credit_card)) {
+ return;
+ }
+ scoped_ptr<CreditCard> scoped_credit_card(original_credit_card);
- // Send GUID-based notification.
- AutofillCreditCardChange change(AutofillCreditCardChange::UPDATE,
- credit_card.guid(), &credit_card);
- content::NotificationService::current()->Notify(
- chrome::NOTIFICATION_AUTOFILL_CREDIT_CARD_CHANGED,
- content::Source<WebDataService>(this),
- content::Details<AutofillCreditCardChange>(&change));
+ if (!db_->GetAutofillTable()->UpdateCreditCard(credit_card)) {
+ NOTREACHED();
+ return;
}
- request->RequestComplete();
-}
+ ScheduleCommit();
-void WebDataService::RemoveCreditCardImpl(
- GenericRequest<std::string>* request) {
- InitializeDatabaseIfNecessary();
- if (db_ && !request->IsCancelled()) {
- const std::string& guid = request->arg();
- if (!db_->GetAutofillTable()->RemoveCreditCard(guid)) {
- NOTREACHED();
- return;
- }
- ScheduleCommit();
+ // Send GUID-based notification.
+ AutofillCreditCardChange change(AutofillCreditCardChange::UPDATE,
+ credit_card.guid(), &credit_card);
+ content::NotificationService::current()->Notify(
+ chrome::NOTIFICATION_AUTOFILL_CREDIT_CARD_CHANGED,
+ content::Source<WebDataService>(this),
+ content::Details<AutofillCreditCardChange>(&change));
+}
- // Send GUID-based notification.
- AutofillCreditCardChange change(AutofillCreditCardChange::REMOVE, guid,
- NULL);
- content::NotificationService::current()->Notify(
- chrome::NOTIFICATION_AUTOFILL_CREDIT_CARD_CHANGED,
- content::Source<WebDataService>(this),
- content::Details<AutofillCreditCardChange>(&change));
+void WebDataService::RemoveCreditCardImpl(const std::string& guid) {
+ if (!db_->GetAutofillTable()->RemoveCreditCard(guid)) {
+ NOTREACHED();
+ return;
}
- request->RequestComplete();
+ ScheduleCommit();
+
+ // Send GUID-based notification.
+ AutofillCreditCardChange change(AutofillCreditCardChange::REMOVE, guid,
+ NULL);
+ content::NotificationService::current()->Notify(
+ chrome::NOTIFICATION_AUTOFILL_CREDIT_CARD_CHANGED,
+ content::Source<WebDataService>(this),
+ content::Details<AutofillCreditCardChange>(&change));
}
-void WebDataService::GetCreditCardsImpl(WebDataRequest* request) {
- InitializeDatabaseIfNecessary();
- if (db_ && !request->IsCancelled()) {
- std::vector<CreditCard*> credit_cards;
- db_->GetAutofillTable()->GetCreditCards(&credit_cards);
- request->SetResult(
- new WDResult<std::vector<CreditCard*> >(AUTOFILL_CREDITCARDS_RESULT,
- base::Bind(&WebDataService::DestroyAutofillCreditCardResult,
- base::Unretained(this)), credit_cards));
- }
- request->RequestComplete();
+scoped_ptr<WDTypedResult> WebDataService::GetCreditCardsImpl() {
+ std::vector<CreditCard*> credit_cards;
+ db_->GetAutofillTable()->GetCreditCards(&credit_cards);
+ return scoped_ptr<WDTypedResult>(
+ new WDResult<std::vector<CreditCard*> >(
+ AUTOFILL_CREDITCARDS_RESULT,
+ base::Bind(&WebDataService::DestroyAutofillCreditCardResult,
+ base::Unretained(this)),
+ credit_cards));
}
void WebDataService::RemoveAutofillProfilesAndCreditCardsModifiedBetweenImpl(
- GenericRequest2<Time, Time>* request) {
- InitializeDatabaseIfNecessary();
- if (db_ && !request->IsCancelled()) {
- std::vector<std::string> profile_guids;
- std::vector<std::string> credit_card_guids;
- if (db_->GetAutofillTable()->
- RemoveAutofillProfilesAndCreditCardsModifiedBetween(
- request->arg1(),
- request->arg2(),
- &profile_guids,
- &credit_card_guids)) {
- for (std::vector<std::string>::iterator iter = profile_guids.begin();
- iter != profile_guids.end(); ++iter) {
- AutofillProfileChange change(AutofillProfileChange::REMOVE, *iter,
- NULL);
- content::NotificationService::current()->Notify(
- chrome::NOTIFICATION_AUTOFILL_PROFILE_CHANGED,
- content::Source<WebDataService>(this),
- content::Details<AutofillProfileChange>(&change));
- }
+ const base::Time& delete_begin, const base::Time& delete_end) {
+ std::vector<std::string> profile_guids;
+ std::vector<std::string> credit_card_guids;
+ if (db_->GetAutofillTable()->
+ RemoveAutofillProfilesAndCreditCardsModifiedBetween(
+ delete_begin,
+ delete_end,
+ &profile_guids,
+ &credit_card_guids)) {
+ for (std::vector<std::string>::iterator iter = profile_guids.begin();
+ iter != profile_guids.end(); ++iter) {
+ AutofillProfileChange change(AutofillProfileChange::REMOVE, *iter,
+ NULL);
+ content::NotificationService::current()->Notify(
+ chrome::NOTIFICATION_AUTOFILL_PROFILE_CHANGED,
+ content::Source<WebDataService>(this),
+ content::Details<AutofillProfileChange>(&change));
+ }
- for (std::vector<std::string>::iterator iter = credit_card_guids.begin();
- iter != credit_card_guids.end(); ++iter) {
- AutofillCreditCardChange change(AutofillCreditCardChange::REMOVE,
- *iter, NULL);
- content::NotificationService::current()->Notify(
- chrome::NOTIFICATION_AUTOFILL_CREDIT_CARD_CHANGED,
- content::Source<WebDataService>(this),
- content::Details<AutofillCreditCardChange>(&change));
- }
- // Note: It is the caller's responsibility to post notifications for any
- // changes, e.g. by calling the Refresh() method of PersonalDataManager.
- ScheduleCommit();
+ for (std::vector<std::string>::iterator iter = credit_card_guids.begin();
+ iter != credit_card_guids.end(); ++iter) {
+ AutofillCreditCardChange change(AutofillCreditCardChange::REMOVE,
+ *iter, NULL);
+ content::NotificationService::current()->Notify(
+ chrome::NOTIFICATION_AUTOFILL_CREDIT_CARD_CHANGED,
+ content::Source<WebDataService>(this),
+ content::Details<AutofillCreditCardChange>(&change));
}
+ // Note: It is the caller's responsibility to post notifications for any
+ // changes, e.g. by calling the Refresh() method of PersonalDataManager.
+ ScheduleCommit();
}
- request->RequestComplete();
}
AutofillProfileSyncableService*
« no previous file with comments | « chrome/browser/webdata/web_data_service.h ('k') | chrome/browser/webdata/web_data_service_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698