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

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

Issue 2716403005: mash: Remove shelf app menu item objects. (Closed)
Patch Set: Address comments. Created 3 years, 9 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
OLDNEW
(Empty)
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/ui/ash/launcher/chrome_launcher_app_menu_item_browser.h "
6
7 #include "ash/wm/window_util.h"
8 #include "chrome/browser/chrome_notification_types.h"
9 #include "chrome/browser/ui/ash/multi_user/multi_user_util.h"
10 #include "chrome/browser/ui/browser.h"
11 #include "chrome/browser/ui/browser_window.h"
12 #include "chrome/browser/ui/tabs/tab_strip_model.h"
13 #include "content/public/browser/notification_service.h"
14 #include "ui/events/event_constants.h"
15
16 ChromeLauncherAppMenuItemBrowser::ChromeLauncherAppMenuItemBrowser(
17 const base::string16 title,
18 const gfx::Image* icon,
19 Browser* browser)
20 : ash::ShelfApplicationMenuItem(title, icon), browser_(browser) {
21 DCHECK(browser);
22 registrar_.Add(this,
23 chrome::NOTIFICATION_BROWSER_CLOSING,
24 content::Source<Browser>(browser));
25 }
26
27 ChromeLauncherAppMenuItemBrowser::~ChromeLauncherAppMenuItemBrowser() {}
28
29 void ChromeLauncherAppMenuItemBrowser::Execute(int event_flags) {
30 if (browser_) {
31 if (event_flags & (ui::EF_SHIFT_DOWN | ui::EF_MIDDLE_MOUSE_BUTTON)) {
32 TabStripModel* tab_strip = browser_->tab_strip_model();
33 tab_strip->CloseAllTabs();
34 } else {
35 // In ChromeOS multiprofile scenario we might need to teleport the window
36 // back to the current user desktop.
37 multi_user_util::MoveWindowToCurrentDesktop(
38 browser_->window()->GetNativeWindow());
39 browser_->window()->Show();
40 ash::wm::ActivateWindow(browser_->window()->GetNativeWindow());
41 }
42 }
43 }
44
45 void ChromeLauncherAppMenuItemBrowser::Observe(
46 int type,
47 const content::NotificationSource& source,
48 const content::NotificationDetails& details) {
49 DCHECK_EQ(chrome::NOTIFICATION_BROWSER_CLOSING, type);
50 DCHECK_EQ(browser_, content::Source<Browser>(source).ptr());
51 registrar_.Remove(this, chrome::NOTIFICATION_BROWSER_CLOSING,
52 content::Source<Browser>(browser_));
53 browser_ = nullptr;
54 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698