test_extension_registry_observer.h 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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. #ifndef EXTENSIONS_BROWSER_TEST_EXTENSION_REGISTRY_OBSERVER_H_
  5. #define EXTENSIONS_BROWSER_TEST_EXTENSION_REGISTRY_OBSERVER_H_
  6. #include <memory>
  7. #include <string>
  8. #include "base/scoped_observation.h"
  9. #include "extensions/browser/extension_registry.h"
  10. #include "extensions/browser/extension_registry_observer.h"
  11. namespace extensions {
  12. // A helper class that listen for ExtensionRegistry notifications.
  13. class TestExtensionRegistryObserver : public ExtensionRegistryObserver {
  14. public:
  15. // If |extension_id| is provided, listens only to events relating to that
  16. // extension. Otherwise, listens to all events.
  17. explicit TestExtensionRegistryObserver(ExtensionRegistry* registry);
  18. TestExtensionRegistryObserver(ExtensionRegistry* registry,
  19. const std::string& extension_id);
  20. TestExtensionRegistryObserver(const TestExtensionRegistryObserver&) = delete;
  21. TestExtensionRegistryObserver& operator=(
  22. const TestExtensionRegistryObserver&) = delete;
  23. ~TestExtensionRegistryObserver() override;
  24. // Waits for the notification, and returns the extension that caused it.
  25. scoped_refptr<const Extension> WaitForExtensionWillBeInstalled();
  26. scoped_refptr<const Extension> WaitForExtensionInstalled();
  27. scoped_refptr<const Extension> WaitForExtensionUninstalled();
  28. scoped_refptr<const Extension> WaitForExtensionUninstallationDenied();
  29. scoped_refptr<const Extension> WaitForExtensionLoaded();
  30. scoped_refptr<const Extension> WaitForExtensionReady();
  31. scoped_refptr<const Extension> WaitForExtensionUnloaded();
  32. private:
  33. class Waiter;
  34. // ExtensionRegistryObserver.
  35. void OnExtensionWillBeInstalled(content::BrowserContext* browser_context,
  36. const Extension* extension,
  37. bool is_update,
  38. const std::string& old_name) override;
  39. void OnExtensionInstalled(content::BrowserContext* browser_context,
  40. const Extension* extension,
  41. bool is_update) override;
  42. void OnExtensionUninstalled(content::BrowserContext* browser_context,
  43. const Extension* extension,
  44. extensions::UninstallReason reason) override;
  45. void OnExtensionUninstallationDenied(content::BrowserContext* browser_context,
  46. const Extension* extension) override;
  47. void OnExtensionLoaded(content::BrowserContext* browser_context,
  48. const Extension* extension) override;
  49. void OnExtensionReady(content::BrowserContext* browser_context,
  50. const Extension* extension) override;
  51. void OnExtensionUnloaded(content::BrowserContext* browser_context,
  52. const Extension* extension,
  53. UnloadedExtensionReason reason) override;
  54. scoped_refptr<const Extension> Wait(std::unique_ptr<Waiter>* waiter);
  55. std::unique_ptr<Waiter> will_be_installed_waiter_;
  56. std::unique_ptr<Waiter> installed_waiter_;
  57. std::unique_ptr<Waiter> uninstalled_waiter_;
  58. std::unique_ptr<Waiter> uninstallation_denied_waiter_;
  59. std::unique_ptr<Waiter> loaded_waiter_;
  60. std::unique_ptr<Waiter> ready_waiter_;
  61. std::unique_ptr<Waiter> unloaded_waiter_;
  62. base::ScopedObservation<ExtensionRegistry, ExtensionRegistryObserver>
  63. extension_registry_observation_{this};
  64. std::string extension_id_;
  65. };
  66. } // namespace extensions
  67. #endif // EXTENSIONS_BROWSER_TEST_EXTENSION_REGISTRY_OBSERVER_H_