Chromium Code Reviews| Index: chrome/browser/automation/automation_provider_observers.cc |
| diff --git a/chrome/browser/automation/automation_provider_observers.cc b/chrome/browser/automation/automation_provider_observers.cc |
| index 0edc08c574866dbb1ce29ad39c67d269a2f8745d..efe1ee05d1e03f42cace5a185e7befbfc7f61a0c 100644 |
| --- a/chrome/browser/automation/automation_provider_observers.cc |
| +++ b/chrome/browser/automation/automation_provider_observers.cc |
| @@ -1658,7 +1658,7 @@ void AutomationProviderGetPasswordsObserver::OnPasswordStoreRequestDone( |
| ListValue* passwords = new ListValue; |
| for (std::vector<webkit_glue::PasswordForm*>::const_iterator it = |
| - result.begin(); it != result.end(); ++it) { |
| + result.begin(); it != result.end(); ++it) { |
| DictionaryValue* password_val = new DictionaryValue; |
| webkit_glue::PasswordForm* password_form = *it; |
| password_val->SetString("username_value", password_form->username_value); |
| @@ -1671,8 +1671,7 @@ void AutomationProviderGetPasswordsObserver::OnPasswordStoreRequestDone( |
| password_form->username_element); |
| password_val->SetString("password_element", |
| password_form->password_element); |
| - password_val->SetString("submit_element", |
| - password_form->submit_element); |
| + password_val->SetString("submit_element", password_form->submit_element); |
| password_val->SetString("action_target", password_form->action.spec()); |
| password_val->SetBoolean("blacklist", password_form->blacklisted_by_user); |
| passwords->Append(password_val); |
| @@ -1684,6 +1683,66 @@ void AutomationProviderGetPasswordsObserver::OnPasswordStoreRequestDone( |
| delete this; |
| } |
| +PasswordStoreLoginsChangedObserver::PasswordStoreLoginsChangedObserver( |
| + AutomationProvider* automation, |
| + IPC::Message* reply_message, |
| + const std::string result_key) |
|
Nirnimesh
2011/05/10 19:25:52
std::string&
dennis_jeffrey
2011/05/17 01:40:21
Done.
|
| + : automation_(automation->AsWeakPtr()), |
| + reply_message_(reply_message), |
| + result_key_(result_key), |
| + done_event_(false, false) { |
| + AddRef(); |
| +} |
| + |
| +PasswordStoreLoginsChangedObserver::~PasswordStoreLoginsChangedObserver() { |
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| +} |
| + |
| +void PasswordStoreLoginsChangedObserver::Init() { |
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| + BrowserThread::PostTask( |
| + BrowserThread::DB, |
| + FROM_HERE, |
| + NewRunnableMethod( |
| + this, &PasswordStoreLoginsChangedObserver::RegisterObserversTask)); |
| + done_event_.Wait(); |
| +} |
| + |
| +void PasswordStoreLoginsChangedObserver::RegisterObserversTask() { |
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB)); |
| + registrar_.Add(this, NotificationType::LOGINS_CHANGED, |
| + NotificationService::AllSources()); |
| + done_event_.Signal(); |
| +} |
| + |
| +void PasswordStoreLoginsChangedObserver::Observe( |
| + NotificationType type, |
| + const NotificationSource& source, |
| + const NotificationDetails& details) { |
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB)); |
| + DCHECK(type.value == NotificationType::LOGINS_CHANGED); |
| + |
| + registrar_.RemoveAll(); // Must be done from thread BrowserThread::DB. |
| + |
| + // Notify thread BrowserThread::UI that we're done listening. |
| + BrowserThread::PostTask( |
| + BrowserThread::UI, |
| + FROM_HERE, |
| + NewRunnableMethod( |
| + this, &PasswordStoreLoginsChangedObserver::IndicateDone)); |
| +} |
| + |
| +void PasswordStoreLoginsChangedObserver::IndicateDone() { |
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| + if (automation_) { |
| + scoped_ptr<DictionaryValue> return_value(new DictionaryValue); |
| + return_value->SetBoolean(result_key_, true); |
| + AutomationJSONReply( |
| + automation_, reply_message_.release()).SendSuccess(return_value.get()); |
| + } |
| + Release(); |
| +} |
| + |
| AutomationProviderBrowsingDataObserver::AutomationProviderBrowsingDataObserver( |
| AutomationProvider* provider, |
| IPC::Message* reply_message) |