diff options
author | erg@chromium.org <erg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-09-23 22:28:23 +0000 |
---|---|---|
committer | erg@chromium.org <erg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-09-23 22:28:23 +0000 |
commit | fc34932cf30bd2f0e4f70c24d82fc9c2af9dcd7e (patch) | |
tree | 40cbd59b40ecdcc8eff943540dbef27b72ead0c2 /chrome | |
parent | 24c38a10af63ed1e300ffe7546ef766cb7539fe3 (diff) | |
download | chromium_src-fc34932cf30bd2f0e4f70c24d82fc9c2af9dcd7e.zip chromium_src-fc34932cf30bd2f0e4f70c24d82fc9c2af9dcd7e.tar.gz chromium_src-fc34932cf30bd2f0e4f70c24d82fc9c2af9dcd7e.tar.bz2 |
Mac: Hook up the page menu's "Encoding" submenu.
Hook the NSMenu's delegate up to the ToolbarController in the nib and
generalize EncodingMenuControllerDelegate to work with a NSMenu
object instead of grabbing the app menu.
BUG=22639
TEST=ToolbarControllerTest.PopulateEncodingMenu
Review URL: http://codereview.chromium.org/225016
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@27008 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r-- | chrome/app/nibs/Toolbar.xib | 59 | ||||
-rw-r--r-- | chrome/browser/app_controller_mac.mm | 6 | ||||
-rw-r--r-- | chrome/browser/cocoa/encoding_menu_controller_delegate_mac.h | 3 | ||||
-rw-r--r-- | chrome/browser/cocoa/encoding_menu_controller_delegate_mac.mm | 8 | ||||
-rw-r--r-- | chrome/browser/cocoa/toolbar_controller.h | 1 | ||||
-rw-r--r-- | chrome/browser/cocoa/toolbar_controller.mm | 5 | ||||
-rw-r--r-- | chrome/browser/cocoa/toolbar_controller_unittest.mm | 10 |
7 files changed, 54 insertions, 38 deletions
diff --git a/chrome/app/nibs/Toolbar.xib b/chrome/app/nibs/Toolbar.xib index 93d1f82..4e7cca6 100644 --- a/chrome/app/nibs/Toolbar.xib +++ b/chrome/app/nibs/Toolbar.xib @@ -2,15 +2,15 @@ <archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.03"> <data> <int key="IBDocument.SystemTarget">1050</int> - <string key="IBDocument.SystemVersion">9L30</string> + <string key="IBDocument.SystemVersion">9L31a</string> <string key="IBDocument.InterfaceBuilderVersion">677</string> - <string key="IBDocument.AppKitVersion">949.34</string> - <string key="IBDocument.HIToolboxVersion">352.00</string> + <string key="IBDocument.AppKitVersion">949.54</string> + <string key="IBDocument.HIToolboxVersion">353.00</string> <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> <bool key="EncodedWithXMLCoder">YES</bool> - <integer value="48"/> <integer value="1"/> - <integer value="42"/> + <integer value="67"/> + <integer value="48"/> </object> <object class="NSArray" key="IBDocument.PluginDependencies"> <bool key="EncodedWithXMLCoder">YES</bool> @@ -458,14 +458,6 @@ <string key="NSTitle">^IDS_ENCODING_MENU</string> <object class="NSMutableArray" key="NSMenuItems"> <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSMenuItem" id="1047175866"> - <reference key="NSMenu" ref="1054137046"/> - <string key="NSTitle">Item</string> - <string key="NSKeyEquiv"/> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="610745052"/> - <reference key="NSMixedImage" ref="1070349142"/> - </object> </object> </object> </object> @@ -1033,6 +1025,14 @@ </object> <int key="connectionID">126</int> </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">encodingMenu_</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="1054137046"/> + </object> + <int key="connectionID">134</int> + </object> </object> <object class="IBMutableOrderedSet" key="objectRecords"> <object class="NSArray" key="orderedObjects"> @@ -1386,16 +1386,10 @@ <reference key="object" ref="1054137046"/> <object class="NSMutableArray" key="children"> <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="1047175866"/> </object> <reference key="parent" ref="275495410"/> </object> <object class="IBObjectRecord"> - <int key="objectID">68</int> - <reference key="object" ref="1047175866"/> - <reference key="parent" ref="1054137046"/> - </object> - <object class="IBObjectRecord"> <int key="objectID">69</int> <reference key="object" ref="966232471"/> <reference key="parent" ref="1035953805"/> @@ -1571,7 +1565,6 @@ <string>66.IBPluginDependency</string> <string>67.IBEditorWindowLastContentRect</string> <string>67.IBPluginDependency</string> - <string>68.IBPluginDependency</string> <string>69.IBPluginDependency</string> <string>7.CustomClassName</string> <string>7.IBAttributePlaceholdersKey</string> @@ -1678,8 +1671,7 @@ <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>{{413, 523}, {306, 233}}</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>{{362, 523}, {306, 233}}</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> @@ -1692,17 +1684,17 @@ <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>{{904, 813}, {202, 63}}</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>{{404, 503}, {202, 63}}</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>{{904, 573}, {204, 63}}</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>{{404, 453}, {204, 63}}</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>{{904, 833}, {86, 23}}</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>{{404, 540}, {64, 6}}</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>DelayedMenuButton</string> @@ -1757,7 +1749,7 @@ </object> </object> <nil key="sourceID"/> - <int key="maxID">133</int> + <int key="maxID">134</int> </object> <object class="IBClassDescriber" key="IBDocument.Classes"> <object class="NSMutableArray" key="referencedPartialClassDescriptions"> @@ -1770,14 +1762,12 @@ <object class="NSMutableArray" key="dict.sortedKeys"> <bool key="EncodedWithXMLCoder">YES</bool> <string>orderFrontStandardAboutPanel:</string> - <string>quit:</string> <string>showPreferences:</string> </object> <object class="NSMutableArray" key="dict.values"> <bool key="EncodedWithXMLCoder">YES</bool> <string>id</string> <string>id</string> - <string>id</string> </object> </object> <object class="NSMutableDictionary" key="outlets"> @@ -1920,6 +1910,13 @@ </object> </object> <object class="IBPartialClassDescription"> + <string key="className">NSWindow</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">browser/cocoa/nswindow_local_state.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> <string key="className">PreferencesWindowController</string> <string key="superclassName">NSWindowController</string> <object class="NSMutableDictionary" key="actions"> @@ -1930,7 +1927,9 @@ <string>clearData:</string> <string>importData:</string> <string>makeDefaultBrowser:</string> + <string>manageSearchEngines:</string> <string>removeSelectedHomepages:</string> + <string>resetThemeToDefault:</string> <string>showPreferences:</string> <string>showSavedPasswords:</string> <string>themesGallery:</string> @@ -1947,6 +1946,8 @@ <string>id</string> <string>id</string> <string>id</string> + <string>id</string> + <string>id</string> </object> </object> <object class="NSMutableDictionary" key="outlets"> @@ -2036,6 +2037,7 @@ <bool key="EncodedWithXMLCoder">YES</bool> <string>backButton_</string> <string>bookmarkBarDelegate_</string> + <string>encodingMenu_</string> <string>forwardButton_</string> <string>goButton_</string> <string>homeButton_</string> @@ -2050,6 +2052,7 @@ <bool key="EncodedWithXMLCoder">YES</bool> <string>DelayedMenuButton</string> <string>id</string> + <string>NSMenu</string> <string>DelayedMenuButton</string> <string>NSButton</string> <string>NSButton</string> diff --git a/chrome/browser/app_controller_mac.mm b/chrome/browser/app_controller_mac.mm index d8885d0..f2d1b2a 100644 --- a/chrome/browser/app_controller_mac.mm +++ b/chrome/browser/app_controller_mac.mm @@ -338,7 +338,11 @@ // current locale (see http://crbug.com/7647 for details). // We need a valid g_browser_process to get the profile which is why we can't // call this from awakeFromNib. - EncodingMenuControllerDelegate::BuildEncodingMenu([self defaultProfile]); + NSMenu* view_menu = [[[NSApp mainMenu] itemWithTag:IDC_VIEW_MENU] submenu]; + NSMenuItem* encoding_menu_item = [view_menu itemWithTag:IDC_ENCODING_MENU]; + NSMenu *encoding_menu = [encoding_menu_item submenu]; + EncodingMenuControllerDelegate::BuildEncodingMenu([self defaultProfile], + encoding_menu); // Now that we're initialized we can open any URLs we've been holding onto. [self openPendingURLs]; diff --git a/chrome/browser/cocoa/encoding_menu_controller_delegate_mac.h b/chrome/browser/cocoa/encoding_menu_controller_delegate_mac.h index a23b1aa..882d54c 100644 --- a/chrome/browser/cocoa/encoding_menu_controller_delegate_mac.h +++ b/chrome/browser/cocoa/encoding_menu_controller_delegate_mac.h @@ -7,6 +7,7 @@ #include "base/basictypes.h" // For DISALLOW_IMPLICIT_CONSTRUCTORS +@class NSMenu; class Profile; // The Windows version of this class manages the Encoding Menu, but since Cocoa @@ -14,7 +15,7 @@ class Profile; // the encoding menu. class EncodingMenuControllerDelegate { public: - static void BuildEncodingMenu(Profile *profile); + static void BuildEncodingMenu(Profile *profile, NSMenu* encoding_menu); private: DISALLOW_IMPLICIT_CONSTRUCTORS(EncodingMenuControllerDelegate); }; diff --git a/chrome/browser/cocoa/encoding_menu_controller_delegate_mac.mm b/chrome/browser/cocoa/encoding_menu_controller_delegate_mac.mm index 92e576e..f20e157 100644 --- a/chrome/browser/cocoa/encoding_menu_controller_delegate_mac.mm +++ b/chrome/browser/cocoa/encoding_menu_controller_delegate_mac.mm @@ -33,14 +33,10 @@ void AppendMenuItem(NSMenu *parent_menu, int tag, NSString *title) { } // namespace // static -void EncodingMenuControllerDelegate::BuildEncodingMenu(Profile *profile) { +void EncodingMenuControllerDelegate::BuildEncodingMenu(Profile *profile, + NSMenu* encoding_menu) { DCHECK(profile); - // Get hold of the Cocoa encoding menu. - NSMenu* view_menu = [[[NSApp mainMenu] itemWithTag:IDC_VIEW_MENU] submenu]; - NSMenuItem* encoding_menu_item = [view_menu itemWithTag:IDC_ENCODING_MENU]; - NSMenu *encoding_menu = [encoding_menu_item submenu]; - typedef EncodingMenuController::EncodingMenuItemList EncodingMenuItemList; EncodingMenuItemList menuItems; EncodingMenuController controller; diff --git a/chrome/browser/cocoa/toolbar_controller.h b/chrome/browser/cocoa/toolbar_controller.h index f61822f..71467433 100644 --- a/chrome/browser/cocoa/toolbar_controller.h +++ b/chrome/browser/cocoa/toolbar_controller.h @@ -88,6 +88,7 @@ class ToolbarView; IBOutlet MenuButton* pageButton_; IBOutlet MenuButton* wrenchButton_; IBOutlet AutocompleteTextField* locationBar_; + IBOutlet NSMenu* encodingMenu_; } // Initialize the toolbar and register for command updates. The profile is diff --git a/chrome/browser/cocoa/toolbar_controller.mm b/chrome/browser/cocoa/toolbar_controller.mm index 65350f7..579c5da 100644 --- a/chrome/browser/cocoa/toolbar_controller.mm +++ b/chrome/browser/cocoa/toolbar_controller.mm @@ -14,6 +14,7 @@ #import "chrome/browser/cocoa/autocomplete_text_field.h" #import "chrome/browser/cocoa/autocomplete_text_field_editor.h" #import "chrome/browser/cocoa/back_forward_menu_controller.h" +#import "chrome/browser/cocoa/encoding_menu_controller_delegate_mac.h" #import "chrome/browser/cocoa/gradient_button_cell.h" #import "chrome/browser/cocoa/location_bar_view_mac.h" #import "chrome/browser/cocoa/menu_button.h" @@ -195,6 +196,8 @@ class PrefObserverBridge : public NotificationObserver { // We want a dynamic tooltip on the go button, so tell the go button to ask // use for the tooltip [goButton_ addToolTipRect:[goButton_ bounds] owner:self userData:nil]; + + EncodingMenuControllerDelegate::BuildEncodingMenu(profile_, encodingMenu_); } - (void)removeFromSuperview { NSLog(@"remove"); @@ -378,7 +381,7 @@ class PrefObserverBridge : public NotificationObserver { - (NSArray*)toolbarViews { return [NSArray arrayWithObjects:backButton_, forwardButton_, reloadButton_, homeButton_, starButton_, goButton_, pageButton_, wrenchButton_, - locationBar_, nil]; + locationBar_, encodingMenu_, nil]; } // Moves |rect| to the right by |delta|, keeping the right side fixed by diff --git a/chrome/browser/cocoa/toolbar_controller_unittest.mm b/chrome/browser/cocoa/toolbar_controller_unittest.mm index 9ba3236..fbcb0af 100644 --- a/chrome/browser/cocoa/toolbar_controller_unittest.mm +++ b/chrome/browser/cocoa/toolbar_controller_unittest.mm @@ -44,7 +44,7 @@ class ToolbarControllerTest : public PlatformTest { // |-toolbarViews| method. enum { kBackIndex, kForwardIndex, kReloadIndex, kHomeIndex, kStarIndex, kGoIndex, - kPageIndex, kWrenchIndex, kLocationIndex, + kPageIndex, kWrenchIndex, kLocationIndex, kEncodingMenuIndex }; ToolbarControllerTest() { @@ -320,5 +320,13 @@ TEST_F(ToolbarControllerTest, HoverButtonForEvent) { EXPECT_TRUE([bar_ hoverButtonForEvent:nil]); } +TEST_F(ToolbarControllerTest, PopulateEncodingMenu) { + NSMenu* encodings = [[bar_ toolbarViews] objectAtIndex:kEncodingMenuIndex]; + + // Can't check item strings because of localization, but the nib has zero + // items so check that we at least populated the menu with something at + // startup. + EXPECT_NE(0, [encodings numberOfItems]); +} } // namespace |