diff options
author | harrym@chromium.org <harrym@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-14 23:05:13 +0000 |
---|---|---|
committer | harrym@chromium.org <harrym@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-14 23:05:13 +0000 |
commit | 7ff2cc13a2d85f02aaca8bd0edd2c45dae527065 (patch) | |
tree | 098da4c852cc8df80bf8e70ae67303d994eff673 | |
parent | dfd784642a9d1e29069ee6cc4dc32a38dedddb2e (diff) | |
download | chromium_src-7ff2cc13a2d85f02aaca8bd0edd2c45dae527065.zip chromium_src-7ff2cc13a2d85f02aaca8bd0edd2c45dae527065.tar.gz chromium_src-7ff2cc13a2d85f02aaca8bd0edd2c45dae527065.tar.bz2 |
Enable surprise me wallpaper for new profiles.
BUG=305855, 322603
TBR=awatson@chromium.org
Review URL: https://codereview.chromium.org/162393002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@263741 0039d316-1c4b-4281-b951-d872f2087c98
5 files changed, 60 insertions, 2 deletions
diff --git a/chrome/browser/chromeos/login/login_utils.cc b/chrome/browser/chromeos/login/login_utils.cc index 7800ada..b67175f 100644 --- a/chrome/browser/chromeos/login/login_utils.cc +++ b/chrome/browser/chromeos/login/login_utils.cc @@ -51,6 +51,7 @@ #include "chrome/browser/chromeos/login/supervised_user_manager.h" #include "chrome/browser/chromeos/login/user.h" #include "chrome/browser/chromeos/login/user_manager.h" +#include "chrome/browser/chromeos/login/wallpaper_manager.h" #include "chrome/browser/chromeos/settings/cros_settings.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/first_run/first_run.h" @@ -348,6 +349,14 @@ void LoginUtilsImpl::DoBrowserLaunchOnLocaleLoadedImpl( first_run, &return_code); + // If the current user is a new regular user (not including + // multi-profile cases) enable surprise me wallpaper by default. + if (UserManager::Get()->IsCurrentUserNew() && + UserManager::Get()->IsLoggedInAsRegularUser() && + UserManager::Get()->GetLoggedInUsers().size() == 1) { + WallpaperManager::Get()->EnableSurpriseMe(); + } + // Triggers app launcher start page service to load start page web contents. app_list::StartPageService::Get(profile); diff --git a/chrome/browser/chromeos/login/wallpaper_manager.cc b/chrome/browser/chromeos/login/wallpaper_manager.cc index d59ae0a..a0017cb 100644 --- a/chrome/browser/chromeos/login/wallpaper_manager.cc +++ b/chrome/browser/chromeos/login/wallpaper_manager.cc @@ -29,11 +29,15 @@ #include "base/values.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/chrome_notification_types.h" +#include "chrome/browser/chromeos/extensions/wallpaper_manager_util.h" +#include "chrome/browser/chromeos/extensions/wallpaper_private_api.h" +#include "chrome/browser/chromeos/login/login_display_host_impl.h" #include "chrome/browser/chromeos/login/startup_utils.h" #include "chrome/browser/chromeos/login/user.h" #include "chrome/browser/chromeos/login/user_manager.h" #include "chrome/browser/chromeos/login/wizard_controller.h" #include "chrome/browser/chromeos/settings/cros_settings.h" +#include "chrome/browser/extensions/extension_service.h" #include "chrome/common/chrome_paths.h" #include "chrome/common/chrome_switches.h" #include "chrome/common/pref_names.h" @@ -41,6 +45,8 @@ #include "chromeos/dbus/dbus_thread_manager.h" #include "content/public/browser/browser_thread.h" #include "content/public/browser/notification_service.h" +#include "content/public/browser/web_ui.h" +#include "extensions/browser/event_router.h" #include "grit/ash_resources.h" #include "ui/base/resource/resource_bundle.h" #include "ui/gfx/codec/jpeg_codec.h" @@ -975,6 +981,20 @@ void WallpaperManager::RemoveObserver(WallpaperManager::Observer* observer) { observers_.RemoveObserver(observer); } +void WallpaperManager::EnableSurpriseMe() { + Profile* profile = ProfileManager::GetActiveUserProfile(); + DCHECK(profile); + DCHECK(extensions::ExtensionSystem::Get(profile)->event_router()); + scoped_ptr<extensions::Event> event( + new extensions::Event( + extensions::api::wallpaper_private::OnRequestEnableSurpriseMe::kEventName, + extensions::api::wallpaper_private::OnRequestEnableSurpriseMe::Create())); + + extensions::ExtensionSystem::Get(profile)->event_router() + ->DispatchEventToExtension(extension_misc::kWallpaperManagerId, + event.Pass()); +} + void WallpaperManager::NotifyAnimationFinished() { FOR_EACH_OBSERVER( Observer, observers_, OnWallpaperAnimationFinished(last_selected_user_)); diff --git a/chrome/browser/chromeos/login/wallpaper_manager.h b/chrome/browser/chromeos/login/wallpaper_manager.h index 2dae2fa..cb3c95a 100644 --- a/chrome/browser/chromeos/login/wallpaper_manager.h +++ b/chrome/browser/chromeos/login/wallpaper_manager.h @@ -328,6 +328,9 @@ class WallpaperManager: public content::NotificationObserver { // Returns the appropriate wallpaper resolution for all root windows. static WallpaperResolution GetAppropriateResolution(); + // Enable surprise me wallpaper mode. + void EnableSurpriseMe(); + private: friend class TestApi; friend class WallpaperManagerBrowserTest; diff --git a/chrome/browser/resources/chromeos/wallpaper_manager/js/event_page.js b/chrome/browser/resources/chromeos/wallpaper_manager/js/event_page.js index 7106203..f32032f 100644 --- a/chrome/browser/resources/chromeos/wallpaper_manager/js/event_page.js +++ b/chrome/browser/resources/chromeos/wallpaper_manager/js/event_page.js @@ -4,6 +4,7 @@ var WALLPAPER_PICKER_WIDTH = 574; var WALLPAPER_PICKER_HEIGHT = 420; +var SURPRISE_ME_ALARM_NAME = 'DefaultEnableSurpriseMe'; var wallpaperPickerWindow; @@ -271,6 +272,23 @@ chrome.storage.onChanged.addListener(function(changes, namespace) { } }); -chrome.alarms.onAlarm.addListener(function() { - SurpriseWallpaper.getInstance().next(); +chrome.alarms.onAlarm.addListener(function(alarm) { + if (alarm.name === SURPRISE_ME_ALARM_NAME) { + Constants.WallpaperSyncStorage.get(Constants.AccessSurpriseMeEnabledKey, + function(items) { + if (!items.hasOwnProperty(Constants.AccessSurpriseMeEnabledKey)) { + WallpaperUtil.saveToStorage(Constants.AccessSurpriseMeEnabledKey, + true, true); + } + }); + } else { + SurpriseWallpaper.getInstance().next(); + } +}); + +/** + * Enables surprise me wallpaper iff it has not already been configured. + */ +chrome.wallpaperPrivate.onRequestEnableSurpriseMe.addListener(function() { + chrome.alarms.create(SURPRISE_ME_ALARM_NAME, {delayInMinutes: 5}); }); diff --git a/chrome/common/extensions/api/wallpaper_private.json b/chrome/common/extensions/api/wallpaper_private.json index 2315906..89e6ee1 100644 --- a/chrome/common/extensions/api/wallpaper_private.json +++ b/chrome/common/extensions/api/wallpaper_private.json @@ -238,6 +238,14 @@ } ] } + ], + "events": [ + { + "name": "onRequestEnableSurpriseMe", + "type": "function", + "description": "Fired to request enabling surprise me mode for new profiles.", + "parameters": [] + } ] } ] |