Home | History | Annotate | Download | only in browser
      1 // Copyright 2014 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef EXTENSIONS_BROWSER_TEST_EXTENSION_REGISTRY_OBSERVER_H_
      6 #define EXTENSIONS_BROWSER_TEST_EXTENSION_REGISTRY_OBSERVER_H_
      7 
      8 #include "base/scoped_observer.h"
      9 #include "extensions/browser/extension_registry_observer.h"
     10 
     11 namespace extensions {
     12 class ExtensionRegistry;
     13 
     14 // A helper class that listen for ExtensionRegistry notifications.
     15 class TestExtensionRegistryObserver : public ExtensionRegistryObserver {
     16  public:
     17   explicit TestExtensionRegistryObserver(ExtensionRegistry* registry,
     18                                          const std::string& extension_id);
     19   virtual ~TestExtensionRegistryObserver();
     20 
     21   void WaitForExtensionWillBeInstalled();
     22   void WaitForExtensionUninstalled();
     23   void WaitForExtensionLoaded();
     24   void WaitForExtensionUnloaded();
     25 
     26  private:
     27   class Waiter;
     28 
     29   // ExtensionRegistryObserver.
     30   virtual void OnExtensionWillBeInstalled(
     31       content::BrowserContext* browser_context,
     32       const Extension* extension,
     33       bool is_update,
     34       bool from_ephemeral,
     35       const std::string& old_name) OVERRIDE;
     36   virtual void OnExtensionUninstalled(
     37       content::BrowserContext* browser_context,
     38       const Extension* extension,
     39       extensions::UninstallReason reason) OVERRIDE;
     40   virtual void OnExtensionLoaded(content::BrowserContext* browser_context,
     41                                  const Extension* extension) OVERRIDE;
     42   virtual void OnExtensionUnloaded(
     43       content::BrowserContext* browser_context,
     44       const Extension* extension,
     45       UnloadedExtensionInfo::Reason reason) OVERRIDE;
     46 
     47   scoped_ptr<Waiter> will_be_installed_waiter_;
     48   scoped_ptr<Waiter> uninstalled_waiter_;
     49   scoped_ptr<Waiter> loaded_waiter_;
     50   scoped_ptr<Waiter> unloaded_waiter_;
     51 
     52   ScopedObserver<ExtensionRegistry, ExtensionRegistryObserver>
     53       extension_registry_observer_;
     54 
     55   std::string extension_id_;
     56 
     57   DISALLOW_COPY_AND_ASSIGN(TestExtensionRegistryObserver);
     58 };
     59 
     60 }  // namespace extensions
     61 
     62 #endif  // EXTENSIONS_BROWSER_TEST_EXTENSION_REGISTRY_OBSERVER_H_
     63