diff options
author | skuhne@chromium.org <skuhne@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-20 22:05:38 +0000 |
---|---|---|
committer | skuhne@chromium.org <skuhne@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-20 22:05:38 +0000 |
commit | 12abb20ae922d192978205a9259d663cd0aeeb3d (patch) | |
tree | e37dfffe1134658a8a8d832d5faed5c95f24766e /chrome | |
parent | 4a2697a63edf3887cd7663e45db4a97fc6553bc8 (diff) | |
download | chromium_src-12abb20ae922d192978205a9259d663cd0aeeb3d.zip chromium_src-12abb20ae922d192978205a9259d663cd0aeeb3d.tar.gz chromium_src-12abb20ae922d192978205a9259d663cd0aeeb3d.tar.bz2 |
Adding Alt+<number> accelerator key
BUG=117481
TEST=None
Review URL: http://codereview.chromium.org/9677046
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@127805 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r-- | chrome/browser/ui/views/ash/launcher/chrome_launcher_delegate.cc | 13 | ||||
-rw-r--r-- | chrome/browser/ui/views/ash/launcher/launcher_updater_unittest.cc | 30 |
2 files changed, 43 insertions, 0 deletions
diff --git a/chrome/browser/ui/views/ash/launcher/chrome_launcher_delegate.cc b/chrome/browser/ui/views/ash/launcher/chrome_launcher_delegate.cc index dbd03d2..bb98e2e 100644 --- a/chrome/browser/ui/views/ash/launcher/chrome_launcher_delegate.cc +++ b/chrome/browser/ui/views/ash/launcher/chrome_launcher_delegate.cc @@ -6,6 +6,7 @@ #include "ash/launcher/launcher_model.h" #include "ash/launcher/launcher_types.h" +#include "ash/shell.h" #include "ash/wm/window_util.h" #include "base/command_line.h" #include "base/utf_string_conversions.h" @@ -32,6 +33,7 @@ #include "content/public/browser/notification_service.h" #include "content/public/browser/web_contents.h" #include "grit/theme_resources.h" +#include "ui/aura/client/activation_client.h" #include "ui/aura/window.h" #include "ui/views/widget/widget.h" @@ -464,6 +466,17 @@ void ChromeLauncherDelegate::LauncherItemMoved( void ChromeLauncherDelegate::LauncherItemChanged( int index, const ash::LauncherItem& old_item) { + if (model_->items()[index].status == ash::STATUS_ACTIVE && + old_item.status == ash::STATUS_RUNNING) { + ash::LauncherID id = model_->items()[index].id; + if (id_to_item_map_[id].updater) { + aura::Window* window_to_activate = id_to_item_map_[id].updater->window(); + if (window_to_activate && ash::wm::IsActiveWindow(window_to_activate)) + return; + window_to_activate->Show(); + ash::wm::ActivateWindow(window_to_activate); + } + } } void ChromeLauncherDelegate::LauncherItemWillChange(int index) { diff --git a/chrome/browser/ui/views/ash/launcher/launcher_updater_unittest.cc b/chrome/browser/ui/views/ash/launcher/launcher_updater_unittest.cc index d8a8396..11d96b4 100644 --- a/chrome/browser/ui/views/ash/launcher/launcher_updater_unittest.cc +++ b/chrome/browser/ui/views/ash/launcher/launcher_updater_unittest.cc @@ -753,3 +753,33 @@ TEST_F(LauncherUpdaterTest, ActivateApps) { EXPECT_EQ(ash::STATUS_ACTIVE, state1.GetUpdaterItem().status); } +// Confirm that window activation works through the model. +TEST_F(LauncherUpdaterTest, SwitchDirectlyToApp) { + State state1(this, "1", LauncherUpdater::TYPE_APP); + int index1 = launcher_model_->ItemIndexByID(state1.GetUpdaterItem().id); + + // Second app is active and first is inactive. + State state2(this, "2", LauncherUpdater::TYPE_APP); + int index2 = launcher_model_->ItemIndexByID(state2.GetUpdaterItem().id); + + EXPECT_EQ(ash::STATUS_RUNNING, state1.GetUpdaterItem().status); + EXPECT_EQ(ash::STATUS_ACTIVE, state2.GetUpdaterItem().status); + EXPECT_EQ(&state2.window, activation_client_->GetActiveWindow()); + + // Test that we can properly switch to the first item. + ash::LauncherItem new_item1(launcher_model_->items()[index1]); + new_item1.status = ash::STATUS_ACTIVE; + launcher_model_->Set(index1, new_item1); + EXPECT_EQ(ash::STATUS_ACTIVE, launcher_model_->items()[index1].status); + EXPECT_EQ(ash::STATUS_RUNNING, launcher_model_->items()[index2].status); + EXPECT_EQ(&state1.window, activation_client_->GetActiveWindow()); + + // And to the second item active. + ash::LauncherItem new_item2(launcher_model_->items()[index2]); + new_item2.status = ash::STATUS_ACTIVE; + launcher_model_->Set(index2, new_item2); + EXPECT_EQ(ash::STATUS_RUNNING, launcher_model_->items()[index1].status); + EXPECT_EQ(ash::STATUS_ACTIVE, launcher_model_->items()[index2].status); + EXPECT_EQ(&state2.window, activation_client_->GetActiveWindow()); +} + |