From defe0b9b574f2a2a8399d51f03f75e9d12c0807a Mon Sep 17 00:00:00 2001 From: "akalin@chromium.org" Date: Fri, 6 Nov 2009 20:26:30 +0000 Subject: Added menu item for sync to wrench menu. Wrench menu item is right above "Preferences...". Chrome menu item will be added in a future CL right above "Clear Browsing Data...". Sync menu items are hidden if bookmark sync is disabled (the current default for OS X). UI decisions were made after consulting with Cole. Added code in browser_window_controller.mm to update sync menu item dynamically. Added unit tests. BUG=23073 TEST=manual testing, trybots, unittests Review URL: http://codereview.chromium.org/363017 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31284 0039d316-1c4b-4281-b951-d872f2087c98 --- .../cocoa/browser_window_controller_unittest.mm | 75 ++++++++++++++++++++++ 1 file changed, 75 insertions(+) (limited to 'chrome/browser/cocoa/browser_window_controller_unittest.mm') diff --git a/chrome/browser/cocoa/browser_window_controller_unittest.mm b/chrome/browser/cocoa/browser_window_controller_unittest.mm index b5f504e..e2b7451 100644 --- a/chrome/browser/cocoa/browser_window_controller_unittest.mm +++ b/chrome/browser/cocoa/browser_window_controller_unittest.mm @@ -2,19 +2,23 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include "app/l10n_util_mac.h" #include "base/scoped_nsobject.h" #include "base/scoped_nsautorelease_pool.h" #include "base/scoped_ptr.h" +#include "chrome/app/chrome_dll_resource.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/browser_window.h" #include "chrome/browser/cocoa/browser_test_helper.h" #include "chrome/browser/cocoa/browser_window_controller.h" #include "chrome/browser/cocoa/cocoa_test_helper.h" #include "chrome/browser/cocoa/find_bar_bridge.h" +#include "chrome/browser/sync/sync_status_ui_helper.h" #include "chrome/common/pref_names.h" #include "chrome/common/pref_service.h" #include "chrome/test/testing_browser_process.h" #include "chrome/test/testing_profile.h" +#include "grit/generated_resources.h" @interface BrowserWindowController (JustForTesting) // Already defined in BWC. @@ -429,6 +433,77 @@ TEST_F(BrowserWindowControllerTest, TestFindBarOnTop) { EXPECT_GT(findBar_index, bookmark_index); } +TEST_F(BrowserWindowControllerTest, TestSyncMenuItem) { + scoped_nsobject syncMenuItem( + [[NSMenuItem alloc] initWithTitle:@"" + action:@selector(commandDispatch) + keyEquivalent:@""]); + [syncMenuItem setTag:IDC_SYNC_BOOKMARKS]; + + NSString* bookmarksSynced = + l10n_util::GetNSStringWithFixup(IDS_SYNC_MENU_BOOKMARKS_SYNCED_LABEL); + NSString* bookmarkSyncError = + l10n_util::GetNSStringWithFixup(IDS_SYNC_MENU_BOOKMARK_SYNC_ERROR_LABEL); + NSString* startSync = + l10n_util::GetNSStringWithFixup(IDS_SYNC_START_SYNC_BUTTON_LABEL); + + [syncMenuItem setTitle:@""]; + [syncMenuItem setHidden:NO]; + [controller_ updateSyncItem:syncMenuItem + syncEnabled:NO + status:SyncStatusUIHelper::PRE_SYNCED]; + EXPECT_TRUE([[syncMenuItem title] isEqualTo:startSync]); + EXPECT_TRUE([syncMenuItem isHidden]); + + [syncMenuItem setTitle:@""]; + [syncMenuItem setHidden:YES]; + [controller_ updateSyncItem:syncMenuItem + syncEnabled:YES + status:SyncStatusUIHelper::SYNC_ERROR]; + EXPECT_TRUE([[syncMenuItem title] isEqualTo:bookmarkSyncError]); + EXPECT_FALSE([syncMenuItem isHidden]); + + [syncMenuItem setTitle:@""]; + [syncMenuItem setHidden:NO]; + [controller_ updateSyncItem:syncMenuItem + syncEnabled:NO + status:SyncStatusUIHelper::SYNCED]; + EXPECT_TRUE([[syncMenuItem title] isEqualTo:bookmarksSynced]); + EXPECT_TRUE([syncMenuItem isHidden]); +} + +TEST_F(BrowserWindowControllerTest, TestSyncMenuItemWithSeparator) { + scoped_nsobject menu([[NSMenu alloc] initWithTitle:@""]); + NSMenuItem* syncMenuItem = + [menu addItemWithTitle:@"" + action:@selector(commandDispatch) + keyEquivalent:@""]; + [syncMenuItem setTag:IDC_SYNC_BOOKMARKS]; + NSMenuItem* following_separator = [NSMenuItem separatorItem]; + [menu addItem:following_separator]; + + const SyncStatusUIHelper::MessageType kStatus = + SyncStatusUIHelper::PRE_SYNCED; + + [syncMenuItem setHidden:NO]; + [following_separator setHidden:NO]; + [controller_ updateSyncItem:syncMenuItem + syncEnabled:NO + status:kStatus]; + EXPECT_FALSE([following_separator isEnabled]); + EXPECT_TRUE([syncMenuItem isHidden]); + EXPECT_TRUE([following_separator isHidden]); + + [syncMenuItem setHidden:YES]; + [following_separator setHidden:YES]; + [controller_ updateSyncItem:syncMenuItem + syncEnabled:YES + status:kStatus]; + EXPECT_FALSE([following_separator isEnabled]); + EXPECT_FALSE([syncMenuItem isHidden]); + EXPECT_FALSE([following_separator isHidden]); +} + @interface BrowserWindowControllerFakeFullscreen : BrowserWindowController { @private // We release the window ourselves, so we don't have to rely on the unittest -- cgit v1.1