OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/ui/ash/launcher/app_window_launcher_item_controller.h" | 5 #include "chrome/browser/ui/ash/launcher/app_window_launcher_item_controller.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "ash/wm/window_util.h" | 9 #include "ash/wm/window_util.h" |
10 #include "chrome/browser/ui/ash/launcher/chrome_launcher_controller.h" | 10 #include "chrome/browser/ui/ash/launcher/chrome_launcher_controller.h" |
11 #include "chrome/browser/ui/ash/launcher/chrome_launcher_controller_util.h" | 11 #include "chrome/browser/ui/ash/launcher/chrome_launcher_controller_util.h" |
12 #include "chrome/browser/ui/ash/launcher/launcher_controller_helper.h" | 12 #include "chrome/browser/ui/ash/launcher/launcher_controller_helper.h" |
13 #include "ui/aura/client/aura_constants.h" | 13 #include "ui/aura/client/aura_constants.h" |
14 #include "ui/aura/window.h" | 14 #include "ui/aura/window.h" |
15 #include "ui/base/base_window.h" | 15 #include "ui/base/base_window.h" |
16 #include "ui/wm/core/window_animations.h" | 16 #include "ui/wm/core/window_animations.h" |
17 | 17 |
18 AppWindowLauncherItemController::AppWindowLauncherItemController( | 18 AppWindowLauncherItemController::AppWindowLauncherItemController( |
19 Type type, | |
20 const std::string& app_id, | 19 const std::string& app_id, |
21 const std::string& launch_id, | 20 const std::string& launch_id, |
22 ChromeLauncherController* controller) | 21 ChromeLauncherController* controller) |
23 : LauncherItemController(type, app_id, launch_id, controller), | 22 : LauncherItemController(app_id, launch_id, controller), |
24 observed_windows_(this) {} | 23 observed_windows_(this) {} |
25 | 24 |
26 AppWindowLauncherItemController::~AppWindowLauncherItemController() {} | 25 AppWindowLauncherItemController::~AppWindowLauncherItemController() {} |
27 | 26 |
28 void AppWindowLauncherItemController::AddWindow(ui::BaseWindow* app_window) { | 27 void AppWindowLauncherItemController::AddWindow(ui::BaseWindow* app_window) { |
29 windows_.push_front(app_window); | 28 windows_.push_front(app_window); |
30 aura::Window* window = app_window->GetNativeWindow(); | 29 aura::Window* window = app_window->GetNativeWindow(); |
31 if (window) | 30 if (window) |
32 observed_windows_.Add(window); | 31 observed_windows_.Add(window); |
33 } | 32 } |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
113 ChromeLauncherAppMenuItems items; | 112 ChromeLauncherAppMenuItems items; |
114 items.push_back(new ChromeLauncherAppMenuItem(GetTitle(), NULL, false)); | 113 items.push_back(new ChromeLauncherAppMenuItem(GetTitle(), NULL, false)); |
115 return items; | 114 return items; |
116 } | 115 } |
117 | 116 |
118 ash::ShelfItemDelegate::PerformedAction | 117 ash::ShelfItemDelegate::PerformedAction |
119 AppWindowLauncherItemController::ItemSelected(const ui::Event& event) { | 118 AppWindowLauncherItemController::ItemSelected(const ui::Event& event) { |
120 if (windows_.empty()) | 119 if (windows_.empty()) |
121 return kNoAction; | 120 return kNoAction; |
122 | 121 |
123 DCHECK_EQ(TYPE_APP, type()); | |
124 ui::BaseWindow* window_to_show = | 122 ui::BaseWindow* window_to_show = |
125 last_active_window_ ? last_active_window_ : windows_.front(); | 123 last_active_window_ ? last_active_window_ : windows_.front(); |
126 // If the event was triggered by a keystroke, we try to advance to the next | 124 // If the event was triggered by a keystroke, we try to advance to the next |
127 // item if the window we are trying to activate is already active. | 125 // item if the window we are trying to activate is already active. |
128 if (windows_.size() >= 1 && window_to_show->IsActive() && | 126 if (windows_.size() >= 1 && window_to_show->IsActive() && |
129 event.type() == ui::ET_KEY_RELEASED) { | 127 event.type() == ui::ET_KEY_RELEASED) { |
130 return ActivateOrAdvanceToNextAppWindow(window_to_show); | 128 return ActivateOrAdvanceToNextAppWindow(window_to_show); |
131 } else { | 129 } else { |
132 return ShowAndActivateOrMinimize(window_to_show); | 130 return ShowAndActivateOrMinimize(window_to_show); |
133 } | 131 } |
134 } | 132 } |
135 | 133 |
136 base::string16 AppWindowLauncherItemController::GetTitle() { | 134 base::string16 AppWindowLauncherItemController::GetTitle() { |
137 return LauncherControllerHelper::GetAppTitle(launcher_controller()->profile(), | 135 return LauncherControllerHelper::GetAppTitle(launcher_controller()->profile(), |
138 app_id()); | 136 app_id()); |
139 } | 137 } |
140 | 138 |
141 bool AppWindowLauncherItemController::IsDraggable() { | 139 bool AppWindowLauncherItemController::IsDraggable() { |
142 DCHECK_EQ(TYPE_APP, type()); | |
143 return true; | 140 return true; |
144 } | 141 } |
145 | 142 |
146 bool AppWindowLauncherItemController::CanPin() const { | 143 bool AppWindowLauncherItemController::CanPin() const { |
147 return GetPinnableForAppID(app_id(), launcher_controller()->profile()) == | 144 return GetPinnableForAppID(app_id(), launcher_controller()->profile()) == |
148 AppListControllerDelegate::PIN_EDITABLE; | 145 AppListControllerDelegate::PIN_EDITABLE; |
149 } | 146 } |
150 | 147 |
151 bool AppWindowLauncherItemController::ShouldShowTooltip() { | 148 bool AppWindowLauncherItemController::ShouldShowTooltip() { |
152 DCHECK_EQ(TYPE_APP, type()); | |
153 return true; | 149 return true; |
154 } | 150 } |
155 | 151 |
156 void AppWindowLauncherItemController::OnWindowPropertyChanged( | 152 void AppWindowLauncherItemController::OnWindowPropertyChanged( |
157 aura::Window* window, | 153 aura::Window* window, |
158 const void* key, | 154 const void* key, |
159 intptr_t old) { | 155 intptr_t old) { |
160 if (key == aura::client::kDrawAttentionKey) { | 156 if (key == aura::client::kDrawAttentionKey) { |
161 ash::ShelfItemStatus status; | 157 ash::ShelfItemStatus status; |
162 if (ash::wm::IsActiveWindow(window)) { | 158 if (ash::wm::IsActiveWindow(window)) { |
(...skipping 29 matching lines...) Expand all Loading... |
192 if (window_to_show->IsActive()) { | 188 if (window_to_show->IsActive()) { |
193 // Coming here, only a single window is active. For keyboard activations | 189 // Coming here, only a single window is active. For keyboard activations |
194 // the window gets animated. | 190 // the window gets animated. |
195 AnimateWindow(window_to_show->GetNativeWindow(), | 191 AnimateWindow(window_to_show->GetNativeWindow(), |
196 wm::WINDOW_ANIMATION_TYPE_BOUNCE); | 192 wm::WINDOW_ANIMATION_TYPE_BOUNCE); |
197 } else { | 193 } else { |
198 return ShowAndActivateOrMinimize(window_to_show); | 194 return ShowAndActivateOrMinimize(window_to_show); |
199 } | 195 } |
200 return kNoAction; | 196 return kNoAction; |
201 } | 197 } |
OLD | NEW |