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

Unified Diff: chrome/browser/apps/ephemeral_app_service.cc

Issue 1497193002: Remove all the ephemeral apps code. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Tests Created 5 years 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/apps/ephemeral_app_service.cc
diff --git a/chrome/browser/apps/ephemeral_app_service.cc b/chrome/browser/apps/ephemeral_app_service.cc
deleted file mode 100644
index 6f17c4b0dd404868e8df201920aefe820185ce77..0000000000000000000000000000000000000000
--- a/chrome/browser/apps/ephemeral_app_service.cc
+++ /dev/null
@@ -1,162 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/apps/ephemeral_app_service.h"
-
-#include "apps/app_lifetime_monitor_factory.h"
-#include "base/bind.h"
-#include "base/command_line.h"
-#include "base/thread_task_runner_handle.h"
-#include "chrome/browser/apps/ephemeral_app_service_factory.h"
-#include "chrome/browser/extensions/extension_service.h"
-#include "chrome/browser/extensions/extension_util.h"
-#include "chrome/browser/profiles/profile.h"
-#include "content/public/browser/browser_thread.h"
-#include "content/public/common/content_switches.h"
-#include "extensions/browser/extension_prefs.h"
-#include "extensions/browser/extension_registry.h"
-#include "extensions/browser/extension_system.h"
-#include "extensions/browser/extension_util.h"
-#include "extensions/browser/uninstall_reason.h"
-#include "extensions/common/extension.h"
-#include "extensions/common/extension_set.h"
-#include "extensions/common/one_shot_event.h"
-
-using extensions::Extension;
-using extensions::ExtensionPrefs;
-using extensions::ExtensionRegistry;
-using extensions::ExtensionSet;
-using extensions::ExtensionSystem;
-
-namespace {
-
-// The number of seconds after an app has stopped running before it will be
-// disabled.
-const int kDefaultDisableAppDelay = 1;
-
-} // namespace
-
-// static
-EphemeralAppService* EphemeralAppService::Get(Profile* profile) {
- return EphemeralAppServiceFactory::GetForProfile(profile);
-}
-
-EphemeralAppService::EphemeralAppService(Profile* profile)
- : profile_(profile),
- extension_registry_observer_(this),
- app_lifetime_monitor_observer_(this),
- disable_idle_app_delay_(kDefaultDisableAppDelay),
- weak_ptr_factory_(this) {
- ExtensionSystem::Get(profile_)->ready().Post(
- FROM_HERE,
- base::Bind(&EphemeralAppService::Init, weak_ptr_factory_.GetWeakPtr()));
-}
-
-EphemeralAppService::~EphemeralAppService() {
-}
-
-void EphemeralAppService::ClearCachedApps() {
- ExtensionRegistry* registry = ExtensionRegistry::Get(profile_);
- DCHECK(registry);
- ExtensionPrefs* prefs = ExtensionPrefs::Get(profile_);
- DCHECK(prefs);
- ExtensionService* service =
- ExtensionSystem::Get(profile_)->extension_service();
- DCHECK(service);
-
- scoped_ptr<ExtensionSet> extensions =
- registry->GenerateInstalledExtensionsSet();
-
- for (ExtensionSet::const_iterator it = extensions->begin();
- it != extensions->end();
- ++it) {
- std::string extension_id = (*it)->id();
- if (!prefs->IsEphemeralApp(extension_id))
- continue;
-
- DCHECK(registry->GetExtensionById(extension_id,
- ExtensionRegistry::EVERYTHING));
- service->UninstallExtension(
- extension_id,
- extensions::UNINSTALL_REASON_ORPHANED_EPHEMERAL_EXTENSION,
- base::Bind(&base::DoNothing),
- NULL);
- }
-}
-
-void EphemeralAppService::OnExtensionWillBeInstalled(
- content::BrowserContext* browser_context,
- const extensions::Extension* extension,
- bool is_update,
- bool from_ephemeral,
- const std::string& old_name) {
- if (from_ephemeral)
- HandleEphemeralAppPromoted(extension);
-}
-
-void EphemeralAppService::OnAppStop(Profile* profile,
- const std::string& app_id) {
- if (!extensions::util::IsEphemeralApp(app_id, profile_))
- return;
-
- base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
- FROM_HERE, base::Bind(&EphemeralAppService::DisableEphemeralApp,
- weak_ptr_factory_.GetWeakPtr(), app_id),
- base::TimeDelta::FromSeconds(disable_idle_app_delay_));
-}
-
-void EphemeralAppService::OnChromeTerminating() {
- extension_registry_observer_.RemoveAll();
- app_lifetime_monitor_observer_.RemoveAll();
-}
-
-void EphemeralAppService::Init() {
- // Start observing.
- extension_registry_observer_.Add(ExtensionRegistry::Get(profile_));
- app_lifetime_monitor_observer_.Add(
- apps::AppLifetimeMonitorFactory::GetForProfile(profile_));
-
- // Execute startup clean up tasks (except during tests).
- if (base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kTestType))
- return;
-
- content::BrowserThread::PostAfterStartupTask(
- FROM_HERE, content::BrowserThread::GetMessageLoopProxyForThread(
- content::BrowserThread::UI),
- base::Bind(&EphemeralAppService::ClearCachedApps,
- weak_ptr_factory_.GetWeakPtr()));
-}
-
-void EphemeralAppService::DisableEphemeralApp(const std::string& app_id) {
- if (!extensions::util::IsEphemeralApp(app_id, profile_) ||
- !extensions::util::IsExtensionIdle(app_id, profile_)) {
- return;
- }
-
- // After an ephemeral app has stopped running, unload it from extension
- // system and disable it to prevent all background activity.
- ExtensionService* service =
- ExtensionSystem::Get(profile_)->extension_service();
- DCHECK(service);
- service->DisableExtension(app_id, Extension::DISABLE_INACTIVE_EPHEMERAL_APP);
-}
-
-void EphemeralAppService::HandleEphemeralAppPromoted(const Extension* app) {
- // When ephemeral apps are promoted to regular install apps, remove the
- // DISABLE_INACTIVE_EPHEMERAL_APP reason and enable the app if there are no
- // other reasons.
- ExtensionPrefs* prefs = ExtensionPrefs::Get(profile_);
- DCHECK(prefs);
-
- int disable_reasons = prefs->GetDisableReasons(app->id());
- if (disable_reasons & Extension::DISABLE_INACTIVE_EPHEMERAL_APP) {
- if (disable_reasons == Extension::DISABLE_INACTIVE_EPHEMERAL_APP) {
- // This will also clear disable reasons.
- prefs->SetExtensionEnabled(app->id());
- } else {
- prefs->RemoveDisableReason(app->id(),
- Extension::DISABLE_INACTIVE_EPHEMERAL_APP);
- }
- }
-}

Powered by Google App Engine
This is Rietveld 408576698