diff options
Diffstat (limited to 'chrome')
6 files changed, 39 insertions, 4 deletions
diff --git a/chrome/browser/chromeos/extensions/wallpaper_api.cc b/chrome/browser/chromeos/extensions/wallpaper_api.cc index d6a76d8..55e9ea0 100644 --- a/chrome/browser/chromeos/extensions/wallpaper_api.cc +++ b/chrome/browser/chromeos/extensions/wallpaper_api.cc @@ -14,6 +14,7 @@ #include "base/strings/stringprintf.h" #include "base/threading/worker_pool.h" #include "chrome/browser/browser_process.h" +#include "chrome/browser/chromeos/extensions/wallpaper_private_api.h" #include "chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.h" #include "chrome/browser/profiles/profile.h" #include "chrome/common/chrome_paths.h" @@ -22,6 +23,7 @@ #include "components/user_manager/user.h" #include "components/user_manager/user_manager.h" #include "components/wallpaper/wallpaper_layout.h" +#include "extensions/browser/event_router.h" #include "net/base/load_flags.h" #include "net/http/http_status_code.h" #include "net/url_request/url_fetcher.h" @@ -177,6 +179,18 @@ void WallpaperSetWallpaperFunction::OnWallpaperDecoded( } SendResponse(true); } + + // Inform the native Wallpaper Picker Application that the current wallpaper + // has been modified by a third party application. + Profile* profile = Profile::FromBrowserContext(browser_context()); + extensions::EventRouter* event_router = extensions::EventRouter::Get(profile); + scoped_ptr<base::ListValue> event_args(new base::ListValue()); + scoped_ptr<extensions::Event> event( + new extensions::Event(extensions::api::wallpaper_private:: + OnWallpaperChangedBy3rdParty::kEventName, + event_args.Pass())); + event_router->DispatchEventToExtension(extension_misc::kWallpaperManagerId, + event.Pass()); } void WallpaperSetWallpaperFunction::GenerateThumbnail( 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 dd3dde2..738f799 100644 --- a/chrome/browser/resources/chromeos/wallpaper_manager/js/event_page.js +++ b/chrome/browser/resources/chromeos/wallpaper_manager/js/event_page.js @@ -349,3 +349,9 @@ chrome.storage.onChanged.addListener(function(changes, namespace) { chrome.alarms.onAlarm.addListener(function() { SurpriseWallpaper.getInstance().next(); }); + +chrome.wallpaperPrivate.onWallpaperChangedBy3rdParty.addListener(function() { + WallpaperUtil.saveToStorage(Constants.AccessSurpriseMeEnabledKey, + false, true); + SurpriseWallpaper.getInstance().disable(); +}); diff --git a/chrome/browser/resources/chromeos/wallpaper_manager/js/wallpaper_images_grid.js b/chrome/browser/resources/chromeos/wallpaper_manager/js/wallpaper_images_grid.js index 80ad1133..db4bb4b 100644 --- a/chrome/browser/resources/chromeos/wallpaper_manager/js/wallpaper_images_grid.js +++ b/chrome/browser/resources/chromeos/wallpaper_manager/js/wallpaper_images_grid.js @@ -223,6 +223,10 @@ cr.define('wallpapers', function() { } }, + get activeItem() { + return this.activeItem_; + }, + /** * A unique ID that assigned to each set dataModel operation. Note that this * id wont increase if the new dataModel is null or empty. diff --git a/chrome/browser/resources/chromeos/wallpaper_manager/js/wallpaper_manager.js b/chrome/browser/resources/chromeos/wallpaper_manager/js/wallpaper_manager.js index 57af6ad..5d638ec 100644 --- a/chrome/browser/resources/chromeos/wallpaper_manager/js/wallpaper_manager.js +++ b/chrome/browser/resources/chromeos/wallpaper_manager/js/wallpaper_manager.js @@ -203,12 +203,16 @@ function WallpaperManager(dialogDom) { if (chrome.runtime.lastError == null) { if (shouldEnable) { checkbox.classList.add('checked'); + // Hides the wallpaper set by message if there is any. + $('wallpaper-set-by-message').textContent = ''; } else { // Unchecking the "Surprise me" checkbox falls back to the previous // wallpaper before "Surprise me" was turned on. - self.setSelectedWallpaper_(self.wallpaperGrid_.activeItem_); - self.onWallpaperChanged_(self.wallpaperGrid_.activeItem_, - self.currentWallpaper_); + if (self.wallpaperGrid_.activeItem) { + self.setSelectedWallpaper_(self.wallpaperGrid_.activeItem); + self.onWallpaperChanged_(self.wallpaperGrid_.activeItem, + self.currentWallpaper_); + } checkbox.classList.remove('checked'); } $('categories-list').disabled = shouldEnable; diff --git a/chrome/browser/resources/chromeos/wallpaper_manager/main.html b/chrome/browser/resources/chromeos/wallpaper_manager/main.html index 94f95c6..84f3364 100644 --- a/chrome/browser/resources/chromeos/wallpaper_manager/main.html +++ b/chrome/browser/resources/chromeos/wallpaper_manager/main.html @@ -9,7 +9,7 @@ found in the LICENSE file. <head> <meta charset="utf-8"> <title>Wallpaper Picker</title> - <link rel="stylesheet" href="chrome://resources/css/text_defaults.css"> + <link rel="stylesheet" href="../../../../../ui/webui/resources/css/text_defaults.css"> <link rel="stylesheet" href="../../../../../ui/webui/resources/css/widgets.css"> <link rel="stylesheet" href="../../../../../ui/webui/resources/css/menu.css"></link> diff --git a/chrome/common/extensions/api/wallpaper_private.json b/chrome/common/extensions/api/wallpaper_private.json index 14205f1..6a88280 100644 --- a/chrome/common/extensions/api/wallpaper_private.json +++ b/chrome/common/extensions/api/wallpaper_private.json @@ -256,6 +256,13 @@ } ] } + ], + "events": [ + { + "name": "onWallpaperChangedBy3rdParty", + "type": "function", + "description": "This event is sent when the current wallpaper was set by a third party application." + } ] } ] |