OLD | NEW |
---|---|
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 Loading... | |
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 Loading... | |
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 } |
OLD | NEW |