// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "chrome/browser/sync/sync_ui_util_mac.h" #import <Cocoa/Cocoa.h> #include "base/memory/scoped_nsobject.h" #include "chrome/app/chrome_command_ids.h" #include "chrome/browser/ui/cocoa/cocoa_test_helper.h" #include "grit/generated_resources.h" #include "testing/gtest/include/gtest/gtest.h" #include "ui/base/l10n/l10n_util_mac.h" namespace { class SyncStatusUIHelperMacTest : public CocoaTest { }; TEST_F(SyncStatusUIHelperMacTest, UpdateSyncItem) { scoped_nsobject<NSMenuItem> syncMenuItem( [[NSMenuItem alloc] initWithTitle:@"" action:@selector(commandDispatch) keyEquivalent:@""]); [syncMenuItem setTag:IDC_SYNC_BOOKMARKS]; NSString* bookmarksSynced = l10n_util::GetNSStringWithFixup(IDS_SYNC_MENU_SYNCED_LABEL); NSString* bookmarkSyncError = l10n_util::GetNSStringWithFixup(IDS_SYNC_MENU_SYNC_ERROR_LABEL); NSString* startSync = l10n_util::GetNSStringWithFixup(IDS_SYNC_START_SYNC_BUTTON_LABEL); [syncMenuItem setTitle:@""]; [syncMenuItem setHidden:NO]; sync_ui_util::UpdateSyncItemForStatus(syncMenuItem, NO, sync_ui_util::PRE_SYNCED); EXPECT_TRUE([[syncMenuItem title] isEqualTo:startSync]); EXPECT_TRUE([syncMenuItem isHidden]); [syncMenuItem setTitle:@""]; [syncMenuItem setHidden:YES]; sync_ui_util::UpdateSyncItemForStatus(syncMenuItem, YES, sync_ui_util::SYNC_ERROR); EXPECT_TRUE([[syncMenuItem title] isEqualTo:bookmarkSyncError]); EXPECT_FALSE([syncMenuItem isHidden]); [syncMenuItem setTitle:@""]; [syncMenuItem setHidden:NO]; sync_ui_util::UpdateSyncItemForStatus(syncMenuItem, NO, sync_ui_util::SYNCED); EXPECT_TRUE([[syncMenuItem title] isEqualTo:bookmarksSynced]); EXPECT_TRUE([syncMenuItem isHidden]); } TEST_F(SyncStatusUIHelperMacTest, UpdateSyncItemWithSeparator) { scoped_nsobject<NSMenu> menu([[NSMenu alloc] initWithTitle:@""]); NSMenuItem* syncMenuItem = [menu addItemWithTitle:@"" action:@selector(commandDispatch) keyEquivalent:@""]; [syncMenuItem setTag:IDC_SYNC_BOOKMARKS]; NSMenuItem* followingSeparator = [NSMenuItem separatorItem]; [menu addItem:followingSeparator]; const sync_ui_util::MessageType kStatus = sync_ui_util::PRE_SYNCED; [syncMenuItem setHidden:NO]; [followingSeparator setHidden:NO]; sync_ui_util::UpdateSyncItemForStatus(syncMenuItem, NO, kStatus); EXPECT_FALSE([followingSeparator isEnabled]); EXPECT_TRUE([syncMenuItem isHidden]); EXPECT_TRUE([followingSeparator isHidden]); [syncMenuItem setHidden:YES]; [followingSeparator setHidden:YES]; sync_ui_util::UpdateSyncItemForStatus(syncMenuItem, YES, kStatus); EXPECT_FALSE([followingSeparator isEnabled]); EXPECT_FALSE([syncMenuItem isHidden]); EXPECT_FALSE([followingSeparator isHidden]); } TEST_F(SyncStatusUIHelperMacTest, UpdateSyncItemWithNonSeparator) { scoped_nsobject<NSMenu> menu([[NSMenu alloc] initWithTitle:@""]); NSMenuItem* syncMenuItem = [menu addItemWithTitle:@"" action:@selector(commandDispatch) keyEquivalent:@""]; [syncMenuItem setTag:IDC_SYNC_BOOKMARKS]; NSMenuItem* followingNonSeparator = [menu addItemWithTitle:@"" action:@selector(commandDispatch) keyEquivalent:@""]; const sync_ui_util::MessageType kStatus = sync_ui_util::PRE_SYNCED; sync_ui_util::UpdateSyncItemForStatus(syncMenuItem, NO, kStatus); EXPECT_TRUE([followingNonSeparator isEnabled]); EXPECT_FALSE([followingNonSeparator isHidden]); sync_ui_util::UpdateSyncItemForStatus(syncMenuItem, YES, kStatus); EXPECT_TRUE([followingNonSeparator isEnabled]); EXPECT_FALSE([followingNonSeparator isHidden]); } } // namespace