#include "chrome/browser/extensions/extension_browsertest.h"
#include "chrome/browser/extensions/extension_host.h"
#include "chrome/browser/extensions/extension_service.h"
-#include "chrome/browser/extensions/extension_system.h"
#include "chrome/browser/extensions/extension_test_message_listener.h"
#include "chrome/browser/extensions/external_policy_loader.h"
#include "chrome/browser/extensions/updater/extension_downloader.h"
#include "content/public/browser/render_view_host.h"
#include "content/public/test/browser_test_utils.h"
#include "content/test/net/url_request_prepackaged_interceptor.h"
+#include "extensions/browser/extension_registry.h"
+#include "extensions/browser/extension_system.h"
+#include "extensions/browser/pref_names.h"
#include "net/url_request/url_fetcher.h"
using extensions::Extension;
+using extensions::ExtensionRegistry;
using extensions::Manifest;
class ExtensionManagementTest : public ExtensionBrowserTest {
// Test that the extension's version from the manifest and reported by the
// background page is correct. This is to ensure that the processes are in
// sync with the Extension.
- ExtensionProcessManager* manager =
+ extensions::ProcessManager* manager =
extensions::ExtensionSystem::Get(browser()->profile())->
process_manager();
extensions::ExtensionHost* ext_host =
// Tests that disabling and re-enabling an extension works.
IN_PROC_BROWSER_TEST_F(ExtensionManagementTest, DisableEnable) {
- ExtensionProcessManager* manager =
+ extensions::ProcessManager* manager =
extensions::ExtensionSystem::Get(browser()->profile())->process_manager();
- ExtensionService* service = extensions::ExtensionSystem::Get(
- browser()->profile())->extension_service();
- const size_t size_before = service->extensions()->size();
+ ExtensionRegistry* registry = ExtensionRegistry::Get(browser()->profile());
+ const size_t size_before = registry->enabled_extensions().size();
// Load an extension, expect the background page to be available.
std::string extension_id = "bjafgdebaacbbbecmhlhpofkepfkgcpa";
test_data_dir_.AppendASCII("good").AppendASCII("Extensions")
.AppendASCII(extension_id)
.AppendASCII("1.0")));
- ASSERT_EQ(size_before + 1, service->extensions()->size());
- EXPECT_EQ(0u, service->disabled_extensions()->size());
+ ASSERT_EQ(size_before + 1, registry->enabled_extensions().size());
+ EXPECT_EQ(0u, registry->disabled_extensions().size());
EXPECT_TRUE(manager->GetBackgroundHostForExtension(extension_id));
// After disabling, the background page should go away.
DisableExtension(extension_id);
- EXPECT_EQ(size_before, service->extensions()->size());
- EXPECT_EQ(1u, service->disabled_extensions()->size());
+ EXPECT_EQ(size_before, registry->enabled_extensions().size());
+ EXPECT_EQ(1u, registry->disabled_extensions().size());
EXPECT_FALSE(manager->GetBackgroundHostForExtension(extension_id));
// And bring it back.
EnableExtension(extension_id);
- EXPECT_EQ(size_before + 1, service->extensions()->size());
- EXPECT_EQ(0u, service->disabled_extensions()->size());
+ EXPECT_EQ(size_before + 1, registry->enabled_extensions().size());
+ EXPECT_EQ(0u, registry->disabled_extensions().size());
EXPECT_TRUE(manager->GetBackgroundHostForExtension(extension_id));
}
ExtensionTestMessageListener listener1("v1 installed", false);
ExtensionService* service = extensions::ExtensionSystem::Get(
browser()->profile())->extension_service();
- const size_t size_before = service->extensions()->size();
- ASSERT_TRUE(service->disabled_extensions()->is_empty());
+ ExtensionRegistry* registry = ExtensionRegistry::Get(browser()->profile());
+ const size_t size_before = registry->enabled_extensions().size();
+ ASSERT_TRUE(registry->disabled_extensions().is_empty());
const Extension* extension =
InstallExtension(basedir.AppendASCII("v1.crx"), 1);
ASSERT_TRUE(extension);
listener1.WaitUntilSatisfied();
- ASSERT_EQ(size_before + 1, service->extensions()->size());
+ ASSERT_EQ(size_before + 1, registry->enabled_extensions().size());
ASSERT_EQ("ogjcoiohnmldgjemafoockdghcjciccf", extension->id());
ASSERT_EQ("1.0", extension->VersionString());
service->updater()->CheckNow(params);
ASSERT_TRUE(WaitForExtensionInstall());
listener2.WaitUntilSatisfied();
- ASSERT_EQ(size_before + 1, service->extensions()->size());
+ ASSERT_EQ(size_before + 1, registry->enabled_extensions().size());
extension = service->GetExtensionById(
"ogjcoiohnmldgjemafoockdghcjciccf", false);
ASSERT_TRUE(extension);
"ogjcoiohnmldgjemafoockdghcjciccf"));
// Make sure the extension state is the same as before.
- ASSERT_EQ(size_before + 1, service->extensions()->size());
+ ASSERT_EQ(size_before + 1, registry->enabled_extensions().size());
extension = service->GetExtensionById(
"ogjcoiohnmldgjemafoockdghcjciccf", false);
ASSERT_TRUE(extension);
ExtensionTestMessageListener listener1("v1 installed", false);
ExtensionService* service = extensions::ExtensionSystem::Get(
browser()->profile())->extension_service();
- const size_t enabled_size_before = service->extensions()->size();
- const size_t disabled_size_before = service->disabled_extensions()->size();
+ ExtensionRegistry* registry = ExtensionRegistry::Get(browser()->profile());
+ const size_t enabled_size_before = registry->enabled_extensions().size();
+ const size_t disabled_size_before = registry->disabled_extensions().size();
const Extension* extension =
InstallExtension(basedir.AppendASCII("v1.crx"), 1);
ASSERT_TRUE(extension);
listener1.WaitUntilSatisfied();
DisableExtension(extension->id());
- ASSERT_EQ(disabled_size_before + 1, service->disabled_extensions()->size());
- ASSERT_EQ(enabled_size_before, service->extensions()->size());
+ ASSERT_EQ(disabled_size_before + 1, registry->disabled_extensions().size());
+ ASSERT_EQ(enabled_size_before, registry->enabled_extensions().size());
ASSERT_EQ("ogjcoiohnmldgjemafoockdghcjciccf", extension->id());
ASSERT_EQ("1.0", extension->VersionString());
// is still disabled.
service->updater()->CheckNow(params);
ASSERT_TRUE(WaitForExtensionInstall());
- ASSERT_EQ(disabled_size_before + 1, service->disabled_extensions()->size());
- ASSERT_EQ(enabled_size_before, service->extensions()->size());
+ ASSERT_EQ(disabled_size_before + 1, registry->disabled_extensions().size());
+ ASSERT_EQ(enabled_size_before, registry->enabled_extensions().size());
extension = service->GetExtensionById(
"ogjcoiohnmldgjemafoockdghcjciccf", true);
ASSERT_TRUE(extension);
notification_listener.Reset();
}
-// TODO(linux_aura) http://crbug.com/163931
-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(USE_AURA)
-#define MAYBE_ExternalUrlUpdate DISABLED_ExternalUrlUpdate
-#else
-#define MAYBE_ExternalUrlUpdate ExternalUrlUpdate
-#endif
-
-IN_PROC_BROWSER_TEST_F(ExtensionManagementTest, MAYBE_ExternalUrlUpdate) {
+IN_PROC_BROWSER_TEST_F(ExtensionManagementTest, ExternalUrlUpdate) {
ExtensionService* service = extensions::ExtensionSystem::Get(
browser()->profile())->extension_service();
const char* kExtensionId = "ogjcoiohnmldgjemafoockdghcjciccf";
interceptor.SetResponseIgnoreQuery(GURL("http://localhost/autoupdate/v2.crx"),
basedir.AppendASCII("v2.crx"));
- const size_t size_before = service->extensions()->size();
- ASSERT_TRUE(service->disabled_extensions()->is_empty());
+ ExtensionRegistry* registry = ExtensionRegistry::Get(browser()->profile());
+ const size_t size_before = registry->enabled_extensions().size();
+ ASSERT_TRUE(registry->disabled_extensions().is_empty());
extensions::PendingExtensionManager* pending_extension_manager =
service->pending_extension_manager();
// Run autoupdate and make sure version 2 of the extension was installed.
service->updater()->CheckNow(params);
ASSERT_TRUE(WaitForExtensionInstall());
- ASSERT_EQ(size_before + 1, service->extensions()->size());
+ ASSERT_EQ(size_before + 1, registry->enabled_extensions().size());
const Extension* extension = service->GetExtensionById(kExtensionId, false);
ASSERT_TRUE(extension);
ASSERT_EQ("2.0", extension->VersionString());
interceptor.SetResponseIgnoreQuery(GURL("http://localhost/autoupdate/v2.crx"),
basedir.AppendASCII("v2.crx"));
- const size_t size_before = service->extensions()->size();
- ASSERT_TRUE(service->disabled_extensions()->is_empty());
+ ExtensionRegistry* registry = ExtensionRegistry::Get(browser()->profile());
+ const size_t size_before = registry->enabled_extensions().size();
+ ASSERT_TRUE(registry->disabled_extensions().is_empty());
PrefService* prefs = browser()->profile()->GetPrefs();
const base::DictionaryValue* forcelist =
- prefs->GetDictionary(prefs::kExtensionInstallForceList);
+ prefs->GetDictionary(extensions::pref_names::kInstallForceList);
ASSERT_TRUE(forcelist->empty()) << kForceInstallNotEmptyHelp;
{
// Set the policy as a user preference and fire notification observers.
- DictionaryPrefUpdate pref_update(prefs, prefs::kExtensionInstallForceList);
+ DictionaryPrefUpdate pref_update(prefs,
+ extensions::pref_names::kInstallForceList);
base::DictionaryValue* forcelist = pref_update.Get();
extensions::ExternalPolicyLoader::AddExtension(
forcelist, kExtensionId, "http://localhost/autoupdate/manifest");
// Check if the extension got installed.
ASSERT_TRUE(WaitForExtensionInstall());
- ASSERT_EQ(size_before + 1, service->extensions()->size());
+ ASSERT_EQ(size_before + 1, registry->enabled_extensions().size());
const Extension* extension = service->GetExtensionById(kExtensionId, false);
ASSERT_TRUE(extension);
ASSERT_EQ("2.0", extension->VersionString());
// Try to disable and uninstall the extension which should fail.
DisableExtension(kExtensionId);
- EXPECT_EQ(size_before + 1, service->extensions()->size());
- EXPECT_EQ(0u, service->disabled_extensions()->size());
+ EXPECT_EQ(size_before + 1, registry->enabled_extensions().size());
+ EXPECT_EQ(0u, registry->disabled_extensions().size());
UninstallExtension(kExtensionId);
- EXPECT_EQ(size_before + 1, service->extensions()->size());
- EXPECT_EQ(0u, service->disabled_extensions()->size());
+ EXPECT_EQ(size_before + 1, registry->enabled_extensions().size());
+ EXPECT_EQ(0u, registry->disabled_extensions().size());
// Now try to disable it through the management api, again failing.
ExtensionTestMessageListener listener1("ready", false);
ASSERT_TRUE(LoadExtension(
test_data_dir_.AppendASCII("management/uninstall_extension")));
ASSERT_TRUE(listener1.WaitUntilSatisfied());
- EXPECT_EQ(size_before + 2, service->extensions()->size());
- EXPECT_EQ(0u, service->disabled_extensions()->size());
+ EXPECT_EQ(size_before + 2, registry->enabled_extensions().size());
+ EXPECT_EQ(0u, registry->disabled_extensions().size());
// Check that emptying the list triggers uninstall.
- prefs->ClearPref(prefs::kExtensionInstallForceList);
- EXPECT_EQ(size_before + 1, service->extensions()->size());
+ prefs->ClearPref(extensions::pref_names::kInstallForceList);
+ EXPECT_EQ(size_before + 1, registry->enabled_extensions().size());
EXPECT_FALSE(service->GetExtensionById(kExtensionId, true));
}
MAYBE_PolicyOverridesUserInstall) {
ExtensionService* service = extensions::ExtensionSystem::Get(
browser()->profile())->extension_service();
+ ExtensionRegistry* registry = ExtensionRegistry::Get(browser()->profile());
const char* kExtensionId = "ogjcoiohnmldgjemafoockdghcjciccf";
extensions::ExtensionUpdater::CheckParams params;
service->updater()->set_default_check_params(params);
- const size_t size_before = service->extensions()->size();
+ const size_t size_before = registry->enabled_extensions().size();
base::FilePath basedir = test_data_dir_.AppendASCII("autoupdate");
- ASSERT_TRUE(service->disabled_extensions()->is_empty());
+ ASSERT_TRUE(registry->disabled_extensions().is_empty());
// Note: This interceptor gets requests on the IO thread.
content::URLLocalHostRequestPrepackagedInterceptor interceptor;
// Check that the policy is initially empty.
PrefService* prefs = browser()->profile()->GetPrefs();
const base::DictionaryValue* forcelist =
- prefs->GetDictionary(prefs::kExtensionInstallForceList);
+ prefs->GetDictionary(extensions::pref_names::kInstallForceList);
ASSERT_TRUE(forcelist->empty()) << kForceInstallNotEmptyHelp;
// User install of the extension.
ASSERT_TRUE(InstallExtension(basedir.AppendASCII("v2.crx"), 1));
- ASSERT_EQ(size_before + 1, service->extensions()->size());
+ ASSERT_EQ(size_before + 1, registry->enabled_extensions().size());
const Extension* extension = service->GetExtensionById(kExtensionId, false);
ASSERT_TRUE(extension);
EXPECT_EQ(Manifest::INTERNAL, extension->location());
// Setup the force install policy. It should override the location.
{
- DictionaryPrefUpdate pref_update(prefs, prefs::kExtensionInstallForceList);
+ DictionaryPrefUpdate pref_update(prefs,
+ extensions::pref_names::kInstallForceList);
extensions::ExternalPolicyLoader::AddExtension(
pref_update.Get(), kExtensionId,
"http://localhost/autoupdate/manifest");
}
ASSERT_TRUE(WaitForExtensionInstall());
- ASSERT_EQ(size_before + 1, service->extensions()->size());
+ ASSERT_EQ(size_before + 1, registry->enabled_extensions().size());
extension = service->GetExtensionById(kExtensionId, false);
ASSERT_TRUE(extension);
EXPECT_EQ(Manifest::EXTERNAL_POLICY_DOWNLOAD, extension->location());
// TODO(joaodasilva): it would be nicer if the extension was kept instead,
// and reverted location to INTERNAL or whatever it was before the policy
// was applied.
- prefs->ClearPref(prefs::kExtensionInstallForceList);
- ASSERT_EQ(size_before, service->extensions()->size());
+ prefs->ClearPref(extensions::pref_names::kInstallForceList);
+ ASSERT_EQ(size_before, registry->enabled_extensions().size());
extension = service->GetExtensionById(kExtensionId, true);
EXPECT_FALSE(extension);
// User install again, but have it disabled too before setting the policy.
ASSERT_TRUE(InstallExtension(basedir.AppendASCII("v2.crx"), 1));
- ASSERT_EQ(size_before + 1, service->extensions()->size());
+ ASSERT_EQ(size_before + 1, registry->enabled_extensions().size());
extension = service->GetExtensionById(kExtensionId, false);
ASSERT_TRUE(extension);
EXPECT_EQ(Manifest::INTERNAL, extension->location());
EXPECT_TRUE(service->IsExtensionEnabled(kExtensionId));
- EXPECT_TRUE(service->disabled_extensions()->is_empty());
+ EXPECT_TRUE(registry->disabled_extensions().is_empty());
DisableExtension(kExtensionId);
- EXPECT_EQ(1u, service->disabled_extensions()->size());
+ EXPECT_EQ(1u, registry->disabled_extensions().size());
extension = service->GetExtensionById(kExtensionId, true);
EXPECT_TRUE(extension);
EXPECT_FALSE(service->IsExtensionEnabled(kExtensionId));
// Install the policy again. It should overwrite the extension's location,
// and force enable it too.
{
- DictionaryPrefUpdate pref_update(prefs, prefs::kExtensionInstallForceList);
+ DictionaryPrefUpdate pref_update(prefs,
+ extensions::pref_names::kInstallForceList);
base::DictionaryValue* forcelist = pref_update.Get();
extensions::ExternalPolicyLoader::AddExtension(
forcelist, kExtensionId, "http://localhost/autoupdate/manifest");
}
ASSERT_TRUE(WaitForExtensionInstall());
- ASSERT_EQ(size_before + 1, service->extensions()->size());
+ ASSERT_EQ(size_before + 1, registry->enabled_extensions().size());
extension = service->GetExtensionById(kExtensionId, false);
ASSERT_TRUE(extension);
EXPECT_EQ(Manifest::EXTERNAL_POLICY_DOWNLOAD, extension->location());
EXPECT_TRUE(service->IsExtensionEnabled(kExtensionId));
- EXPECT_TRUE(service->disabled_extensions()->is_empty());
+ EXPECT_TRUE(registry->disabled_extensions().is_empty());
}