summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ash/desktop_background/desktop_background_controller.h5
-rw-r--r--ash/shell.cc7
-rw-r--r--ash/wm/workspace_controller.cc11
-rw-r--r--ash/wm/workspace_controller.h1
-rw-r--r--chrome/browser/chromeos/background/desktop_background_observer.cc9
5 files changed, 30 insertions, 3 deletions
diff --git a/ash/desktop_background/desktop_background_controller.h b/ash/desktop_background/desktop_background_controller.h
index f43cbbd..a368443 100644
--- a/ash/desktop_background/desktop_background_controller.h
+++ b/ash/desktop_background/desktop_background_controller.h
@@ -18,8 +18,11 @@ class UserWallpaperDelegate {
public:
virtual ~UserWallpaperDelegate() {}
- // Gets the index of user selected wallpaper
+ // Gets the index of user selected wallpaper.
virtual const int GetUserWallpaperIndex() = 0;
+
+ // Open the set wallpaper page in the browser.
+ virtual void OpenSetWallpaperPage() = 0;
};
// A class to listen for login and desktop background change events and set the
diff --git a/ash/shell.cc b/ash/shell.cc
index e033a5a..e397157 100644
--- a/ash/shell.cc
+++ b/ash/shell.cc
@@ -232,16 +232,19 @@ void CreateSpecialContainers(aura::RootWindow* root_window) {
// This dummy class is used for shell unit tests. We dont have chrome delegate
// in these tests.
-class DummyUserWallpaperDelegate: public UserWallpaperDelegate {
+class DummyUserWallpaperDelegate : public UserWallpaperDelegate {
public:
DummyUserWallpaperDelegate() {}
virtual ~DummyUserWallpaperDelegate() {}
- const int GetUserWallpaperIndex() {
+ virtual const int GetUserWallpaperIndex() OVERRIDE {
return 0;
}
+ virtual void OpenSetWallpaperPage() OVERRIDE {
+ }
+
private:
DISALLOW_COPY_AND_ASSIGN(DummyUserWallpaperDelegate);
};
diff --git a/ash/wm/workspace_controller.cc b/ash/wm/workspace_controller.cc
index 38c1f25..9e96d61 100644
--- a/ash/wm/workspace_controller.cc
+++ b/ash/wm/workspace_controller.cc
@@ -4,15 +4,19 @@
#include "ash/wm/workspace_controller.h"
+#include "ash/desktop_background/desktop_background_controller.h"
+#include "ash/shell.h"
#include "ash/wm/window_util.h"
#include "ash/wm/workspace/workspace_event_filter.h"
#include "ash/wm/workspace/workspace_layout_manager.h"
#include "ash/wm/workspace/workspace_manager.h"
#include "base/utf_string_conversions.h"
+#include "grit/ash_strings.h"
#include "ui/aura/client/activation_client.h"
#include "ui/aura/client/aura_constants.h"
#include "ui/aura/root_window.h"
#include "ui/aura/window.h"
+#include "ui/base/l10n/l10n_util.h"
#include "ui/views/controls/menu/menu_model_adapter.h"
#include "ui/views/controls/menu/menu_runner.h"
@@ -60,6 +64,8 @@ void WorkspaceController::ShowMenu(views::Widget* widget,
// the strings are localized.
menu_model.AddCheckItem(MENU_SNAP_TO_GRID,
ASCIIToUTF16("Snap to grid"));
+ menu_model.AddItem(MENU_CHANGE_WALLPAPER,
+ l10n_util::GetStringUTF16(IDS_AURA_SET_DESKTOP_WALLPAPER));
views::MenuModelAdapter menu_model_adapter(&menu_model);
menu_runner_.reset(new views::MenuRunner(menu_model_adapter.CreateMenu()));
if (menu_runner_->RunMenuAt(
@@ -113,6 +119,11 @@ void WorkspaceController::ExecuteCommand(int command_id) {
}
break;
}
+ case MENU_CHANGE_WALLPAPER: {
+ Shell::GetInstance()->user_wallpaper_delegate()->
+ OpenSetWallpaperPage();
+ break;
+ }
}
}
diff --git a/ash/wm/workspace_controller.h b/ash/wm/workspace_controller.h
index 417d127..9e547f9 100644
--- a/ash/wm/workspace_controller.h
+++ b/ash/wm/workspace_controller.h
@@ -75,6 +75,7 @@ class ASH_EXPORT WorkspaceController :
enum MenuItem {
MENU_SNAP_TO_GRID,
+ MENU_CHANGE_WALLPAPER,
};
aura::Window* viewport_;
diff --git a/chrome/browser/chromeos/background/desktop_background_observer.cc b/chrome/browser/chromeos/background/desktop_background_observer.cc
index 6a7e520..bb03721 100644
--- a/chrome/browser/chromeos/background/desktop_background_observer.cc
+++ b/chrome/browser/chromeos/background/desktop_background_observer.cc
@@ -9,6 +9,9 @@
#include "ash/desktop_background/desktop_background_resources.h"
#include "base/logging.h"
#include "chrome/browser/chromeos/login/user_manager.h"
+#include "chrome/browser/profiles/profile_manager.h"
+#include "chrome/browser/ui/browser.h"
+#include "chrome/browser/ui/browser_list.h"
#include "chrome/common/chrome_notification_types.h"
#include "content/public/browser/notification_service.h"
@@ -38,6 +41,12 @@ class UserWallpaperDelegate: public ash::UserWallpaperDelegate {
return index;
}
+ virtual void OpenSetWallpaperPage() OVERRIDE {
+ Browser* browser = Browser::GetOrCreateTabbedBrowser(
+ ProfileManager::GetDefaultProfileOrOffTheRecord());
+ browser->ShowOptionsTab("setWallpaper");
+ }
+
private:
DISALLOW_COPY_AND_ASSIGN(UserWallpaperDelegate);
};