Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2952)

Unified Diff: chrome/browser/cocoa/preferences_window_controller_unittest.mm

Issue 391050: Implemented ShowOptionsWindow() for OS X (except the highlighting (Closed)
Patch Set: Fixed unittest. Created 11 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/cocoa/preferences_window_controller.mm ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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.
« no previous file with comments | « chrome/browser/cocoa/preferences_window_controller.mm ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698