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

Unified Diff: chrome/browser/sync/test/integration/themes_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/themes_helper.cc
diff --git a/chrome/browser/sync/test/integration/themes_helper.cc b/chrome/browser/sync/test/integration/themes_helper.cc
index 324745e4cecbf77533e6996c0186d3cf03540d33..b9170012cae2d81764f4f1ff0ab519dc2a7df68f 100644
--- a/chrome/browser/sync/test/integration/themes_helper.cc
+++ b/chrome/browser/sync/test/integration/themes_helper.cc
@@ -4,19 +4,15 @@
#include "chrome/browser/sync/test/integration/themes_helper.h"
-#include "base/callback.h"
#include "base/logging.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/stringprintf.h"
#include "chrome/browser/chrome_notification_types.h"
-#include "chrome/browser/sync/test/integration/status_change_checker.h"
#include "chrome/browser/sync/test/integration/sync_datatype_helper.h"
#include "chrome/browser/sync/test/integration/sync_extension_helper.h"
#include "chrome/browser/themes/theme_service.h"
#include "chrome/browser/themes/theme_service_factory.h"
#include "components/crx_file/id_util.h"
-#include "content/public/browser/notification_observer.h"
-#include "content/public/browser/notification_registrar.h"
#include "content/public/browser/notification_source.h"
#include "extensions/common/manifest.h"
@@ -75,42 +71,25 @@ void UseSystemTheme(Profile* profile) {
GetThemeService(profile)->UseSystemTheme();
}
-namespace {
+// Helper function to let us bind this functionality into a base::Callback.
+bool UsingSystemThemeFunc(ThemeService* theme_service) {
+ return theme_service->UsingSystemTheme();
+}
-// Helper to wait until the specified theme is pending for install on the
-// specified profile.
-//
-// The themes sync integration tests don't actually install any custom themes,
-// but they do occasionally check that the ThemeService attempts to install
-// synced themes.
-class ThemePendingInstallChecker : public StatusChangeChecker,
- public content::NotificationObserver {
- public:
- ThemePendingInstallChecker(Profile* profile, const std::string& theme);
- ~ThemePendingInstallChecker() override;
-
- // Implementation of StatusChangeChecker.
- std::string GetDebugMessage() const override;
- bool IsExitConditionSatisfied() override;
-
- // Implementation of content::NotificationObserver.
- void Observe(int type,
- const content::NotificationSource& source,
- const content::NotificationDetails& details) override;
-
- // Waits until the condition to be met or a timeout occurs.
- void Wait();
-
- private:
- Profile* profile_;
- const std::string& theme_;
-
- content::NotificationRegistrar registrar_;
-};
+// Helper function to let us bind this functionality into a base::Callback.
+bool UsingDefaultThemeFunc(ThemeService* theme_service) {
+ return theme_service->UsingDefaultTheme();
+}
+
+} // namespace themes_helper
ThemePendingInstallChecker::ThemePendingInstallChecker(Profile* profile,
const std::string& theme)
: profile_(profile), theme_(theme) {
+ // We'll check to see if the condition is met whenever the extension system
+ // tries to contact the web store.
+ registrar_.Add(this, extensions::NOTIFICATION_EXTENSION_UPDATING_STARTED,
+ content::Source<Profile>(profile_));
}
ThemePendingInstallChecker::~ThemePendingInstallChecker() {
@@ -122,7 +101,7 @@ std::string ThemePendingInstallChecker::GetDebugMessage() const {
}
bool ThemePendingInstallChecker::IsExitConditionSatisfied() {
- return ThemeIsPendingInstall(profile_, theme_);
+ return themes_helper::ThemeIsPendingInstall(profile_, theme_);
}
void ThemePendingInstallChecker::Observe(
@@ -133,62 +112,6 @@ void ThemePendingInstallChecker::Observe(
CheckExitCondition();
}
-void ThemePendingInstallChecker::Wait() {
- // We'll check to see if the condition is met whenever the extension system
- // tries to contact the web store.
- registrar_.Add(this,
- extensions::NOTIFICATION_EXTENSION_UPDATING_STARTED,
- content::Source<Profile>(profile_));
-
- if (IsExitConditionSatisfied()) {
- return;
- }
-
- StartBlockingWait();
-}
-
-} // namespace
-
-bool AwaitThemeIsPendingInstall(Profile* profile, const std::string& theme) {
- ThemePendingInstallChecker checker(profile, theme);
- checker.Wait();
- return !checker.TimedOut();
-}
-
-namespace {
-
-// Helper to wait until a given condition is met, checking every time the
-// current theme changes.
-//
-// The |exit_condition_| closure may be invoked zero or more times.
-class ThemeConditionChecker : public StatusChangeChecker,
- public content::NotificationObserver {
- public:
- ThemeConditionChecker(Profile* profile,
- const std::string& debug_message_,
- base::Callback<bool(ThemeService*)> exit_condition);
- ~ThemeConditionChecker() override;
-
- // Implementation of StatusChangeChecker.
- std::string GetDebugMessage() const override;
- bool IsExitConditionSatisfied() override;
-
- // Implementation of content::NotificationObserver.
- void Observe(int type,
- const content::NotificationSource& source,
- const content::NotificationDetails& details) override;
-
- // Waits until the condition to be met or a timeout occurs.
- void Wait();
-
- private:
- Profile* profile_;
- const std::string debug_message_;
- base::Callback<bool(ThemeService*)> exit_condition_;
-
- content::NotificationRegistrar registrar_;
-};
-
ThemeConditionChecker::ThemeConditionChecker(
Profile* profile,
const std::string& debug_message,
@@ -196,6 +119,8 @@ ThemeConditionChecker::ThemeConditionChecker(
: profile_(profile),
debug_message_(debug_message),
exit_condition_(exit_condition) {
+ registrar_.Add(this, chrome::NOTIFICATION_BROWSER_THEME_CHANGED,
+ content::Source<ThemeService>(GetThemeService(profile_)));
}
ThemeConditionChecker::~ThemeConditionChecker() {
@@ -217,46 +142,13 @@ void ThemeConditionChecker::Observe(
CheckExitCondition();
}
-void ThemeConditionChecker::Wait() {
- registrar_.Add(this,
- chrome::NOTIFICATION_BROWSER_THEME_CHANGED,
- content::Source<ThemeService>(GetThemeService(profile_)));
-
- if (IsExitConditionSatisfied()) {
- return;
- }
-
- StartBlockingWait();
-}
-
-// Helper function to let us bind this functionality into a base::Callback.
-bool UsingSystemThemeFunc(ThemeService* theme_service) {
- return theme_service->UsingSystemTheme();
-}
-
-// Helper function to let us bind this functionality into a base::Callback.
-bool UsingDefaultThemeFunc(ThemeService* theme_service) {
- return theme_service->UsingDefaultTheme();
-}
-
-} // namespace
-
-bool AwaitUsingSystemTheme(Profile* profile) {
- ThemeConditionChecker checker(
- profile,
- std::string("Waiting until profile is using system theme"),
- base::Bind(&UsingSystemThemeFunc));
- checker.Wait();
- return !checker.TimedOut();
-}
+SystemThemeChecker::SystemThemeChecker(Profile* profile)
+ : ThemeConditionChecker(profile,
+ "Waiting until profile is using system theme",
+ base::Bind(&themes_helper::UsingSystemThemeFunc)) {}
-bool AwaitUsingDefaultTheme(Profile* profile) {
- ThemeConditionChecker checker(
- profile,
- std::string("Waiting until profile is using default theme"),
- base::Bind(&UsingDefaultThemeFunc));
- checker.Wait();
- return !checker.TimedOut();
+DefaultThemeChecker::DefaultThemeChecker(Profile* profile)
+ : ThemeConditionChecker(profile,
+ "Waiting until profile is using default theme",
+ base::Bind(&themes_helper::UsingDefaultThemeFunc)) {
}
-
-} // namespace themes_helper

Powered by Google App Engine
This is Rietveld 408576698