| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/command_line.h" | 5 #include "base/command_line.h" |
| 6 #include "base/prefs/pref_service.h" | 6 #include "base/prefs/pref_service.h" |
| 7 #include "base/values.h" | 7 #include "base/values.h" |
| 8 #include "chrome/browser/extensions/api/settings_private/settings_private_delega
te.h" | 8 #include "chrome/browser/extensions/api/settings_private/settings_private_delega
te.h" |
| 9 #include "chrome/browser/extensions/api/settings_private/settings_private_delega
te_factory.h" | 9 #include "chrome/browser/extensions/api/settings_private/settings_private_delega
te_factory.h" |
| 10 #include "chrome/browser/extensions/extension_apitest.h" | 10 #include "chrome/browser/extensions/extension_apitest.h" |
| 11 #include "chrome/common/extensions/api/settings_private.h" | 11 #include "chrome/common/extensions/api/settings_private.h" |
| 12 #include "components/keyed_service/core/keyed_service.h" | 12 #include "components/keyed_service/core/keyed_service.h" |
| 13 #include "content/public/test/test_utils.h" | 13 #include "content/public/test/test_utils.h" |
| 14 #include "extensions/common/switches.h" | 14 #include "extensions/common/switches.h" |
| 15 | 15 |
| 16 #if defined(OS_CHROMEOS) |
| 17 #include "chromeos/chromeos_switches.h" |
| 18 #endif |
| 19 |
| 16 namespace extensions { | 20 namespace extensions { |
| 17 | 21 |
| 18 namespace { | 22 namespace { |
| 19 | 23 |
| 20 const char kTestPrefName[] = "download.default_directory"; | |
| 21 const char kTestPrefValue[] = "/Downloads"; | |
| 22 | |
| 23 class TestDelegate : public SettingsPrivateDelegate { | |
| 24 public: | |
| 25 explicit TestDelegate(Profile* profile) : SettingsPrivateDelegate(profile) {} | |
| 26 | |
| 27 bool SetPref(const std::string& name, const base::Value* value) override { | |
| 28 // Write to the actual pref service, so that the SettingsPrivateEventRouter | |
| 29 // dispatches an onPrefsChanged event. | |
| 30 PrefService* pref_service = profile_->GetPrefs(); | |
| 31 pref_service->Set(name.c_str(), *value); | |
| 32 return true; | |
| 33 } | |
| 34 | |
| 35 scoped_ptr<base::Value> GetPref(const std::string& name) override { | |
| 36 if (name.compare(kTestPrefName) != 0) | |
| 37 return base::Value::CreateNullValue(); | |
| 38 | |
| 39 return CreateTestPrefObject()->ToValue(); | |
| 40 } | |
| 41 | |
| 42 scoped_ptr<base::Value> GetAllPrefs() override { | |
| 43 base::ListValue* list_value = new base::ListValue(); | |
| 44 list_value->Append(CreateTestPrefObject()->ToValue().release()); | |
| 45 return make_scoped_ptr(list_value); | |
| 46 } | |
| 47 | |
| 48 ~TestDelegate() override {} | |
| 49 | |
| 50 private: | |
| 51 scoped_ptr<api::settings_private::PrefObject> CreateTestPrefObject() { | |
| 52 scoped_ptr<api::settings_private::PrefObject> pref_object( | |
| 53 new api::settings_private::PrefObject()); | |
| 54 pref_object->key = std::string(kTestPrefName); | |
| 55 pref_object->type = api::settings_private::PrefType::PREF_TYPE_STRING; | |
| 56 pref_object->value.reset(new base::StringValue(kTestPrefValue)); | |
| 57 return pref_object.Pass(); | |
| 58 } | |
| 59 | |
| 60 DISALLOW_COPY_AND_ASSIGN(TestDelegate); | |
| 61 }; | |
| 62 | |
| 63 class SettingsPrivateApiTest : public ExtensionApiTest { | 24 class SettingsPrivateApiTest : public ExtensionApiTest { |
| 64 public: | 25 public: |
| 65 SettingsPrivateApiTest() {} | 26 SettingsPrivateApiTest() {} |
| 66 ~SettingsPrivateApiTest() override {} | 27 ~SettingsPrivateApiTest() override {} |
| 67 | 28 |
| 68 static KeyedService* GetSettingsPrivateDelegate( | |
| 69 content::BrowserContext* profile) { | |
| 70 CHECK(s_test_delegate_); | |
| 71 return s_test_delegate_; | |
| 72 } | |
| 73 | |
| 74 void SetUpCommandLine(base::CommandLine* command_line) override { | 29 void SetUpCommandLine(base::CommandLine* command_line) override { |
| 75 ExtensionApiTest::SetUpCommandLine(command_line); | 30 ExtensionApiTest::SetUpCommandLine(command_line); |
| 76 } | 31 #if defined(OS_CHROMEOS) |
| 77 | 32 command_line->AppendSwitch(chromeos::switches::kStubCrosSettings); |
| 78 void SetUpOnMainThread() override { | 33 #endif |
| 79 ExtensionApiTest::SetUpOnMainThread(); | |
| 80 if (!s_test_delegate_) | |
| 81 s_test_delegate_ = new TestDelegate(profile()); | |
| 82 | |
| 83 SettingsPrivateDelegateFactory::GetInstance()->SetTestingFactory( | |
| 84 profile(), &SettingsPrivateApiTest::GetSettingsPrivateDelegate); | |
| 85 content::RunAllPendingInMessageLoop(); | |
| 86 } | 34 } |
| 87 | 35 |
| 88 protected: | 36 protected: |
| 89 bool RunSettingsSubtest(const std::string& subtest) { | 37 bool RunSettingsSubtest(const std::string& subtest) { |
| 90 return RunExtensionSubtest("settings_private", | 38 return RunExtensionSubtest("settings_private", |
| 91 "main.html?" + subtest, | 39 "main.html?" + subtest, |
| 92 kFlagLoadAsComponent); | 40 kFlagLoadAsComponent); |
| 93 } | 41 } |
| 94 | 42 |
| 95 // Static pointer to the TestDelegate so that it can be accessed in | |
| 96 // GetSettingsPrivateDelegate() passed to SetTestingFactory(). | |
| 97 static TestDelegate* s_test_delegate_; | |
| 98 | |
| 99 private: | 43 private: |
| 100 DISALLOW_COPY_AND_ASSIGN(SettingsPrivateApiTest); | 44 DISALLOW_COPY_AND_ASSIGN(SettingsPrivateApiTest); |
| 101 }; | 45 }; |
| 102 | 46 |
| 103 // static | |
| 104 TestDelegate* SettingsPrivateApiTest::s_test_delegate_ = NULL; | |
| 105 | 47 |
| 106 } // namespace | 48 } // namespace |
| 107 | 49 |
| 108 IN_PROC_BROWSER_TEST_F(SettingsPrivateApiTest, SetPref) { | 50 IN_PROC_BROWSER_TEST_F(SettingsPrivateApiTest, SetPref) { |
| 109 EXPECT_TRUE(RunSettingsSubtest("setPref")) << message_; | 51 EXPECT_TRUE(RunSettingsSubtest("setPref")) << message_; |
| 110 } | 52 } |
| 111 | 53 |
| 112 IN_PROC_BROWSER_TEST_F(SettingsPrivateApiTest, GetPref) { | 54 IN_PROC_BROWSER_TEST_F(SettingsPrivateApiTest, GetPref) { |
| 113 EXPECT_TRUE(RunSettingsSubtest("getPref")) << message_; | 55 EXPECT_TRUE(RunSettingsSubtest("getPref")) << message_; |
| 114 } | 56 } |
| 115 | 57 |
| 116 IN_PROC_BROWSER_TEST_F(SettingsPrivateApiTest, GetAllPrefs) { | 58 IN_PROC_BROWSER_TEST_F(SettingsPrivateApiTest, GetAllPrefs) { |
| 117 EXPECT_TRUE(RunSettingsSubtest("getAllPrefs")) << message_; | 59 EXPECT_TRUE(RunSettingsSubtest("getAllPrefs")) << message_; |
| 118 } | 60 } |
| 119 | 61 |
| 120 IN_PROC_BROWSER_TEST_F(SettingsPrivateApiTest, OnPrefsChanged) { | 62 IN_PROC_BROWSER_TEST_F(SettingsPrivateApiTest, OnPrefsChanged) { |
| 121 EXPECT_TRUE(RunSettingsSubtest("onPrefsChanged")) << message_; | 63 EXPECT_TRUE(RunSettingsSubtest("onPrefsChanged")) << message_; |
| 122 } | 64 } |
| 123 | 65 |
| 66 #if defined(OS_CHROMEOS) |
| 67 IN_PROC_BROWSER_TEST_F(SettingsPrivateApiTest, GetPref_CrOSSetting) { |
| 68 EXPECT_TRUE(RunSettingsSubtest("getPref_CrOSSetting")) << message_; |
| 69 } |
| 70 |
| 71 IN_PROC_BROWSER_TEST_F(SettingsPrivateApiTest, SetPref_CrOSSetting) { |
| 72 EXPECT_TRUE(RunSettingsSubtest("setPref_CrOSSetting")) << message_; |
| 73 } |
| 74 |
| 75 IN_PROC_BROWSER_TEST_F(SettingsPrivateApiTest, OnPrefsChanged_CrOSSetting) { |
| 76 EXPECT_TRUE(RunSettingsSubtest("onPrefsChanged_CrOSSetting")) << message_; |
| 77 } |
| 78 #endif |
| 79 |
| 124 } // namespace extensions | 80 } // namespace extensions |
| OLD | NEW |