| Index: chrome/browser/chromeos/screensaver/screensaver_controller.cc
|
| diff --git a/chrome/browser/chromeos/screensaver/screensaver_controller.cc b/chrome/browser/chromeos/screensaver/screensaver_controller.cc
|
| deleted file mode 100644
|
| index 55e61996c7f1de1060622147e61fe9c64544bf07..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/chromeos/screensaver/screensaver_controller.cc
|
| +++ /dev/null
|
| @@ -1,187 +0,0 @@
|
| -// Copyright (c) 2012 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/chromeos/screensaver/screensaver_controller.h"
|
| -
|
| -#include "ash/screensaver/screensaver_view.h"
|
| -#include "ash/shell.h"
|
| -#include "ash/wm/user_activity_detector.h"
|
| -#include "base/bind.h"
|
| -#include "base/callback.h"
|
| -#include "base/logging.h"
|
| -#include "chrome/browser/chrome_notification_types.h"
|
| -#include "chrome/browser/extensions/extension_service.h"
|
| -#include "chrome/browser/extensions/extension_system.h"
|
| -#include "chrome/browser/profiles/profile_manager.h"
|
| -#include "chrome/common/extensions/extension.h"
|
| -#include "chrome/common/extensions/manifest_handlers/app_launch_info.h"
|
| -#include "chromeos/dbus/dbus_thread_manager.h"
|
| -#include "chromeos/dbus/power_manager_client.h"
|
| -#include "content/public/browser/notification_service.h"
|
| -
|
| -namespace {
|
| -
|
| -const int kScreensaverTimeoutMinutes = 2;
|
| -
|
| -ExtensionService* GetDefaultExtensionService() {
|
| - Profile* default_profile = ProfileManager::GetDefaultProfile();
|
| - DCHECK(default_profile);
|
| - ExtensionService* service =
|
| - extensions::ExtensionSystem::Get(default_profile)->extension_service();
|
| - DCHECK(service);
|
| -
|
| - return service;
|
| -}
|
| -
|
| -// Find the screensaver extension for the given service, excluding
|
| -// the one with exclude_id.
|
| -std::string FindScreensaverExtension(ExtensionService* service,
|
| - const std::string& exclude_id) {
|
| - const ExtensionSet* extensions = service->extensions();
|
| - if (!extensions)
|
| - return std::string();
|
| -
|
| - for (ExtensionSet::const_iterator it = extensions->begin();
|
| - it != extensions->end();
|
| - ++it) {
|
| - const extensions::Extension* extension = it->get();
|
| - if (extension &&
|
| - extension->id() != exclude_id &&
|
| - extension->HasAPIPermission(extensions::APIPermission::kScreensaver)) {
|
| - return extension->id();
|
| - }
|
| - }
|
| -
|
| - return std::string();
|
| -}
|
| -
|
| -void UninstallPreviousScreensavers(const extensions::Extension* current) {
|
| - Profile* default_profile = ProfileManager::GetDefaultProfile();
|
| - DCHECK(default_profile);
|
| - ExtensionService* service =
|
| - extensions::ExtensionSystem::Get(default_profile)->extension_service();
|
| - DCHECK(service);
|
| -
|
| - std::string screensaver_id;
|
| - while ((screensaver_id = FindScreensaverExtension(service, current->id()))
|
| - != "") {
|
| - string16 error;
|
| - if (!service->UninstallExtension(screensaver_id, false, &error))
|
| - LOG(ERROR)
|
| - << "Couldn't uninstall previous screensaver extension with id: "
|
| - << screensaver_id << " \nError: " << error;
|
| - }
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -namespace chromeos {
|
| -
|
| -ScreensaverController::ScreensaverController()
|
| - : threshold_(base::TimeDelta::FromMinutes(kScreensaverTimeoutMinutes)),
|
| - weak_ptr_factory_(this) {
|
| - // Register for extension changes.
|
| - registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_LOADED,
|
| - content::NotificationService::AllSources());
|
| - registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_UNLOADED,
|
| - content::NotificationService::AllSources());
|
| -
|
| - std::string screensaver_extension_id =
|
| - FindScreensaverExtension(GetDefaultExtensionService(), std::string());
|
| - if (!screensaver_extension_id.empty())
|
| - SetupScreensaver(screensaver_extension_id);
|
| -}
|
| -
|
| -ScreensaverController::~ScreensaverController() {
|
| - TeardownScreensaver();
|
| -}
|
| -
|
| -void ScreensaverController::Observe(
|
| - int type,
|
| - const content::NotificationSource& source,
|
| - const content::NotificationDetails& details) {
|
| - switch (type) {
|
| - case chrome::NOTIFICATION_EXTENSION_INSTALLED: {
|
| - const extensions::Extension* extension =
|
| - content::Details<const extensions::InstalledExtensionInfo>(details)->
|
| - extension;
|
| - // Uninstall any previously installed screensaver extensions if a new
|
| - // screensaver extension is installed.
|
| - if (extension->HasAPIPermission(extensions::APIPermission::kScreensaver))
|
| - UninstallPreviousScreensavers(extension);
|
| - break;
|
| - }
|
| - case chrome::NOTIFICATION_EXTENSION_LOADED: {
|
| - const extensions::Extension* extension =
|
| - content::Details<const extensions::Extension>(details).ptr();
|
| - if (extension->HasAPIPermission(extensions::APIPermission::kScreensaver))
|
| - SetupScreensaver(extension->id());
|
| - break;
|
| - }
|
| - case chrome::NOTIFICATION_EXTENSION_UNLOADED: {
|
| - const extensions::Extension* extension =
|
| - content::Details<extensions::UnloadedExtensionInfo>(
|
| - details)->extension;
|
| - if (extension->id() == screensaver_extension_id_)
|
| - TeardownScreensaver();
|
| - break;
|
| - }
|
| - }
|
| -}
|
| -
|
| -void ScreensaverController::IdleNotify(int64 threshold) {
|
| - ExtensionService* service = GetDefaultExtensionService();
|
| - const extensions::Extension* screensaver_extension =
|
| - service->GetExtensionById(screensaver_extension_id_,
|
| - ExtensionService::INCLUDE_ENABLED);
|
| - ash::ShowScreensaver(
|
| - extensions::AppLaunchInfo::GetFullLaunchURL(screensaver_extension));
|
| -
|
| - if (!ash::Shell::GetInstance()->user_activity_detector()->HasObserver(this))
|
| - ash::Shell::GetInstance()->user_activity_detector()->AddObserver(this);
|
| -}
|
| -
|
| -void ScreensaverController::OnUserActivity(const ui::Event* event) {
|
| - // We don't want to handle further user notifications; we'll either login
|
| - // the user and close out or or at least close the screensaver.
|
| - if (ash::Shell::GetInstance()->user_activity_detector()->HasObserver(this))
|
| - ash::Shell::GetInstance()->user_activity_detector()->RemoveObserver(this);
|
| - ash::CloseScreensaver();
|
| -
|
| - RequestNextIdleNotification();
|
| -}
|
| -
|
| -void ScreensaverController::SetupScreensaver(
|
| - const std::string& screensaver_extension_id) {
|
| - screensaver_extension_id_ = screensaver_extension_id;
|
| -
|
| - PowerManagerClient* power_manager =
|
| - DBusThreadManager::Get()->GetPowerManagerClient();
|
| - if (!power_manager->HasObserver(this))
|
| - power_manager->AddObserver(this);
|
| -
|
| - RequestNextIdleNotification();
|
| -}
|
| -
|
| -void ScreensaverController::TeardownScreensaver() {
|
| - PowerManagerClient* power_manager =
|
| - DBusThreadManager::Get()->GetPowerManagerClient();
|
| - if (power_manager && power_manager->HasObserver(this))
|
| - power_manager->RemoveObserver(this);
|
| -
|
| - if (ash::Shell::GetInstance() &&
|
| - ash::Shell::GetInstance()->user_activity_detector()->HasObserver(this)) {
|
| - ash::Shell::GetInstance()->user_activity_detector()->RemoveObserver(this);
|
| - }
|
| -
|
| - ash::CloseScreensaver();
|
| - screensaver_extension_id_ = "";
|
| -}
|
| -
|
| -void ScreensaverController::RequestNextIdleNotification() {
|
| - DBusThreadManager::Get()->GetPowerManagerClient()->
|
| - RequestIdleNotification(threshold_.InMilliseconds());
|
| -}
|
| -
|
| -} // namespace chromeos
|
|
|