Index: chrome/browser/ui/cocoa/profile_menu_controller_unittest.mm |
diff --git a/chrome/browser/ui/cocoa/profile_menu_controller_unittest.mm b/chrome/browser/ui/cocoa/profile_menu_controller_unittest.mm |
deleted file mode 100644 |
index f669b60c8bd449c991b6fc569eba7b95dbad1f67..0000000000000000000000000000000000000000 |
--- a/chrome/browser/ui/cocoa/profile_menu_controller_unittest.mm |
+++ /dev/null |
@@ -1,290 +0,0 @@ |
-// 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. |
- |
-#import "chrome/browser/ui/cocoa/profile_menu_controller.h" |
- |
-#include "base/mac/scoped_nsobject.h" |
-#include "base/strings/utf_string_conversions.h" |
-#include "base/threading/thread_restrictions.h" |
-#include "chrome/browser/browser_process.h" |
-#include "chrome/browser/prefs/pref_service_syncable.h" |
-#include "chrome/browser/profiles/profile_manager.h" |
-#include "chrome/browser/ui/browser_list.h" |
-#include "chrome/browser/ui/cocoa/cocoa_profile_test.h" |
-#include "chrome/browser/ui/cocoa/run_loop_testing.h" |
-#include "chrome/common/pref_names.h" |
-#include "chrome/test/base/testing_profile.h" |
-#include "chrome/test/base/test_browser_window.h" |
-#include "grit/generated_resources.h" |
-#include "testing/gtest_mac.h" |
-#include "ui/base/l10n/l10n_util_mac.h" |
- |
-class ProfileMenuControllerTest : public CocoaProfileTest { |
- public: |
- ProfileMenuControllerTest() { |
- item_.reset([[NSMenuItem alloc] initWithTitle:@"Users" |
- action:nil |
- keyEquivalent:@""]); |
- controller_.reset( |
- [[ProfileMenuController alloc] initWithMainMenuItem:item_]); |
- } |
- |
- virtual void SetUp() { |
- CocoaProfileTest::SetUp(); |
- ASSERT_TRUE(profile()); |
- |
- // Spin the runloop so |-initializeMenu| gets called. |
- chrome::testing::NSRunLoopRunAllPending(); |
- } |
- |
- void TestBottomItems() { |
- NSMenu* menu = [controller() menu]; |
- NSInteger count = [menu numberOfItems]; |
- |
- ASSERT_GE(count, 4); |
- |
- NSMenuItem* item = [menu itemAtIndex:count - 4]; |
- EXPECT_TRUE([item isSeparatorItem]); |
- |
- item = [menu itemAtIndex:count - 3]; |
- EXPECT_EQ(@selector(editProfile:), [item action]); |
- |
- item = [menu itemAtIndex:count - 2]; |
- EXPECT_TRUE([item isSeparatorItem]); |
- |
- item = [menu itemAtIndex:count - 1]; |
- EXPECT_EQ(@selector(newProfile:), [item action]); |
- } |
- |
- void VerifyProfileNamedIsActive(NSString* title, int line) { |
- for (NSMenuItem* item in [[controller() menu] itemArray]) { |
- if ([[item title] isEqualToString:title]) { |
- EXPECT_EQ(NSOnState, [item state]) << [[item title] UTF8String] |
- << " (from line " << line << ")"; |
- } else { |
- EXPECT_EQ(NSOffState, [item state]) << [[item title] UTF8String] |
- << " (from line " << line << ")"; |
- } |
- } |
- } |
- |
- ProfileMenuController* controller() { return controller_.get(); } |
- |
- NSMenuItem* menu_item() { return item_.get(); } |
- |
- private: |
- base::scoped_nsobject<NSMenuItem> item_; |
- base::scoped_nsobject<ProfileMenuController> controller_; |
-}; |
- |
-TEST_F(ProfileMenuControllerTest, InitializeMenu) { |
- NSMenu* menu = [controller() menu]; |
- // <sep>, Edit, <sep>, New. |
- ASSERT_EQ(4, [menu numberOfItems]); |
- |
- TestBottomItems(); |
- |
- EXPECT_TRUE([menu_item() isHidden]); |
-} |
- |
-TEST_F(ProfileMenuControllerTest, CreateItemWithTitle) { |
- NSMenuItem* item = |
- [controller() createItemWithTitle:@"Title" |
- action:@selector(someSelector:)]; |
- EXPECT_NSEQ(@"Title", [item title]); |
- EXPECT_EQ(controller(), [item target]); |
- EXPECT_EQ(@selector(someSelector:), [item action]); |
- EXPECT_NSEQ(@"", [item keyEquivalent]); |
-} |
- |
-TEST_F(ProfileMenuControllerTest, RebuildMenu) { |
- NSMenu* menu = [controller() menu]; |
- EXPECT_EQ(4, [menu numberOfItems]); |
- |
- EXPECT_TRUE([menu_item() isHidden]); |
- |
- // Create some more profiles on the manager. |
- TestingProfileManager* manager = testing_profile_manager(); |
- manager->CreateTestingProfile("Profile 2"); |
- manager->CreateTestingProfile("Profile 3"); |
- |
- // Verify that the menu got rebuilt. |
- ASSERT_EQ(7, [menu numberOfItems]); |
- |
- NSMenuItem* item = [menu itemAtIndex:0]; |
- EXPECT_EQ(@selector(switchToProfileFromMenu:), [item action]); |
- |
- item = [menu itemAtIndex:1]; |
- EXPECT_EQ(@selector(switchToProfileFromMenu:), [item action]); |
- |
- item = [menu itemAtIndex:2]; |
- EXPECT_EQ(@selector(switchToProfileFromMenu:), [item action]); |
- |
- TestBottomItems(); |
- |
- EXPECT_FALSE([menu_item() isHidden]); |
-} |
- |
-TEST_F(ProfileMenuControllerTest, InsertItems) { |
- base::scoped_nsobject<NSMenu> menu([[NSMenu alloc] initWithTitle:@""]); |
- ASSERT_EQ(0, [menu numberOfItems]); |
- |
- // With only one profile, insertItems should be a no-op. |
- BOOL result = [controller() insertItemsIntoMenu:menu |
- atOffset:0 |
- fromDock:NO]; |
- EXPECT_FALSE(result); |
- EXPECT_EQ(0, [menu numberOfItems]); |
- [menu removeAllItems]; |
- |
- // Same for use in building the dock menu. |
- result = [controller() insertItemsIntoMenu:menu |
- atOffset:0 |
- fromDock:YES]; |
- EXPECT_FALSE(result); |
- EXPECT_EQ(0, [menu numberOfItems]); |
- [menu removeAllItems]; |
- |
- // Create one more profile on the manager. |
- TestingProfileManager* manager = testing_profile_manager(); |
- manager->CreateTestingProfile("Profile 2"); |
- |
- // With more than one profile, insertItems should return YES. |
- result = [controller() insertItemsIntoMenu:menu |
- atOffset:0 |
- fromDock:NO]; |
- EXPECT_TRUE(result); |
- ASSERT_EQ(2, [menu numberOfItems]); |
- |
- NSMenuItem* item = [menu itemAtIndex:0]; |
- EXPECT_EQ(@selector(switchToProfileFromMenu:), [item action]); |
- |
- item = [menu itemAtIndex:1]; |
- EXPECT_EQ(@selector(switchToProfileFromMenu:), [item action]); |
- [menu removeAllItems]; |
- |
- // And for the dock, the selector should be different and there should be a |
- // header item. |
- result = [controller() insertItemsIntoMenu:menu |
- atOffset:0 |
- fromDock:YES]; |
- EXPECT_TRUE(result); |
- ASSERT_EQ(3, [menu numberOfItems]); |
- |
- // First item is a label item. |
- item = [menu itemAtIndex:0]; |
- EXPECT_FALSE([item isEnabled]); |
- |
- item = [menu itemAtIndex:1]; |
- EXPECT_EQ(@selector(switchToProfileFromDock:), [item action]); |
- |
- item = [menu itemAtIndex:2]; |
- EXPECT_EQ(@selector(switchToProfileFromDock:), [item action]); |
-} |
- |
-TEST_F(ProfileMenuControllerTest, InitialActiveBrowser) { |
- [controller() activeBrowserChangedTo:NULL]; |
- VerifyProfileNamedIsActive(l10n_util::GetNSString(IDS_DEFAULT_PROFILE_NAME), |
- __LINE__); |
-} |
- |
-// Note: BrowserList::SetLastActive() is typically called as part of |
-// BrowserWindow::Show() and when a Browser becomes active. We don't need a full |
-// BrowserWindow, so it is called manually. |
-TEST_F(ProfileMenuControllerTest, SetActiveAndRemove) { |
- NSMenu* menu = [controller() menu]; |
- TestingProfileManager* manager = testing_profile_manager(); |
- TestingProfile* profile2 = manager->CreateTestingProfile("Profile 2"); |
- TestingProfile* profile3 = manager->CreateTestingProfile("Profile 3"); |
- ASSERT_EQ(7, [menu numberOfItems]); |
- |
- // Create a browser and "show" it. |
- Browser::CreateParams profile2_params(profile2, chrome::GetActiveDesktop()); |
- scoped_ptr<Browser> p2_browser( |
- chrome::CreateBrowserWithTestWindowForParams(&profile2_params)); |
- BrowserList::SetLastActive(p2_browser.get()); |
- VerifyProfileNamedIsActive(@"Profile 2", __LINE__); |
- |
- // Close the browser and make sure it's still active. |
- p2_browser.reset(); |
- VerifyProfileNamedIsActive(@"Profile 2", __LINE__); |
- |
- // Open a new browser and make sure it takes effect. |
- Browser::CreateParams profile3_params(profile3, chrome::GetActiveDesktop()); |
- scoped_ptr<Browser> p3_browser( |
- chrome::CreateBrowserWithTestWindowForParams(&profile3_params)); |
- BrowserList::SetLastActive(p3_browser.get()); |
- VerifyProfileNamedIsActive(@"Profile 3", __LINE__); |
- |
- p3_browser.reset(); |
- VerifyProfileNamedIsActive(@"Profile 3", __LINE__); |
-} |
- |
-TEST_F(ProfileMenuControllerTest, DeleteActiveProfile) { |
- TestingProfileManager* manager = testing_profile_manager(); |
- |
- manager->CreateTestingProfile("Profile 2"); |
- TestingProfile* profile3 = manager->CreateTestingProfile("Profile 3"); |
- ASSERT_EQ(3U, manager->profile_manager()->GetNumberOfProfiles()); |
- |
- const base::FilePath profile3_path = profile3->GetPath(); |
- manager->DeleteTestingProfile("Profile 3"); |
- |
- // Simulate an unloaded profile by setting the "last used" local state pref |
- // the profile that was just deleted. |
- PrefService* local_state = g_browser_process->local_state(); |
- local_state->SetString(prefs::kProfileLastUsed, |
- profile3_path.BaseName().MaybeAsASCII()); |
- |
- // Simulate the active browser changing to NULL and ensure a profile doesn't |
- // get created by disallowing IO operations temporarily. |
- const bool io_was_allowed = base::ThreadRestrictions::SetIOAllowed(false); |
- [controller() activeBrowserChangedTo:NULL]; |
- base::ThreadRestrictions::SetIOAllowed(io_was_allowed); |
-} |
- |
-TEST_F(ProfileMenuControllerTest, ManagedProfile) { |
- TestingProfileManager* manager = testing_profile_manager(); |
- TestingProfile* managed_profile = |
- manager->CreateTestingProfile("test1", |
- scoped_ptr<PrefServiceSyncable>(), |
- base::ASCIIToUTF16("Supervised User"), |
- 0, |
- "TEST_ID", |
- TestingProfile::TestingFactories()); |
- BrowserList::SetLastActive(browser()); |
- |
- NSMenu* menu = [controller() menu]; |
- ASSERT_EQ(6, [menu numberOfItems]); |
- NSMenuItem* item = [menu itemAtIndex:0]; |
- ASSERT_EQ(@selector(switchToProfileFromMenu:), [item action]); |
- EXPECT_TRUE([controller() validateMenuItem:item]); |
- |
- item = [menu itemAtIndex:1]; |
- ASSERT_EQ(@selector(switchToProfileFromMenu:), [item action]); |
- EXPECT_TRUE([controller() validateMenuItem:item]); |
- |
- item = [menu itemAtIndex:5]; |
- ASSERT_EQ(@selector(newProfile:), [item action]); |
- EXPECT_TRUE([controller() validateMenuItem:item]); |
- |
- // Open a new browser for the managed user and switch to it. |
- Browser::CreateParams managed_profile_params( |
- managed_profile, chrome::HOST_DESKTOP_TYPE_NATIVE); |
- scoped_ptr<Browser> managed_browser( |
- chrome::CreateBrowserWithTestWindowForParams(&managed_profile_params)); |
- BrowserList::SetLastActive(managed_browser.get()); |
- |
- item = [menu itemAtIndex:0]; |
- ASSERT_EQ(@selector(switchToProfileFromMenu:), [item action]); |
- EXPECT_FALSE([controller() validateMenuItem:item]); |
- |
- item = [menu itemAtIndex:1]; |
- ASSERT_EQ(@selector(switchToProfileFromMenu:), [item action]); |
- EXPECT_TRUE([controller() validateMenuItem:item]); |
- |
- item = [menu itemAtIndex:5]; |
- ASSERT_EQ(@selector(newProfile:), [item action]); |
- EXPECT_FALSE([controller() validateMenuItem:item]); |
-} |