This source file includes following definitions.
- SetPolicyValue
- CheckPolicySettings
- ApplyPolicySettings
- errors
- prefs
- TEST_F
- TEST_F
- TEST_F
- TEST_F
- TEST_F
- TEST_F
- TEST_F
- TEST_F
- TEST_F
- TEST_F
- TEST_F
- TEST_F
- TEST_F
- TEST_F
- TEST_F
- TEST_F
- TEST_F
- TEST_F
#include <string>
#include "base/compiler_specific.h"
#include "base/memory/scoped_ptr.h"
#include "base/prefs/pref_value_map.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/utf_string_conversions.h"
#include "base/values.h"
#include "chrome/browser/prefs/session_startup_pref.h"
#include "chrome/browser/sessions/restore_on_startup_policy_handler.h"
#include "chrome/common/pref_names.h"
#include "components/policy/core/browser/configuration_policy_handler.h"
#include "components/policy/core/browser/policy_error_map.h"
#include "components/policy/core/common/policy_map.h"
#include "grit/component_strings.h"
#include "policy/policy_constants.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/base/l10n/l10n_util.h"
namespace policy {
class RestoreOnStartupPolicyHandlerTest : public testing::Test {
protected:
void SetPolicyValue(const std::string& policy, base::Value* value) {
policies_.Set(
policy, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, value, NULL);
}
bool CheckPolicySettings() {
return handler_.CheckPolicySettings(policies_, &errors_);
}
void ApplyPolicySettings() {
handler_.ApplyPolicySettings(policies_, &prefs_);
}
PolicyErrorMap& errors() { return errors_; }
PrefValueMap& prefs() { return prefs_; }
private:
PolicyMap policies_;
PolicyErrorMap errors_;
PrefValueMap prefs_;
RestoreOnStartupPolicyHandler handler_;
};
TEST_F(RestoreOnStartupPolicyHandlerTest, CheckPolicySettings_FailsTypeCheck) {
SetPolicyValue(key::kRestoreOnStartup, new base::FundamentalValue(false));
EXPECT_FALSE(CheckPolicySettings());
EXPECT_EQ(1U, errors().size());
EXPECT_EQ(l10n_util::GetStringFUTF16(
IDS_POLICY_TYPE_ERROR,
base::ASCIIToUTF16(
ConfigurationPolicyHandler::ValueTypeToString(
base::Value::TYPE_INTEGER))),
errors().begin()->second);
}
TEST_F(RestoreOnStartupPolicyHandlerTest, CheckPolicySettings_Unspecified) {
EXPECT_TRUE(CheckPolicySettings());
EXPECT_EQ(0U, errors().size());
}
TEST_F(RestoreOnStartupPolicyHandlerTest, CheckPolicySettings_UnknownValue) {
int impossible_value = SessionStartupPref::kPrefValueHomePage +
SessionStartupPref::kPrefValueLast +
SessionStartupPref::kPrefValueURLs +
SessionStartupPref::kPrefValueNewTab;
SetPolicyValue(key::kRestoreOnStartup,
new base::FundamentalValue(impossible_value));
EXPECT_TRUE(CheckPolicySettings());
EXPECT_EQ(1U, errors().size());
EXPECT_EQ(l10n_util::GetStringFUTF16(
IDS_POLICY_OUT_OF_RANGE_ERROR,
base::ASCIIToUTF16(base::IntToString(impossible_value))),
errors().begin()->second);
}
TEST_F(RestoreOnStartupPolicyHandlerTest, CheckPolicySettings_HomePage) {
SetPolicyValue(
key::kRestoreOnStartup,
new base::FundamentalValue(SessionStartupPref::kPrefValueHomePage));
EXPECT_TRUE(CheckPolicySettings());
EXPECT_EQ(1U, errors().size());
EXPECT_EQ(l10n_util::GetStringUTF16(IDS_POLICY_VALUE_DEPRECATED),
errors().begin()->second);
}
TEST_F(RestoreOnStartupPolicyHandlerTest,
CheckPolicySettings_RestoreLastSession_SessionCookies) {
SetPolicyValue(
key::kRestoreOnStartup,
new base::FundamentalValue(SessionStartupPref::kPrefValueLast));
scoped_ptr<base::ListValue> urls(new base::ListValue);
urls->AppendString("http://foo.com");
SetPolicyValue(key::kCookiesSessionOnlyForUrls, urls.release());
EXPECT_TRUE(CheckPolicySettings());
EXPECT_EQ(1U, errors().size());
EXPECT_TRUE(key::kCookiesSessionOnlyForUrls == errors().begin()->first);
EXPECT_EQ(l10n_util::GetStringFUTF16(
IDS_POLICY_OVERRIDDEN,
base::ASCIIToUTF16(key::kRestoreOnStartup)),
errors().begin()->second);
}
TEST_F(RestoreOnStartupPolicyHandlerTest,
CheckPolicySettings_RestoreLastSession_ClearDataOnExit) {
SetPolicyValue(
key::kRestoreOnStartup,
new base::FundamentalValue(SessionStartupPref::kPrefValueLast));
SetPolicyValue(key::kClearSiteDataOnExit, new base::FundamentalValue(true));
EXPECT_TRUE(CheckPolicySettings());
EXPECT_EQ(1U, errors().size());
EXPECT_TRUE(key::kClearSiteDataOnExit == errors().begin()->first);
EXPECT_EQ(l10n_util::GetStringFUTF16(
IDS_POLICY_OVERRIDDEN,
base::ASCIIToUTF16(key::kRestoreOnStartup)),
errors().begin()->second);
}
TEST_F(RestoreOnStartupPolicyHandlerTest,
CheckPolicySettings_RestoreLastSession) {
SetPolicyValue(
key::kRestoreOnStartup,
new base::FundamentalValue(SessionStartupPref::kPrefValueLast));
EXPECT_TRUE(CheckPolicySettings());
EXPECT_EQ(0U, errors().size());
}
TEST_F(RestoreOnStartupPolicyHandlerTest, CheckPolicySettings_URLs) {
SetPolicyValue(
key::kRestoreOnStartup,
new base::FundamentalValue(SessionStartupPref::kPrefValueURLs));
EXPECT_TRUE(CheckPolicySettings());
EXPECT_EQ(0U, errors().size());
}
TEST_F(RestoreOnStartupPolicyHandlerTest, CheckPolicySettings_NewTab) {
SetPolicyValue(
key::kRestoreOnStartup,
new base::FundamentalValue(SessionStartupPref::kPrefValueNewTab));
EXPECT_TRUE(CheckPolicySettings());
EXPECT_EQ(0U, errors().size());
}
TEST_F(RestoreOnStartupPolicyHandlerTest, ApplyPolicySettings_NoValue) {
ApplyPolicySettings();
EXPECT_TRUE(prefs().begin() == prefs().end());
}
TEST_F(RestoreOnStartupPolicyHandlerTest, ApplyPolicySettings_WrongType) {
SetPolicyValue(key::kRestoreOnStartup, new base::FundamentalValue(false));
EXPECT_TRUE(prefs().begin() == prefs().end());
}
TEST_F(RestoreOnStartupPolicyHandlerTest, ApplyPolicySettings_NotHomePage) {
int not_home_page = SessionStartupPref::kPrefValueHomePage + 1;
SetPolicyValue(key::kRestoreOnStartup,
new base::FundamentalValue(not_home_page));
ApplyPolicySettings();
int result;
EXPECT_TRUE(prefs().GetInteger(prefs::kRestoreOnStartup, &result));
EXPECT_EQ(not_home_page, result);
}
TEST_F(RestoreOnStartupPolicyHandlerTest,
ApplyPolicySettings_HomePage_NoHomePageValue) {
SetPolicyValue(
key::kRestoreOnStartup,
new base::FundamentalValue(SessionStartupPref::kPrefValueHomePage));
ApplyPolicySettings();
EXPECT_TRUE(prefs().begin() == prefs().end());
}
TEST_F(RestoreOnStartupPolicyHandlerTest,
ApplyPolicySettings_HomePage_HomePageValueIsWrongType) {
SetPolicyValue(
key::kRestoreOnStartup,
new base::FundamentalValue(SessionStartupPref::kPrefValueHomePage));
SetPolicyValue(
key::kHomepageIsNewTabPage,
new base::FundamentalValue(314159));
ApplyPolicySettings();
EXPECT_TRUE(prefs().begin() == prefs().end());
}
TEST_F(RestoreOnStartupPolicyHandlerTest,
ApplyPolicySettings_HomePage_HomePageIsNewTabPage) {
SetPolicyValue(
key::kRestoreOnStartup,
new base::FundamentalValue(SessionStartupPref::kPrefValueHomePage));
SetPolicyValue(
key::kHomepageIsNewTabPage,
new base::FundamentalValue(true));
ApplyPolicySettings();
int result;
EXPECT_TRUE(prefs().GetInteger(prefs::kRestoreOnStartup, &result));
int expected = SessionStartupPref::kPrefValueNewTab;
EXPECT_EQ(expected, result);
}
TEST_F(RestoreOnStartupPolicyHandlerTest,
ApplyPolicySettings_HomePage_HomePageIsNotNewTabPage_NotDefined) {
SetPolicyValue(
key::kRestoreOnStartup,
new base::FundamentalValue(SessionStartupPref::kPrefValueHomePage));
SetPolicyValue(
key::kHomepageIsNewTabPage,
new base::FundamentalValue(false));
ApplyPolicySettings();
EXPECT_TRUE(prefs().begin() == prefs().end());
}
TEST_F(RestoreOnStartupPolicyHandlerTest,
ApplyPolicySettings_HomePage_HomePageIsNotNewTabPage_WrongType) {
SetPolicyValue(
key::kRestoreOnStartup,
new base::FundamentalValue(SessionStartupPref::kPrefValueHomePage));
SetPolicyValue(
key::kHomepageIsNewTabPage,
new base::FundamentalValue(false));
SetPolicyValue(
key::kHomepageLocation,
new base::FundamentalValue(false));
ApplyPolicySettings();
EXPECT_TRUE(prefs().begin() == prefs().end());
}
TEST_F(RestoreOnStartupPolicyHandlerTest,
ApplyPolicySettings_HomePage_HomePageIsNotNewTabPage) {
SetPolicyValue(
key::kRestoreOnStartup,
new base::FundamentalValue(SessionStartupPref::kPrefValueHomePage));
SetPolicyValue(key::kHomepageIsNewTabPage, new base::FundamentalValue(false));
SetPolicyValue(key::kHomepageLocation,
new base::StringValue("http://foo.com"));
ApplyPolicySettings();
int result;
EXPECT_TRUE(prefs().GetInteger(prefs::kRestoreOnStartup, &result));
int expected = SessionStartupPref::kPrefValueURLs;
EXPECT_EQ(expected, result);
base::Value* url_result;
EXPECT_TRUE(prefs().GetValue(prefs::kURLsToRestoreOnStartup, &url_result));
base::ListValue* url_list_result;
EXPECT_TRUE(url_result->GetAsList(&url_list_result));
EXPECT_EQ(1U, url_list_result->GetSize());
std::string expected_url;
EXPECT_TRUE(url_list_result->GetString(0, &expected_url));
EXPECT_EQ(std::string("http://foo.com"), expected_url);
}
}