Chromium Code Reviews| Index: chrome/browser/extensions/activity_log/activity_log.h | 
| diff --git a/chrome/browser/extensions/activity_log/activity_log.h b/chrome/browser/extensions/activity_log/activity_log.h | 
| index 4f75d295fa522c0aac320feb1c91f3b2929d1ca3..e2589e430bdb6e08e4036289eb3062bfd3720c38 100644 | 
| --- a/chrome/browser/extensions/activity_log/activity_log.h | 
| +++ b/chrome/browser/extensions/activity_log/activity_log.h | 
| @@ -29,6 +29,10 @@ | 
| class Profile; | 
| using content::BrowserThread; | 
| +namespace user_prefs { | 
| +class PrefRegistrySyncable; | 
| +} | 
| + | 
| namespace extensions { | 
| class Extension; | 
| class ActivityLogPolicy; | 
| @@ -50,16 +54,16 @@ class ActivityLog : public BrowserContextKeyedService, | 
| // use GetInstance instead. | 
| static ActivityLog* GetInstance(Profile* profile); | 
| + // Specifies if AL was enabled at least for one profile. We use this method to | 
| + // check if AL possibly enabled when a profile is not available, e.g., when | 
| + // executing on thread other than UI. | 
| + static bool MaybeLogEnabled(); | 
| + | 
| // Provides up-to-date information about whether the AL is enabled for a | 
| // profile. The AL is enabled if the user has installed the whitelisted | 
| // AL extension *or* set the --enable-extension-activity-logging flag. | 
| bool IsLogEnabled(); | 
| - // If you want to know whether the log is enabled but DON'T have a profile | 
| - // object yet, use this method. However, it's preferable for the caller to | 
| - // use IsLogEnabled when possible. | 
| - static bool IsLogEnabledOnAnyProfile(); | 
| - | 
| // Add/remove observer: the activityLogPrivate API only listens when the | 
| // ActivityLog extension is registered for an event. | 
| void AddObserver(Observer* observer); | 
| @@ -83,14 +87,10 @@ class ActivityLog : public BrowserContextKeyedService, | 
| // Extension::InstallObserver | 
| // We keep track of whether the whitelisted extension is installed; if it is, | 
| // we want to recompute whether to have logging enabled. | 
| - virtual void OnExtensionInstalled( | 
| - const extensions::Extension* extension) OVERRIDE {} | 
| - virtual void OnExtensionLoaded( | 
| - const extensions::Extension* extension) OVERRIDE; | 
| - virtual void OnExtensionUnloaded( | 
| - const extensions::Extension* extension) OVERRIDE; | 
| - virtual void OnExtensionUninstalled( | 
| - const extensions::Extension* extension) OVERRIDE {} | 
| + virtual void OnExtensionInstalled(const Extension* extension) OVERRIDE {} | 
| + virtual void OnExtensionLoaded(const Extension* extension) OVERRIDE; | 
| + virtual void OnExtensionUnloaded(const Extension* extension) OVERRIDE; | 
| + virtual void OnExtensionUninstalled(const Extension* extension) OVERRIDE {} | 
| // We also have to list the following from InstallObserver. | 
| virtual void OnBeginExtensionInstall(const std::string& extension_id, | 
| const std::string& extension_name, | 
| @@ -108,6 +108,8 @@ class ActivityLog : public BrowserContextKeyedService, | 
| // BrowserContextKeyedService | 
| virtual void Shutdown() OVERRIDE; | 
| + static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry); | 
| + | 
| private: | 
| friend class ActivityLogFactory; | 
| friend class ActivityLogTest; | 
| @@ -116,9 +118,9 @@ class ActivityLog : public BrowserContextKeyedService, | 
| explicit ActivityLog(Profile* profile); | 
| virtual ~ActivityLog(); | 
| - // Some setup needs to wait until after the ExtensionSystem/ExtensionService | 
| - // are done with their own setup. | 
| - void Init(); | 
| + // Delayed initialization of Install Tracker which waits until after the | 
| + // ExtensionSystem/ExtensionService are done with their own setup. | 
| + void InitInstallTracker(); | 
| // TabHelper::ScriptExecutionObserver implementation. | 
| // Fires when a ContentScript is executed. | 
| @@ -128,10 +130,6 @@ class ActivityLog : public BrowserContextKeyedService, | 
| int32 page_id, | 
| const GURL& on_url) OVERRIDE; | 
| - // For unit tests only. Does not call Init again! | 
| - // Sets whether logging should be enabled for the whole current profile. | 
| - static void RecomputeLoggingIsEnabled(bool profile_enabled); | 
| - | 
| // At the moment, ActivityLog will use only one policy for summarization. | 
| // These methods are used to choose and set the most appropriate policy. | 
| void ChooseDefaultPolicy(); | 
| @@ -145,14 +143,13 @@ class ActivityLog : public BrowserContextKeyedService, | 
| // be a scoped_ptr since some cleanup work must happen on the database | 
| // thread. Calling policy_->Close() will free the object; see the comments | 
| // on the ActivityDatabase class for full details. | 
| - extensions::ActivityLogPolicy* policy_; | 
| + ActivityLogPolicy* policy_; | 
| // TODO(dbabic,felt) change this into a list of policy types later. | 
| ActivityLogPolicy::PolicyType policy_type_; | 
| Profile* profile_; | 
| bool enabled_; // Whether logging is currently enabled. | 
| - bool initialized_; // Whether Init() has already been called. | 
| bool policy_chosen_; // Whether we've already set the default policy. | 
| // testing_mode_ controls whether to log API call arguments. By default, we | 
| // don't log most arguments to avoid saving too much data. In testing mode, | 
| @@ -169,6 +166,13 @@ class ActivityLog : public BrowserContextKeyedService, | 
| // added or removed, enabled_ may change. | 
| InstallTracker* tracker_; | 
| + // Set if the watchdog extension is present and active. Maintained by | 
| + // kWatchdogExtensionActive pref variable. | 
| + bool watchdog_extension_active_; | 
| + | 
| + // Specifies if AL was enabled at least for one profile. | 
| + static bool maybe_enabled_; | 
| 
 
felt
2013/08/08 17:49:24
This is a nice solution. Have you tested this acro
 
 | 
| + | 
| DISALLOW_COPY_AND_ASSIGN(ActivityLog); | 
| }; |