| Index: chrome/browser/sync/test/integration/extensions_helper.h
|
| diff --git a/chrome/browser/sync/test/integration/extensions_helper.h b/chrome/browser/sync/test/integration/extensions_helper.h
|
| index f807abfcb16ad2c3cd753517570f689a82e6d35a..eabab5123ca80fb246a8921366a48c1059c4e448 100644
|
| --- a/chrome/browser/sync/test/integration/extensions_helper.h
|
| +++ b/chrome/browser/sync/test/integration/extensions_helper.h
|
| @@ -5,13 +5,20 @@
|
| #ifndef CHROME_BROWSER_SYNC_TEST_INTEGRATION_EXTENSIONS_HELPER_H_
|
| #define CHROME_BROWSER_SYNC_TEST_INTEGRATION_EXTENSIONS_HELPER_H_
|
|
|
| +#include <memory>
|
| #include <string>
|
| #include <vector>
|
|
|
| #include "base/compiler_specific.h"
|
| +#include "chrome/browser/sync/test/integration/status_change_checker.h"
|
| #include "chrome/browser/sync/test/integration/sync_test.h"
|
| +#include "content/public/browser/notification_observer.h"
|
| +#include "content/public/browser/notification_registrar.h"
|
| +#include "extensions/browser/extension_registry_observer.h"
|
| +#include "extensions/common/extension.h"
|
|
|
| class Profile;
|
| +class SyncedExtensionInstaller;
|
|
|
| namespace extensions_helper {
|
|
|
| @@ -74,4 +81,49 @@ bool AwaitAllProfilesHaveSameExtensions();
|
|
|
| } // namespace extensions_helper
|
|
|
| +// A helper class to implement waiting for a set of profiles to have matching
|
| +// extensions lists. It waits for calls on both interfaces:
|
| +// ExtensionRegistryObserver and NotificationObserver. Observing
|
| +// NOTIFICATION_EXTENSION_UPDATING_STARTED notification is needed for tests
|
| +// against local server because in such tests extensions are not installed and
|
| +// ExtensionRegistryObserver methods are not called.
|
| +class ExtensionsMatchChecker : public StatusChangeChecker,
|
| + public extensions::ExtensionRegistryObserver,
|
| + public content::NotificationObserver {
|
| + public:
|
| + ExtensionsMatchChecker();
|
| + ~ExtensionsMatchChecker() override;
|
| +
|
| + // StatusChangeChecker implementation.
|
| + std::string GetDebugMessage() const override;
|
| + bool IsExitConditionSatisfied() override;
|
| +
|
| + // extensions::ExtensionRegistryObserver implementation.
|
| + void OnExtensionLoaded(content::BrowserContext* context,
|
| + const extensions::Extension* extension) override;
|
| + void OnExtensionUnloaded(
|
| + content::BrowserContext* context,
|
| + const extensions::Extension* extenion,
|
| + extensions::UnloadedExtensionInfo::Reason reason) override;
|
| + void OnExtensionInstalled(content::BrowserContext* browser_context,
|
| + const extensions::Extension* extension,
|
| + bool is_update) override;
|
| + void OnExtensionUninstalled(content::BrowserContext* browser_context,
|
| + const extensions::Extension* extension,
|
| + extensions::UninstallReason reason) override;
|
| +
|
| + // content::NotificationObserver implementation.
|
| + void Observe(int type,
|
| + const content::NotificationSource& source,
|
| + const content::NotificationDetails& details) override;
|
| +
|
| + private:
|
| + std::vector<Profile*> profiles_;
|
| + std::vector<std::unique_ptr<SyncedExtensionInstaller>>
|
| + synced_extension_installers_;
|
| + content::NotificationRegistrar registrar_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(ExtensionsMatchChecker);
|
| +};
|
| +
|
| #endif // CHROME_BROWSER_SYNC_TEST_INTEGRATION_EXTENSIONS_HELPER_H_
|
|
|