summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorharrym@chromium.org <harrym@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-14 23:05:13 +0000
committerharrym@chromium.org <harrym@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-14 23:05:13 +0000
commit7ff2cc13a2d85f02aaca8bd0edd2c45dae527065 (patch)
tree098da4c852cc8df80bf8e70ae67303d994eff673
parentdfd784642a9d1e29069ee6cc4dc32a38dedddb2e (diff)
downloadchromium_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
-rw-r--r--chrome/browser/chromeos/login/login_utils.cc9
-rw-r--r--chrome/browser/chromeos/login/wallpaper_manager.cc20
-rw-r--r--chrome/browser/chromeos/login/wallpaper_manager.h3
-rw-r--r--chrome/browser/resources/chromeos/wallpaper_manager/js/event_page.js22
-rw-r--r--chrome/common/extensions/api/wallpaper_private.json8
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": []
+ }
]
}
]