OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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/path_service.h" | 5 #include "base/path_service.h" |
6 #include "base/prefs/pref_service.h" | 6 #include "base/prefs/pref_service.h" |
7 #include "base/strings/utf_string_conversions.h" | 7 #include "base/strings/utf_string_conversions.h" |
8 #include "chrome/browser/chrome_notification_types.h" | 8 #include "chrome/browser/chrome_notification_types.h" |
9 #include "chrome/browser/extensions/extension_service_unittest.h" | 9 #include "chrome/browser/extensions/extension_service_unittest.h" |
10 #include "chrome/browser/extensions/unpacked_installer.h" | 10 #include "chrome/browser/extensions/unpacked_installer.h" |
11 #include "chrome/browser/managed_mode/custodian_profile_downloader_service.h" | 11 #include "chrome/browser/managed_mode/custodian_profile_downloader_service.h" |
12 #include "chrome/browser/managed_mode/custodian_profile_downloader_service_facto
ry.h" | 12 #include "chrome/browser/managed_mode/custodian_profile_downloader_service_facto
ry.h" |
13 #include "chrome/browser/managed_mode/managed_user_service.h" | 13 #include "chrome/browser/managed_mode/managed_user_service.h" |
14 #include "chrome/browser/managed_mode/managed_user_service_factory.h" | 14 #include "chrome/browser/managed_mode/managed_user_service_factory.h" |
15 #include "chrome/browser/prefs/scoped_user_pref_update.h" | 15 #include "chrome/browser/prefs/scoped_user_pref_update.h" |
16 #include "chrome/browser/profiles/profile.h" | 16 #include "chrome/browser/profiles/profile.h" |
17 #include "chrome/browser/ui/browser_list.h" | 17 #include "chrome/browser/ui/browser_list.h" |
18 #include "chrome/common/chrome_paths.h" | 18 #include "chrome/common/chrome_paths.h" |
19 #include "chrome/common/extensions/extension.h" | 19 #include "chrome/common/extensions/extension.h" |
20 #include "chrome/common/extensions/extension_builder.h" | 20 #include "chrome/common/extensions/extension_builder.h" |
21 #include "chrome/common/pref_names.h" | 21 #include "chrome/common/pref_names.h" |
22 #include "chrome/test/base/testing_profile.h" | 22 #include "chrome/test/base/testing_profile.h" |
23 #include "content/public/test/test_browser_thread.h" | 23 #include "content/public/test/test_browser_thread_bundle.h" |
24 #include "content/public/test/test_utils.h" | 24 #include "content/public/test/test_utils.h" |
25 #include "extensions/common/manifest_constants.h" | 25 #include "extensions/common/manifest_constants.h" |
26 #include "testing/gtest/include/gtest/gtest.h" | 26 #include "testing/gtest/include/gtest/gtest.h" |
27 | 27 |
28 using content::MessageLoopRunner; | 28 using content::MessageLoopRunner; |
29 | 29 |
30 namespace { | 30 namespace { |
31 | 31 |
32 void OnProfileDownloadedFail(const string16& full_name) { | 32 void OnProfileDownloadedFail(const string16& full_name) { |
33 ASSERT_TRUE(false) << "Profile download should not have succeeded."; | 33 ASSERT_TRUE(false) << "Profile download should not have succeeded."; |
(...skipping 25 matching lines...) Expand all Loading... |
59 void Reset() { | 59 void Reset() { |
60 message_loop_runner_ = new MessageLoopRunner; | 60 message_loop_runner_ = new MessageLoopRunner; |
61 } | 61 } |
62 | 62 |
63 ManagedModeURLFilter* url_filter_; | 63 ManagedModeURLFilter* url_filter_; |
64 scoped_refptr<MessageLoopRunner> message_loop_runner_; | 64 scoped_refptr<MessageLoopRunner> message_loop_runner_; |
65 }; | 65 }; |
66 | 66 |
67 class ManagedUserServiceTest : public ::testing::Test { | 67 class ManagedUserServiceTest : public ::testing::Test { |
68 public: | 68 public: |
69 ManagedUserServiceTest() : ui_thread_(content::BrowserThread::UI, | 69 ManagedUserServiceTest() { |
70 &message_loop_) { | |
71 managed_user_service_ = ManagedUserServiceFactory::GetForProfile(&profile_); | 70 managed_user_service_ = ManagedUserServiceFactory::GetForProfile(&profile_); |
72 } | 71 } |
73 | 72 |
74 virtual ~ManagedUserServiceTest() {} | 73 virtual ~ManagedUserServiceTest() {} |
75 | 74 |
76 protected: | 75 protected: |
77 base::MessageLoop message_loop_; | 76 content::TestBrowserThreadBundle thread_bundle_; |
78 content::TestBrowserThread ui_thread_; | |
79 TestingProfile profile_; | 77 TestingProfile profile_; |
80 ManagedUserService* managed_user_service_; | 78 ManagedUserService* managed_user_service_; |
81 }; | 79 }; |
82 | 80 |
83 } // namespace | 81 } // namespace |
84 | 82 |
85 TEST_F(ManagedUserServiceTest, GetManualExceptionsForHost) { | 83 TEST_F(ManagedUserServiceTest, GetManualExceptionsForHost) { |
86 GURL kExampleFooURL("http://www.example.com/foo"); | 84 GURL kExampleFooURL("http://www.example.com/foo"); |
87 GURL kExampleBarURL("http://www.example.com/bar"); | 85 GURL kExampleBarURL("http://www.example.com/bar"); |
88 GURL kExampleFooNoWWWURL("http://example.com/foo"); | 86 GURL kExampleFooNoWWWURL("http://example.com/foo"); |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
145 CustodianProfileDownloaderService* downloader_service = | 143 CustodianProfileDownloaderService* downloader_service = |
146 CustodianProfileDownloaderServiceFactory::GetForProfile( | 144 CustodianProfileDownloaderServiceFactory::GetForProfile( |
147 &profile_); | 145 &profile_); |
148 | 146 |
149 // Emulate being logged in, then start to download a profile so a | 147 // Emulate being logged in, then start to download a profile so a |
150 // ProfileDownloader gets created. | 148 // ProfileDownloader gets created. |
151 profile_.GetPrefs()->SetString(prefs::kGoogleServicesUsername, "Logged In"); | 149 profile_.GetPrefs()->SetString(prefs::kGoogleServicesUsername, "Logged In"); |
152 downloader_service->DownloadProfile(base::Bind(&OnProfileDownloadedFail)); | 150 downloader_service->DownloadProfile(base::Bind(&OnProfileDownloadedFail)); |
153 } | 151 } |
154 | 152 |
155 class ManagedUserServiceExtensionTest : public ExtensionServiceTestBase { | 153 class ManagedUserServiceExtensionTestBase : public ExtensionServiceTestBase { |
156 public: | 154 public: |
157 ManagedUserServiceExtensionTest() {} | 155 explicit ManagedUserServiceExtensionTestBase(bool is_managed) |
158 virtual ~ManagedUserServiceExtensionTest() {} | 156 : is_managed_(is_managed) {} |
| 157 virtual ~ManagedUserServiceExtensionTestBase() {} |
159 | 158 |
160 virtual void SetUp() OVERRIDE { | 159 virtual void SetUp() OVERRIDE { |
161 ExtensionServiceTestBase::SetUp(); | 160 ExtensionServiceTestBase::SetUp(); |
162 InitializeEmptyExtensionService(); | 161 ExtensionServiceTestBase::ExtensionServiceInitParams params = |
163 } | 162 CreateDefaultInitParams(); |
164 | 163 params.profile_is_managed = is_managed_; |
165 virtual void TearDown() OVERRIDE { | 164 InitializeExtensionService(params); |
166 ExtensionServiceTestBase::TearDown(); | 165 ManagedUserServiceFactory::GetForProfile(profile_.get())->Init(); |
167 } | 166 } |
168 | 167 |
169 protected: | 168 protected: |
170 ScopedVector<ManagedModeSiteList> GetActiveSiteLists( | 169 ScopedVector<ManagedModeSiteList> GetActiveSiteLists( |
171 ManagedUserService* managed_user_service) { | 170 ManagedUserService* managed_user_service) { |
172 return managed_user_service->GetActiveSiteLists(); | 171 return managed_user_service->GetActiveSiteLists(); |
173 } | 172 } |
174 | 173 |
175 scoped_refptr<extensions::Extension> MakeThemeExtension() { | 174 scoped_refptr<extensions::Extension> MakeThemeExtension() { |
176 scoped_ptr<DictionaryValue> source(new DictionaryValue()); | 175 scoped_ptr<DictionaryValue> source(new DictionaryValue()); |
177 source->SetString(extensions::manifest_keys::kName, "Theme"); | 176 source->SetString(extensions::manifest_keys::kName, "Theme"); |
178 source->Set(extensions::manifest_keys::kTheme, new DictionaryValue()); | 177 source->Set(extensions::manifest_keys::kTheme, new DictionaryValue()); |
179 source->SetString(extensions::manifest_keys::kVersion, "1.0"); | 178 source->SetString(extensions::manifest_keys::kVersion, "1.0"); |
180 extensions::ExtensionBuilder builder; | 179 extensions::ExtensionBuilder builder; |
181 scoped_refptr<extensions::Extension> extension = | 180 scoped_refptr<extensions::Extension> extension = |
182 builder.SetManifest(source.Pass()).Build(); | 181 builder.SetManifest(source.Pass()).Build(); |
183 return extension; | 182 return extension; |
184 } | 183 } |
185 | 184 |
186 scoped_refptr<extensions::Extension> MakeExtension() { | 185 scoped_refptr<extensions::Extension> MakeExtension() { |
187 scoped_ptr<DictionaryValue> manifest = extensions::DictionaryBuilder() | 186 scoped_ptr<DictionaryValue> manifest = extensions::DictionaryBuilder() |
188 .Set(extensions::manifest_keys::kName, "Extension") | 187 .Set(extensions::manifest_keys::kName, "Extension") |
189 .Set(extensions::manifest_keys::kVersion, "1.0") | 188 .Set(extensions::manifest_keys::kVersion, "1.0") |
190 .Build(); | 189 .Build(); |
191 extensions::ExtensionBuilder builder; | 190 extensions::ExtensionBuilder builder; |
192 scoped_refptr<extensions::Extension> extension = | 191 scoped_refptr<extensions::Extension> extension = |
193 builder.SetManifest(manifest.Pass()).Build(); | 192 builder.SetManifest(manifest.Pass()).Build(); |
194 return extension; | 193 return extension; |
195 } | 194 } |
| 195 |
| 196 bool is_managed_; |
196 }; | 197 }; |
197 | 198 |
198 TEST_F(ManagedUserServiceExtensionTest, | 199 class ManagedUserServiceExtensionTestUnmanaged |
199 ExtensionManagementPolicyProviderUnmanaged) { | 200 : public ManagedUserServiceExtensionTestBase { |
| 201 public: |
| 202 ManagedUserServiceExtensionTestUnmanaged() |
| 203 : ManagedUserServiceExtensionTestBase(false) {} |
| 204 }; |
| 205 |
| 206 class ManagedUserServiceExtensionTest |
| 207 : public ManagedUserServiceExtensionTestBase { |
| 208 public: |
| 209 ManagedUserServiceExtensionTest() |
| 210 : ManagedUserServiceExtensionTestBase(true) {} |
| 211 }; |
| 212 |
| 213 TEST_F(ManagedUserServiceExtensionTestUnmanaged, |
| 214 ExtensionManagementPolicyProvider) { |
200 ManagedUserService* managed_user_service = | 215 ManagedUserService* managed_user_service = |
201 ManagedUserServiceFactory::GetForProfile(profile_.get()); | 216 ManagedUserServiceFactory::GetForProfile(profile_.get()); |
202 EXPECT_FALSE(profile_->IsManaged()); | 217 EXPECT_FALSE(profile_->IsManaged()); |
203 | 218 |
204 scoped_refptr<extensions::Extension> extension = MakeExtension(); | 219 scoped_refptr<extensions::Extension> extension = MakeExtension(); |
205 string16 error_1; | 220 string16 error_1; |
206 EXPECT_TRUE(managed_user_service->UserMayLoad(extension.get(), &error_1)); | 221 EXPECT_TRUE(managed_user_service->UserMayLoad(extension.get(), &error_1)); |
207 EXPECT_EQ(string16(), error_1); | 222 EXPECT_EQ(string16(), error_1); |
208 | 223 |
209 string16 error_2; | 224 string16 error_2; |
210 EXPECT_TRUE( | 225 EXPECT_TRUE( |
211 managed_user_service->UserMayModifySettings(extension.get(), &error_2)); | 226 managed_user_service->UserMayModifySettings(extension.get(), &error_2)); |
212 EXPECT_EQ(string16(), error_2); | 227 EXPECT_EQ(string16(), error_2); |
213 } | 228 } |
214 | 229 |
215 TEST_F(ManagedUserServiceExtensionTest, | 230 TEST_F(ManagedUserServiceExtensionTest, ExtensionManagementPolicyProvider) { |
216 ExtensionManagementPolicyProviderManaged) { | |
217 ManagedUserService* managed_user_service = | 231 ManagedUserService* managed_user_service = |
218 ManagedUserServiceFactory::GetForProfile(profile_.get()); | 232 ManagedUserServiceFactory::GetForProfile(profile_.get()); |
219 managed_user_service->InitForTesting(); | |
220 ManagedModeURLFilterObserver observer( | 233 ManagedModeURLFilterObserver observer( |
221 managed_user_service->GetURLFilterForUIThread()); | 234 managed_user_service->GetURLFilterForUIThread()); |
222 EXPECT_TRUE(profile_->IsManaged()); | 235 ASSERT_TRUE(profile_->IsManaged()); |
223 // Wait for the initial update to finish (otherwise we'll get leaks). | 236 // Wait for the initial update to finish (otherwise we'll get leaks). |
224 observer.Wait(); | 237 observer.Wait(); |
225 | 238 |
226 // Check that a supervised user can install a theme. | 239 // Check that a supervised user can install a theme. |
227 scoped_refptr<extensions::Extension> theme = MakeThemeExtension(); | 240 scoped_refptr<extensions::Extension> theme = MakeThemeExtension(); |
228 string16 error_1; | 241 string16 error_1; |
229 EXPECT_TRUE(managed_user_service->UserMayLoad(theme.get(), &error_1)); | 242 EXPECT_TRUE(managed_user_service->UserMayLoad(theme.get(), &error_1)); |
230 EXPECT_TRUE(error_1.empty()); | 243 EXPECT_TRUE(error_1.empty()); |
231 EXPECT_TRUE( | 244 EXPECT_TRUE( |
232 managed_user_service->UserMayModifySettings(theme.get(), &error_1)); | 245 managed_user_service->UserMayModifySettings(theme.get(), &error_1)); |
233 EXPECT_TRUE(error_1.empty()); | 246 EXPECT_TRUE(error_1.empty()); |
234 | 247 |
235 // Now check a different kind of extension. | 248 // Now check a different kind of extension. |
236 scoped_refptr<extensions::Extension> extension = MakeExtension(); | 249 scoped_refptr<extensions::Extension> extension = MakeExtension(); |
237 EXPECT_FALSE(managed_user_service->UserMayLoad(extension.get(), &error_1)); | 250 EXPECT_FALSE(managed_user_service->UserMayLoad(extension.get(), &error_1)); |
238 EXPECT_FALSE(error_1.empty()); | 251 EXPECT_FALSE(error_1.empty()); |
239 | 252 |
240 string16 error_2; | 253 string16 error_2; |
241 EXPECT_FALSE( | 254 EXPECT_FALSE( |
242 managed_user_service->UserMayModifySettings(extension.get(), &error_2)); | 255 managed_user_service->UserMayModifySettings(extension.get(), &error_2)); |
243 EXPECT_FALSE(error_2.empty()); | 256 EXPECT_FALSE(error_2.empty()); |
244 | 257 |
245 #ifndef NDEBUG | 258 #ifndef NDEBUG |
246 EXPECT_FALSE(managed_user_service->GetDebugPolicyProviderName().empty()); | 259 EXPECT_FALSE(managed_user_service->GetDebugPolicyProviderName().empty()); |
247 #endif | 260 #endif |
248 } | 261 } |
249 | 262 |
250 | |
251 TEST_F(ManagedUserServiceExtensionTest, NoContentPacks) { | 263 TEST_F(ManagedUserServiceExtensionTest, NoContentPacks) { |
252 ManagedUserService* managed_user_service = | 264 ManagedUserService* managed_user_service = |
253 ManagedUserServiceFactory::GetForProfile(profile_.get()); | 265 ManagedUserServiceFactory::GetForProfile(profile_.get()); |
254 managed_user_service->Init(); | |
255 ManagedModeURLFilter* url_filter = | 266 ManagedModeURLFilter* url_filter = |
256 managed_user_service->GetURLFilterForUIThread(); | 267 managed_user_service->GetURLFilterForUIThread(); |
257 | 268 |
258 GURL url("http://youtube.com"); | 269 GURL url("http://youtube.com"); |
259 ScopedVector<ManagedModeSiteList> site_lists = | 270 ScopedVector<ManagedModeSiteList> site_lists = |
260 GetActiveSiteLists(managed_user_service); | 271 GetActiveSiteLists(managed_user_service); |
261 ASSERT_EQ(0u, site_lists.size()); | 272 ASSERT_EQ(0u, site_lists.size()); |
262 EXPECT_EQ(ManagedModeURLFilter::ALLOW, | 273 EXPECT_EQ(ManagedModeURLFilter::ALLOW, |
263 url_filter->GetFilteringBehaviorForURL(url)); | 274 url_filter->GetFilteringBehaviorForURL(url)); |
264 } | 275 } |
265 | 276 |
266 TEST_F(ManagedUserServiceExtensionTest, InstallContentPacks) { | 277 TEST_F(ManagedUserServiceExtensionTest, InstallContentPacks) { |
267 ManagedUserService* managed_user_service = | 278 ManagedUserService* managed_user_service = |
268 ManagedUserServiceFactory::GetForProfile(profile_.get()); | 279 ManagedUserServiceFactory::GetForProfile(profile_.get()); |
269 managed_user_service->InitForTesting(); | |
270 ManagedModeURLFilter* url_filter = | 280 ManagedModeURLFilter* url_filter = |
271 managed_user_service->GetURLFilterForUIThread(); | 281 managed_user_service->GetURLFilterForUIThread(); |
272 ManagedModeURLFilterObserver observer(url_filter); | 282 ManagedModeURLFilterObserver observer(url_filter); |
273 observer.Wait(); | 283 observer.Wait(); |
274 | 284 |
275 GURL example_url("http://example.com"); | 285 GURL example_url("http://example.com"); |
276 GURL moose_url("http://moose.org"); | 286 GURL moose_url("http://moose.org"); |
277 EXPECT_EQ(ManagedModeURLFilter::ALLOW, | 287 EXPECT_EQ(ManagedModeURLFilter::ALLOW, |
278 url_filter->GetFilteringBehaviorForURL(example_url)); | 288 url_filter->GetFilteringBehaviorForURL(example_url)); |
279 | 289 |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
363 sites.clear(); | 373 sites.clear(); |
364 site_lists[0]->GetSites(&sites); | 374 site_lists[0]->GetSites(&sites); |
365 ASSERT_EQ(1u, sites.size()); | 375 ASSERT_EQ(1u, sites.size()); |
366 EXPECT_EQ(ASCIIToUTF16("Moose"), sites[0].name); | 376 EXPECT_EQ(ASCIIToUTF16("Moose"), sites[0].name); |
367 | 377 |
368 EXPECT_EQ(ManagedModeURLFilter::WARN, | 378 EXPECT_EQ(ManagedModeURLFilter::WARN, |
369 url_filter->GetFilteringBehaviorForURL(example_url)); | 379 url_filter->GetFilteringBehaviorForURL(example_url)); |
370 EXPECT_EQ(ManagedModeURLFilter::ALLOW, | 380 EXPECT_EQ(ManagedModeURLFilter::ALLOW, |
371 url_filter->GetFilteringBehaviorForURL(moose_url)); | 381 url_filter->GetFilteringBehaviorForURL(moose_url)); |
372 } | 382 } |
OLD | NEW |