| Index: chrome/browser/cocoa/preferences_window_controller_unittest.mm
|
| diff --git a/chrome/browser/cocoa/preferences_window_controller_unittest.mm b/chrome/browser/cocoa/preferences_window_controller_unittest.mm
|
| index f09bfba17259dd6d4f8eb8295ab0bbc4f01f0b2b..0853f9452ab6d49d177255b7415f222cbb444f41 100644
|
| --- a/chrome/browser/cocoa/preferences_window_controller_unittest.mm
|
| +++ b/chrome/browser/cocoa/preferences_window_controller_unittest.mm
|
| @@ -9,6 +9,7 @@
|
| #include "chrome/browser/cocoa/browser_test_helper.h"
|
| #include "chrome/browser/cocoa/cocoa_test_helper.h"
|
| #import "chrome/browser/cocoa/custom_home_pages_model.h"
|
| +#include "chrome/browser/options_window.h"
|
| #include "chrome/common/pref_names.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| #include "testing/platform_test.h"
|
| @@ -30,9 +31,10 @@
|
|
|
| namespace {
|
|
|
| -class PrefsControllerTest : public PlatformTest {
|
| +class PrefsControllerTest : public CocoaTest {
|
| public:
|
| - PrefsControllerTest() {
|
| + virtual void SetUp() {
|
| + CocoaTest::SetUp();
|
| // The metrics reporting pref is registerd on the local state object in
|
| // real builds, but we don't have one of those for unit tests. Register
|
| // it on prefs so we'll find it when we go looking.
|
| @@ -40,20 +42,23 @@ class PrefsControllerTest : public PlatformTest {
|
| prefs->RegisterBooleanPref(prefs::kMetricsReportingEnabled, false);
|
|
|
| pref_controller_.reset([[PreferencesWindowController alloc]
|
| - initWithProfile:browser_helper_.profile()]);
|
| + initWithProfile:browser_helper_.profile()
|
| + initialPage:OPTIONS_PAGE_DEFAULT]);
|
| EXPECT_TRUE(pref_controller_.get());
|
| }
|
|
|
| + virtual void TearDown() {
|
| + pref_controller_.reset(NULL);
|
| + CocoaTest::TearDown();
|
| + }
|
| +
|
| BrowserTestHelper browser_helper_;
|
| - CocoaTestHelper cocoa_helper_; // Inits Cocoa, creates window, etc...
|
| scoped_nsobject<PreferencesWindowController> pref_controller_;
|
| };
|
|
|
| // Test showing the preferences window and making sure it's visible, then
|
| // making sure we get the notification when it's closed.
|
| TEST_F(PrefsControllerTest, ShowAndClose) {
|
| -#if 0
|
| -// TODO(pinkerton): this crashes deep w/in performClose:. Need to investigate.
|
| [pref_controller_ showPreferences:nil];
|
| EXPECT_TRUE([[pref_controller_ window] isVisible]);
|
|
|
| @@ -67,7 +72,6 @@ TEST_F(PrefsControllerTest, ShowAndClose) {
|
| [[pref_controller_ window] performClose:observer];
|
| EXPECT_TRUE(observer.get()->gotNotification_);
|
| [[NSNotificationCenter defaultCenter] removeObserver:observer.get()];
|
| -#endif
|
| }
|
|
|
| TEST_F(PrefsControllerTest, ValidateCustomHomePagesTable) {
|
| @@ -91,6 +95,143 @@ TEST_F(PrefsControllerTest, ValidateCustomHomePagesTable) {
|
| EXPECT_EQ(1U, [[pref_controller_ customPagesSource] countOfCustomHomePages]);
|
| }
|
|
|
| +TEST_F(PrefsControllerTest, NormalizePage) {
|
| + EXPECT_EQ(OPTIONS_PAGE_GENERAL,
|
| + [pref_controller_ normalizePage:OPTIONS_PAGE_GENERAL]);
|
| + EXPECT_EQ(OPTIONS_PAGE_CONTENT,
|
| + [pref_controller_ normalizePage:OPTIONS_PAGE_CONTENT]);
|
| + EXPECT_EQ(OPTIONS_PAGE_ADVANCED,
|
| + [pref_controller_ normalizePage:OPTIONS_PAGE_ADVANCED]);
|
| +
|
| + [pref_controller_ lastSelectedPage]->SetValue(OPTIONS_PAGE_ADVANCED);
|
| + EXPECT_EQ(OPTIONS_PAGE_ADVANCED,
|
| + [pref_controller_ normalizePage:OPTIONS_PAGE_DEFAULT]);
|
| +
|
| + [pref_controller_ lastSelectedPage]->SetValue(OPTIONS_PAGE_DEFAULT);
|
| + EXPECT_EQ(OPTIONS_PAGE_GENERAL,
|
| + [pref_controller_ normalizePage:OPTIONS_PAGE_DEFAULT]);
|
| +}
|
| +
|
| +TEST_F(PrefsControllerTest, GetToolbarItemForPage) {
|
| + // Trigger awakeFromNib.
|
| + [pref_controller_ window];
|
| +
|
| + NSArray* toolbarItems = [[pref_controller_ toolbar] items];
|
| + EXPECT_EQ([toolbarItems objectAtIndex:0],
|
| + [pref_controller_ getToolbarItemForPage:OPTIONS_PAGE_GENERAL]);
|
| + EXPECT_EQ([toolbarItems objectAtIndex:1],
|
| + [pref_controller_ getToolbarItemForPage:OPTIONS_PAGE_CONTENT]);
|
| + EXPECT_EQ([toolbarItems objectAtIndex:2],
|
| + [pref_controller_ getToolbarItemForPage:OPTIONS_PAGE_ADVANCED]);
|
| +
|
| + [pref_controller_ lastSelectedPage]->SetValue(OPTIONS_PAGE_ADVANCED);
|
| + EXPECT_EQ([toolbarItems objectAtIndex:2],
|
| + [pref_controller_ getToolbarItemForPage:OPTIONS_PAGE_DEFAULT]);
|
| +
|
| + // Out-of-range argument.
|
| + EXPECT_EQ([toolbarItems objectAtIndex:0],
|
| + [pref_controller_ getToolbarItemForPage:OPTIONS_PAGE_COUNT]);
|
| +}
|
| +
|
| +TEST_F(PrefsControllerTest, GetPageForToolbarItem) {
|
| + scoped_nsobject<NSToolbarItem> toolbarItem(
|
| + [[NSToolbarItem alloc] initWithItemIdentifier:@""]);
|
| + [toolbarItem setTag:0];
|
| + EXPECT_EQ(OPTIONS_PAGE_GENERAL,
|
| + [pref_controller_ getPageForToolbarItem:toolbarItem]);
|
| + [toolbarItem setTag:1];
|
| + EXPECT_EQ(OPTIONS_PAGE_CONTENT,
|
| + [pref_controller_ getPageForToolbarItem:toolbarItem]);
|
| + [toolbarItem setTag:2];
|
| + EXPECT_EQ(OPTIONS_PAGE_ADVANCED,
|
| + [pref_controller_ getPageForToolbarItem:toolbarItem]);
|
| +
|
| + // Out-of-range argument.
|
| + [toolbarItem setTag:3];
|
| + EXPECT_EQ(OPTIONS_PAGE_GENERAL,
|
| + [pref_controller_ getPageForToolbarItem:toolbarItem]);
|
| +}
|
| +
|
| +TEST_F(PrefsControllerTest, GetPrefsViewForPage) {
|
| + // Trigger awakeFromNib.
|
| + [pref_controller_ window];
|
| +
|
| + EXPECT_EQ([pref_controller_ basicsView],
|
| + [pref_controller_ getPrefsViewForPage:OPTIONS_PAGE_GENERAL]);
|
| + EXPECT_EQ([pref_controller_ personalStuffView],
|
| + [pref_controller_ getPrefsViewForPage:OPTIONS_PAGE_CONTENT]);
|
| + EXPECT_EQ([pref_controller_ underTheHoodView],
|
| + [pref_controller_ getPrefsViewForPage:OPTIONS_PAGE_ADVANCED]);
|
| +
|
| + [pref_controller_ lastSelectedPage]->SetValue(OPTIONS_PAGE_ADVANCED);
|
| + EXPECT_EQ([pref_controller_ underTheHoodView],
|
| + [pref_controller_ getPrefsViewForPage:OPTIONS_PAGE_DEFAULT]);
|
| +}
|
| +
|
| +TEST_F(PrefsControllerTest, SwitchToPage) {
|
| + // Trigger awakeFromNib.
|
| + NSWindow* window = [pref_controller_ window];
|
| +
|
| + NSView* contentView = [window contentView];
|
| + NSView* basicsView = [pref_controller_ basicsView];
|
| + NSView* personalStuffView = [pref_controller_ personalStuffView];
|
| + NSView* underTheHoodView = [pref_controller_ underTheHoodView];
|
| + NSToolbar* toolbar = [pref_controller_ toolbar];
|
| + NSToolbarItem* basicsToolbarItem =
|
| + [pref_controller_ getToolbarItemForPage:OPTIONS_PAGE_GENERAL];
|
| + NSToolbarItem* personalStuffToolbarItem =
|
| + [pref_controller_ getToolbarItemForPage:OPTIONS_PAGE_CONTENT];
|
| + NSToolbarItem* underTheHoodToolbarItem =
|
| + [pref_controller_ getToolbarItemForPage:OPTIONS_PAGE_ADVANCED];
|
| + NSString* basicsIdentifier = [basicsToolbarItem itemIdentifier];
|
| + NSString* personalStuffIdentifier = [personalStuffToolbarItem itemIdentifier];
|
| + NSString* underTheHoodIdentifier = [underTheHoodToolbarItem itemIdentifier];
|
| + IntegerPrefMember* lastSelectedPage = [pref_controller_ lastSelectedPage];
|
| +
|
| + // Test without animation.
|
| +
|
| + [pref_controller_ switchToPage:OPTIONS_PAGE_GENERAL animate:NO];
|
| + EXPECT_TRUE([basicsView isDescendantOf:contentView]);
|
| + EXPECT_FALSE([personalStuffView isDescendantOf:contentView]);
|
| + EXPECT_FALSE([underTheHoodView isDescendantOf:contentView]);
|
| + EXPECT_TRUE([[toolbar selectedItemIdentifier] isEqualTo:basicsIdentifier]);
|
| + EXPECT_EQ(OPTIONS_PAGE_GENERAL, lastSelectedPage->GetValue());
|
| + EXPECT_TRUE([[window title] isEqualTo:[basicsToolbarItem label]]);
|
| +
|
| + [pref_controller_ switchToPage:OPTIONS_PAGE_CONTENT animate:NO];
|
| + EXPECT_FALSE([basicsView isDescendantOf:contentView]);
|
| + EXPECT_TRUE([personalStuffView isDescendantOf:contentView]);
|
| + EXPECT_FALSE([underTheHoodView isDescendantOf:contentView]);
|
| + EXPECT_TRUE([[toolbar selectedItemIdentifier]
|
| + isEqualTo:personalStuffIdentifier]);
|
| + EXPECT_EQ(OPTIONS_PAGE_CONTENT, lastSelectedPage->GetValue());
|
| + EXPECT_TRUE([[window title] isEqualTo:[personalStuffToolbarItem label]]);
|
| +
|
| + [pref_controller_ switchToPage:OPTIONS_PAGE_ADVANCED animate:NO];
|
| + EXPECT_FALSE([basicsView isDescendantOf:contentView]);
|
| + EXPECT_FALSE([personalStuffView isDescendantOf:contentView]);
|
| + EXPECT_TRUE([underTheHoodView isDescendantOf:contentView]);
|
| + EXPECT_TRUE([[toolbar selectedItemIdentifier]
|
| + isEqualTo:underTheHoodIdentifier]);
|
| + EXPECT_EQ(OPTIONS_PAGE_ADVANCED, lastSelectedPage->GetValue());
|
| + EXPECT_TRUE([[window title] isEqualTo:[underTheHoodToolbarItem label]]);
|
| +
|
| + // Test OPTIONS_PAGE_DEFAULT.
|
| +
|
| + lastSelectedPage->SetValue(OPTIONS_PAGE_CONTENT);
|
| + [pref_controller_ switchToPage:OPTIONS_PAGE_DEFAULT animate:NO];
|
| + EXPECT_FALSE([basicsView isDescendantOf:contentView]);
|
| + EXPECT_TRUE([personalStuffView isDescendantOf:contentView]);
|
| + EXPECT_FALSE([underTheHoodView isDescendantOf:contentView]);
|
| + EXPECT_TRUE([[toolbar selectedItemIdentifier]
|
| + isEqualTo:personalStuffIdentifier]);
|
| + EXPECT_EQ(OPTIONS_PAGE_CONTENT, lastSelectedPage->GetValue());
|
| + EXPECT_TRUE([[window title] isEqualTo:[personalStuffToolbarItem label]]);
|
| +
|
| + // TODO(akalin): Figure out how to test animation; we'll need everything
|
| + // to stick around until the animation finishes.
|
| +}
|
| +
|
| // TODO(akalin): Figure out how to test sync controls.
|
| // TODO(akalin): Figure out how to test that sync controls are not shown
|
| // when there isn't a sync service.
|
|
|