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

Side by Side Diff: chrome/browser/policy/policy_browsertest.cc

Issue 666223005: Don't block shared_module extensions by the policy blacklist. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 6 years, 1 month 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
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 <algorithm> 5 #include <algorithm>
6 #include <string> 6 #include <string>
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/bind_helpers.h" 10 #include "base/bind_helpers.h"
(...skipping 20 matching lines...) Expand all
31 #include "chrome/browser/background/background_contents_service.h" 31 #include "chrome/browser/background/background_contents_service.h"
32 #include "chrome/browser/browser_process.h" 32 #include "chrome/browser/browser_process.h"
33 #include "chrome/browser/chrome_notification_types.h" 33 #include "chrome/browser/chrome_notification_types.h"
34 #include "chrome/browser/content_settings/tab_specific_content_settings.h" 34 #include "chrome/browser/content_settings/tab_specific_content_settings.h"
35 #include "chrome/browser/devtools/devtools_window_testing.h" 35 #include "chrome/browser/devtools/devtools_window_testing.h"
36 #include "chrome/browser/download/download_prefs.h" 36 #include "chrome/browser/download/download_prefs.h"
37 #include "chrome/browser/extensions/api/messaging/message_service.h" 37 #include "chrome/browser/extensions/api/messaging/message_service.h"
38 #include "chrome/browser/extensions/crx_installer.h" 38 #include "chrome/browser/extensions/crx_installer.h"
39 #include "chrome/browser/extensions/extension_management_constants.h" 39 #include "chrome/browser/extensions/extension_management_constants.h"
40 #include "chrome/browser/extensions/extension_service.h" 40 #include "chrome/browser/extensions/extension_service.h"
41 #include "chrome/browser/extensions/shared_module_service.h"
41 #include "chrome/browser/extensions/unpacked_installer.h" 42 #include "chrome/browser/extensions/unpacked_installer.h"
42 #include "chrome/browser/extensions/updater/extension_cache_fake.h" 43 #include "chrome/browser/extensions/updater/extension_cache_fake.h"
43 #include "chrome/browser/extensions/updater/extension_updater.h" 44 #include "chrome/browser/extensions/updater/extension_updater.h"
44 #include "chrome/browser/infobars/infobar_service.h" 45 #include "chrome/browser/infobars/infobar_service.h"
45 #include "chrome/browser/media/media_capture_devices_dispatcher.h" 46 #include "chrome/browser/media/media_capture_devices_dispatcher.h"
46 #include "chrome/browser/media/media_stream_devices_controller.h" 47 #include "chrome/browser/media/media_stream_devices_controller.h"
47 #include "chrome/browser/metrics/variations/variations_service.h" 48 #include "chrome/browser/metrics/variations/variations_service.h"
48 #include "chrome/browser/net/prediction_options.h" 49 #include "chrome/browser/net/prediction_options.h"
49 #include "chrome/browser/net/ssl_config_service_manager.h" 50 #include "chrome/browser/net/ssl_config_service_manager.h"
50 #include "chrome/browser/net/url_request_mock_util.h" 51 #include "chrome/browser/net/url_request_mock_util.h"
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 #include "content/public/common/process_type.h" 118 #include "content/public/common/process_type.h"
118 #include "content/public/common/result_codes.h" 119 #include "content/public/common/result_codes.h"
119 #include "content/public/common/url_constants.h" 120 #include "content/public/common/url_constants.h"
120 #include "content/public/common/webplugininfo.h" 121 #include "content/public/common/webplugininfo.h"
121 #include "content/public/test/browser_test_utils.h" 122 #include "content/public/test/browser_test_utils.h"
122 #include "content/public/test/download_test_observer.h" 123 #include "content/public/test/download_test_observer.h"
123 #include "content/public/test/mock_notification_observer.h" 124 #include "content/public/test/mock_notification_observer.h"
124 #include "content/public/test/test_navigation_observer.h" 125 #include "content/public/test/test_navigation_observer.h"
125 #include "content/public/test/test_utils.h" 126 #include "content/public/test/test_utils.h"
126 #include "extensions/browser/extension_host.h" 127 #include "extensions/browser/extension_host.h"
128 #include "extensions/browser/extension_registry.h"
127 #include "extensions/browser/extension_system.h" 129 #include "extensions/browser/extension_system.h"
128 #include "extensions/browser/process_manager.h" 130 #include "extensions/browser/process_manager.h"
131 #include "extensions/browser/test_extension_registry_observer.h"
129 #include "extensions/browser/uninstall_reason.h" 132 #include "extensions/browser/uninstall_reason.h"
130 #include "extensions/common/constants.h" 133 #include "extensions/common/constants.h"
131 #include "extensions/common/extension.h" 134 #include "extensions/common/extension.h"
132 #include "extensions/common/extension_set.h" 135 #include "extensions/common/extension_set.h"
136 #include "extensions/common/manifest_handlers/shared_module_info.h"
133 #include "net/base/net_errors.h" 137 #include "net/base/net_errors.h"
134 #include "net/base/net_util.h" 138 #include "net/base/net_util.h"
135 #include "net/base/url_util.h" 139 #include "net/base/url_util.h"
136 #include "net/http/http_stream_factory.h" 140 #include "net/http/http_stream_factory.h"
137 #include "net/ssl/ssl_config.h" 141 #include "net/ssl/ssl_config.h"
138 #include "net/ssl/ssl_config_service.h" 142 #include "net/ssl/ssl_config_service.h"
139 #include "net/test/url_request/url_request_failed_job.h" 143 #include "net/test/url_request/url_request_failed_job.h"
140 #include "net/test/url_request/url_request_mock_http_job.h" 144 #include "net/test/url_request/url_request_mock_http_job.h"
141 #include "net/url_request/url_request.h" 145 #include "net/url_request/url_request.h"
142 #include "net/url_request/url_request_filter.h" 146 #include "net/url_request/url_request_filter.h"
(...skipping 1454 matching lines...) Expand 10 before | Expand all | Expand 10 after
1597 // AdBlock was automatically removed. 1601 // AdBlock was automatically removed.
1598 ASSERT_FALSE(service->GetExtensionById(kAdBlockCrxId, true)); 1602 ASSERT_FALSE(service->GetExtensionById(kAdBlockCrxId, true));
1599 1603
1600 // And can't be installed again, nor can good.crx. 1604 // And can't be installed again, nor can good.crx.
1601 EXPECT_FALSE(InstallExtension(kAdBlockCrxName)); 1605 EXPECT_FALSE(InstallExtension(kAdBlockCrxName));
1602 EXPECT_FALSE(service->GetExtensionById(kAdBlockCrxId, true)); 1606 EXPECT_FALSE(service->GetExtensionById(kAdBlockCrxId, true));
1603 EXPECT_FALSE(InstallExtension(kGoodCrxName)); 1607 EXPECT_FALSE(InstallExtension(kGoodCrxName));
1604 EXPECT_FALSE(service->GetExtensionById(kGoodCrxId, true)); 1608 EXPECT_FALSE(service->GetExtensionById(kGoodCrxId, true));
1605 } 1609 }
1606 1610
1611 IN_PROC_BROWSER_TEST_F(PolicyTest, ExtensionInstallBlacklistSharedModules) {
1612 // Verifies that shared_modules are not affected by the blacklist.
1613
1614 const char kImporterId[] = "pchakhniekfaeoddkifplhnfbffomabh";
1615 const char kSharedModuleId[] = "nfgclafboonjbiafbllihiailjlhelpm";
elijahtaylor1 2014/10/22 16:40:01 be careful if you are using a new ID that is not w
Joao da Silva 2014/10/22 18:31:05 Thanks for the tip. I'll fake the channel.
1616
1617 // Verify that the extensions are not installed initially.
1618 ExtensionService* service = extension_service();
1619 ASSERT_FALSE(service->GetExtensionById(kImporterId, true));
1620 ASSERT_FALSE(service->GetExtensionById(kSharedModuleId, true));
1621
1622 // Mock the webstore update URL. This is where the shared module extension
1623 // will be installed from.
1624 base::FilePath update_xml_path = base::FilePath(kTestExtensionsDir)
1625 .Append("policy_shared_module")
1626 .Append("update.xml");
1627 GURL update_xml_url(URLRequestMockHTTPJob::GetMockUrl(update_xml_path));
1628 CommandLine::ForCurrentProcess()->AppendSwitchASCII(
1629 switches::kAppsGalleryUpdateURL, update_xml_url.spec());
1630 ui_test_utils::NavigateToURL(browser(), update_xml_url);
1631
1632 // Blacklist "*" but force-install the importer extension. The shared module
1633 // should be automatically installed too.
1634 base::ListValue blacklist;
1635 blacklist.AppendString("*");
1636 base::ListValue forcelist;
1637 forcelist.AppendString(
1638 base::StringPrintf("%s;%s", kImporterId, update_xml_url.spec().c_str()));
1639 PolicyMap policies;
1640 policies.Set(key::kExtensionInstallBlacklist, POLICY_LEVEL_MANDATORY,
1641 POLICY_SCOPE_USER, blacklist.DeepCopy(), NULL);
1642 policies.Set(key::kExtensionInstallForcelist, POLICY_LEVEL_MANDATORY,
1643 POLICY_SCOPE_USER, forcelist.DeepCopy(), NULL);
1644
1645 extensions::ExtensionRegistry* registry =
1646 extensions::ExtensionRegistry::Get(browser()->profile());
1647 extensions::TestExtensionRegistryObserver observe_importer(
1648 registry, kImporterId);
1649 extensions::TestExtensionRegistryObserver observe_shared_module(
1650 registry, kSharedModuleId);
1651 UpdateProviderPolicy(policies);
1652 observe_importer.WaitForExtensionLoaded();
1653 observe_shared_module.WaitForExtensionLoaded();
1654
1655 // Verify that both extensions got installed.
1656 const extensions::Extension* importer =
1657 service->GetExtensionById(kImporterId, true);
1658 ASSERT_TRUE(importer);
1659 EXPECT_EQ(kImporterId, importer->id());
1660 const extensions::Extension* shared_module =
1661 service->GetExtensionById(kSharedModuleId, true);
1662 ASSERT_TRUE(shared_module);
1663 EXPECT_EQ(kSharedModuleId, shared_module->id());
1664 EXPECT_TRUE(shared_module->is_shared_module());
1665
1666 // Verify the dependency.
1667 scoped_ptr<extensions::ExtensionSet> set =
1668 service->shared_module_service()->GetDependentExtensions(shared_module);
1669 ASSERT_TRUE(set);
1670 EXPECT_EQ(1u, set->size());
1671 EXPECT_TRUE(set->Contains(importer->id()));
1672
1673 std::vector<extensions::SharedModuleInfo::ImportInfo> imports =
1674 extensions::SharedModuleInfo::GetImports(importer);
1675 ASSERT_EQ(1u, imports.size());
1676 EXPECT_EQ(kSharedModuleId, imports[0].extension_id);
1677 }
1678
1607 IN_PROC_BROWSER_TEST_F(PolicyTest, ExtensionInstallWhitelist) { 1679 IN_PROC_BROWSER_TEST_F(PolicyTest, ExtensionInstallWhitelist) {
1608 // Verifies that the whitelist can open exceptions to the blacklist. 1680 // Verifies that the whitelist can open exceptions to the blacklist.
1609 ExtensionService* service = extension_service(); 1681 ExtensionService* service = extension_service();
1610 ASSERT_FALSE(service->GetExtensionById(kGoodCrxId, true)); 1682 ASSERT_FALSE(service->GetExtensionById(kGoodCrxId, true));
1611 ASSERT_FALSE(service->GetExtensionById(kAdBlockCrxId, true)); 1683 ASSERT_FALSE(service->GetExtensionById(kAdBlockCrxId, true));
1612 base::ListValue blacklist; 1684 base::ListValue blacklist;
1613 blacklist.Append(new base::StringValue("*")); 1685 blacklist.Append(new base::StringValue("*"));
1614 base::ListValue whitelist; 1686 base::ListValue whitelist;
1615 whitelist.Append(new base::StringValue(kGoodCrxId)); 1687 whitelist.Append(new base::StringValue(kGoodCrxId));
1616 PolicyMap policies; 1688 PolicyMap policies;
(...skipping 1732 matching lines...) Expand 10 before | Expand all | Expand 10 after
3349 EXPECT_TRUE(content::ExecuteScriptAndExtractBool( 3421 EXPECT_TRUE(content::ExecuteScriptAndExtractBool(
3350 browser2->tab_strip_model()->GetActiveWebContents(), 3422 browser2->tab_strip_model()->GetActiveWebContents(),
3351 "domAutomationController.send(window.showModalDialog !== undefined);", 3423 "domAutomationController.send(window.showModalDialog !== undefined);",
3352 &result)); 3424 &result));
3353 EXPECT_TRUE(result); 3425 EXPECT_TRUE(result);
3354 } 3426 }
3355 3427
3356 #endif // !defined(CHROME_OS) 3428 #endif // !defined(CHROME_OS)
3357 3429
3358 } // namespace policy 3430 } // namespace policy
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698