Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(62)

Side by Side Diff: chrome/browser/extensions/api/management/management_browsertest.cc

Issue 12093036: Move Extension Location and Type enums to Manifest, and move InstallWarning to its own file. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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/extension_browsertest.h" 9 #include "chrome/browser/extensions/extension_browsertest.h"
10 #include "chrome/browser/extensions/extension_host.h" 10 #include "chrome/browser/extensions/extension_host.h"
(...skipping 11 matching lines...) Expand all
22 #include "chrome/common/pref_names.h" 22 #include "chrome/common/pref_names.h"
23 #include "chrome/common/url_constants.h" 23 #include "chrome/common/url_constants.h"
24 #include "chrome/test/base/ui_test_utils.h" 24 #include "chrome/test/base/ui_test_utils.h"
25 #include "content/public/browser/notification_service.h" 25 #include "content/public/browser/notification_service.h"
26 #include "content/public/browser/render_view_host.h" 26 #include "content/public/browser/render_view_host.h"
27 #include "content/public/test/browser_test_utils.h" 27 #include "content/public/test/browser_test_utils.h"
28 #include "content/test/net/url_request_prepackaged_interceptor.h" 28 #include "content/test/net/url_request_prepackaged_interceptor.h"
29 #include "net/url_request/url_fetcher.h" 29 #include "net/url_request/url_fetcher.h"
30 30
31 using extensions::Extension; 31 using extensions::Extension;
32 using extensions::Manifest;
32 33
33 class ExtensionManagementTest : public ExtensionBrowserTest { 34 class ExtensionManagementTest : public ExtensionBrowserTest {
34 protected: 35 protected:
35 // Helper method that returns whether the extension is at the given version. 36 // Helper method that returns whether the extension is at the given version.
36 // This calls version(), which must be defined in the extension's bg page, 37 // This calls version(), which must be defined in the extension's bg page,
37 // as well as asking the extension itself. 38 // as well as asking the extension itself.
38 // 39 //
39 // Note that 'version' here means something different than the version field 40 // Note that 'version' here means something different than the version field
40 // in the extension's manifest. We use the version as reported by the 41 // in the extension's manifest. We use the version as reported by the
41 // background page to test how overinstalling crx files with the same 42 // background page to test how overinstalling crx files with the same
(...skipping 384 matching lines...) Expand 10 before | Expand all | Expand 10 after
426 extensions::PendingExtensionManager* pending_extension_manager = 427 extensions::PendingExtensionManager* pending_extension_manager =
427 service->pending_extension_manager(); 428 service->pending_extension_manager();
428 429
429 // The code that reads external_extensions.json uses this method to inform 430 // The code that reads external_extensions.json uses this method to inform
430 // the ExtensionService of an extension to download. Using the real code 431 // the ExtensionService of an extension to download. Using the real code
431 // is race-prone, because instantating the ExtensionService starts a read 432 // is race-prone, because instantating the ExtensionService starts a read
432 // of external_extensions.json before this test function starts. 433 // of external_extensions.json before this test function starts.
433 434
434 EXPECT_TRUE(pending_extension_manager->AddFromExternalUpdateUrl( 435 EXPECT_TRUE(pending_extension_manager->AddFromExternalUpdateUrl(
435 kExtensionId, GURL("http://localhost/autoupdate/manifest"), 436 kExtensionId, GURL("http://localhost/autoupdate/manifest"),
436 Extension::EXTERNAL_PREF_DOWNLOAD)); 437 Manifest::EXTERNAL_PREF_DOWNLOAD));
437 438
438 // Run autoupdate and make sure version 2 of the extension was installed. 439 // Run autoupdate and make sure version 2 of the extension was installed.
439 service->updater()->CheckNow(params); 440 service->updater()->CheckNow(params);
440 ASSERT_TRUE(WaitForExtensionInstall()); 441 ASSERT_TRUE(WaitForExtensionInstall());
441 ASSERT_EQ(size_before + 1, service->extensions()->size()); 442 ASSERT_EQ(size_before + 1, service->extensions()->size());
442 const Extension* extension = service->GetExtensionById(kExtensionId, false); 443 const Extension* extension = service->GetExtensionById(kExtensionId, false);
443 ASSERT_TRUE(extension); 444 ASSERT_TRUE(extension);
444 ASSERT_EQ("2.0", extension->VersionString()); 445 ASSERT_EQ("2.0", extension->VersionString());
445 446
446 // Uninstalling the extension should set a pref that keeps the extension from 447 // Uninstalling the extension should set a pref that keeps the extension from
447 // being installed again the next time external_extensions.json is read. 448 // being installed again the next time external_extensions.json is read.
448 449
449 UninstallExtension(kExtensionId); 450 UninstallExtension(kExtensionId);
450 451
451 extensions::ExtensionPrefs* extension_prefs = service->extension_prefs(); 452 extensions::ExtensionPrefs* extension_prefs = service->extension_prefs();
452 EXPECT_TRUE(extension_prefs->IsExternalExtensionUninstalled(kExtensionId)) 453 EXPECT_TRUE(extension_prefs->IsExternalExtensionUninstalled(kExtensionId))
453 << "Uninstalling should set kill bit on externaly installed extension."; 454 << "Uninstalling should set kill bit on externaly installed extension.";
454 455
455 // Try to install the extension again from an external source. It should fail 456 // Try to install the extension again from an external source. It should fail
456 // because of the killbit. 457 // because of the killbit.
457 EXPECT_FALSE(pending_extension_manager->AddFromExternalUpdateUrl( 458 EXPECT_FALSE(pending_extension_manager->AddFromExternalUpdateUrl(
458 kExtensionId, GURL("http://localhost/autoupdate/manifest"), 459 kExtensionId, GURL("http://localhost/autoupdate/manifest"),
459 Extension::EXTERNAL_PREF_DOWNLOAD)); 460 Manifest::EXTERNAL_PREF_DOWNLOAD));
460 EXPECT_FALSE(pending_extension_manager->IsIdPending(kExtensionId)) 461 EXPECT_FALSE(pending_extension_manager->IsIdPending(kExtensionId))
461 << "External reinstall of a killed extension shouldn't work."; 462 << "External reinstall of a killed extension shouldn't work.";
462 EXPECT_TRUE(extension_prefs->IsExternalExtensionUninstalled(kExtensionId)) 463 EXPECT_TRUE(extension_prefs->IsExternalExtensionUninstalled(kExtensionId))
463 << "External reinstall of a killed extension should leave it killed."; 464 << "External reinstall of a killed extension should leave it killed.";
464 465
465 // Installing from non-external source. 466 // Installing from non-external source.
466 ASSERT_TRUE(InstallExtension(basedir.AppendASCII("v2.crx"), 1)); 467 ASSERT_TRUE(InstallExtension(basedir.AppendASCII("v2.crx"), 1));
467 468
468 EXPECT_FALSE(extension_prefs->IsExternalExtensionUninstalled(kExtensionId)) 469 EXPECT_FALSE(extension_prefs->IsExternalExtensionUninstalled(kExtensionId))
469 << "Reinstalling should clear the kill bit."; 470 << "Reinstalling should clear the kill bit.";
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
521 extensions::ExternalPolicyLoader::AddExtension( 522 extensions::ExternalPolicyLoader::AddExtension(
522 forcelist, kExtensionId, "http://localhost/autoupdate/manifest"); 523 forcelist, kExtensionId, "http://localhost/autoupdate/manifest");
523 } 524 }
524 525
525 // Check if the extension got installed. 526 // Check if the extension got installed.
526 ASSERT_TRUE(WaitForExtensionInstall()); 527 ASSERT_TRUE(WaitForExtensionInstall());
527 ASSERT_EQ(size_before + 1, service->extensions()->size()); 528 ASSERT_EQ(size_before + 1, service->extensions()->size());
528 const Extension* extension = service->GetExtensionById(kExtensionId, false); 529 const Extension* extension = service->GetExtensionById(kExtensionId, false);
529 ASSERT_TRUE(extension); 530 ASSERT_TRUE(extension);
530 ASSERT_EQ("2.0", extension->VersionString()); 531 ASSERT_EQ("2.0", extension->VersionString());
531 EXPECT_EQ(Extension::EXTERNAL_POLICY_DOWNLOAD, extension->location()); 532 EXPECT_EQ(Manifest::EXTERNAL_POLICY_DOWNLOAD, extension->location());
532 533
533 // Try to disable and uninstall the extension which should fail. 534 // Try to disable and uninstall the extension which should fail.
534 DisableExtension(kExtensionId); 535 DisableExtension(kExtensionId);
535 EXPECT_EQ(size_before + 1, service->extensions()->size()); 536 EXPECT_EQ(size_before + 1, service->extensions()->size());
536 EXPECT_EQ(0u, service->disabled_extensions()->size()); 537 EXPECT_EQ(0u, service->disabled_extensions()->size());
537 UninstallExtension(kExtensionId); 538 UninstallExtension(kExtensionId);
538 EXPECT_EQ(size_before + 1, service->extensions()->size()); 539 EXPECT_EQ(size_before + 1, service->extensions()->size());
539 EXPECT_EQ(0u, service->disabled_extensions()->size()); 540 EXPECT_EQ(0u, service->disabled_extensions()->size());
540 541
541 // Now try to disable it through the management api, again failing. 542 // Now try to disable it through the management api, again failing.
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
585 PrefService* prefs = browser()->profile()->GetPrefs(); 586 PrefService* prefs = browser()->profile()->GetPrefs();
586 const DictionaryValue* forcelist = 587 const DictionaryValue* forcelist =
587 prefs->GetDictionary(prefs::kExtensionInstallForceList); 588 prefs->GetDictionary(prefs::kExtensionInstallForceList);
588 ASSERT_TRUE(forcelist->empty()) << kForceInstallNotEmptyHelp; 589 ASSERT_TRUE(forcelist->empty()) << kForceInstallNotEmptyHelp;
589 590
590 // User install of the extension. 591 // User install of the extension.
591 ASSERT_TRUE(InstallExtension(basedir.AppendASCII("v2.crx"), 1)); 592 ASSERT_TRUE(InstallExtension(basedir.AppendASCII("v2.crx"), 1));
592 ASSERT_EQ(size_before + 1, service->extensions()->size()); 593 ASSERT_EQ(size_before + 1, service->extensions()->size());
593 const Extension* extension = service->GetExtensionById(kExtensionId, false); 594 const Extension* extension = service->GetExtensionById(kExtensionId, false);
594 ASSERT_TRUE(extension); 595 ASSERT_TRUE(extension);
595 EXPECT_EQ(Extension::INTERNAL, extension->location()); 596 EXPECT_EQ(Manifest::INTERNAL, extension->location());
596 EXPECT_TRUE(service->IsExtensionEnabled(kExtensionId)); 597 EXPECT_TRUE(service->IsExtensionEnabled(kExtensionId));
597 598
598 // Setup the force install policy. It should override the location. 599 // Setup the force install policy. It should override the location.
599 { 600 {
600 DictionaryPrefUpdate pref_update(prefs, prefs::kExtensionInstallForceList); 601 DictionaryPrefUpdate pref_update(prefs, prefs::kExtensionInstallForceList);
601 extensions::ExternalPolicyLoader::AddExtension( 602 extensions::ExternalPolicyLoader::AddExtension(
602 pref_update.Get(), kExtensionId, 603 pref_update.Get(), kExtensionId,
603 "http://localhost/autoupdate/manifest"); 604 "http://localhost/autoupdate/manifest");
604 } 605 }
605 ASSERT_TRUE(WaitForExtensionInstall()); 606 ASSERT_TRUE(WaitForExtensionInstall());
606 ASSERT_EQ(size_before + 1, service->extensions()->size()); 607 ASSERT_EQ(size_before + 1, service->extensions()->size());
607 extension = service->GetExtensionById(kExtensionId, false); 608 extension = service->GetExtensionById(kExtensionId, false);
608 ASSERT_TRUE(extension); 609 ASSERT_TRUE(extension);
609 EXPECT_EQ(Extension::EXTERNAL_POLICY_DOWNLOAD, extension->location()); 610 EXPECT_EQ(Manifest::EXTERNAL_POLICY_DOWNLOAD, extension->location());
610 EXPECT_TRUE(service->IsExtensionEnabled(kExtensionId)); 611 EXPECT_TRUE(service->IsExtensionEnabled(kExtensionId));
611 612
612 // Remove the policy, and verify that the extension was uninstalled. 613 // Remove the policy, and verify that the extension was uninstalled.
613 // TODO(joaodasilva): it would be nicer if the extension was kept instead, 614 // TODO(joaodasilva): it would be nicer if the extension was kept instead,
614 // and reverted location to INTERNAL or whatever it was before the policy 615 // and reverted location to INTERNAL or whatever it was before the policy
615 // was applied. 616 // was applied.
616 prefs->ClearPref(prefs::kExtensionInstallForceList); 617 prefs->ClearPref(prefs::kExtensionInstallForceList);
617 ASSERT_EQ(size_before, service->extensions()->size()); 618 ASSERT_EQ(size_before, service->extensions()->size());
618 extension = service->GetExtensionById(kExtensionId, true); 619 extension = service->GetExtensionById(kExtensionId, true);
619 EXPECT_FALSE(extension); 620 EXPECT_FALSE(extension);
620 621
621 // User install again, but have it disabled too before setting the policy. 622 // User install again, but have it disabled too before setting the policy.
622 ASSERT_TRUE(InstallExtension(basedir.AppendASCII("v2.crx"), 1)); 623 ASSERT_TRUE(InstallExtension(basedir.AppendASCII("v2.crx"), 1));
623 ASSERT_EQ(size_before + 1, service->extensions()->size()); 624 ASSERT_EQ(size_before + 1, service->extensions()->size());
624 extension = service->GetExtensionById(kExtensionId, false); 625 extension = service->GetExtensionById(kExtensionId, false);
625 ASSERT_TRUE(extension); 626 ASSERT_TRUE(extension);
626 EXPECT_EQ(Extension::INTERNAL, extension->location()); 627 EXPECT_EQ(Manifest::INTERNAL, extension->location());
627 EXPECT_TRUE(service->IsExtensionEnabled(kExtensionId)); 628 EXPECT_TRUE(service->IsExtensionEnabled(kExtensionId));
628 EXPECT_TRUE(service->disabled_extensions()->is_empty()); 629 EXPECT_TRUE(service->disabled_extensions()->is_empty());
629 630
630 DisableExtension(kExtensionId); 631 DisableExtension(kExtensionId);
631 EXPECT_EQ(1u, service->disabled_extensions()->size()); 632 EXPECT_EQ(1u, service->disabled_extensions()->size());
632 extension = service->GetExtensionById(kExtensionId, true); 633 extension = service->GetExtensionById(kExtensionId, true);
633 EXPECT_TRUE(extension); 634 EXPECT_TRUE(extension);
634 EXPECT_FALSE(service->IsExtensionEnabled(kExtensionId)); 635 EXPECT_FALSE(service->IsExtensionEnabled(kExtensionId));
635 636
636 // Install the policy again. It should overwrite the extension's location, 637 // Install the policy again. It should overwrite the extension's location,
637 // and force enable it too. 638 // and force enable it too.
638 { 639 {
639 DictionaryPrefUpdate pref_update(prefs, prefs::kExtensionInstallForceList); 640 DictionaryPrefUpdate pref_update(prefs, prefs::kExtensionInstallForceList);
640 DictionaryValue* forcelist = pref_update.Get(); 641 DictionaryValue* forcelist = pref_update.Get();
641 extensions::ExternalPolicyLoader::AddExtension( 642 extensions::ExternalPolicyLoader::AddExtension(
642 forcelist, kExtensionId, "http://localhost/autoupdate/manifest"); 643 forcelist, kExtensionId, "http://localhost/autoupdate/manifest");
643 } 644 }
644 ASSERT_TRUE(WaitForExtensionInstall()); 645 ASSERT_TRUE(WaitForExtensionInstall());
645 ASSERT_EQ(size_before + 1, service->extensions()->size()); 646 ASSERT_EQ(size_before + 1, service->extensions()->size());
646 extension = service->GetExtensionById(kExtensionId, false); 647 extension = service->GetExtensionById(kExtensionId, false);
647 ASSERT_TRUE(extension); 648 ASSERT_TRUE(extension);
648 EXPECT_EQ(Extension::EXTERNAL_POLICY_DOWNLOAD, extension->location()); 649 EXPECT_EQ(Manifest::EXTERNAL_POLICY_DOWNLOAD, extension->location());
649 EXPECT_TRUE(service->IsExtensionEnabled(kExtensionId)); 650 EXPECT_TRUE(service->IsExtensionEnabled(kExtensionId));
650 EXPECT_TRUE(service->disabled_extensions()->is_empty()); 651 EXPECT_TRUE(service->disabled_extensions()->is_empty());
651 } 652 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698