OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 #ifndef CHROME_BROWSER_AUTOMATION_AUTOMATION_PROVIDER_OBSERVERS_H_ | 5 #ifndef CHROME_BROWSER_AUTOMATION_AUTOMATION_PROVIDER_OBSERVERS_H_ |
6 #define CHROME_BROWSER_AUTOMATION_AUTOMATION_PROVIDER_OBSERVERS_H_ | 6 #define CHROME_BROWSER_AUTOMATION_AUTOMATION_PROVIDER_OBSERVERS_H_ |
7 | 7 |
8 #include <deque> | 8 #include <deque> |
9 #include <map> | 9 #include <map> |
10 #include <set> | 10 #include <set> |
(...skipping 1469 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1480 content::NavigationController* controller_; | 1480 content::NavigationController* controller_; |
1481 base::WeakPtr<AutomationProvider> automation_; | 1481 base::WeakPtr<AutomationProvider> automation_; |
1482 scoped_ptr<IPC::Message> reply_message_; | 1482 scoped_ptr<IPC::Message> reply_message_; |
1483 content::NotificationRegistrar registrar_; | 1483 content::NotificationRegistrar registrar_; |
1484 extension_misc::LaunchContainer launch_container_; | 1484 extension_misc::LaunchContainer launch_container_; |
1485 int new_window_id_; | 1485 int new_window_id_; |
1486 | 1486 |
1487 DISALLOW_COPY_AND_ASSIGN(AppLaunchObserver); | 1487 DISALLOW_COPY_AND_ASSIGN(AppLaunchObserver); |
1488 }; | 1488 }; |
1489 | 1489 |
1490 // Observes when Autofill information is displayed in the renderer. This can | |
1491 // happen in two different ways: (1) a popup containing Autofill suggestions | |
1492 // has been shown in the renderer; (2) a webpage form is filled or previewed | |
1493 // with Autofill suggestions. A constructor argument specifies the appropriate | |
1494 // notification to wait for. | |
1495 class AutofillDisplayedObserver : public content::NotificationObserver { | |
1496 public: | |
1497 AutofillDisplayedObserver(int notification, | |
1498 content::RenderViewHost* render_view_host, | |
1499 AutomationProvider* automation, | |
1500 IPC::Message* reply_message); | |
1501 virtual ~AutofillDisplayedObserver(); | |
1502 | |
1503 // Overridden from content::NotificationObserver: | |
1504 virtual void Observe(int type, | |
1505 const content::NotificationSource& source, | |
1506 const content::NotificationDetails& details) OVERRIDE; | |
1507 | |
1508 private: | |
1509 int notification_; | |
1510 content::RenderViewHost* render_view_host_; | |
1511 base::WeakPtr<AutomationProvider> automation_; | |
1512 scoped_ptr<IPC::Message> reply_message_; | |
1513 content::NotificationRegistrar registrar_; | |
1514 | |
1515 DISALLOW_COPY_AND_ASSIGN(AutofillDisplayedObserver); | |
1516 }; | |
1517 | |
1518 // Observes when a specified number of autofill profiles and credit cards have | |
1519 // been changed in the WebDataService. The notifications are sent on the DB | |
1520 // thread, the thread that interacts with the database. | |
1521 class AutofillChangedObserver | |
1522 : public base::RefCountedThreadSafe< | |
1523 AutofillChangedObserver, | |
1524 content::BrowserThread::DeleteOnUIThread>, | |
1525 public content::NotificationObserver { | |
1526 public: | |
1527 AutofillChangedObserver(AutomationProvider* automation, | |
1528 IPC::Message* reply_message, | |
1529 int num_profiles, | |
1530 int num_credit_cards); | |
1531 | |
1532 // Schedules a task on the DB thread to register the appropriate observers. | |
1533 virtual void Init(); | |
1534 | |
1535 // Overridden from content::NotificationObserver: | |
1536 virtual void Observe(int type, | |
1537 const content::NotificationSource& source, | |
1538 const content::NotificationDetails& details) OVERRIDE; | |
1539 | |
1540 private: | |
1541 friend struct content::BrowserThread::DeleteOnThread< | |
1542 content::BrowserThread::UI>; | |
1543 ~AutofillChangedObserver(); | |
1544 friend class base::DeleteHelper<AutofillChangedObserver>; | |
1545 | |
1546 // Registers the appropriate observers. Called on the DB thread. | |
1547 void RegisterObserversTask(); | |
1548 | |
1549 // Sends the |reply_message_| to |automation_| indicating we're done. Called | |
1550 // on the UI thread. | |
1551 void IndicateDone(); | |
1552 | |
1553 base::WeakPtr<AutomationProvider> automation_; | |
1554 scoped_ptr<IPC::Message> reply_message_; | |
1555 scoped_ptr<content::NotificationRegistrar> registrar_; | |
1556 int num_profiles_; | |
1557 int num_credit_cards_; | |
1558 | |
1559 // Used to ensure that the UI thread waits for the DB thread to finish | |
1560 // registering observers before proceeding. | |
1561 base::WaitableEvent done_event_; | |
1562 | |
1563 DISALLOW_COPY_AND_ASSIGN(AutofillChangedObserver); | |
1564 }; | |
1565 | |
1566 // Observes when an Autofill form submitted via a webpage has been processed. | |
1567 // This observer also takes care of accepting any infobars that appear as a | |
1568 // result of submitting the webpage form (submitting credit card information | |
1569 // causes a confirm infobar to appear). | |
1570 class AutofillFormSubmittedObserver | |
1571 : public PersonalDataManagerObserver, | |
1572 public content::NotificationObserver { | |
1573 public: | |
1574 AutofillFormSubmittedObserver(AutomationProvider* automation, | |
1575 IPC::Message* reply_message, | |
1576 PersonalDataManager* pdm); | |
1577 virtual ~AutofillFormSubmittedObserver(); | |
1578 | |
1579 // PersonalDataManagerObserver interface. | |
1580 virtual void OnPersonalDataChanged() OVERRIDE; | |
1581 virtual void OnInsufficientFormData() OVERRIDE; | |
1582 | |
1583 // Overridden from content::NotificationObserver: | |
1584 virtual void Observe(int type, | |
1585 const content::NotificationSource& source, | |
1586 const content::NotificationDetails& details) OVERRIDE; | |
1587 | |
1588 private: | |
1589 content::NotificationRegistrar registrar_; | |
1590 base::WeakPtr<AutomationProvider> automation_; | |
1591 scoped_ptr<IPC::Message> reply_message_; | |
1592 PersonalDataManager* pdm_; | |
1593 InfoBarTabHelper* infobar_helper_; | |
1594 }; | |
1595 | |
1596 // Allows the automation provider to wait until all the notification | 1490 // Allows the automation provider to wait until all the notification |
1597 // processes are ready. | 1491 // processes are ready. |
1598 class GetAllNotificationsObserver : public content::NotificationObserver { | 1492 class GetAllNotificationsObserver : public content::NotificationObserver { |
1599 public: | 1493 public: |
1600 GetAllNotificationsObserver(AutomationProvider* automation, | 1494 GetAllNotificationsObserver(AutomationProvider* automation, |
1601 IPC::Message* reply_message); | 1495 IPC::Message* reply_message); |
1602 virtual ~GetAllNotificationsObserver(); | 1496 virtual ~GetAllNotificationsObserver(); |
1603 | 1497 |
1604 // Overridden from content::NotificationObserver: | 1498 // Overridden from content::NotificationObserver: |
1605 virtual void Observe(int type, | 1499 virtual void Observe(int type, |
(...skipping 387 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1993 base::WeakPtr<AutomationProvider> automation_; | 1887 base::WeakPtr<AutomationProvider> automation_; |
1994 scoped_ptr<IPC::Message> reply_message_; | 1888 scoped_ptr<IPC::Message> reply_message_; |
1995 int new_window_id_; | 1889 int new_window_id_; |
1996 int num_loads_; | 1890 int num_loads_; |
1997 | 1891 |
1998 DISALLOW_COPY_AND_ASSIGN( | 1892 DISALLOW_COPY_AND_ASSIGN( |
1999 BrowserOpenedWithExistingProfileNotificationObserver); | 1893 BrowserOpenedWithExistingProfileNotificationObserver); |
2000 }; | 1894 }; |
2001 | 1895 |
2002 #endif // CHROME_BROWSER_AUTOMATION_AUTOMATION_PROVIDER_OBSERVERS_H_ | 1896 #endif // CHROME_BROWSER_AUTOMATION_AUTOMATION_PROVIDER_OBSERVERS_H_ |
OLD | NEW |