| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/bind.h" | 5 #include "base/bind.h" |
| 6 #include "base/bind_helpers.h" | 6 #include "base/bind_helpers.h" |
| 7 #include "base/memory/ref_counted.h" | 7 #include "base/memory/ref_counted.h" |
| 8 #include "base/stl_util.h" | 8 #include "base/stl_util.h" |
| 9 #include "chrome/browser/extensions/autoupdate_interceptor.h" | 9 #include "chrome/browser/extensions/autoupdate_interceptor.h" |
| 10 #include "chrome/browser/extensions/extension_browsertest.h" | 10 #include "chrome/browser/extensions/extension_browsertest.h" |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 116 | 116 |
| 117 #if defined(OS_WIN) | 117 #if defined(OS_WIN) |
| 118 // http://crbug.com/141913 | 118 // http://crbug.com/141913 |
| 119 #define MAYBE_InstallRequiresConfirm FLAKY_InstallRequiresConfirm | 119 #define MAYBE_InstallRequiresConfirm FLAKY_InstallRequiresConfirm |
| 120 #else | 120 #else |
| 121 #define MAYBE_InstallRequiresConfirm InstallRequiresConfirm | 121 #define MAYBE_InstallRequiresConfirm InstallRequiresConfirm |
| 122 #endif | 122 #endif |
| 123 IN_PROC_BROWSER_TEST_F(ExtensionManagementTest, MAYBE_InstallRequiresConfirm) { | 123 IN_PROC_BROWSER_TEST_F(ExtensionManagementTest, MAYBE_InstallRequiresConfirm) { |
| 124 // Installing the extension without an auto confirming UI should result in | 124 // Installing the extension without an auto confirming UI should result in |
| 125 // it being disabled, since good.crx has permissions that require approval. | 125 // it being disabled, since good.crx has permissions that require approval. |
| 126 ExtensionService* service = browser()->profile()->GetExtensionService(); | 126 ExtensionService* service = extensions::ExtensionSystem::Get( |
| 127 browser()->profile())->extension_service(); |
| 127 std::string id = "ldnnhddmnhbkjipkidpdiheffobcpfmf"; | 128 std::string id = "ldnnhddmnhbkjipkidpdiheffobcpfmf"; |
| 128 ASSERT_FALSE(InstallExtension(test_data_dir_.AppendASCII("good.crx"), 0)); | 129 ASSERT_FALSE(InstallExtension(test_data_dir_.AppendASCII("good.crx"), 0)); |
| 129 ASSERT_TRUE(service->GetExtensionById(id, true)); | 130 ASSERT_TRUE(service->GetExtensionById(id, true)); |
| 130 UninstallExtension(id); | 131 UninstallExtension(id); |
| 131 | 132 |
| 132 // And the install should succeed when the permissions are accepted. | 133 // And the install should succeed when the permissions are accepted. |
| 133 ASSERT_TRUE(InstallExtensionWithUIAutoConfirm( | 134 ASSERT_TRUE(InstallExtensionWithUIAutoConfirm( |
| 134 test_data_dir_.AppendASCII("good.crx"), 1, browser())); | 135 test_data_dir_.AppendASCII("good.crx"), 1, browser())); |
| 135 UninstallExtension(id); | 136 UninstallExtension(id); |
| 136 } | 137 } |
| 137 | 138 |
| 138 // Tests that disabling and re-enabling an extension works. | 139 // Tests that disabling and re-enabling an extension works. |
| 139 IN_PROC_BROWSER_TEST_F(ExtensionManagementTest, DisableEnable) { | 140 IN_PROC_BROWSER_TEST_F(ExtensionManagementTest, DisableEnable) { |
| 140 ExtensionProcessManager* manager = | 141 ExtensionProcessManager* manager = |
| 141 extensions::ExtensionSystem::Get(browser()->profile())->process_manager(); | 142 extensions::ExtensionSystem::Get(browser()->profile())->process_manager(); |
| 142 ExtensionService* service = browser()->profile()->GetExtensionService(); | 143 ExtensionService* service = extensions::ExtensionSystem::Get( |
| 144 browser()->profile())->extension_service(); |
| 143 const size_t size_before = service->extensions()->size(); | 145 const size_t size_before = service->extensions()->size(); |
| 144 | 146 |
| 145 // Load an extension, expect the background page to be available. | 147 // Load an extension, expect the background page to be available. |
| 146 std::string extension_id = "bjafgdebaacbbbecmhlhpofkepfkgcpa"; | 148 std::string extension_id = "bjafgdebaacbbbecmhlhpofkepfkgcpa"; |
| 147 ASSERT_TRUE(LoadExtension( | 149 ASSERT_TRUE(LoadExtension( |
| 148 test_data_dir_.AppendASCII("good").AppendASCII("Extensions") | 150 test_data_dir_.AppendASCII("good").AppendASCII("Extensions") |
| 149 .AppendASCII(extension_id) | 151 .AppendASCII(extension_id) |
| 150 .AppendASCII("1.0"))); | 152 .AppendASCII("1.0"))); |
| 151 ASSERT_EQ(size_before + 1, service->extensions()->size()); | 153 ASSERT_EQ(size_before + 1, service->extensions()->size()); |
| 152 EXPECT_EQ(0u, service->disabled_extensions()->size()); | 154 EXPECT_EQ(0u, service->disabled_extensions()->size()); |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 252 new extensions::AutoUpdateInterceptor()); | 254 new extensions::AutoUpdateInterceptor()); |
| 253 net::URLFetcher::SetEnableInterceptionForTests(true); | 255 net::URLFetcher::SetEnableInterceptionForTests(true); |
| 254 | 256 |
| 255 interceptor->SetResponseOnIOThread("http://localhost/autoupdate/manifest", | 257 interceptor->SetResponseOnIOThread("http://localhost/autoupdate/manifest", |
| 256 basedir.AppendASCII("manifest_v2.xml")); | 258 basedir.AppendASCII("manifest_v2.xml")); |
| 257 interceptor->SetResponseOnIOThread("http://localhost/autoupdate/v2.crx", | 259 interceptor->SetResponseOnIOThread("http://localhost/autoupdate/v2.crx", |
| 258 basedir.AppendASCII("v2.crx")); | 260 basedir.AppendASCII("v2.crx")); |
| 259 | 261 |
| 260 // Install version 1 of the extension. | 262 // Install version 1 of the extension. |
| 261 ExtensionTestMessageListener listener1("v1 installed", false); | 263 ExtensionTestMessageListener listener1("v1 installed", false); |
| 262 ExtensionService* service = browser()->profile()->GetExtensionService(); | 264 ExtensionService* service = extensions::ExtensionSystem::Get( |
| 265 browser()->profile())->extension_service(); |
| 263 const size_t size_before = service->extensions()->size(); | 266 const size_t size_before = service->extensions()->size(); |
| 264 ASSERT_TRUE(service->disabled_extensions()->is_empty()); | 267 ASSERT_TRUE(service->disabled_extensions()->is_empty()); |
| 265 const Extension* extension = | 268 const Extension* extension = |
| 266 InstallExtension(basedir.AppendASCII("v1.crx"), 1); | 269 InstallExtension(basedir.AppendASCII("v1.crx"), 1); |
| 267 ASSERT_TRUE(extension); | 270 ASSERT_TRUE(extension); |
| 268 listener1.WaitUntilSatisfied(); | 271 listener1.WaitUntilSatisfied(); |
| 269 ASSERT_EQ(size_before + 1, service->extensions()->size()); | 272 ASSERT_EQ(size_before + 1, service->extensions()->size()); |
| 270 ASSERT_EQ("ogjcoiohnmldgjemafoockdghcjciccf", extension->id()); | 273 ASSERT_EQ("ogjcoiohnmldgjemafoockdghcjciccf", extension->id()); |
| 271 ASSERT_EQ("1.0", extension->VersionString()); | 274 ASSERT_EQ("1.0", extension->VersionString()); |
| 272 | 275 |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 336 new extensions::AutoUpdateInterceptor()); | 339 new extensions::AutoUpdateInterceptor()); |
| 337 net::URLFetcher::SetEnableInterceptionForTests(true); | 340 net::URLFetcher::SetEnableInterceptionForTests(true); |
| 338 | 341 |
| 339 interceptor->SetResponseOnIOThread("http://localhost/autoupdate/manifest", | 342 interceptor->SetResponseOnIOThread("http://localhost/autoupdate/manifest", |
| 340 basedir.AppendASCII("manifest_v2.xml")); | 343 basedir.AppendASCII("manifest_v2.xml")); |
| 341 interceptor->SetResponseOnIOThread("http://localhost/autoupdate/v2.crx", | 344 interceptor->SetResponseOnIOThread("http://localhost/autoupdate/v2.crx", |
| 342 basedir.AppendASCII("v2.crx")); | 345 basedir.AppendASCII("v2.crx")); |
| 343 | 346 |
| 344 // Install version 1 of the extension. | 347 // Install version 1 of the extension. |
| 345 ExtensionTestMessageListener listener1("v1 installed", false); | 348 ExtensionTestMessageListener listener1("v1 installed", false); |
| 346 ExtensionService* service = browser()->profile()->GetExtensionService(); | 349 ExtensionService* service = extensions::ExtensionSystem::Get( |
| 350 browser()->profile())->extension_service(); |
| 347 const size_t enabled_size_before = service->extensions()->size(); | 351 const size_t enabled_size_before = service->extensions()->size(); |
| 348 const size_t disabled_size_before = service->disabled_extensions()->size(); | 352 const size_t disabled_size_before = service->disabled_extensions()->size(); |
| 349 const Extension* extension = | 353 const Extension* extension = |
| 350 InstallExtension(basedir.AppendASCII("v1.crx"), 1); | 354 InstallExtension(basedir.AppendASCII("v1.crx"), 1); |
| 351 ASSERT_TRUE(extension); | 355 ASSERT_TRUE(extension); |
| 352 listener1.WaitUntilSatisfied(); | 356 listener1.WaitUntilSatisfied(); |
| 353 DisableExtension(extension->id()); | 357 DisableExtension(extension->id()); |
| 354 ASSERT_EQ(disabled_size_before + 1, service->disabled_extensions()->size()); | 358 ASSERT_EQ(disabled_size_before + 1, service->disabled_extensions()->size()); |
| 355 ASSERT_EQ(enabled_size_before, service->extensions()->size()); | 359 ASSERT_EQ(enabled_size_before, service->extensions()->size()); |
| 356 ASSERT_EQ("ogjcoiohnmldgjemafoockdghcjciccf", extension->id()); | 360 ASSERT_EQ("ogjcoiohnmldgjemafoockdghcjciccf", extension->id()); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 383 EnableExtension(extension->id()); | 387 EnableExtension(extension->id()); |
| 384 listener2.WaitUntilSatisfied(); | 388 listener2.WaitUntilSatisfied(); |
| 385 ASSERT_TRUE(notification_listener.started()); | 389 ASSERT_TRUE(notification_listener.started()); |
| 386 ASSERT_TRUE(notification_listener.finished()); | 390 ASSERT_TRUE(notification_listener.finished()); |
| 387 ASSERT_TRUE(ContainsKey(notification_listener.updates(), | 391 ASSERT_TRUE(ContainsKey(notification_listener.updates(), |
| 388 "ogjcoiohnmldgjemafoockdghcjciccf")); | 392 "ogjcoiohnmldgjemafoockdghcjciccf")); |
| 389 notification_listener.Reset(); | 393 notification_listener.Reset(); |
| 390 } | 394 } |
| 391 | 395 |
| 392 IN_PROC_BROWSER_TEST_F(ExtensionManagementTest, ExternalUrlUpdate) { | 396 IN_PROC_BROWSER_TEST_F(ExtensionManagementTest, ExternalUrlUpdate) { |
| 393 ExtensionService* service = browser()->profile()->GetExtensionService(); | 397 ExtensionService* service = extensions::ExtensionSystem::Get( |
| 398 browser()->profile())->extension_service(); |
| 394 const char* kExtensionId = "ogjcoiohnmldgjemafoockdghcjciccf"; | 399 const char* kExtensionId = "ogjcoiohnmldgjemafoockdghcjciccf"; |
| 395 // We don't want autoupdate blacklist checks. | 400 // We don't want autoupdate blacklist checks. |
| 396 extensions::ExtensionUpdater::CheckParams params; | 401 extensions::ExtensionUpdater::CheckParams params; |
| 397 params.check_blacklist = false; | 402 params.check_blacklist = false; |
| 398 | 403 |
| 399 FilePath basedir = test_data_dir_.AppendASCII("autoupdate"); | 404 FilePath basedir = test_data_dir_.AppendASCII("autoupdate"); |
| 400 | 405 |
| 401 // Note: This interceptor gets requests on the IO thread. | 406 // Note: This interceptor gets requests on the IO thread. |
| 402 scoped_refptr<extensions::AutoUpdateInterceptor> interceptor( | 407 scoped_refptr<extensions::AutoUpdateInterceptor> interceptor( |
| 403 new extensions::AutoUpdateInterceptor()); | 408 new extensions::AutoUpdateInterceptor()); |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 468 const char* kForceInstallNotEmptyHelp = | 473 const char* kForceInstallNotEmptyHelp = |
| 469 "A policy may already be controlling the list of force-installed " | 474 "A policy may already be controlling the list of force-installed " |
| 470 "extensions. Please remove all policy settings from your computer " | 475 "extensions. Please remove all policy settings from your computer " |
| 471 "before running tests. E.g. from /etc/chromium/policies Linux or " | 476 "before running tests. E.g. from /etc/chromium/policies Linux or " |
| 472 "from the registry on Windows, etc."; | 477 "from the registry on Windows, etc."; |
| 473 | 478 |
| 474 } | 479 } |
| 475 | 480 |
| 476 // See http://crbug.com/57378 for flakiness details. | 481 // See http://crbug.com/57378 for flakiness details. |
| 477 IN_PROC_BROWSER_TEST_F(ExtensionManagementTest, ExternalPolicyRefresh) { | 482 IN_PROC_BROWSER_TEST_F(ExtensionManagementTest, ExternalPolicyRefresh) { |
| 478 ExtensionService* service = browser()->profile()->GetExtensionService(); | 483 ExtensionService* service = extensions::ExtensionSystem::Get( |
| 484 browser()->profile())->extension_service(); |
| 479 const char* kExtensionId = "ogjcoiohnmldgjemafoockdghcjciccf"; | 485 const char* kExtensionId = "ogjcoiohnmldgjemafoockdghcjciccf"; |
| 480 // We don't want autoupdate blacklist checks. | 486 // We don't want autoupdate blacklist checks. |
| 481 extensions::ExtensionUpdater::CheckParams params; | 487 extensions::ExtensionUpdater::CheckParams params; |
| 482 params.check_blacklist = false; | 488 params.check_blacklist = false; |
| 483 | 489 |
| 484 FilePath basedir = test_data_dir_.AppendASCII("autoupdate"); | 490 FilePath basedir = test_data_dir_.AppendASCII("autoupdate"); |
| 485 | 491 |
| 486 // Note: This interceptor gets requests on the IO thread. | 492 // Note: This interceptor gets requests on the IO thread. |
| 487 scoped_refptr<extensions::AutoUpdateInterceptor> interceptor( | 493 scoped_refptr<extensions::AutoUpdateInterceptor> interceptor( |
| 488 new extensions::AutoUpdateInterceptor()); | 494 new extensions::AutoUpdateInterceptor()); |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 545 | 551 |
| 546 // See http://crbug.com/103371 and http://crbug.com/120640. | 552 // See http://crbug.com/103371 and http://crbug.com/120640. |
| 547 #if defined(ADDRESS_SANITIZER) | 553 #if defined(ADDRESS_SANITIZER) |
| 548 #define MAYBE_PolicyOverridesUserInstall DISABLED_PolicyOverridesUserInstall | 554 #define MAYBE_PolicyOverridesUserInstall DISABLED_PolicyOverridesUserInstall |
| 549 #else | 555 #else |
| 550 #define MAYBE_PolicyOverridesUserInstall PolicyOverridesUserInstall | 556 #define MAYBE_PolicyOverridesUserInstall PolicyOverridesUserInstall |
| 551 #endif | 557 #endif |
| 552 | 558 |
| 553 IN_PROC_BROWSER_TEST_F(ExtensionManagementTest, | 559 IN_PROC_BROWSER_TEST_F(ExtensionManagementTest, |
| 554 MAYBE_PolicyOverridesUserInstall) { | 560 MAYBE_PolicyOverridesUserInstall) { |
| 555 ExtensionService* service = browser()->profile()->GetExtensionService(); | 561 ExtensionService* service = extensions::ExtensionSystem::Get( |
| 562 browser()->profile())->extension_service(); |
| 556 const char* kExtensionId = "ogjcoiohnmldgjemafoockdghcjciccf"; | 563 const char* kExtensionId = "ogjcoiohnmldgjemafoockdghcjciccf"; |
| 557 extensions::ExtensionUpdater::CheckParams params; | 564 extensions::ExtensionUpdater::CheckParams params; |
| 558 params.check_blacklist = false; | 565 params.check_blacklist = false; |
| 559 service->updater()->set_default_check_params(params); | 566 service->updater()->set_default_check_params(params); |
| 560 const size_t size_before = service->extensions()->size(); | 567 const size_t size_before = service->extensions()->size(); |
| 561 FilePath basedir = test_data_dir_.AppendASCII("autoupdate"); | 568 FilePath basedir = test_data_dir_.AppendASCII("autoupdate"); |
| 562 ASSERT_TRUE(service->disabled_extensions()->is_empty()); | 569 ASSERT_TRUE(service->disabled_extensions()->is_empty()); |
| 563 | 570 |
| 564 // Note: This interceptor gets requests on the IO thread. | 571 // Note: This interceptor gets requests on the IO thread. |
| 565 scoped_refptr<extensions::AutoUpdateInterceptor> interceptor( | 572 scoped_refptr<extensions::AutoUpdateInterceptor> interceptor( |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 639 std::string(kExtensionId) + ";http://localhost/autoupdate/manifest")); | 646 std::string(kExtensionId) + ";http://localhost/autoupdate/manifest")); |
| 640 } | 647 } |
| 641 ASSERT_TRUE(WaitForExtensionInstall()); | 648 ASSERT_TRUE(WaitForExtensionInstall()); |
| 642 ASSERT_EQ(size_before + 1, service->extensions()->size()); | 649 ASSERT_EQ(size_before + 1, service->extensions()->size()); |
| 643 extension = service->GetExtensionById(kExtensionId, false); | 650 extension = service->GetExtensionById(kExtensionId, false); |
| 644 ASSERT_TRUE(extension); | 651 ASSERT_TRUE(extension); |
| 645 EXPECT_EQ(Extension::EXTERNAL_POLICY_DOWNLOAD, extension->location()); | 652 EXPECT_EQ(Extension::EXTERNAL_POLICY_DOWNLOAD, extension->location()); |
| 646 EXPECT_TRUE(service->IsExtensionEnabled(kExtensionId)); | 653 EXPECT_TRUE(service->IsExtensionEnabled(kExtensionId)); |
| 647 EXPECT_TRUE(service->disabled_extensions()->is_empty()); | 654 EXPECT_TRUE(service->disabled_extensions()->is_empty()); |
| 648 } | 655 } |
| OLD | NEW |