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 "chrome/browser/extensions/extension_service_unittest.h" | 5 #include "chrome/browser/extensions/extension_service_unittest.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <set> | 8 #include <set> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 389 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
400 EXPECT_STREQ(version->GetString().c_str(), v2->GetString().c_str()); | 400 EXPECT_STREQ(version->GetString().c_str(), v2->GetString().c_str()); |
401 EXPECT_EQ(Manifest::EXTERNAL_PREF, location); | 401 EXPECT_EQ(Manifest::EXTERNAL_PREF, location); |
402 | 402 |
403 // Remove it so we won't count it ever again. | 403 // Remove it so we won't count it ever again. |
404 prefs_->Remove(id, NULL); | 404 prefs_->Remove(id, NULL); |
405 } | 405 } |
406 return true; | 406 return true; |
407 } | 407 } |
408 | 408 |
409 virtual bool OnExternalExtensionUpdateUrlFound( | 409 virtual bool OnExternalExtensionUpdateUrlFound( |
410 const std::string& id, const GURL& update_url, | 410 const std::string& id, |
| 411 const std::string& install_parameter, |
| 412 const GURL& update_url, |
411 Manifest::Location location, | 413 Manifest::Location location, |
412 int creation_flags, | 414 int creation_flags, |
413 bool mark_acknowledged) OVERRIDE { | 415 bool mark_acknowledged) OVERRIDE { |
414 ++ids_found_; | 416 ++ids_found_; |
415 base::DictionaryValue* pref; | 417 base::DictionaryValue* pref; |
416 // This tests is to make sure that the provider only notifies us of the | 418 // This tests is to make sure that the provider only notifies us of the |
417 // values we gave it. So if the id we doesn't exist in our internal | 419 // values we gave it. So if the id we doesn't exist in our internal |
418 // dictionary then something is wrong. | 420 // dictionary then something is wrong. |
419 EXPECT_TRUE(prefs_->GetDictionary(id, &pref)) | 421 EXPECT_TRUE(prefs_->GetDictionary(id, &pref)) |
420 << L"Got back ID (" << id.c_str() << ") we weren't expecting"; | 422 << L"Got back ID (" << id.c_str() << ") we weren't expecting"; |
421 EXPECT_EQ(Manifest::EXTERNAL_PREF_DOWNLOAD, location); | 423 EXPECT_EQ(Manifest::EXTERNAL_PREF_DOWNLOAD, location); |
422 | 424 |
423 if (pref) { | 425 if (pref) { |
424 EXPECT_TRUE(provider_->HasExtension(id)); | 426 EXPECT_TRUE(provider_->HasExtension(id)); |
425 | 427 |
426 // External extensions with update URLs do not have versions. | 428 // External extensions with update URLs do not have versions. |
427 scoped_ptr<Version> v1; | 429 scoped_ptr<Version> v1; |
428 Manifest::Location location1 = Manifest::INVALID_LOCATION; | 430 Manifest::Location location1 = Manifest::INVALID_LOCATION; |
429 EXPECT_TRUE(provider_->GetExtensionDetails(id, &location1, &v1)); | 431 EXPECT_TRUE(provider_->GetExtensionDetails(id, &location1, &v1)); |
430 EXPECT_FALSE(v1.get()); | 432 EXPECT_FALSE(v1.get()); |
431 EXPECT_EQ(Manifest::EXTERNAL_PREF_DOWNLOAD, location1); | 433 EXPECT_EQ(Manifest::EXTERNAL_PREF_DOWNLOAD, location1); |
432 | 434 |
| 435 std::string parsed_install_parameter; |
| 436 pref->GetString("install_parameter", &parsed_install_parameter); |
| 437 EXPECT_EQ(parsed_install_parameter, install_parameter); |
| 438 |
433 // Remove it so we won't count it again. | 439 // Remove it so we won't count it again. |
434 prefs_->Remove(id, NULL); | 440 prefs_->Remove(id, NULL); |
435 } | 441 } |
436 return true; | 442 return true; |
437 } | 443 } |
438 | 444 |
439 virtual void OnExternalProviderReady( | 445 virtual void OnExternalProviderReady( |
440 const extensions::ExternalProviderInterface* provider) OVERRIDE { | 446 const extensions::ExternalProviderInterface* provider) OVERRIDE { |
441 EXPECT_EQ(provider, provider_.get()); | 447 EXPECT_EQ(provider, provider_.get()); |
442 EXPECT_TRUE(provider->IsReady()); | 448 EXPECT_TRUE(provider->IsReady()); |
(...skipping 1373 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1816 path, Manifest::EXTERNAL_PREF, | 1822 path, Manifest::EXTERNAL_PREF, |
1817 Extension::NO_FLAGS, false); | 1823 Extension::NO_FLAGS, false); |
1818 base::RunLoop().RunUntilIdle(); | 1824 base::RunLoop().RunUntilIdle(); |
1819 ASSERT_TRUE(NULL == service_->GetExtensionById(good_crx, false)); | 1825 ASSERT_TRUE(NULL == service_->GetExtensionById(good_crx, false)); |
1820 ValidateIntegerPref(good_crx, "location", | 1826 ValidateIntegerPref(good_crx, "location", |
1821 Extension::EXTERNAL_EXTENSION_UNINSTALLED); | 1827 Extension::EXTERNAL_EXTENSION_UNINSTALLED); |
1822 | 1828 |
1823 // Try adding the same extension from an external update URL. | 1829 // Try adding the same extension from an external update URL. |
1824 ASSERT_FALSE(service_->pending_extension_manager()->AddFromExternalUpdateUrl( | 1830 ASSERT_FALSE(service_->pending_extension_manager()->AddFromExternalUpdateUrl( |
1825 good_crx, | 1831 good_crx, |
| 1832 std::string(), |
1826 GURL("http:://fake.update/url"), | 1833 GURL("http:://fake.update/url"), |
1827 Manifest::EXTERNAL_PREF_DOWNLOAD, | 1834 Manifest::EXTERNAL_PREF_DOWNLOAD, |
1828 Extension::NO_FLAGS, | 1835 Extension::NO_FLAGS, |
1829 false)); | 1836 false)); |
1830 | 1837 |
1831 ASSERT_FALSE(service_->pending_extension_manager()->IsIdPending(good_crx)); | 1838 ASSERT_FALSE(service_->pending_extension_manager()->IsIdPending(good_crx)); |
1832 } | 1839 } |
1833 | 1840 |
1834 // Test that uninstalling an external extension does not crash when | 1841 // Test that uninstalling an external extension does not crash when |
1835 // the extension could not be loaded. | 1842 // the extension could not be loaded. |
(...skipping 1354 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3190 #define MAYBE_UpdatePendingExternalCrx DISABLED_UpdatePendingExternalCrx | 3197 #define MAYBE_UpdatePendingExternalCrx DISABLED_UpdatePendingExternalCrx |
3191 #else | 3198 #else |
3192 #define MAYBE_UpdatePendingExternalCrx UpdatePendingExternalCrx | 3199 #define MAYBE_UpdatePendingExternalCrx UpdatePendingExternalCrx |
3193 #endif | 3200 #endif |
3194 // Test updating a pending CRX as if the source is an external extension | 3201 // Test updating a pending CRX as if the source is an external extension |
3195 // with an update URL. In this case we don't know if the CRX is a theme | 3202 // with an update URL. In this case we don't know if the CRX is a theme |
3196 // or not. | 3203 // or not. |
3197 TEST_F(ExtensionServiceTest, MAYBE_UpdatePendingExternalCrx) { | 3204 TEST_F(ExtensionServiceTest, MAYBE_UpdatePendingExternalCrx) { |
3198 InitializeEmptyExtensionService(); | 3205 InitializeEmptyExtensionService(); |
3199 EXPECT_TRUE(service_->pending_extension_manager()->AddFromExternalUpdateUrl( | 3206 EXPECT_TRUE(service_->pending_extension_manager()->AddFromExternalUpdateUrl( |
3200 theme_crx, GURL(), Manifest::EXTERNAL_PREF_DOWNLOAD, Extension::NO_FLAGS, | 3207 theme_crx, |
| 3208 std::string(), |
| 3209 GURL(), |
| 3210 Manifest::EXTERNAL_PREF_DOWNLOAD, |
| 3211 Extension::NO_FLAGS, |
3201 false)); | 3212 false)); |
3202 | 3213 |
3203 EXPECT_TRUE(service_->pending_extension_manager()->IsIdPending(theme_crx)); | 3214 EXPECT_TRUE(service_->pending_extension_manager()->IsIdPending(theme_crx)); |
3204 | 3215 |
3205 base::FilePath path = data_dir_.AppendASCII("theme.crx"); | 3216 base::FilePath path = data_dir_.AppendASCII("theme.crx"); |
3206 UpdateExtension(theme_crx, path, ENABLED); | 3217 UpdateExtension(theme_crx, path, ENABLED); |
3207 | 3218 |
3208 EXPECT_FALSE(service_->pending_extension_manager()->IsIdPending(theme_crx)); | 3219 EXPECT_FALSE(service_->pending_extension_manager()->IsIdPending(theme_crx)); |
3209 | 3220 |
3210 const Extension* extension = service_->GetExtensionById(theme_crx, true); | 3221 const Extension* extension = service_->GetExtensionById(theme_crx, true); |
(...skipping 18 matching lines...) Expand all Loading... |
3229 kGoodInstallSilently)); | 3240 kGoodInstallSilently)); |
3230 | 3241 |
3231 // Check that there is a pending crx, with is_from_sync set to true. | 3242 // Check that there is a pending crx, with is_from_sync set to true. |
3232 const extensions::PendingExtensionInfo* pending_extension_info; | 3243 const extensions::PendingExtensionInfo* pending_extension_info; |
3233 ASSERT_TRUE((pending_extension_info = service_->pending_extension_manager()-> | 3244 ASSERT_TRUE((pending_extension_info = service_->pending_extension_manager()-> |
3234 GetById(kGoodId))); | 3245 GetById(kGoodId))); |
3235 EXPECT_TRUE(pending_extension_info->is_from_sync()); | 3246 EXPECT_TRUE(pending_extension_info->is_from_sync()); |
3236 | 3247 |
3237 // Add a crx to be updated, with the same ID, from a non-sync source. | 3248 // Add a crx to be updated, with the same ID, from a non-sync source. |
3238 EXPECT_TRUE(service_->pending_extension_manager()->AddFromExternalUpdateUrl( | 3249 EXPECT_TRUE(service_->pending_extension_manager()->AddFromExternalUpdateUrl( |
3239 kGoodId, GURL(kGoodUpdateURL), Manifest::EXTERNAL_PREF_DOWNLOAD, | 3250 kGoodId, |
3240 Extension::NO_FLAGS, false)); | 3251 std::string(), |
| 3252 GURL(kGoodUpdateURL), |
| 3253 Manifest::EXTERNAL_PREF_DOWNLOAD, |
| 3254 Extension::NO_FLAGS, |
| 3255 false)); |
3241 | 3256 |
3242 // Check that there is a pending crx, with is_from_sync set to false. | 3257 // Check that there is a pending crx, with is_from_sync set to false. |
3243 ASSERT_TRUE((pending_extension_info = service_->pending_extension_manager()-> | 3258 ASSERT_TRUE((pending_extension_info = service_->pending_extension_manager()-> |
3244 GetById(kGoodId))); | 3259 GetById(kGoodId))); |
3245 EXPECT_FALSE(pending_extension_info->is_from_sync()); | 3260 EXPECT_FALSE(pending_extension_info->is_from_sync()); |
3246 EXPECT_EQ(Manifest::EXTERNAL_PREF_DOWNLOAD, | 3261 EXPECT_EQ(Manifest::EXTERNAL_PREF_DOWNLOAD, |
3247 pending_extension_info->install_source()); | 3262 pending_extension_info->install_source()); |
3248 | 3263 |
3249 // Add a crx to be installed from the update mechanism. | 3264 // Add a crx to be installed from the update mechanism. |
3250 EXPECT_FALSE(service_->pending_extension_manager()->AddFromSync( | 3265 EXPECT_FALSE(service_->pending_extension_manager()->AddFromSync( |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3317 InitializeEmptyExtensionService(); | 3332 InitializeEmptyExtensionService(); |
3318 | 3333 |
3319 base::FilePath path = data_dir_.AppendASCII("good.crx"); | 3334 base::FilePath path = data_dir_.AppendASCII("good.crx"); |
3320 const Extension* good = InstallCRX(path, INSTALL_NEW); | 3335 const Extension* good = InstallCRX(path, INSTALL_NEW); |
3321 ASSERT_EQ(1u, registry_->enabled_extensions().size()); | 3336 ASSERT_EQ(1u, registry_->enabled_extensions().size()); |
3322 | 3337 |
3323 EXPECT_FALSE(good->is_theme()); | 3338 EXPECT_FALSE(good->is_theme()); |
3324 | 3339 |
3325 // Use AddExtensionImpl() as AddFrom*() would balk. | 3340 // Use AddExtensionImpl() as AddFrom*() would balk. |
3326 service_->pending_extension_manager()->AddExtensionImpl( | 3341 service_->pending_extension_manager()->AddExtensionImpl( |
3327 good->id(), extensions::ManifestURL::GetUpdateURL(good), | 3342 good->id(), |
3328 Version(), &IsExtension, kGoodIsFromSync, | 3343 std::string(), |
3329 kGoodInstallSilently, Manifest::INTERNAL, | 3344 extensions::ManifestURL::GetUpdateURL(good), |
3330 Extension::NO_FLAGS, false); | 3345 Version(), |
| 3346 &IsExtension, |
| 3347 kGoodIsFromSync, |
| 3348 kGoodInstallSilently, |
| 3349 Manifest::INTERNAL, |
| 3350 Extension::NO_FLAGS, |
| 3351 false); |
3331 UpdateExtension(good->id(), path, ENABLED); | 3352 UpdateExtension(good->id(), path, ENABLED); |
3332 | 3353 |
3333 EXPECT_FALSE(service_->pending_extension_manager()->IsIdPending(kGoodId)); | 3354 EXPECT_FALSE(service_->pending_extension_manager()->IsIdPending(kGoodId)); |
3334 } | 3355 } |
3335 | 3356 |
3336 #if defined(ENABLE_BLACKLIST_TESTS) | 3357 #if defined(ENABLE_BLACKLIST_TESTS) |
3337 // Tests blacklisting then unblacklisting extensions after the service has been | 3358 // Tests blacklisting then unblacklisting extensions after the service has been |
3338 // initialized. | 3359 // initialized. |
3339 TEST_F(ExtensionServiceTest, SetUnsetBlacklistInPrefs) { | 3360 TEST_F(ExtensionServiceTest, SetUnsetBlacklistInPrefs) { |
3340 extensions::TestBlacklist test_blacklist; | 3361 extensions::TestBlacklist test_blacklist; |
(...skipping 1680 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5021 "{" | 5042 "{" |
5022 " \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\": {" | 5043 " \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\": {" |
5023 " \"external_crx\": \"RandomExtension.crx\"," | 5044 " \"external_crx\": \"RandomExtension.crx\"," |
5024 " \"external_version\": \"1.0\"" | 5045 " \"external_version\": \"1.0\"" |
5025 " }," | 5046 " }," |
5026 " \"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\": {" | 5047 " \"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\": {" |
5027 " \"external_crx\": \"RandomExtension2.crx\"," | 5048 " \"external_crx\": \"RandomExtension2.crx\"," |
5028 " \"external_version\": \"2.0\"" | 5049 " \"external_version\": \"2.0\"" |
5029 " }," | 5050 " }," |
5030 " \"cccccccccccccccccccccccccccccccc\": {" | 5051 " \"cccccccccccccccccccccccccccccccc\": {" |
5031 " \"external_update_url\": \"http:\\\\foo.com/update\"" | 5052 " \"external_update_url\": \"http:\\\\foo.com/update\"," |
| 5053 " \"install_parameter\": \"id\"" |
5032 " }" | 5054 " }" |
5033 "}"; | 5055 "}"; |
5034 EXPECT_EQ(3, visitor.Visit(json_data)); | 5056 EXPECT_EQ(3, visitor.Visit(json_data)); |
5035 | 5057 |
5036 // Simulate an external_extensions.json file that contains seven invalid | 5058 // Simulate an external_extensions.json file that contains seven invalid |
5037 // records: | 5059 // records: |
5038 // - One that is missing the 'external_crx' key. | 5060 // - One that is missing the 'external_crx' key. |
5039 // - One that is missing the 'external_version' key. | 5061 // - One that is missing the 'external_version' key. |
5040 // - One that is specifying .. in the path. | 5062 // - One that is specifying .. in the path. |
5041 // - One that specifies both a file and update URL. | 5063 // - One that specifies both a file and update URL. |
(...skipping 1168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6210 InstallCRX(path, INSTALL_NEW); | 6232 InstallCRX(path, INSTALL_NEW); |
6211 ValidatePrefKeyCount(1u); | 6233 ValidatePrefKeyCount(1u); |
6212 ValidateIntegerPref(good_crx, "state", Extension::ENABLED); | 6234 ValidateIntegerPref(good_crx, "state", Extension::ENABLED); |
6213 ValidateIntegerPref(good_crx, "location", Manifest::INTERNAL); | 6235 ValidateIntegerPref(good_crx, "location", Manifest::INTERNAL); |
6214 | 6236 |
6215 extensions::PendingExtensionManager* pending = | 6237 extensions::PendingExtensionManager* pending = |
6216 service_->pending_extension_manager(); | 6238 service_->pending_extension_manager(); |
6217 EXPECT_FALSE(pending->IsIdPending(kGoodId)); | 6239 EXPECT_FALSE(pending->IsIdPending(kGoodId)); |
6218 | 6240 |
6219 // Skip install when the location is the same. | 6241 // Skip install when the location is the same. |
6220 EXPECT_FALSE( | 6242 EXPECT_FALSE(service_->OnExternalExtensionUpdateUrlFound(kGoodId, |
6221 service_->OnExternalExtensionUpdateUrlFound( | 6243 std::string(), |
6222 kGoodId, GURL(kGoodUpdateURL), Manifest::INTERNAL, | 6244 GURL(kGoodUpdateURL), |
6223 Extension::NO_FLAGS, false)); | 6245 Manifest::INTERNAL, |
| 6246 Extension::NO_FLAGS, |
| 6247 false)); |
6224 EXPECT_FALSE(pending->IsIdPending(kGoodId)); | 6248 EXPECT_FALSE(pending->IsIdPending(kGoodId)); |
6225 | 6249 |
6226 // Install when the location has higher priority. | 6250 // Install when the location has higher priority. |
6227 EXPECT_TRUE( | 6251 EXPECT_TRUE(service_->OnExternalExtensionUpdateUrlFound( |
6228 service_->OnExternalExtensionUpdateUrlFound( | 6252 kGoodId, |
6229 kGoodId, GURL(kGoodUpdateURL), Manifest::EXTERNAL_POLICY_DOWNLOAD, | 6253 std::string(), |
6230 Extension::NO_FLAGS, false)); | 6254 GURL(kGoodUpdateURL), |
| 6255 Manifest::EXTERNAL_POLICY_DOWNLOAD, |
| 6256 Extension::NO_FLAGS, |
| 6257 false)); |
6231 EXPECT_TRUE(pending->IsIdPending(kGoodId)); | 6258 EXPECT_TRUE(pending->IsIdPending(kGoodId)); |
6232 | 6259 |
6233 // Try the low priority again. Should be rejected. | 6260 // Try the low priority again. Should be rejected. |
6234 EXPECT_FALSE( | 6261 EXPECT_FALSE(service_->OnExternalExtensionUpdateUrlFound( |
6235 service_->OnExternalExtensionUpdateUrlFound( | 6262 kGoodId, |
6236 kGoodId, GURL(kGoodUpdateURL), Manifest::EXTERNAL_PREF_DOWNLOAD, | 6263 std::string(), |
6237 Extension::NO_FLAGS, false)); | 6264 GURL(kGoodUpdateURL), |
| 6265 Manifest::EXTERNAL_PREF_DOWNLOAD, |
| 6266 Extension::NO_FLAGS, |
| 6267 false)); |
6238 // The existing record should still be present in the pending extension | 6268 // The existing record should still be present in the pending extension |
6239 // manager. | 6269 // manager. |
6240 EXPECT_TRUE(pending->IsIdPending(kGoodId)); | 6270 EXPECT_TRUE(pending->IsIdPending(kGoodId)); |
6241 | 6271 |
6242 pending->Remove(kGoodId); | 6272 pending->Remove(kGoodId); |
6243 | 6273 |
6244 // Skip install when the location has the same priority as the installed | 6274 // Skip install when the location has the same priority as the installed |
6245 // location. | 6275 // location. |
6246 EXPECT_FALSE(service_->OnExternalExtensionUpdateUrlFound( | 6276 EXPECT_FALSE(service_->OnExternalExtensionUpdateUrlFound(kGoodId, |
6247 kGoodId, GURL(kGoodUpdateURL), Manifest::INTERNAL, | 6277 std::string(), |
6248 Extension::NO_FLAGS, false)); | 6278 GURL(kGoodUpdateURL), |
| 6279 Manifest::INTERNAL, |
| 6280 Extension::NO_FLAGS, |
| 6281 false)); |
6249 | 6282 |
6250 EXPECT_FALSE(pending->IsIdPending(kGoodId)); | 6283 EXPECT_FALSE(pending->IsIdPending(kGoodId)); |
6251 } | 6284 } |
6252 | 6285 |
6253 TEST_F(ExtensionServiceTest, InstallPriorityExternalLocalFile) { | 6286 TEST_F(ExtensionServiceTest, InstallPriorityExternalLocalFile) { |
6254 Version older_version("0.1.0.0"); | 6287 Version older_version("0.1.0.0"); |
6255 Version newer_version("2.0.0.0"); | 6288 Version newer_version("2.0.0.0"); |
6256 | 6289 |
6257 // We don't want the extension to be installed. A path that doesn't | 6290 // We don't want the extension to be installed. A path that doesn't |
6258 // point to a valid CRX ensures this. | 6291 // point to a valid CRX ensures this. |
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6476 EXPECT_FALSE( | 6509 EXPECT_FALSE( |
6477 service_->OnExternalExtensionFileFound( | 6510 service_->OnExternalExtensionFileFound( |
6478 kGoodId, &kVersion123, kInvalidPathToCrx, | 6511 kGoodId, &kVersion123, kInvalidPathToCrx, |
6479 Manifest::EXTERNAL_REGISTRY, kCreationFlags, kDontMarkAcknowledged)); | 6512 Manifest::EXTERNAL_REGISTRY, kCreationFlags, kDontMarkAcknowledged)); |
6480 EXPECT_TRUE((info = pending->GetById(kGoodId))); | 6513 EXPECT_TRUE((info = pending->GetById(kGoodId))); |
6481 EXPECT_TRUE(info->version().IsValid()); | 6514 EXPECT_TRUE(info->version().IsValid()); |
6482 EXPECT_TRUE(info->version().Equals(kVersion124)); | 6515 EXPECT_TRUE(info->version().Equals(kVersion124)); |
6483 | 6516 |
6484 // Adding the latest version from the webstore overrides a specific version. | 6517 // Adding the latest version from the webstore overrides a specific version. |
6485 GURL kUpdateUrl("http://example.com/update"); | 6518 GURL kUpdateUrl("http://example.com/update"); |
6486 EXPECT_TRUE( | 6519 EXPECT_TRUE(service_->OnExternalExtensionUpdateUrlFound( |
6487 service_->OnExternalExtensionUpdateUrlFound( | 6520 kGoodId, |
6488 kGoodId, kUpdateUrl, Manifest::EXTERNAL_POLICY_DOWNLOAD, | 6521 std::string(), |
6489 Extension::NO_FLAGS, false)); | 6522 kUpdateUrl, |
| 6523 Manifest::EXTERNAL_POLICY_DOWNLOAD, |
| 6524 Extension::NO_FLAGS, |
| 6525 false)); |
6490 EXPECT_TRUE((info = pending->GetById(kGoodId))); | 6526 EXPECT_TRUE((info = pending->GetById(kGoodId))); |
6491 EXPECT_FALSE(info->version().IsValid()); | 6527 EXPECT_FALSE(info->version().IsValid()); |
6492 } | 6528 } |
6493 | 6529 |
6494 // This makes sure we can package and install CRX files that use whitelisted | 6530 // This makes sure we can package and install CRX files that use whitelisted |
6495 // permissions. | 6531 // permissions. |
6496 TEST_F(ExtensionServiceTest, InstallWhitelistedExtension) { | 6532 TEST_F(ExtensionServiceTest, InstallWhitelistedExtension) { |
6497 std::string test_id = "hdkklepkcpckhnpgjnmbdfhehckloojk"; | 6533 std::string test_id = "hdkklepkcpckhnpgjnmbdfhehckloojk"; |
6498 CommandLine::ForCurrentProcess()->AppendSwitchASCII( | 6534 CommandLine::ForCurrentProcess()->AppendSwitchASCII( |
6499 switches::kWhitelistedExtensionID, test_id); | 6535 switches::kWhitelistedExtensionID, test_id); |
(...skipping 23 matching lines...) Expand all Loading... |
6523 | 6559 |
6524 // All tests use a single extension. Put the id and path in member vars | 6560 // All tests use a single extension. Put the id and path in member vars |
6525 // that all methods can read. | 6561 // that all methods can read. |
6526 crx_id_ = kGoodId; | 6562 crx_id_ = kGoodId; |
6527 crx_path_ = data_dir_.AppendASCII("good.crx"); | 6563 crx_path_ = data_dir_.AppendASCII("good.crx"); |
6528 } | 6564 } |
6529 | 6565 |
6530 // Fake an external source adding a URL to fetch an extension from. | 6566 // Fake an external source adding a URL to fetch an extension from. |
6531 bool AddPendingExternalPrefUrl() { | 6567 bool AddPendingExternalPrefUrl() { |
6532 return service_->pending_extension_manager()->AddFromExternalUpdateUrl( | 6568 return service_->pending_extension_manager()->AddFromExternalUpdateUrl( |
6533 crx_id_, GURL(), Manifest::EXTERNAL_PREF_DOWNLOAD, | 6569 crx_id_, |
6534 Extension::NO_FLAGS, false); | 6570 std::string(), |
| 6571 GURL(), |
| 6572 Manifest::EXTERNAL_PREF_DOWNLOAD, |
| 6573 Extension::NO_FLAGS, |
| 6574 false); |
6535 } | 6575 } |
6536 | 6576 |
6537 // Fake an external file from external_extensions.json. | 6577 // Fake an external file from external_extensions.json. |
6538 bool AddPendingExternalPrefFileInstall() { | 6578 bool AddPendingExternalPrefFileInstall() { |
6539 Version version("1.0.0.0"); | 6579 Version version("1.0.0.0"); |
6540 | 6580 |
6541 return service_->OnExternalExtensionFileFound( | 6581 return service_->OnExternalExtensionFileFound( |
6542 crx_id_, &version, crx_path_, Manifest::EXTERNAL_PREF, | 6582 crx_id_, &version, crx_path_, Manifest::EXTERNAL_PREF, |
6543 Extension::NO_FLAGS, false); | 6583 Extension::NO_FLAGS, false); |
6544 } | 6584 } |
6545 | 6585 |
6546 // Fake a request from sync to install an extension. | 6586 // Fake a request from sync to install an extension. |
6547 bool AddPendingSyncInstall() { | 6587 bool AddPendingSyncInstall() { |
6548 return service_->pending_extension_manager()->AddFromSync( | 6588 return service_->pending_extension_manager()->AddFromSync( |
6549 crx_id_, GURL(kGoodUpdateURL), &IsExtension, kGoodInstallSilently); | 6589 crx_id_, GURL(kGoodUpdateURL), &IsExtension, kGoodInstallSilently); |
6550 } | 6590 } |
6551 | 6591 |
6552 // Fake a policy install. | 6592 // Fake a policy install. |
6553 bool AddPendingPolicyInstall() { | 6593 bool AddPendingPolicyInstall() { |
6554 // Get path to the CRX with id |kGoodId|. | 6594 // Get path to the CRX with id |kGoodId|. |
6555 return service_->OnExternalExtensionUpdateUrlFound( | 6595 return service_->OnExternalExtensionUpdateUrlFound( |
6556 crx_id_, GURL(), Manifest::EXTERNAL_POLICY_DOWNLOAD, | 6596 crx_id_, |
6557 Extension::NO_FLAGS, false); | 6597 std::string(), |
| 6598 GURL(), |
| 6599 Manifest::EXTERNAL_POLICY_DOWNLOAD, |
| 6600 Extension::NO_FLAGS, |
| 6601 false); |
6558 } | 6602 } |
6559 | 6603 |
6560 // Get the install source of a pending extension. | 6604 // Get the install source of a pending extension. |
6561 Manifest::Location GetPendingLocation() { | 6605 Manifest::Location GetPendingLocation() { |
6562 const extensions::PendingExtensionInfo* info; | 6606 const extensions::PendingExtensionInfo* info; |
6563 EXPECT_TRUE((info = service_->pending_extension_manager()-> | 6607 EXPECT_TRUE((info = service_->pending_extension_manager()-> |
6564 GetById(crx_id_))); | 6608 GetById(crx_id_))); |
6565 return info->install_source(); | 6609 return info->install_source(); |
6566 } | 6610 } |
6567 | 6611 |
(...skipping 386 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6954 // ReconcileKnownDisabled(). | 6998 // ReconcileKnownDisabled(). |
6955 service_->EnableExtension(good2); | 6999 service_->EnableExtension(good2); |
6956 service_->ReconcileKnownDisabled(); | 7000 service_->ReconcileKnownDisabled(); |
6957 expected_extensions.insert(good2); | 7001 expected_extensions.insert(good2); |
6958 expected_disabled_extensions.erase(good2); | 7002 expected_disabled_extensions.erase(good2); |
6959 | 7003 |
6960 EXPECT_EQ(expected_extensions, registry_->enabled_extensions().GetIDs()); | 7004 EXPECT_EQ(expected_extensions, registry_->enabled_extensions().GetIDs()); |
6961 EXPECT_EQ(expected_disabled_extensions, | 7005 EXPECT_EQ(expected_disabled_extensions, |
6962 registry_->disabled_extensions().GetIDs()); | 7006 registry_->disabled_extensions().GetIDs()); |
6963 } | 7007 } |
OLD | NEW |