Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(432)

Side by Side Diff: chrome/browser/ui/ash/launcher/browser_shortcut_launcher_item_controller.cc

Issue 23455037: Makes BrowserStatusMonitor remove observers in destructor (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: DCHECK Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | chrome/browser/ui/ash/launcher/browser_status_monitor.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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 }
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/ui/ash/launcher/browser_status_monitor.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698