Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4258)

Unified Diff: chrome/browser/sync/test/integration/apps_helper.cc

Issue 2379433002: [Sync] Refactoring of sync integration test checkers to remove boilerplate await methods. (Closed)
Patch Set: Rebase Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/sync/test/integration/apps_helper.cc
diff --git a/chrome/browser/sync/test/integration/apps_helper.cc b/chrome/browser/sync/test/integration/apps_helper.cc
index 435694010dc5fd827d937c75dda078e6ce643a5c..16e6e12f4dcddc03f5a6bd1ddc8e15b94735da90 100644
--- a/chrome/browser/sync/test/integration/apps_helper.cc
+++ b/chrome/browser/sync/test/integration/apps_helper.cc
@@ -9,18 +9,13 @@
#include "base/strings/string_number_conversions.h"
#include "chrome/browser/chrome_notification_types.h"
#include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/sync/test/integration/status_change_checker.h"
#include "chrome/browser/sync/test/integration/sync_app_helper.h"
#include "chrome/browser/sync/test/integration/sync_datatype_helper.h"
#include "chrome/browser/sync/test/integration/sync_extension_helper.h"
#include "chrome/browser/sync/test/integration/sync_extension_installer.h"
-#include "content/public/browser/notification_observer.h"
-#include "content/public/browser/notification_registrar.h"
#include "content/public/browser/notification_service.h"
#include "extensions/browser/extension_prefs.h"
-#include "extensions/browser/extension_prefs_observer.h"
#include "extensions/browser/extension_registry.h"
-#include "extensions/browser/extension_registry_observer.h"
#include "extensions/common/manifest.h"
using sync_datatype_helper::test;
@@ -149,84 +144,46 @@ void FixNTPOrdinalCollisions(Profile* profile) {
SyncAppHelper::GetInstance()->FixNTPOrdinalCollisions(profile);
}
-namespace {
+} // namespace apps_helper
-// A helper class to implement waiting for a set of profiles to have matching
-// extensions lists.
-class AppsMatchChecker : public StatusChangeChecker,
- public extensions::ExtensionRegistryObserver,
- public extensions::ExtensionPrefsObserver,
- public content::NotificationObserver {
- public:
- explicit AppsMatchChecker(const std::vector<Profile*>& profiles);
- ~AppsMatchChecker() 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;
-
- // extensions::ExtensionPrefsObserver implementation.
- void OnExtensionDisableReasonsChanged(const std::string& extension_id,
- int disabled_reasons) override;
- void OnExtensionRegistered(const std::string& extension_id,
- const base::Time& install_time,
- bool is_enabled) override;
- void OnExtensionPrefsLoaded(const std::string& extension_id,
- const extensions::ExtensionPrefs* prefs) override;
- void OnExtensionPrefsDeleted(const std::string& extension_id) override;
- void OnExtensionStateChanged(const std::string& extension_id,
- bool state) override;
-
- // Implementation of content::NotificationObserver.
- void Observe(int type,
- const content::NotificationSource& source,
- const content::NotificationDetails& details) override;
-
- void Wait();
-
- private:
- std::vector<Profile*> profiles_;
- bool observing_;
-
- content::NotificationRegistrar registrar_;
-
- // This installs apps, too.
- ScopedVector<SyncedExtensionInstaller> synced_extension_installers_;
-
- DISALLOW_COPY_AND_ASSIGN(AppsMatchChecker);
-};
-
-AppsMatchChecker::AppsMatchChecker(const std::vector<Profile*>& profiles)
- : profiles_(profiles), observing_(false) {
+AppsMatchChecker::AppsMatchChecker() : profiles_(test()->GetAllProfiles()) {
DCHECK_GE(profiles_.size(), 2U);
+
+ for (Profile* profile : profiles_) {
+ // Begin mocking the installation of synced extensions from the web store.
+ synced_extension_installers_.push_back(
+ new SyncedExtensionInstaller(profile));
+
+ // Register as an observer of ExtensionsRegistry to receive notifications of
+ // big events, like installs and uninstalls.
+ extensions::ExtensionRegistry* registry =
+ extensions::ExtensionRegistry::Get(profile);
+ registry->AddObserver(this);
+
+ // Register for ExtensionPrefs events, too, so we can get notifications
+ // about
+ // smaller but still syncable events, like launch type changes.
+ extensions::ExtensionPrefs* prefs =
+ extensions::ExtensionPrefs::Get(profile);
+ prefs->AddObserver(this);
+ }
+
+ registrar_.Add(this, chrome::NOTIFICATION_APP_LAUNCHER_REORDERED,
+ content::NotificationService::AllSources());
}
AppsMatchChecker::~AppsMatchChecker() {
- if (observing_) {
- for (std::vector<Profile*>::iterator it = profiles_.begin();
- it != profiles_.end();
- ++it) {
- extensions::ExtensionRegistry* registry =
- extensions::ExtensionRegistry::Get(*it);
- registry->RemoveObserver(this);
- extensions::ExtensionPrefs* prefs = extensions::ExtensionPrefs::Get(*it);
- prefs->RemoveObserver(this);
- }
+ for (Profile* profile : profiles_) {
+ extensions::ExtensionRegistry* registry =
+ extensions::ExtensionRegistry::Get(profile);
+ registry->RemoveObserver(this);
+ extensions::ExtensionPrefs* prefs =
+ extensions::ExtensionPrefs::Get(profile);
+ prefs->RemoveObserver(this);
}
+
+ registrar_.Remove(this, chrome::NOTIFICATION_APP_LAUNCHER_REORDERED,
+ content::NotificationService::AllSources());
}
std::string AppsMatchChecker::GetDebugMessage() const {
@@ -307,55 +264,3 @@ void AppsMatchChecker::Observe(int type,
CheckExitCondition();
}
-void AppsMatchChecker::Wait() {
- for (std::vector<Profile*>::iterator it = profiles_.begin();
- it != profiles_.end();
- ++it) {
- // Begin mocking the installation of synced extensions from the web store.
- synced_extension_installers_.push_back(new SyncedExtensionInstaller(*it));
-
- // Register as an observer of ExtensionsRegistry to receive notifications of
- // big events, like installs and uninstalls.
- extensions::ExtensionRegistry* registry =
- extensions::ExtensionRegistry::Get(*it);
- registry->AddObserver(this);
-
- // Register for ExtensionPrefs events, too, so we can get notifications
- // about
- // smaller but still syncable events, like launch type changes.
- extensions::ExtensionPrefs* prefs = extensions::ExtensionPrefs::Get(*it);
- prefs->AddObserver(this);
- }
-
- registrar_.Add(this,
- chrome::NOTIFICATION_APP_LAUNCHER_REORDERED,
- content::NotificationService::AllSources());
-
- observing_ = true;
-
- if (IsExitConditionSatisfied()) {
- DVLOG(1) << "Apps matched without waiting";
- return;
- }
-
- DVLOG(1) << "Starting Wait: " << GetDebugMessage();
- StartBlockingWait();
-}
-
-} // namespace
-
-bool AwaitAllProfilesHaveSameApps() {
- std::vector<Profile*> profiles;
- if (test()->use_verifier()) {
- profiles.push_back(test()->verifier());
- }
- for (int i = 0; i < test()->num_clients(); ++i) {
- profiles.push_back(test()->GetProfile(i));
- }
-
- AppsMatchChecker checker(profiles);
- checker.Wait();
- return !checker.TimedOut();
-}
-
-} // namespace apps_helper
« no previous file with comments | « chrome/browser/sync/test/integration/apps_helper.h ('k') | chrome/browser/sync/test/integration/autofill_helper.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698