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

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: Disabling a single pyauto passwords test. 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 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)

Powered by Google App Engine
This is Rietveld 408576698