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 |