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) |
| 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 786 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2483 this, | 2542 this, |
2484 &WaitForProcessLauncherThreadToGoIdleObserver::RunOnUIThread)); | 2543 &WaitForProcessLauncherThreadToGoIdleObserver::RunOnUIThread)); |
2485 } | 2544 } |
2486 | 2545 |
2487 void WaitForProcessLauncherThreadToGoIdleObserver::RunOnUIThread() { | 2546 void WaitForProcessLauncherThreadToGoIdleObserver::RunOnUIThread() { |
2488 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 2547 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
2489 if (automation_) | 2548 if (automation_) |
2490 automation_->Send(reply_message_.release()); | 2549 automation_->Send(reply_message_.release()); |
2491 Release(); | 2550 Release(); |
2492 } | 2551 } |
OLD | NEW |