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

Side by Side 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/automation/automation_provider_observers.h" 5 #include "chrome/browser/automation/automation_provider_observers.h"
6 6
7 #include <deque> 7 #include <deque>
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 1640 matching lines...) Expand 10 before | Expand all | Expand 10 after
1651 const std::vector<webkit_glue::PasswordForm*>& result) { 1651 const std::vector<webkit_glue::PasswordForm*>& result) {
1652 if (!provider_) { 1652 if (!provider_) {
1653 delete this; 1653 delete this;
1654 return; 1654 return;
1655 } 1655 }
1656 1656
1657 scoped_ptr<DictionaryValue> return_value(new DictionaryValue); 1657 scoped_ptr<DictionaryValue> return_value(new DictionaryValue);
1658 1658
1659 ListValue* passwords = new ListValue; 1659 ListValue* passwords = new ListValue;
1660 for (std::vector<webkit_glue::PasswordForm*>::const_iterator it = 1660 for (std::vector<webkit_glue::PasswordForm*>::const_iterator it =
1661 result.begin(); it != result.end(); ++it) { 1661 result.begin(); it != result.end(); ++it) {
1662 DictionaryValue* password_val = new DictionaryValue; 1662 DictionaryValue* password_val = new DictionaryValue;
1663 webkit_glue::PasswordForm* password_form = *it; 1663 webkit_glue::PasswordForm* password_form = *it;
1664 password_val->SetString("username_value", password_form->username_value); 1664 password_val->SetString("username_value", password_form->username_value);
1665 password_val->SetString("password_value", password_form->password_value); 1665 password_val->SetString("password_value", password_form->password_value);
1666 password_val->SetString("signon_realm", password_form->signon_realm); 1666 password_val->SetString("signon_realm", password_form->signon_realm);
1667 password_val->SetDouble( 1667 password_val->SetDouble(
1668 "time", static_cast<double>(password_form->date_created.ToDoubleT())); 1668 "time", static_cast<double>(password_form->date_created.ToDoubleT()));
1669 password_val->SetString("origin_url", password_form->origin.spec()); 1669 password_val->SetString("origin_url", password_form->origin.spec());
1670 password_val->SetString("username_element", 1670 password_val->SetString("username_element",
1671 password_form->username_element); 1671 password_form->username_element);
1672 password_val->SetString("password_element", 1672 password_val->SetString("password_element",
1673 password_form->password_element); 1673 password_form->password_element);
1674 password_val->SetString("submit_element", 1674 password_val->SetString("submit_element", password_form->submit_element);
1675 password_form->submit_element);
1676 password_val->SetString("action_target", password_form->action.spec()); 1675 password_val->SetString("action_target", password_form->action.spec());
1677 password_val->SetBoolean("blacklist", password_form->blacklisted_by_user); 1676 password_val->SetBoolean("blacklist", password_form->blacklisted_by_user);
1678 passwords->Append(password_val); 1677 passwords->Append(password_val);
1679 } 1678 }
1680 1679
1681 return_value->Set("passwords", passwords); 1680 return_value->Set("passwords", passwords);
1682 AutomationJSONReply(provider_, reply_message_.release()).SendSuccess( 1681 AutomationJSONReply(provider_, reply_message_.release()).SendSuccess(
1683 return_value.get()); 1682 return_value.get());
1684 delete this; 1683 delete this;
1685 } 1684 }
1686 1685
1686 PasswordStoreLoginsChangedObserver::PasswordStoreLoginsChangedObserver(
1687 AutomationProvider* automation,
1688 IPC::Message* reply_message,
1689 const std::string result_key)
Nirnimesh 2011/05/10 19:25:52 std::string&
dennis_jeffrey 2011/05/17 01:40:21 Done.
1690 : automation_(automation->AsWeakPtr()),
1691 reply_message_(reply_message),
1692 result_key_(result_key),
1693 done_event_(false, false) {
1694 AddRef();
1695 }
1696
1697 PasswordStoreLoginsChangedObserver::~PasswordStoreLoginsChangedObserver() {
1698 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
1699 }
1700
1701 void PasswordStoreLoginsChangedObserver::Init() {
1702 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
1703 BrowserThread::PostTask(
1704 BrowserThread::DB,
1705 FROM_HERE,
1706 NewRunnableMethod(
1707 this, &PasswordStoreLoginsChangedObserver::RegisterObserversTask));
1708 done_event_.Wait();
1709 }
1710
1711 void PasswordStoreLoginsChangedObserver::RegisterObserversTask() {
1712 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
1713 registrar_.Add(this, NotificationType::LOGINS_CHANGED,
1714 NotificationService::AllSources());
1715 done_event_.Signal();
1716 }
1717
1718 void PasswordStoreLoginsChangedObserver::Observe(
1719 NotificationType type,
1720 const NotificationSource& source,
1721 const NotificationDetails& details) {
1722 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
1723 DCHECK(type.value == NotificationType::LOGINS_CHANGED);
1724
1725 registrar_.RemoveAll(); // Must be done from thread BrowserThread::DB.
1726
1727 // Notify thread BrowserThread::UI that we're done listening.
1728 BrowserThread::PostTask(
1729 BrowserThread::UI,
1730 FROM_HERE,
1731 NewRunnableMethod(
1732 this, &PasswordStoreLoginsChangedObserver::IndicateDone));
1733 }
1734
1735 void PasswordStoreLoginsChangedObserver::IndicateDone() {
1736 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
1737 if (automation_) {
1738 scoped_ptr<DictionaryValue> return_value(new DictionaryValue);
1739 return_value->SetBoolean(result_key_, true);
1740 AutomationJSONReply(
1741 automation_, reply_message_.release()).SendSuccess(return_value.get());
1742 }
1743 Release();
1744 }
1745
1687 AutomationProviderBrowsingDataObserver::AutomationProviderBrowsingDataObserver( 1746 AutomationProviderBrowsingDataObserver::AutomationProviderBrowsingDataObserver(
1688 AutomationProvider* provider, 1747 AutomationProvider* provider,
1689 IPC::Message* reply_message) 1748 IPC::Message* reply_message)
1690 : provider_(provider->AsWeakPtr()), 1749 : provider_(provider->AsWeakPtr()),
1691 reply_message_(reply_message) { 1750 reply_message_(reply_message) {
1692 } 1751 }
1693 1752
1694 AutomationProviderBrowsingDataObserver:: 1753 AutomationProviderBrowsingDataObserver::
1695 ~AutomationProviderBrowsingDataObserver() {} 1754 ~AutomationProviderBrowsingDataObserver() {}
1696 1755
(...skipping 739 matching lines...) Expand 10 before | Expand all | Expand 10 after
2436 this, 2495 this,
2437 &WaitForProcessLauncherThreadToGoIdleObserver::RunOnUIThread)); 2496 &WaitForProcessLauncherThreadToGoIdleObserver::RunOnUIThread));
2438 } 2497 }
2439 2498
2440 void WaitForProcessLauncherThreadToGoIdleObserver::RunOnUIThread() { 2499 void WaitForProcessLauncherThreadToGoIdleObserver::RunOnUIThread() {
2441 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 2500 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
2442 if (automation_) 2501 if (automation_)
2443 automation_->Send(reply_message_.release()); 2502 automation_->Send(reply_message_.release());
2444 Release(); 2503 Release();
2445 } 2504 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698