Chromium Code Reviews| 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); |
| } |