Index: chrome/browser/apps/ephemeral_app_service.h |
diff --git a/chrome/browser/apps/ephemeral_app_service.h b/chrome/browser/apps/ephemeral_app_service.h |
index ede710a63624489179cb236f2531edf1b3e7cc35..fbbda3ed3557f81faee9633a14b3b3fecf24d142 100644 |
--- a/chrome/browser/apps/ephemeral_app_service.h |
+++ b/chrome/browser/apps/ephemeral_app_service.h |
@@ -8,6 +8,8 @@ |
#include <map> |
#include <set> |
+#include "apps/app_lifetime_monitor.h" |
+#include "base/memory/weak_ptr.h" |
#include "base/scoped_observer.h" |
#include "base/timer/timer.h" |
#include "components/keyed_service/core/keyed_service.h" |
@@ -25,7 +27,8 @@ class ExtensionRegistry; |
// Performs the background garbage collection of ephemeral apps. |
class EphemeralAppService : public KeyedService, |
public content::NotificationObserver, |
- public extensions::ExtensionRegistryObserver { |
+ public extensions::ExtensionRegistryObserver, |
+ public apps::AppLifetimeMonitor::Observer { |
public: |
// Returns the instance for the given profile. This is a convenience wrapper |
// around EphemeralAppServiceFactory::GetForProfile. |
@@ -39,6 +42,10 @@ class EphemeralAppService : public KeyedService, |
int ephemeral_app_count() const { return ephemeral_app_count_; } |
+ void set_disable_delay_for_test(int delay) { |
+ disable_idle_app_delay_ = delay; |
+ } |
+ |
// Constants exposed for testing purposes: |
// The number of days of inactivity before an ephemeral app will be removed. |
@@ -70,9 +77,18 @@ class EphemeralAppService : public KeyedService, |
const extensions::Extension* extension, |
extensions::UninstallReason reason) OVERRIDE; |
+ // apps::AppLifetimeMonitor::Observer implementation. |
+ virtual void OnAppStop(Profile* profile, const std::string& app_id) OVERRIDE; |
+ virtual void OnChromeTerminating() OVERRIDE; |
+ |
void Init(); |
void InitEphemeralAppCount(); |
+ void DisableEphemeralApp(const std::string& app_id); |
+ void DisableEphemeralAppsOnStartup(); |
+ |
+ void HandleEphemeralAppPromoted(const extensions::Extension* app); |
+ |
// Garbage collect ephemeral apps. |
void TriggerGarbageCollect(const base::TimeDelta& delay); |
void GarbageCollectApps(); |
@@ -86,12 +102,20 @@ class EphemeralAppService : public KeyedService, |
ScopedObserver<extensions::ExtensionRegistry, |
extensions::ExtensionRegistryObserver> |
extension_registry_observer_; |
+ ScopedObserver<apps::AppLifetimeMonitor, apps::AppLifetimeMonitor::Observer> |
+ app_lifetime_monitor_observer_; |
base::OneShotTimer<EphemeralAppService> garbage_collect_apps_timer_; |
// The count of cached ephemeral apps. |
int ephemeral_app_count_; |
+ // Number of seconds before disabling idle ephemeral apps. |
+ // Overridden in tests. |
+ int disable_idle_app_delay_; |
+ |
+ base::WeakPtrFactory<EphemeralAppService> weak_ptr_factory_; |
+ |
friend class EphemeralAppServiceTest; |
friend class EphemeralAppServiceBrowserTest; |