Index: android_webview/browser/aw_form_database_service.cc |
diff --git a/android_webview/browser/aw_form_database_service.cc b/android_webview/browser/aw_form_database_service.cc |
index 2b168deba9ebd9aa0fd9dbc7d9d3b679b7cc33df..c498820a28b753a932cb74eb5aa281153b9fad75 100644 |
--- a/android_webview/browser/aw_form_database_service.cc |
+++ b/android_webview/browser/aw_form_database_service.cc |
@@ -66,6 +66,16 @@ AwFormDatabaseService::get_autofill_webdata_service() { |
} |
void AwFormDatabaseService::ClearFormData() { |
+ base::AutoLock lock(lock_); |
joth
2013/09/05 00:59:10
I don't understand what problem this lock is solvi
|
+ // TODO(sgurun) investigate if it is better to do on DB thread |
+ BrowserThread::PostTask( |
+ BrowserThread::UI, |
+ FROM_HERE, |
+ base::Bind(&AwFormDatabaseService::ClearFormDataLocked, |
+ base::Unretained(this))); |
+} |
+ |
+void AwFormDatabaseService::ClearFormDataLocked() { |
base::Time begin; |
base::Time end = base::Time::Max(); |
autofill_data_->RemoveFormElementsAddedBetween(begin, end); |
@@ -73,15 +83,19 @@ void AwFormDatabaseService::ClearFormData() { |
} |
bool AwFormDatabaseService::HasFormData() { |
- BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, |
- base::Bind(&AwFormDatabaseService::HasFormDataImpl, |
+ base::AutoLock lock(lock_); |
+ // TODO(sgurun) investigate if it is better to do on DB thread |
joth
2013/09/05 00:59:10
I can answer this: it's *definitely* better done o
|
+ BrowserThread::PostTask( |
+ BrowserThread::UI, |
+ FROM_HERE, |
+ base::Bind(&AwFormDatabaseService::HasFormDataLocked, |
base::Unretained(this))); |
+ // TODO(sgurun) Could be unnecessarily blocking UI thread |
completion_.Wait(); |
return has_form_data_; |
} |
-void AwFormDatabaseService::HasFormDataImpl() { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB)); |
+void AwFormDatabaseService::HasFormDataLocked() { |
pending_query_handle_ = autofill_data_->HasFormElements(this); |
} |