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

Unified Diff: chrome/browser/themes/theme_service.h

Issue 2799003002: Unpack theme data from extensions off of UI thread. (Closed)
Patch Set: fix gtk case Created 3 years, 7 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
« no previous file with comments | « chrome/browser/themes/browser_theme_pack_unittest.cc ('k') | chrome/browser/themes/theme_service.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/themes/theme_service.h
diff --git a/chrome/browser/themes/theme_service.h b/chrome/browser/themes/theme_service.h
index 51c676c2d0f337cf06f18469e8f6ed485942581e..c941a63de3e10453275152fb74224563aec08c76 100644
--- a/chrome/browser/themes/theme_service.h
+++ b/chrome/browser/themes/theme_service.h
@@ -16,14 +16,17 @@
#include "base/memory/ref_counted.h"
#include "base/memory/weak_ptr.h"
#include "base/sequence_checker.h"
+#include "base/task/cancelable_task_tracker.h"
#include "build/build_config.h"
#include "chrome/common/features.h"
#include "components/keyed_service/core/keyed_service.h"
#include "content/public/browser/notification_observer.h"
#include "content/public/browser/notification_registrar.h"
+#include "extensions/common/extension_id.h"
#include "extensions/features/features.h"
#include "ui/base/theme_provider.h"
+class BrowserThemePack;
class CustomThemeSupplier;
class ThemeSyncableService;
class Profile;
@@ -82,6 +85,9 @@ class ThemeService : public content::NotificationObserver, public KeyedService {
// ExtensionService.
virtual void SetTheme(const extensions::Extension* extension);
+ // Similar to SetTheme, but doesn't show an undo infobar.
+ void RevertToTheme(const extensions::Extension* extension);
+
// Reset the theme to default.
virtual void UseDefaultTheme();
@@ -230,6 +236,9 @@ class ThemeService : public content::NotificationObserver, public KeyedService {
// and contrasting with the foreground tab is the most important).
static SkColor GetSeparatorColor(SkColor tab_color, SkColor frame_color);
+ void DoSetTheme(const extensions::Extension* extension,
+ bool suppress_infobar);
+
// These methods provide the implementation for ui::ThemeProvider (exposed
// via BrowserThemeProvider).
gfx::ImageSkia* GetImageSkiaNamed(int id, bool incognito) const;
@@ -270,8 +279,15 @@ class ThemeService : public content::NotificationObserver, public KeyedService {
void SaveThemeID(const std::string& id);
// Implementation of SetTheme() (and the fallback from LoadThemePrefs() in
- // case we don't have a theme pack).
- void BuildFromExtension(const extensions::Extension* extension);
+ // case we don't have a theme pack). |new_theme| indicates whether this is a
+ // newly installed theme or a migration.
+ void BuildFromExtension(const extensions::Extension* extension,
+ bool new_theme);
+
+ // Callback when |pack| has finished or failed building.
+ void OnThemeBuiltFromExtension(const extensions::ExtensionId& extension_id,
+ scoped_refptr<BrowserThemePack> pack,
+ bool new_theme);
#if BUILDFLAG(ENABLE_SUPERVISED_USERS)
// Returns true if the profile belongs to a supervised user.
@@ -328,6 +344,14 @@ class ThemeService : public content::NotificationObserver, public KeyedService {
SEQUENCE_CHECKER(sequence_checker_);
+ // Allows us to cancel building a theme pack from an extension.
+ base::CancelableTaskTracker build_extension_task_tracker_;
+
+ // The ID of the theme that's currently being built on a different thread.
+ // We hold onto this just to be sure not to uninstall the extension view
+ // RemoveUnusedThemes while it's still being built.
+ std::string building_extension_id_;
+
base::WeakPtrFactory<ThemeService> weak_ptr_factory_;
DISALLOW_COPY_AND_ASSIGN(ThemeService);
« no previous file with comments | « chrome/browser/themes/browser_theme_pack_unittest.cc ('k') | chrome/browser/themes/theme_service.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698