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

Unified Diff: chrome/browser/automation/automation_provider_observers.cc

Issue 6994005: Fix password automation hooks to get pyauto test testSavePassword working. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Modified PYAUTO_TESTS. Created 9 years, 7 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
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 bb78b915b99f7abfeb15d1f50102dc9ff0bcbb98..09b6e600b30676e0590687d91b0cf9de64a93194 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)
+ : 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)

Powered by Google App Engine
This is Rietveld 408576698