| 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/launcher/launcher.h" | 9 #include "ash/launcher/launcher.h" |
| 10 #include "ash/launcher/launcher_model.h" | 10 #include "ash/launcher/launcher_model.h" |
| (...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 265 // order. | 265 // order. |
| 266 const BrowserList* ash_browser_list = | 266 const BrowserList* ash_browser_list = |
| 267 BrowserList::GetInstance(chrome::HOST_DESKTOP_TYPE_ASH); | 267 BrowserList::GetInstance(chrome::HOST_DESKTOP_TYPE_ASH); |
| 268 for (BrowserList::const_iterator it = | 268 for (BrowserList::const_iterator it = |
| 269 ash_browser_list->begin(); | 269 ash_browser_list->begin(); |
| 270 it != ash_browser_list->end(); ++it) { | 270 it != ash_browser_list->end(); ++it) { |
| 271 if (IsBrowserRepresentedInBrowserList(*it)) | 271 if (IsBrowserRepresentedInBrowserList(*it)) |
| 272 items.push_back(*it); | 272 items.push_back(*it); |
| 273 } | 273 } |
| 274 // If there are no suitable browsers we create a new one. | 274 // If there are no suitable browsers we create a new one. |
| 275 if (!items.size()) { | 275 if (items.empty()) { |
| 276 launcher_controller()->CreateNewWindow(); | 276 launcher_controller()->CreateNewWindow(); |
| 277 return; | 277 return; |
| 278 } | 278 } |
| 279 Browser* browser = chrome::FindBrowserWithWindow(ash::wm::GetActiveWindow()); | 279 Browser* browser = chrome::FindBrowserWithWindow(ash::wm::GetActiveWindow()); |
| 280 if (items.size() == 1) { | 280 if (items.size() == 1) { |
| 281 // If there is only one suitable browser, we can either activate it, or | 281 // If there is only one suitable browser, we can either activate it, or |
| 282 // bounce it (if it is already active). | 282 // bounce it (if it is already active). |
| 283 if (browser == items[0]) { | 283 if (browser == items[0]) { |
| 284 AnimateWindow(browser->window()->GetNativeWindow(), | 284 AnimateWindow(browser->window()->GetNativeWindow(), |
| 285 views::corewm::WINDOW_ANIMATION_TYPE_BOUNCE); | 285 views::corewm::WINDOW_ANIMATION_TYPE_BOUNCE); |
| 286 return; | 286 return; |
| 287 } | 287 } |
| 288 browser = items[0]; | 288 browser = items[0]; |
| 289 } else { | 289 } else { |
| 290 // If there is more then one suitable browser, we advance to the next if | 290 // If there is more then one suitable browser, we advance to the next if |
| 291 // |current_browser| is already active - or - check the last used browser | 291 // |browser| is already active - or - check the last used browser if it can |
| 292 // if it can be used. | 292 // be used. |
| 293 std::vector<Browser*>::iterator i = | 293 std::vector<Browser*>::iterator i = |
| 294 std::find(items.begin(), items.end(), browser); | 294 std::find(items.begin(), items.end(), browser); |
| 295 if (i != items.end()) { | 295 if (i != items.end()) { |
| 296 browser = (++i == items.end()) ? items[0] : *i; | 296 browser = (++i == items.end()) ? items[0] : *i; |
| 297 } else { | 297 } else { |
| 298 browser = chrome::FindTabbedBrowser(profile_, | 298 browser = chrome::FindTabbedBrowser(profile_, |
| 299 true, | 299 true, |
| 300 chrome::HOST_DESKTOP_TYPE_ASH); | 300 chrome::HOST_DESKTOP_TYPE_ASH); |
| 301 if (!browser || | 301 if (!browser || |
| 302 !IsBrowserRepresentedInBrowserList(browser)) | 302 !IsBrowserRepresentedInBrowserList(browser)) |
| 303 browser = items[0]; | 303 browser = items[0]; |
| 304 } | 304 } |
| 305 } | 305 } |
| 306 DCHECK(browser); | 306 DCHECK(browser); |
| 307 browser->window()->Show(); | 307 browser->window()->Show(); |
| 308 browser->window()->Activate(); | 308 browser->window()->Activate(); |
| 309 } | 309 } |
| 310 | 310 |
| 311 bool BrowserShortcutLauncherItemController::IsBrowserRepresentedInBrowserList( | 311 bool BrowserShortcutLauncherItemController::IsBrowserRepresentedInBrowserList( |
| 312 Browser* browser) { | 312 Browser* browser) { |
| 313 return (browser && | 313 return (browser && |
| 314 browser->host_desktop_type() == chrome::HOST_DESKTOP_TYPE_ASH && |
| 314 (browser->is_type_tabbed() || | 315 (browser->is_type_tabbed() || |
| 315 !browser->is_app() || | 316 !browser->is_app() || |
| 316 !browser->is_type_popup() || | 317 !browser->is_type_popup() || |
| 317 launcher_controller()-> | 318 launcher_controller()-> |
| 318 GetLauncherIDForAppID(web_app::GetExtensionIdFromApplicationName( | 319 GetLauncherIDForAppID(web_app::GetExtensionIdFromApplicationName( |
| 319 browser->app_name())) <= 0)); | 320 browser->app_name())) <= 0)); |
| 320 } | 321 } |
| OLD | NEW |