Commit 043537e5 authored by jackhou@chromium.org's avatar jackhou@chromium.org

Replicate standard menus for apps.

This maintains a duplicate set of menus for standard items. This enables
keyboard shortcuts to work as expected when the Chrome menus are hidden.

This also adds tags to various items in MainMenu.xib using existing and new
entries from chrome_command_ids.h. The tags are used to look up items in
the main menu.

BUG=168080, 276052
TEST=When an app window is focused, the main menu should change to a set of
menus relevant to apps. I.e. Chrome specific menus/items should be hidden.
The item in the menus should behave as expected for the app.

Review URL: https://chromiumcodereview.appspot.com/23005021

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@220659 0039d316-1c4b-4281-b951-d872f2087c98
parent 1405ff84
...@@ -69,6 +69,10 @@ ...@@ -69,6 +69,10 @@
#define IDC_WIN8_DESKTOP_RESTART 34042 #define IDC_WIN8_DESKTOP_RESTART 34042
#define IDC_WIN8_METRO_RESTART 34043 #define IDC_WIN8_METRO_RESTART 34043
#define IDC_TOGGLE_ASH_DESKTOP 34044 #define IDC_TOGGLE_ASH_DESKTOP 34044
#define IDC_WINDOW_MENU 34045
#define IDC_MINIMIZE_WINDOW 34046
#define IDC_MAXIMIZE_WINDOW 34047
#define IDC_ALL_WINDOWS_FRONT 34048
// Page-related commands // Page-related commands
#define IDC_BOOKMARK_PAGE 35000 #define IDC_BOOKMARK_PAGE 35000
...@@ -236,6 +240,8 @@ ...@@ -236,6 +240,8 @@
// Identifiers for platform-specific items. // Identifiers for platform-specific items.
// Placed in a common file to help insure they never collide. // Placed in a common file to help insure they never collide.
#define IDC_VIEW_MENU 44000 // OSX only #define IDC_VIEW_MENU 44000 // OSX only
#define IDC_FILE_MENU 44001 // OSX only
#define IDC_CHROME_MENU 44002 // OSX only
#define IDC_HISTORY_MENU 46000 // OSX only #define IDC_HISTORY_MENU 46000 // OSX only
#define IDC_PROFILE_MAIN_MENU 46100 // OSX only #define IDC_PROFILE_MAIN_MENU 46100 // OSX only
#define IDC_INPUT_METHODS_MENU 46300 // Linux only #define IDC_INPUT_METHODS_MENU 46300 // Linux only
......
...@@ -56,6 +56,7 @@ ...@@ -56,6 +56,7 @@
<string key="NSResourceName">NSMenuMixedState</string> <string key="NSResourceName">NSMenuMixedState</string>
</object> </object>
<string key="NSAction">submenuAction:</string> <string key="NSAction">submenuAction:</string>
<int key="NSTag">44002</int>
<object class="NSMenu" key="NSSubmenu" id="110575045"> <object class="NSMenu" key="NSSubmenu" id="110575045">
<string key="NSTitle">^IDS_APP_MENU_PRODUCT_NAME</string> <string key="NSTitle">^IDS_APP_MENU_PRODUCT_NAME</string>
<object class="NSMutableArray" key="NSMenuItems"> <object class="NSMutableArray" key="NSMenuItems">
...@@ -225,6 +226,7 @@ ...@@ -225,6 +226,7 @@
<int key="NSMnemonicLoc">2147483647</int> <int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="353210768"/> <reference key="NSOnImage" ref="353210768"/>
<reference key="NSMixedImage" ref="549394948"/> <reference key="NSMixedImage" ref="549394948"/>
<int key="NSTag">34031</int>
</object> </object>
</object> </object>
<string key="NSName">_NSAppleMenu</string> <string key="NSName">_NSAppleMenu</string>
...@@ -238,6 +240,7 @@ ...@@ -238,6 +240,7 @@
<reference key="NSOnImage" ref="353210768"/> <reference key="NSOnImage" ref="353210768"/>
<reference key="NSMixedImage" ref="549394948"/> <reference key="NSMixedImage" ref="549394948"/>
<string key="NSAction">submenuAction:</string> <string key="NSAction">submenuAction:</string>
<int key="NSTag">44001</int>
<object class="NSMenu" key="NSSubmenu" id="720053764"> <object class="NSMenu" key="NSSubmenu" id="720053764">
<string key="NSTitle">^IDS_FILE_MENU_MAC</string> <string key="NSTitle">^IDS_FILE_MENU_MAC</string>
<object class="NSMutableArray" key="NSMenuItems"> <object class="NSMutableArray" key="NSMenuItems">
...@@ -320,6 +323,7 @@ ...@@ -320,6 +323,7 @@
<int key="NSMnemonicLoc">2147483647</int> <int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="353210768"/> <reference key="NSOnImage" ref="353210768"/>
<reference key="NSMixedImage" ref="549394948"/> <reference key="NSMixedImage" ref="549394948"/>
<int key="NSTag">34012</int>
</object> </object>
<object class="NSMenuItem" id="1059729334"> <object class="NSMenuItem" id="1059729334">
<reference key="NSMenu" ref="720053764"/> <reference key="NSMenu" ref="720053764"/>
...@@ -402,6 +406,7 @@ ...@@ -402,6 +406,7 @@
<reference key="NSOnImage" ref="353210768"/> <reference key="NSOnImage" ref="353210768"/>
<reference key="NSMixedImage" ref="549394948"/> <reference key="NSMixedImage" ref="549394948"/>
<string key="NSAction">submenuAction:</string> <string key="NSAction">submenuAction:</string>
<int key="NSTag">36004</int>
<object class="NSMenu" key="NSSubmenu" id="789758025"> <object class="NSMenu" key="NSSubmenu" id="789758025">
<string key="NSTitle">^IDS_EDIT_MENU_MAC</string> <string key="NSTitle">^IDS_EDIT_MENU_MAC</string>
<object class="NSMutableArray" key="NSMenuItems"> <object class="NSMutableArray" key="NSMenuItems">
...@@ -414,6 +419,7 @@ ...@@ -414,6 +419,7 @@
<int key="NSMnemonicLoc">2147483647</int> <int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="353210768"/> <reference key="NSOnImage" ref="353210768"/>
<reference key="NSMixedImage" ref="549394948"/> <reference key="NSMixedImage" ref="549394948"/>
<int key="NSTag">50144</int>
</object> </object>
<object class="NSMenuItem" id="790794224"> <object class="NSMenuItem" id="790794224">
<reference key="NSMenu" ref="789758025"/> <reference key="NSMenu" ref="789758025"/>
...@@ -423,6 +429,7 @@ ...@@ -423,6 +429,7 @@
<int key="NSMnemonicLoc">2147483647</int> <int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="353210768"/> <reference key="NSOnImage" ref="353210768"/>
<reference key="NSMixedImage" ref="549394948"/> <reference key="NSMixedImage" ref="549394948"/>
<int key="NSTag">50145</int>
</object> </object>
<object class="NSMenuItem" id="1040322652"> <object class="NSMenuItem" id="1040322652">
<reference key="NSMenu" ref="789758025"/> <reference key="NSMenu" ref="789758025"/>
...@@ -442,6 +449,7 @@ ...@@ -442,6 +449,7 @@
<int key="NSMnemonicLoc">2147483647</int> <int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="353210768"/> <reference key="NSOnImage" ref="353210768"/>
<reference key="NSMixedImage" ref="549394948"/> <reference key="NSMixedImage" ref="549394948"/>
<int key="NSTag">50141</int>
</object> </object>
<object class="NSMenuItem" id="860595796"> <object class="NSMenuItem" id="860595796">
<reference key="NSMenu" ref="789758025"/> <reference key="NSMenu" ref="789758025"/>
...@@ -451,6 +459,7 @@ ...@@ -451,6 +459,7 @@
<int key="NSMnemonicLoc">2147483647</int> <int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="353210768"/> <reference key="NSOnImage" ref="353210768"/>
<reference key="NSMixedImage" ref="549394948"/> <reference key="NSMixedImage" ref="549394948"/>
<int key="NSTag">50140</int>
</object> </object>
<object class="NSMenuItem" id="29853731"> <object class="NSMenuItem" id="29853731">
<reference key="NSMenu" ref="789758025"/> <reference key="NSMenu" ref="789758025"/>
...@@ -460,6 +469,7 @@ ...@@ -460,6 +469,7 @@
<int key="NSMnemonicLoc">2147483647</int> <int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="353210768"/> <reference key="NSOnImage" ref="353210768"/>
<reference key="NSMixedImage" ref="549394948"/> <reference key="NSMixedImage" ref="549394948"/>
<int key="NSTag">50142</int>
</object> </object>
<object class="NSMenuItem" id="688066565"> <object class="NSMenuItem" id="688066565">
<reference key="NSMenu" ref="789758025"/> <reference key="NSMenu" ref="789758025"/>
...@@ -469,6 +479,7 @@ ...@@ -469,6 +479,7 @@
<int key="NSMnemonicLoc">2147483647</int> <int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="353210768"/> <reference key="NSOnImage" ref="353210768"/>
<reference key="NSMixedImage" ref="549394948"/> <reference key="NSMixedImage" ref="549394948"/>
<int key="NSTag">50147</int>
</object> </object>
<object class="NSMenuItem" id="499460629"> <object class="NSMenuItem" id="499460629">
<reference key="NSMenu" ref="789758025"/> <reference key="NSMenu" ref="789758025"/>
...@@ -487,6 +498,7 @@ ...@@ -487,6 +498,7 @@
<int key="NSMnemonicLoc">2147483647</int> <int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="353210768"/> <reference key="NSOnImage" ref="353210768"/>
<reference key="NSMixedImage" ref="549394948"/> <reference key="NSMixedImage" ref="549394948"/>
<int key="NSTag">50143</int>
</object> </object>
<object class="NSMenuItem" id="583158037"> <object class="NSMenuItem" id="583158037">
<reference key="NSMenu" ref="789758025"/> <reference key="NSMenu" ref="789758025"/>
...@@ -496,6 +508,7 @@ ...@@ -496,6 +508,7 @@
<int key="NSMnemonicLoc">2147483647</int> <int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="353210768"/> <reference key="NSOnImage" ref="353210768"/>
<reference key="NSMixedImage" ref="549394948"/> <reference key="NSMixedImage" ref="549394948"/>
<int key="NSTag">50146</int>
</object> </object>
<object class="NSMenuItem" id="212016141"> <object class="NSMenuItem" id="212016141">
<reference key="NSMenu" ref="789758025"/> <reference key="NSMenu" ref="789758025"/>
...@@ -1056,6 +1069,7 @@ ...@@ -1056,6 +1069,7 @@
<reference key="NSOnImage" ref="353210768"/> <reference key="NSOnImage" ref="353210768"/>
<reference key="NSMixedImage" ref="549394948"/> <reference key="NSMixedImage" ref="549394948"/>
<string key="NSAction">submenuAction:</string> <string key="NSAction">submenuAction:</string>
<int key="NSTag">34045</int>
<object class="NSMenu" key="NSSubmenu" id="835318025"> <object class="NSMenu" key="NSSubmenu" id="835318025">
<string key="NSTitle">^IDS_WINDOW_MENU_MAC</string> <string key="NSTitle">^IDS_WINDOW_MENU_MAC</string>
<object class="NSMutableArray" key="NSMenuItems"> <object class="NSMutableArray" key="NSMenuItems">
...@@ -1068,6 +1082,7 @@ ...@@ -1068,6 +1082,7 @@
<int key="NSMnemonicLoc">2147483647</int> <int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="353210768"/> <reference key="NSOnImage" ref="353210768"/>
<reference key="NSMixedImage" ref="549394948"/> <reference key="NSMixedImage" ref="549394948"/>
<int key="NSTag">34046</int>
</object> </object>
<object class="NSMenuItem" id="575023229"> <object class="NSMenuItem" id="575023229">
<reference key="NSMenu" ref="835318025"/> <reference key="NSMenu" ref="835318025"/>
...@@ -1076,6 +1091,7 @@ ...@@ -1076,6 +1091,7 @@
<int key="NSMnemonicLoc">2147483647</int> <int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="353210768"/> <reference key="NSOnImage" ref="353210768"/>
<reference key="NSMixedImage" ref="549394948"/> <reference key="NSMixedImage" ref="549394948"/>
<int key="NSTag">34047</int>
</object> </object>
<object class="NSMenuItem" id="672237550"> <object class="NSMenuItem" id="672237550">
<reference key="NSMenu" ref="835318025"/> <reference key="NSMenu" ref="835318025"/>
...@@ -1172,6 +1188,7 @@ ...@@ -1172,6 +1188,7 @@
<int key="NSMnemonicLoc">2147483647</int> <int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="353210768"/> <reference key="NSOnImage" ref="353210768"/>
<reference key="NSMixedImage" ref="549394948"/> <reference key="NSMixedImage" ref="549394948"/>
<int key="NSTag">34048</int>
</object> </object>
<object class="NSMenuItem" id="134665466"> <object class="NSMenuItem" id="134665466">
<reference key="NSMenu" ref="835318025"/> <reference key="NSMenu" ref="835318025"/>
......
...@@ -21,8 +21,11 @@ ...@@ -21,8 +21,11 @@
base::scoped_nsobject<NSString> appId_; base::scoped_nsobject<NSString> appId_;
// A reference to the "Quit Chrome" menu item. // A reference to the "Quit Chrome" menu item.
base::scoped_nsobject<NSMenuItem> chromeMenuQuitItem_; base::scoped_nsobject<NSMenuItem> chromeMenuQuitItem_;
// A menu item for the currently focused packaged app. // Menu items for the currently focused packaged app.
base::scoped_nsobject<NSMenuItem> appMenuItem_; base::scoped_nsobject<NSMenuItem> appMenuItem_;
base::scoped_nsobject<NSMenuItem> fileMenuItem_;
base::scoped_nsobject<NSMenuItem> editMenuItem_;
base::scoped_nsobject<NSMenuItem> windowMenuItem_;
} }
@end @end
......
...@@ -9,12 +9,50 @@ ...@@ -9,12 +9,50 @@
#include "apps/shell_window_registry.h" #include "apps/shell_window_registry.h"
#include "base/strings/sys_string_conversions.h" #include "base/strings/sys_string_conversions.h"
#include "base/strings/utf_string_conversions.h" #include "base/strings/utf_string_conversions.h"
#include "chrome/app/chrome_command_ids.h"
#import "chrome/browser/ui/cocoa/apps/native_app_window_cocoa.h" #import "chrome/browser/ui/cocoa/apps/native_app_window_cocoa.h"
#include "chrome/common/extensions/extension.h" #include "chrome/common/extensions/extension.h"
#include "grit/generated_resources.h" #include "grit/generated_resources.h"
#include "ui/base/l10n/l10n_util.h" #include "ui/base/l10n/l10n_util.h"
#include "ui/base/l10n/l10n_util_mac.h" #include "ui/base/l10n/l10n_util_mac.h"
namespace {
// Gets an item from the main menu given the tag of the top level item
// |menu_tag| and the tag of the item |item_tag|.
NSMenuItem* GetItemByTag(NSInteger menu_tag, NSInteger item_tag) {
return [[[[NSApp mainMenu] itemWithTag:menu_tag] submenu]
itemWithTag:item_tag];
}
// Finds a top level menu item using |menu_tag| and creates a new NSMenuItem
// with the same title.
NSMenuItem* NewTopLevelItemFrom(NSInteger menu_tag) {
NSMenuItem* original = [[NSApp mainMenu] itemWithTag:menu_tag];
base::scoped_nsobject<NSMenuItem> item([[NSMenuItem alloc]
initWithTitle:[original title]
action:nil
keyEquivalent:@""]);
DCHECK([original hasSubmenu]);
base::scoped_nsobject<NSMenu> sub_menu([[NSMenu alloc]
initWithTitle:[[original submenu] title]]);
[item setSubmenu:sub_menu];
return item.autorelease();
}
// Finds an item using |menu_tag| and |item_tag| and adds a duplicate of it to
// the submenu of |top_level_item|.
void AddDuplicateItem(NSMenuItem* top_level_item,
NSInteger menu_tag,
NSInteger item_tag) {
base::scoped_nsobject<NSMenuItem> item(
[GetItemByTag(menu_tag, item_tag) copy]);
DCHECK(item);
[[top_level_item submenu] addItem:item];
}
} // namespace
@interface AppShimMenuController () @interface AppShimMenuController ()
// Construct the NSMenuItems for apps. // Construct the NSMenuItems for apps.
- (void)buildAppMenuItems; - (void)buildAppMenuItems;
...@@ -48,15 +86,10 @@ ...@@ -48,15 +86,10 @@
- (void)buildAppMenuItems { - (void)buildAppMenuItems {
// Find the "Quit Chrome" menu item. // Find the "Quit Chrome" menu item.
NSMenu* chromeMenu = [[[NSApp mainMenu] itemAtIndex:0] submenu]; chromeMenuQuitItem_.reset([GetItemByTag(IDC_CHROME_MENU, IDC_EXIT) retain]);
for (NSMenuItem* item in [chromeMenu itemArray]) {
if ([item action] == @selector(terminate:)) {
chromeMenuQuitItem_.reset([item retain]);
break;
}
}
DCHECK(chromeMenuQuitItem_); DCHECK(chromeMenuQuitItem_);
// The app's menu.
appMenuItem_.reset([[NSMenuItem alloc] initWithTitle:@"" appMenuItem_.reset([[NSMenuItem alloc] initWithTitle:@""
action:nil action:nil
keyEquivalent:@""]); keyEquivalent:@""]);
...@@ -70,6 +103,28 @@ ...@@ -70,6 +103,28 @@
[chromeMenuQuitItem_ keyEquivalentModifierMask]]; [chromeMenuQuitItem_ keyEquivalentModifierMask]];
[appMenuQuitItem setTarget:self]; [appMenuQuitItem setTarget:self];
[appMenuItem_ setSubmenu:appMenu]; [appMenuItem_ setSubmenu:appMenu];
// File menu.
fileMenuItem_.reset([NewTopLevelItemFrom(IDC_FILE_MENU) retain]);
AddDuplicateItem(fileMenuItem_, IDC_FILE_MENU, IDC_CLOSE_WINDOW);
// Edit menu.
editMenuItem_.reset([NewTopLevelItemFrom(IDC_EDIT_MENU) retain]);
AddDuplicateItem(editMenuItem_, IDC_EDIT_MENU, IDC_CONTENT_CONTEXT_UNDO);
AddDuplicateItem(editMenuItem_, IDC_EDIT_MENU, IDC_CONTENT_CONTEXT_REDO);
[[editMenuItem_ submenu] addItem:[NSMenuItem separatorItem]];
AddDuplicateItem(editMenuItem_, IDC_EDIT_MENU, IDC_CONTENT_CONTEXT_CUT);
AddDuplicateItem(editMenuItem_, IDC_EDIT_MENU, IDC_CONTENT_CONTEXT_COPY);
AddDuplicateItem(editMenuItem_, IDC_EDIT_MENU, IDC_CONTENT_CONTEXT_PASTE);
AddDuplicateItem(editMenuItem_, IDC_EDIT_MENU, IDC_CONTENT_CONTEXT_DELETE);
AddDuplicateItem(editMenuItem_, IDC_EDIT_MENU, IDC_CONTENT_CONTEXT_SELECTALL);
// Window menu.
windowMenuItem_.reset([NewTopLevelItemFrom(IDC_WINDOW_MENU) retain]);
AddDuplicateItem(windowMenuItem_, IDC_WINDOW_MENU, IDC_MINIMIZE_WINDOW);
AddDuplicateItem(windowMenuItem_, IDC_WINDOW_MENU, IDC_MAXIMIZE_WINDOW);
[[windowMenuItem_ submenu] addItem:[NSMenuItem separatorItem]];
AddDuplicateItem(windowMenuItem_, IDC_WINDOW_MENU, IDC_ALL_WINDOWS_FRONT);
} }
- (void)registerEventHandlers { - (void)registerEventHandlers {
...@@ -144,7 +199,11 @@ ...@@ -144,7 +199,11 @@
[appMenuItem_ setTitle:appId]; [appMenuItem_ setTitle:appId];
[[appMenuItem_ submenu] setTitle:title]; [[appMenuItem_ submenu] setTitle:title];
[mainMenu addItem:appMenuItem_]; [mainMenu addItem:appMenuItem_];
[mainMenu addItem:fileMenuItem_];
[mainMenu addItem:editMenuItem_];
[mainMenu addItem:windowMenuItem_];
} }
- (void)removeMenuItems:(NSString*)appId { - (void)removeMenuItems:(NSString*)appId {
...@@ -155,6 +214,9 @@ ...@@ -155,6 +214,9 @@
NSMenu* mainMenu = [NSApp mainMenu]; NSMenu* mainMenu = [NSApp mainMenu];
[mainMenu removeItem:appMenuItem_]; [mainMenu removeItem:appMenuItem_];
[mainMenu removeItem:fileMenuItem_];
[mainMenu removeItem:editMenuItem_];
[mainMenu removeItem:windowMenuItem_];
// Restore the Chrome main menu bar. // Restore the Chrome main menu bar.
for (NSMenuItem* item in [mainMenu itemArray]) for (NSMenuItem* item in [mainMenu itemArray])
......
...@@ -45,19 +45,27 @@ class AppShimMenuControllerBrowserTest ...@@ -45,19 +45,27 @@ class AppShimMenuControllerBrowserTest
initial_menu_item_count_ = [[[NSApp mainMenu] itemArray] count]; initial_menu_item_count_ = [[[NSApp mainMenu] itemArray] count];
} }
void CheckHasAppMenu(const extensions::Extension* app) const { void CheckHasAppMenus(const extensions::Extension* app) const {
const int kExtraTopLevelItems = 4;
NSArray* item_array = [[NSApp mainMenu] itemArray]; NSArray* item_array = [[NSApp mainMenu] itemArray];
EXPECT_EQ(initial_menu_item_count_ + 1, [item_array count]); EXPECT_EQ(initial_menu_item_count_ + kExtraTopLevelItems,
[item_array count]);
for (NSUInteger i = 0; i < initial_menu_item_count_; ++i) for (NSUInteger i = 0; i < initial_menu_item_count_; ++i)
EXPECT_TRUE([[item_array objectAtIndex:i] isHidden]); EXPECT_TRUE([[item_array objectAtIndex:i] isHidden]);
NSMenuItem* last_item = [item_array lastObject]; NSMenuItem* app_menu = [item_array objectAtIndex:initial_menu_item_count_];
EXPECT_EQ(app->id(), base::SysNSStringToUTF8([last_item title])); EXPECT_EQ(app->id(), base::SysNSStringToUTF8([app_menu title]));
EXPECT_EQ(app->name(), EXPECT_EQ(app->name(),
base::SysNSStringToUTF8([[last_item submenu] title])); base::SysNSStringToUTF8([[app_menu submenu] title]));
EXPECT_FALSE([last_item isHidden]); for (NSUInteger i = initial_menu_item_count_;
i < initial_menu_item_count_ + kExtraTopLevelItems;
++i) {
NSMenuItem* menu = [item_array objectAtIndex:i];
EXPECT_GT([[menu submenu] numberOfItems], 0);
EXPECT_FALSE([menu isHidden]);
}
} }
void CheckNoAppMenu() const { void CheckNoAppMenus() const {
NSArray* item_array = [[NSApp mainMenu] itemArray]; NSArray* item_array = [[NSApp mainMenu] itemArray];
EXPECT_EQ(initial_menu_item_count_, [item_array count]); EXPECT_EQ(initial_menu_item_count_, [item_array count]);
for (NSUInteger i = 0; i < initial_menu_item_count_; ++i) for (NSUInteger i = 0; i < initial_menu_item_count_; ++i)
...@@ -84,7 +92,7 @@ IN_PROC_BROWSER_TEST_F(AppShimMenuControllerBrowserTest, ...@@ -84,7 +92,7 @@ IN_PROC_BROWSER_TEST_F(AppShimMenuControllerBrowserTest,
[[NSNotificationCenter defaultCenter] [[NSNotificationCenter defaultCenter]
postNotificationName:NSWindowDidBecomeMainNotification postNotificationName:NSWindowDidBecomeMainNotification
object:app_1_shell_window->GetNativeWindow()]; object:app_1_shell_window->GetNativeWindow()];
CheckHasAppMenu(app_1_); CheckHasAppMenus(app_1_);
// When another app is focused, the menu item for the app should change. // When another app is focused, the menu item for the app should change.
apps::ShellWindow* app_2_shell_window = apps::ShellWindow* app_2_shell_window =
...@@ -93,24 +101,24 @@ IN_PROC_BROWSER_TEST_F(AppShimMenuControllerBrowserTest, ...@@ -93,24 +101,24 @@ IN_PROC_BROWSER_TEST_F(AppShimMenuControllerBrowserTest,
[[NSNotificationCenter defaultCenter] [[NSNotificationCenter defaultCenter]
postNotificationName:NSWindowDidBecomeMainNotification postNotificationName:NSWindowDidBecomeMainNotification
object:app_2_shell_window->GetNativeWindow()]; object:app_2_shell_window->GetNativeWindow()];
CheckHasAppMenu(app_2_); CheckHasAppMenus(app_2_);
// When the app window loses focus, the menu items for the app should be // When the app window loses focus, the menu items for the app should be
// removed. // removed.
[[NSNotificationCenter defaultCenter] [[NSNotificationCenter defaultCenter]
postNotificationName:NSWindowDidResignMainNotification postNotificationName:NSWindowDidResignMainNotification
object:app_2_shell_window->GetNativeWindow()]; object:app_2_shell_window->GetNativeWindow()];
CheckNoAppMenu(); CheckNoAppMenus();
// When an app window is closed, the menu items for the app should be removed. // When an app window is closed, the menu items for the app should be removed.
[[NSNotificationCenter defaultCenter] [[NSNotificationCenter defaultCenter]
postNotificationName:NSWindowDidBecomeMainNotification postNotificationName:NSWindowDidBecomeMainNotification
object:app_2_shell_window->GetNativeWindow()]; object:app_2_shell_window->GetNativeWindow()];
CheckHasAppMenu(app_2_); CheckHasAppMenus(app_2_);
[[NSNotificationCenter defaultCenter] [[NSNotificationCenter defaultCenter]
postNotificationName:NSWindowWillCloseNotification postNotificationName:NSWindowWillCloseNotification
object:app_2_shell_window->GetNativeWindow()]; object:app_2_shell_window->GetNativeWindow()];
CheckNoAppMenu(); CheckNoAppMenus();
} }
IN_PROC_BROWSER_TEST_F(AppShimMenuControllerBrowserTest, IN_PROC_BROWSER_TEST_F(AppShimMenuControllerBrowserTest,
...@@ -124,9 +132,9 @@ IN_PROC_BROWSER_TEST_F(AppShimMenuControllerBrowserTest, ...@@ -124,9 +132,9 @@ IN_PROC_BROWSER_TEST_F(AppShimMenuControllerBrowserTest,
postNotificationName:NSWindowDidBecomeMainNotification postNotificationName:NSWindowDidBecomeMainNotification
object:app_1_shell_window->GetNativeWindow()]; object:app_1_shell_window->GetNativeWindow()];
CheckHasAppMenu(app_1_); CheckHasAppMenus(app_1_);
ExtensionService::UninstallExtensionHelper(extension_service(), app_1_->id()); ExtensionService::UninstallExtensionHelper(extension_service(), app_1_->id());
CheckNoAppMenu(); CheckNoAppMenus();
} }
} // namespace } // namespace
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment