| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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/browser_shortcut_launcher_item_controll
er.h" | 5 #include "chrome/browser/ui/ash/launcher/browser_shortcut_launcher_item_controll
er.h" |
| 6 | 6 |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "ash/aura/wm_window_aura.h" | 9 #include "ash/aura/wm_window_aura.h" |
| 10 #include "ash/common/shelf/shelf_delegate.h" | 10 #include "ash/common/shelf/shelf_delegate.h" |
| (...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 135 for (BrowserList::const_iterator it = browser_list->begin(); | 135 for (BrowserList::const_iterator it = browser_list->begin(); |
| 136 it != browser_list->end(); ++it) { | 136 it != browser_list->end(); ++it) { |
| 137 if (IsBrowserFromActiveUser(*it)) | 137 if (IsBrowserFromActiveUser(*it)) |
| 138 return true; | 138 return true; |
| 139 } | 139 } |
| 140 return false; | 140 return false; |
| 141 } | 141 } |
| 142 | 142 |
| 143 bool BrowserShortcutLauncherItemController::IsVisible() const { | 143 bool BrowserShortcutLauncherItemController::IsVisible() const { |
| 144 Browser* last_browser = | 144 Browser* last_browser = |
| 145 chrome::FindTabbedBrowser(launcher_controller()->GetProfile(), true); | 145 chrome::FindTabbedBrowser(launcher_controller()->profile(), true); |
| 146 | 146 |
| 147 if (!last_browser) { | 147 if (!last_browser) { |
| 148 return false; | 148 return false; |
| 149 } | 149 } |
| 150 | 150 |
| 151 aura::Window* window = last_browser->window()->GetNativeWindow(); | 151 aura::Window* window = last_browser->window()->GetNativeWindow(); |
| 152 return ash::wm::IsActiveWindow(window); | 152 return ash::wm::IsActiveWindow(window); |
| 153 } | 153 } |
| 154 | 154 |
| 155 void BrowserShortcutLauncherItemController::Launch(ash::LaunchSource source, | 155 void BrowserShortcutLauncherItemController::Launch(ash::LaunchSource source, |
| 156 int event_flags) { | 156 int event_flags) { |
| 157 } | 157 } |
| 158 | 158 |
| 159 ash::ShelfItemDelegate::PerformedAction | 159 ash::ShelfItemDelegate::PerformedAction |
| 160 BrowserShortcutLauncherItemController::Activate(ash::LaunchSource source) { | 160 BrowserShortcutLauncherItemController::Activate(ash::LaunchSource source) { |
| 161 Browser* last_browser = | 161 Browser* last_browser = |
| 162 chrome::FindTabbedBrowser(launcher_controller()->GetProfile(), true); | 162 chrome::FindTabbedBrowser(launcher_controller()->profile(), true); |
| 163 | 163 |
| 164 if (!last_browser) { | 164 if (!last_browser) { |
| 165 chrome::NewEmptyWindow(launcher_controller()->GetProfile()); | 165 chrome::NewEmptyWindow(launcher_controller()->profile()); |
| 166 return kNewWindowCreated; | 166 return kNewWindowCreated; |
| 167 } | 167 } |
| 168 | 168 |
| 169 return launcher_controller()->ActivateWindowOrMinimizeIfActive( | 169 return launcher_controller()->ActivateWindowOrMinimizeIfActive( |
| 170 last_browser->window(), GetApplicationList(0).size() == 2); | 170 last_browser->window(), GetApplicationList(0).size() == 2); |
| 171 } | 171 } |
| 172 | 172 |
| 173 void BrowserShortcutLauncherItemController::Close() { | 173 void BrowserShortcutLauncherItemController::Close() { |
| 174 for (auto* browser : GetListOfActiveBrowsers()) | 174 for (auto* browser : GetListOfActiveBrowsers()) |
| 175 browser->window()->Close(); | 175 browser->window()->Close(); |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 212 // If only windowed applications are open, we return an empty list to | 212 // If only windowed applications are open, we return an empty list to |
| 213 // enforce the creation of a new browser. | 213 // enforce the creation of a new browser. |
| 214 if (!found_tabbed_browser) | 214 if (!found_tabbed_browser) |
| 215 items.clear(); | 215 items.clear(); |
| 216 return items; | 216 return items; |
| 217 } | 217 } |
| 218 | 218 |
| 219 ash::ShelfItemDelegate::PerformedAction | 219 ash::ShelfItemDelegate::PerformedAction |
| 220 BrowserShortcutLauncherItemController::ItemSelected(const ui::Event& event) { | 220 BrowserShortcutLauncherItemController::ItemSelected(const ui::Event& event) { |
| 221 if (event.flags() & ui::EF_CONTROL_DOWN) { | 221 if (event.flags() & ui::EF_CONTROL_DOWN) { |
| 222 chrome::NewEmptyWindow(launcher_controller()->GetProfile()); | 222 chrome::NewEmptyWindow(launcher_controller()->profile()); |
| 223 return kNewWindowCreated; | 223 return kNewWindowCreated; |
| 224 } | 224 } |
| 225 | 225 |
| 226 // In case of a keyboard event, we were called by a hotkey. In that case we | 226 // In case of a keyboard event, we were called by a hotkey. In that case we |
| 227 // activate the next item in line if an item of our list is already active. | 227 // activate the next item in line if an item of our list is already active. |
| 228 if (event.type() == ui::ET_KEY_RELEASED) { | 228 if (event.type() == ui::ET_KEY_RELEASED) { |
| 229 return ActivateOrAdvanceToNextBrowser(); | 229 return ActivateOrAdvanceToNextBrowser(); |
| 230 } | 230 } |
| 231 | 231 |
| 232 return Activate(ash::LAUNCH_FROM_UNKNOWN); | 232 return Activate(ash::LAUNCH_FROM_UNKNOWN); |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 287 // We use the list in the order of how the browsers got created - not the LRU | 287 // We use the list in the order of how the browsers got created - not the LRU |
| 288 // order. | 288 // order. |
| 289 const BrowserList* browser_list = BrowserList::GetInstance(); | 289 const BrowserList* browser_list = BrowserList::GetInstance(); |
| 290 for (BrowserList::const_iterator it = browser_list->begin(); | 290 for (BrowserList::const_iterator it = browser_list->begin(); |
| 291 it != browser_list->end(); ++it) { | 291 it != browser_list->end(); ++it) { |
| 292 if (IsBrowserRepresentedInBrowserList(*it)) | 292 if (IsBrowserRepresentedInBrowserList(*it)) |
| 293 items.push_back(*it); | 293 items.push_back(*it); |
| 294 } | 294 } |
| 295 // If there are no suitable browsers we create a new one. | 295 // If there are no suitable browsers we create a new one. |
| 296 if (items.empty()) { | 296 if (items.empty()) { |
| 297 chrome::NewEmptyWindow(launcher_controller()->GetProfile()); | 297 chrome::NewEmptyWindow(launcher_controller()->profile()); |
| 298 return kNewWindowCreated; | 298 return kNewWindowCreated; |
| 299 } | 299 } |
| 300 Browser* browser = chrome::FindBrowserWithWindow(ash::wm::GetActiveWindow()); | 300 Browser* browser = chrome::FindBrowserWithWindow(ash::wm::GetActiveWindow()); |
| 301 if (items.size() == 1) { | 301 if (items.size() == 1) { |
| 302 // If there is only one suitable browser, we can either activate it, or | 302 // If there is only one suitable browser, we can either activate it, or |
| 303 // bounce it (if it is already active). | 303 // bounce it (if it is already active). |
| 304 if (browser == items[0]) { | 304 if (browser == items[0]) { |
| 305 AnimateWindow(browser->window()->GetNativeWindow(), | 305 AnimateWindow(browser->window()->GetNativeWindow(), |
| 306 wm::WINDOW_ANIMATION_TYPE_BOUNCE); | 306 wm::WINDOW_ANIMATION_TYPE_BOUNCE); |
| 307 return kNoAction; | 307 return kNoAction; |
| 308 } | 308 } |
| 309 browser = items[0]; | 309 browser = items[0]; |
| 310 } else { | 310 } else { |
| 311 // If there is more than one suitable browser, we advance to the next if | 311 // If there is more than one suitable browser, we advance to the next if |
| 312 // |browser| is already active - or - check the last used browser if it can | 312 // |browser| is already active - or - check the last used browser if it can |
| 313 // be used. | 313 // be used. |
| 314 std::vector<Browser*>::iterator i = | 314 std::vector<Browser*>::iterator i = |
| 315 std::find(items.begin(), items.end(), browser); | 315 std::find(items.begin(), items.end(), browser); |
| 316 if (i != items.end()) { | 316 if (i != items.end()) { |
| 317 browser = (++i == items.end()) ? items[0] : *i; | 317 browser = (++i == items.end()) ? items[0] : *i; |
| 318 } else { | 318 } else { |
| 319 browser = | 319 browser = |
| 320 chrome::FindTabbedBrowser(launcher_controller()->GetProfile(), true); | 320 chrome::FindTabbedBrowser(launcher_controller()->profile(), true); |
| 321 if (!browser || | 321 if (!browser || !IsBrowserRepresentedInBrowserList(browser)) |
| 322 !IsBrowserRepresentedInBrowserList(browser)) | |
| 323 browser = items[0]; | 322 browser = items[0]; |
| 324 } | 323 } |
| 325 } | 324 } |
| 326 DCHECK(browser); | 325 DCHECK(browser); |
| 327 browser->window()->Show(); | 326 browser->window()->Show(); |
| 328 browser->window()->Activate(); | 327 browser->window()->Activate(); |
| 329 return kExistingWindowActivated; | 328 return kExistingWindowActivated; |
| 330 } | 329 } |
| 331 | 330 |
| 332 bool BrowserShortcutLauncherItemController::IsBrowserRepresentedInBrowserList( | 331 bool BrowserShortcutLauncherItemController::IsBrowserRepresentedInBrowserList( |
| (...skipping 28 matching lines...) Expand all Loading... |
| 361 !browser->window()->IsMinimized()) { | 360 !browser->window()->IsMinimized()) { |
| 362 continue; | 361 continue; |
| 363 } | 362 } |
| 364 if (!IsBrowserRepresentedInBrowserList(browser) && | 363 if (!IsBrowserRepresentedInBrowserList(browser) && |
| 365 !browser->is_type_tabbed()) | 364 !browser->is_type_tabbed()) |
| 366 continue; | 365 continue; |
| 367 active_browsers.push_back(browser); | 366 active_browsers.push_back(browser); |
| 368 } | 367 } |
| 369 return active_browsers; | 368 return active_browsers; |
| 370 } | 369 } |
| OLD | NEW |