Index: chrome/browser/extensions/extension_test_notification_observer.h |
diff --git a/chrome/browser/extensions/extension_test_notification_observer.h b/chrome/browser/extensions/extension_test_notification_observer.h |
index e6abdc99291ad15dc89a7416518effcbe0d0d2d1..267d5f44e9ff84a99b5783bf4fd8433fc4cfd884 100644 |
--- a/chrome/browser/extensions/extension_test_notification_observer.h |
+++ b/chrome/browser/extensions/extension_test_notification_observer.h |
@@ -7,8 +7,10 @@ |
#include <string> |
+#include "base/callback.h" |
#include "base/compiler_specific.h" |
#include "chrome/browser/chrome_notification_types.h" |
+#include "chrome/browser/extensions/api/extension_action/extension_action_api.h" |
#include "chrome/browser/ui/browser.h" |
#include "chrome/browser/ui/location_bar/location_bar.h" |
#include "content/public/browser/notification_details.h" |
@@ -20,14 +22,13 @@ class WindowedNotificationObserver; |
} |
// Test helper class for observing extension-related events. |
-class ExtensionTestNotificationObserver : public content::NotificationObserver { |
+class ExtensionTestNotificationObserver |
+ : public content::NotificationObserver, |
+ public extensions::ExtensionActionAPI::Observer { |
public: |
explicit ExtensionTestNotificationObserver(Browser* browser); |
virtual ~ExtensionTestNotificationObserver(); |
- // Wait for the total number of page actions to change to |count|. |
- bool WaitForPageActionCountChangeTo(int count); |
- |
// Wait for the number of visible page actions to change to |count|. |
bool WaitForPageActionVisibilityChangeTo(int count); |
@@ -82,10 +83,25 @@ class ExtensionTestNotificationObserver : public content::NotificationObserver { |
const content::NotificationDetails& details) OVERRIDE; |
private: |
+ class NotificationSet; |
+ |
Profile* GetProfile(); |
void WaitForNotification(int notification_type); |
+ // Wait for |condition_| to be met. |notification_set| is the set of |
+ // notifications to wait for and to check |condition| when observing. This |
+ // can be NULL if we are instead waiting for a different observer method, like |
+ // OnPageActionsUpdated(). |
+ void WaitForCondition(const base::Callback<bool(void)>& condition, |
+ NotificationSet* notification_set); |
+ |
+ // Quits the message loop if |condition_| is met. |
+ void MaybeQuit(); |
+ |
+ // extensions::ExtensionActionAPI::Observer: |
+ virtual void OnPageActionsUpdated(content::WebContents* contents) OVERRIDE; |
+ |
Browser* browser_; |
Profile* profile_; |
@@ -96,6 +112,13 @@ class ExtensionTestNotificationObserver : public content::NotificationObserver { |
int extension_installs_observed_; |
int extension_load_errors_observed_; |
int crx_installers_done_observed_; |
+ |
+ // The condition for which we are waiting. This should be checked in any |
+ // observing methods that could trigger it. |
+ base::Callback<bool(void)> condition_; |
+ |
+ // The closure to quit the currently-running message loop. |
+ base::Closure quit_closure_; |
}; |
#endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_TEST_NOTIFICATION_OBSERVER_H_ |