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

Unified Diff: chrome/browser/sync/test/integration/themes_helper.h

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.h
diff --git a/chrome/browser/sync/test/integration/themes_helper.h b/chrome/browser/sync/test/integration/themes_helper.h
index dce9cbbb1ca7e18fe5753ee095983466693002e6..feee0e041744ef7968be325ad422b2999ee1bdda 100644
--- a/chrome/browser/sync/test/integration/themes_helper.h
+++ b/chrome/browser/sync/test/integration/themes_helper.h
@@ -7,10 +7,15 @@
#include <string>
+#include "base/callback.h"
#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"
class Profile;
+class ThemeService;
namespace themes_helper {
@@ -43,18 +48,82 @@ void UseDefaultTheme(Profile* profile);
// Sets |profile| to use the system theme.
void UseSystemTheme(Profile* profile);
-// Waits until |theme| is pending for install on |profile|.
-// Returns false in case of timeout.
-bool AwaitThemeIsPendingInstall(Profile* profile, const std::string& theme);
+} // namespace themes_helper
// Waits until |profile| is using the system theme.
// Returns false in case of timeout.
-bool AwaitUsingSystemTheme(Profile* profile);
// Waits until |profile| is using the default theme.
// Returns false in case of timeout.
-bool AwaitUsingDefaultTheme(Profile* profile);
-} // namespace themes_helper
+// 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;
+
+ private:
+ Profile* profile_;
+ const std::string debug_message_;
+ base::Callback<bool(ThemeService*)> exit_condition_;
+
+ content::NotificationRegistrar registrar_;
+};
+
+// Waits until |theme| is pending for install on |profile|.
+// Returns false in case of timeout.
+
+// 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;
+
+ private:
+ Profile* profile_;
+ const std::string& theme_;
+
+ content::NotificationRegistrar registrar_;
+};
+
+class SystemThemeChecker : public ThemeConditionChecker {
+ public:
+ explicit SystemThemeChecker(Profile* profile);
+};
+
+class DefaultThemeChecker : public ThemeConditionChecker {
+ public:
+ explicit DefaultThemeChecker(Profile* profile);
+};
#endif // CHROME_BROWSER_SYNC_TEST_INTEGRATION_THEMES_HELPER_H_
« no previous file with comments | « chrome/browser/sync/test/integration/sync_test.cc ('k') | chrome/browser/sync/test/integration/themes_helper.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698