Index: chrome/browser/protector/session_startup_change_unittest.cc |
diff --git a/chrome/browser/protector/session_startup_change_unittest.cc b/chrome/browser/protector/session_startup_change_unittest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..083d1c64bc7bcf2d5bc84264529fc5a085982d4b |
--- /dev/null |
+++ b/chrome/browser/protector/session_startup_change_unittest.cc |
@@ -0,0 +1,131 @@ |
+// Copyright (c) 2012 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 "base/memory/scoped_ptr.h" |
+#include "base/utf_string_conversions.h" |
+#include "base/values.h" |
+#include "chrome/browser/prefs/session_startup_pref.h" |
+#include "chrome/browser/protector/base_setting_change.h" |
+#include "chrome/test/base/testing_profile.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+#include "grit/generated_resources.h" |
+#include "ui/base/l10n/l10n_util.h" |
+ |
+namespace protector { |
+ |
+namespace { |
+ |
+const char kStartupUrl1[] = "http://google.com"; |
+const char kStartupUrl2[] = "http://example.com"; |
+ |
+} // namespace |
+ |
+class SessionStartupChangeTest : public testing::Test { |
+ public: |
+ SessionStartupChangeTest() |
+ : initial_startup_pref_(SessionStartupPref::DEFAULT) { |
+ } |
+ |
+ virtual void SetUp() OVERRIDE { |
+ // Ensure initial session startup pref. |
+ SessionStartupPref::SetStartupPref(&profile_, initial_startup_pref_); |
+ } |
+ |
+ protected: |
+ TestingProfile profile_; |
+ SessionStartupPref initial_startup_pref_; |
+}; |
+ |
+TEST_F(SessionStartupChangeTest, InitAndApply) { |
+ // Create a change and apply it. |
+ SessionStartupPref backup_startup_pref(SessionStartupPref::LAST); |
+ scoped_ptr<BaseSettingChange> change( |
+ CreateSessionStartupChange(initial_startup_pref_, backup_startup_pref)); |
+ ASSERT_TRUE(change->Init(&profile_)); |
+ // Setting is initially reverted to backup. |
+ EXPECT_EQ(SessionStartupPref::LAST, |
+ SessionStartupPref::GetStartupPref(&profile_).type); |
+ change->Apply(NULL); // |browser| is unused. |
+ // New setting active now. |
+ EXPECT_EQ(SessionStartupPref::DEFAULT, |
+ SessionStartupPref::GetStartupPref(&profile_).type); |
+} |
+ |
+TEST_F(SessionStartupChangeTest, InitAndDiscard) { |
+ // Create a change and discard it. |
+ SessionStartupPref backup_startup_pref(SessionStartupPref::LAST); |
+ scoped_ptr<BaseSettingChange> change( |
+ CreateSessionStartupChange(initial_startup_pref_, backup_startup_pref)); |
+ ASSERT_TRUE(change->Init(&profile_)); |
+ // Setting is initially reverted to backup. |
+ EXPECT_EQ(SessionStartupPref::LAST, |
+ SessionStartupPref::GetStartupPref(&profile_).type); |
+ change->Discard(NULL); // |browser| is unused. |
+ // Nothing changed by Discard. |
+ EXPECT_EQ(SessionStartupPref::LAST, |
+ SessionStartupPref::GetStartupPref(&profile_).type); |
+} |
+ |
+TEST_F(SessionStartupChangeTest, ApplyButtonCaptions) { |
+ // Apply button captions for "Open NTP" and "Open specific URLs" cases. |
+ string16 open_ntp_caption = |
+ l10n_util::GetStringUTF16(IDS_CHANGE_STARTUP_SETTINGS_NTP); |
+ string16 open_url1_etc_caption = |
+ l10n_util::GetStringFUTF16(IDS_CHANGE_STARTUP_SETTINGS_URLS, |
+ UTF8ToUTF16(GURL(kStartupUrl1).host())); |
+ |
+ // "Open URLs" with no URLs is the same as "Open NTP". |
+ initial_startup_pref_.type = SessionStartupPref::URLS; |
+ SessionStartupPref backup_startup_pref(SessionStartupPref::DEFAULT); |
+ scoped_ptr<BaseSettingChange> change( |
+ CreateSessionStartupChange(initial_startup_pref_, backup_startup_pref)); |
+ ASSERT_TRUE(change->Init(&profile_)); |
+ EXPECT_EQ(open_ntp_caption, change->GetApplyButtonText()); |
+ |
+ // Single URL. |
+ initial_startup_pref_.urls.push_back(GURL(kStartupUrl1)); |
+ change.reset( |
+ CreateSessionStartupChange(initial_startup_pref_, backup_startup_pref)); |
+ ASSERT_TRUE(change->Init(&profile_)); |
+ EXPECT_EQ(open_url1_etc_caption, change->GetApplyButtonText()); |
+ |
+ // Multiple URLs: name of the first one used. |
+ initial_startup_pref_.urls.push_back(GURL(kStartupUrl2)); |
+ change.reset( |
+ CreateSessionStartupChange(initial_startup_pref_, backup_startup_pref)); |
+ ASSERT_TRUE(change->Init(&profile_)); |
+ EXPECT_EQ(open_url1_etc_caption, change->GetApplyButtonText()); |
+} |
+ |
+TEST_F(SessionStartupChangeTest, DiscardButtonCaptions) { |
+ // Discard button captions for "Open NTP" and "Open specific URLs" cases. |
+ string16 open_ntp_caption = |
+ l10n_util::GetStringUTF16(IDS_KEEP_STARTUP_SETTINGS_NTP); |
+ string16 open_url1_etc_caption = |
+ l10n_util::GetStringFUTF16(IDS_KEEP_STARTUP_SETTINGS_URLS, |
+ UTF8ToUTF16(GURL(kStartupUrl1).host())); |
+ |
+ // "Open URLs" with no URLs is the same as "Open NTP". |
+ SessionStartupPref backup_startup_pref(SessionStartupPref::URLS); |
+ scoped_ptr<BaseSettingChange> change( |
+ CreateSessionStartupChange(initial_startup_pref_, backup_startup_pref)); |
+ ASSERT_TRUE(change->Init(&profile_)); |
+ EXPECT_EQ(open_ntp_caption, change->GetDiscardButtonText()); |
+ |
+ // Single URL. |
+ backup_startup_pref.urls.push_back(GURL(kStartupUrl1)); |
+ change.reset( |
+ CreateSessionStartupChange(initial_startup_pref_, backup_startup_pref)); |
+ ASSERT_TRUE(change->Init(&profile_)); |
+ EXPECT_EQ(open_url1_etc_caption, change->GetDiscardButtonText()); |
+ |
+ // Multiple URLs: name of the first one used. |
+ backup_startup_pref.urls.push_back(GURL(kStartupUrl2)); |
+ change.reset( |
+ CreateSessionStartupChange(initial_startup_pref_, backup_startup_pref)); |
+ ASSERT_TRUE(change->Init(&profile_)); |
+ EXPECT_EQ(open_url1_etc_caption, change->GetDiscardButtonText()); |
+} |
+ |
+} // namespace protector |