From 3ba901b7a140b8c8a754393a437005f3e2c903e0 Mon Sep 17 00:00:00 2001 From: Karan Bhatia <karandeepb@chromium.org> Date: Thu, 22 Apr 2021 01:48:44 +0000 Subject: [PATCH] Revert "Extensions: Prohibit remote stylesheets by default in MV3." This reverts commit a9d01743d6e64d68ec89bc9b13f50a128adb4073. Reason for revert: We have decided to not disallow remote stylesheets on a platform level for now. Original change's description: > Extensions: Prohibit remote stylesheets by default in MV3. > > This CL hardens the requirements for > "content_security_policy.extension_pages" manifest key in Manifest V3 to > prohibit remote CSS by disallowing insecure values for "style-src". > Since this is a breaking change, allow extensions to specify insecure > (effective) values till M93 and raise an install warning. > > Bug: 1016997 > Change-Id: I5cf67166f35d5cf21e819e852aca774a870acf08 > Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2812500 > Commit-Queue: Karan Bhatia <karandeepb@chromium.org> > Reviewed-by: Devlin <rdevlin.cronin@chromium.org> > Cr-Commit-Position: refs/heads/master@{#872200} Bug: 1016997 Change-Id: Ibad5b532654f27643cef044b8e0a553c44b4f441 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2845455 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Reviewed-by: Devlin <rdevlin.cronin@chromium.org> Commit-Queue: Devlin <rdevlin.cronin@chromium.org> Commit-Queue: Karan Bhatia <karandeepb@chromium.org> Cr-Commit-Position: refs/heads/master@{#874974} --- extensions/common/csp_validator.cc | 34 ++------ extensions/common/csp_validator.h | 3 +- extensions/common/csp_validator_unittest.cc | 80 ++++++++----------- extensions/common/manifest_constants.cc | 2 +- .../common/manifest_handlers/csp_info.cc | 35 +++----- .../manifest_handlers/csp_info_unittest.cc | 49 +++--------- .../manifest_tests/csp_missing_style_src.json | 8 -- .../manifest_tests/csp_safe_style_src.json | 8 -- .../manifest_tests/csp_unsafe_style_src.json | 8 -- .../manifest_tests/sandbox_dictionary_2.json | 2 +- 10 files changed, 69 insertions(+), 160 deletions(-) delete mode 100644 extensions/test/data/manifest_tests/csp_missing_style_src.json delete mode 100644 extensions/test/data/manifest_tests/csp_safe_style_src.json delete mode 100644 extensions/test/data/manifest_tests/csp_unsafe_style_src.json diff --git a/extensions/common/csp_validator.cc b/extensions/common/csp_validator.cc index 7bfefd1f0c0c1..b54e1b7cb9d68 100644 --- a/extensions/common/csp_validator.cc +++ b/extensions/common/csp_validator.cc @@ -21,7 +21,6 @@ #include "base/strings/string_split.h" #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" -#include "base/strings/utf_string_conversions.h" #include "content/public/common/url_constants.h" #include "extensions/common/constants.h" #include "extensions/common/error_utils.h" @@ -41,7 +40,6 @@ const char kObjectSrc[] = "object-src"; const char kFrameSrc[] = "frame-src"; const char kChildSrc[] = "child-src"; const char kWorkerSrc[] = "worker-src"; -const char kStyleSrc[] = "style-src"; const char kSelfSource[] = "'self'"; const char kNoneSource[] = "'none'"; @@ -238,7 +236,7 @@ std::string GetSecureDirectiveValues( std::string source_lower = base::ToLowerASCII(source_literal); bool is_secure_csp_token = false; - // We might need to relax this allowlist over time. + // We might need to relax this whitelist over time. if (source_lower == kSelfSource || source_lower == kNoneSource || source_lower == "'wasm-eval'" || source_lower == "blob:" || source_lower == "filesystem:" || @@ -624,8 +622,7 @@ bool ContentSecurityPolicyIsSandboxed( bool DoesCSPDisallowRemoteCode(const std::string& content_security_policy, base::StringPiece manifest_key, - std::u16string* error, - std::vector<InstallWarning>& warnings) { + std::u16string* error) { DCHECK(error); struct DirectiveMapping { @@ -638,12 +635,13 @@ bool DoesCSPDisallowRemoteCode(const std::string& content_security_policy, DirectiveMapping script_src_mapping({DirectiveStatus({kScriptSrc})}); DirectiveMapping object_src_mapping({DirectiveStatus({kObjectSrc})}); DirectiveMapping worker_src_mapping({DirectiveStatus({kWorkerSrc})}); - DirectiveMapping style_src_mapping({DirectiveStatus({kStyleSrc})}); DirectiveMapping default_src_mapping({DirectiveStatus({kDefaultSrc})}); DirectiveMapping* directive_mappings[] = { - &script_src_mapping, &object_src_mapping, &worker_src_mapping, - &style_src_mapping, &default_src_mapping, + &script_src_mapping, + &object_src_mapping, + &worker_src_mapping, + &default_src_mapping, }; // Populate |directive_mappings|. @@ -679,9 +677,6 @@ bool DoesCSPDisallowRemoteCode(const std::string& content_security_policy, // "object-src" fallbacks to "default-src". fallback_if_necessary(&object_src_mapping, default_src_mapping); - // "style-src" fallbacks to "default-src". - fallback_if_necessary(&style_src_mapping, default_src_mapping); - // "worker-src" fallbacks to "script-src", which might itself fallback to // "default-src". fallback_if_necessary(&worker_src_mapping, script_src_mapping); @@ -724,23 +719,8 @@ bool DoesCSPDisallowRemoteCode(const std::string& content_security_policy, continue; } - std::u16string insecure_directive_error_or_warning; - if (!is_secure_directive(*mapping, &insecure_directive_error_or_warning)) { - // TODO(crbug.com/1016997): Special accommodation for "style-src": Allow - // extensions to not specify a safe value for "style-src" till M93 but - // raise an install warning. - if (mapping == &style_src_mapping) { - std::string warning = - base::UTF16ToASCII(insecure_directive_error_or_warning); - warning += " This will cause an error beginning M93."; - warnings.push_back( - InstallWarning(std::move(warning), manifest_key.as_string())); - continue; - } - - *error = std::move(insecure_directive_error_or_warning); + if (!is_secure_directive(*mapping, error)) return false; - } DCHECK(mapping->directive); secure_directives.insert(mapping->directive); diff --git a/extensions/common/csp_validator.h b/extensions/common/csp_validator.h index 13b6039b3c0e7..c30c5a63ff93f 100644 --- a/extensions/common/csp_validator.h +++ b/extensions/common/csp_validator.h @@ -133,8 +133,7 @@ bool ContentSecurityPolicyIsSandboxed( // If not, populates |error|. bool DoesCSPDisallowRemoteCode(const std::string& content_security_policy, base::StringPiece manifest_key, - std::u16string* error, - std::vector<InstallWarning>& warnings); + std::u16string* error); } // namespace csp_validator diff --git a/extensions/common/csp_validator_unittest.cc b/extensions/common/csp_validator_unittest.cc index 18b58f5dc6312..5646f5be5221e 100644 --- a/extensions/common/csp_validator_unittest.cc +++ b/extensions/common/csp_validator_unittest.cc @@ -14,31 +14,34 @@ #include "extensions/common/manifest_constants.h" #include "testing/gtest/include/gtest/gtest.h" -namespace extensions { -namespace { +using extensions::csp_validator::ContentSecurityPolicyIsLegal; +using extensions::csp_validator::GetEffectiveSandoxedPageCSP; +using extensions::csp_validator::SanitizeContentSecurityPolicy; +using extensions::csp_validator::ContentSecurityPolicyIsSandboxed; +using extensions::csp_validator::OPTIONS_NONE; +using extensions::csp_validator::OPTIONS_ALLOW_UNSAFE_EVAL; +using extensions::csp_validator::OPTIONS_ALLOW_INSECURE_OBJECT_SRC; +using extensions::ErrorUtils; +using extensions::InstallWarning; +using extensions::Manifest; -using csp_validator::ContentSecurityPolicyIsLegal; -using csp_validator::ContentSecurityPolicyIsSandboxed; -using csp_validator::CSPParser; -using csp_validator::GetEffectiveSandoxedPageCSP; -using csp_validator::OPTIONS_ALLOW_INSECURE_OBJECT_SRC; -using csp_validator::OPTIONS_ALLOW_UNSAFE_EVAL; -using csp_validator::OPTIONS_NONE; -using csp_validator::SanitizeContentSecurityPolicy; +namespace { std::string InsecureValueWarning( const std::string& directive, const std::string& value, - const std::string& manifest_key = manifest_keys::kContentSecurityPolicy) { + const std::string& manifest_key = + extensions::manifest_keys::kContentSecurityPolicy) { return ErrorUtils::FormatErrorMessage( - manifest_errors::kInvalidCSPInsecureValueIgnored, manifest_key, value, - directive); + extensions::manifest_errors::kInvalidCSPInsecureValueIgnored, + manifest_key, value, directive); } std::string MissingSecureSrcWarning(const std::string& manifest_key, const std::string& directive) { return ErrorUtils::FormatErrorMessage( - manifest_errors::kInvalidCSPMissingSecureSrc, manifest_key, directive); + extensions::manifest_errors::kInvalidCSPMissingSecureSrc, manifest_key, + directive); } bool CSPEquals(const std::string& csp1, const std::string& csp2) { @@ -59,14 +62,15 @@ struct SanitizedCSPResult { SanitizedCSPResult SanitizeCSP(const std::string& policy, int options) { SanitizedCSPResult result; result.csp = SanitizeContentSecurityPolicy( - policy, manifest_keys::kContentSecurityPolicy, options, &result.warnings); + policy, extensions::manifest_keys::kContentSecurityPolicy, options, + &result.warnings); return result; } SanitizedCSPResult SanitizeSandboxPageCSP(const std::string& policy) { SanitizedCSPResult result; result.csp = GetEffectiveSandoxedPageCSP( - policy, manifest_keys::kSandboxedPagesCSP, &result.warnings); + policy, extensions::manifest_keys::kSandboxedPagesCSP, &result.warnings); return result; } @@ -153,8 +157,8 @@ TEST(ExtensionCSPValidator, IsLegal) { TEST(ExtensionCSPValidator, IsSecure) { auto missing_secure_src_warning = [](const std::string& directive) { - return MissingSecureSrcWarning(manifest_keys::kContentSecurityPolicy, - directive); + return MissingSecureSrcWarning( + extensions::manifest_keys::kContentSecurityPolicy, directive); }; EXPECT_TRUE(CheckCSP(SanitizeCSP(std::string(), OPTIONS_ALLOW_UNSAFE_EVAL), @@ -473,7 +477,7 @@ TEST(ExtensionCSPValidator, EffectiveSandboxedPageCSP) { auto insecure_value_warning = [](const std::string& directive, const std::string& value) { return InsecureValueWarning(directive, value, - manifest_keys::kSandboxedPagesCSP); + extensions::manifest_keys::kSandboxedPagesCSP); }; EXPECT_TRUE(CheckCSP( @@ -535,6 +539,7 @@ TEST(ExtensionCSPValidator, EffectiveSandboxedPageCSP) { insecure_value_warning("child-src", "http://foo.com"))); } +namespace extensions { namespace csp_validator { void PrintTo(const CSPParser::Directive& directive, ::std::ostream* os) { @@ -545,9 +550,10 @@ void PrintTo(const CSPParser::Directive& directive, ::std::ostream* os) { } } // namespace csp_validator +} // namespace extensions TEST(ExtensionCSPValidator, ParseCSP) { - using CSPParser = csp_validator::CSPParser; + using CSPParser = extensions::csp_validator::CSPParser; using DirectiveList = CSPParser::DirectiveList; struct TestCase { @@ -594,8 +600,8 @@ TEST(ExtensionCSPValidator, DoesCSPDisallowRemoteCode) { auto insecure_value_error = [kManifestKey](const std::string& directive, const std::string& value) { return ErrorUtils::FormatErrorMessage( - manifest_errors::kInvalidCSPInsecureValueError, kManifestKey, value, - directive); + extensions::manifest_errors::kInvalidCSPInsecureValueError, + kManifestKey, value, directive); }; auto missing_secure_src_error = [kManifestKey](const std::string& directive) { @@ -605,10 +611,9 @@ TEST(ExtensionCSPValidator, DoesCSPDisallowRemoteCode) { struct { const char* policy; std::string expected_error; // Empty if no error expected. - std::string expected_warning; // Empty if no warning expected. } test_cases[] = { {"frame-src google.com; default-src yahoo.com; script-src 'self'; " - "worker-src; object-src http://localhost:80 'none'; style-src 'self'", + "worker-src; object-src http://localhost:80 'none'", ""}, {"worker-src http://localhost google.com; script-src; object-src 'self'", insecure_value_error("worker-src", "google.com")}, @@ -622,35 +627,16 @@ TEST(ExtensionCSPValidator, DoesCSPDisallowRemoteCode) { {"script-src; worker-src 'self'; default-src google.com", insecure_value_error("object-src", "google.com")}, // "worker-src" falls back to "script-src". - {"script-src 'self'; object-src 'none'; style-src 'none'; default-src " - "google.com", - ""}, + {"script-src 'self'; object-src 'none'; default-src google.com", ""}, {"script-src 'unsafe-eval'; worker-src; default-src;", - insecure_value_error("script-src", "'unsafe-eval'")}, - {"script-src; object-src; style-src 'self';"}, - {"script-src; object-src; style-src google.com;", "", - "'dummy_key': Insecure CSP value \"google.com\" in directive " - "'style-src'. This will cause an error beginning M93."}, - {"script-src; object-src;", "", - "'dummy_key': CSP directive 'style-src' must be specified (either " - "explicitly, or implicitly via 'default-src') and must allow only " - "secure resources. This will cause an error beginning M93."}}; + insecure_value_error("script-src", "'unsafe-eval'")}}; for (const auto& test_case : test_cases) { SCOPED_TRACE(test_case.policy); std::u16string error; - std::vector<InstallWarning> warnings; - bool result = csp_validator::DoesCSPDisallowRemoteCode( - test_case.policy, kManifestKey, &error, warnings); + bool result = extensions::csp_validator::DoesCSPDisallowRemoteCode( + test_case.policy, kManifestKey, &error); EXPECT_EQ(test_case.expected_error.empty(), result); EXPECT_EQ(base::ASCIIToUTF16(test_case.expected_error), error); - EXPECT_EQ(test_case.expected_warning.empty(), warnings.empty()); - if (!warnings.empty()) { - EXPECT_EQ(1u, warnings.size()); - EXPECT_EQ(test_case.expected_warning, warnings[0].message); - EXPECT_EQ(kManifestKey, warnings[0].key); - } } } - -} // namespace extensions diff --git a/extensions/common/manifest_constants.cc b/extensions/common/manifest_constants.cc index d111484349f21..090ab28baac09 100644 --- a/extensions/common/manifest_constants.cc +++ b/extensions/common/manifest_constants.cc @@ -349,7 +349,7 @@ const char kInvalidCSPInsecureValueError[] = "'*': Insecure CSP value \"*\" in directive '*'."; const char kInvalidCSPMissingSecureSrc[] = "'*': CSP directive '*' must be specified (either explicitly, or " - "implicitly via 'default-src') and must allow only secure resources."; + "implicitly via 'default-src') and must whitelist only secure resources."; const char kInvalidDefaultLocale[] = "Invalid value for default locale - locale name must be a string."; const char kInvalidDescription[] = diff --git a/extensions/common/manifest_handlers/csp_info.cc b/extensions/common/manifest_handlers/csp_info.cc index 86cbbd01a9cf5..1b06d06cec875 100644 --- a/extensions/common/manifest_handlers/csp_info.cc +++ b/extensions/common/manifest_handlers/csp_info.cc @@ -7,8 +7,6 @@ #include <memory> #include <utility> -#include "base/check.h" -#include "base/dcheck_is_on.h" #include "base/no_destructor.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" @@ -33,6 +31,9 @@ const char kDefaultContentSecurityPolicy[] = "script-src 'self' blob: filesystem:; " "object-src 'self' blob: filesystem:;"; +// The default secure CSP to be used in order to prevent remote scripts. +const char kDefaultSecureCSP[] = "script-src 'self'; object-src 'self';"; + const char kDefaultSandboxedPageContentSecurityPolicy[] = "sandbox allow-scripts allow-forms allow-popups allow-modals; " "script-src 'self' 'unsafe-inline' 'unsafe-eval'; child-src 'self';"; @@ -92,9 +93,6 @@ const base::Value* GetManifestPath(const Extension* extension, const char* GetDefaultExtensionPagesCSP(Extension* extension, bool secure_only) { - // The default secure CSP used to mitigate against remotely hosted code. - static const char kDefaultSecureCSP[] = - "script-src 'self'; style-src 'self'; object-src 'self';"; if (secure_only) return kDefaultSecureCSP; @@ -122,12 +120,10 @@ const std::string& CSPInfo::GetExtensionPagesCSP(const Extension* extension) { // static const std::string* CSPInfo::GetIsolatedWorldCSP(const Extension& extension) { if (extension.manifest_version() >= 3) { - const char kDefaultMV3IsolatedWorldCSP[] = - "script-src 'self'; object-src 'self';"; // The isolated world will use its own CSP which blocks remotely hosted // code. static const base::NoDestructor<std::string> default_isolated_world_csp( - kDefaultMV3IsolatedWorldCSP); + kDefaultSecureCSP); return default_isolated_world_csp.get(); } @@ -245,19 +241,17 @@ bool CSPHandler::ParseExtensionPagesCSP( return false; } - std::vector<InstallWarning> warnings; if (secure_only) { - if (!csp_validator::DoesCSPDisallowRemoteCode( - content_security_policy_str, manifest_key, error, warnings)) { + if (!csp_validator::DoesCSPDisallowRemoteCode(content_security_policy_str, + manifest_key, error)) { return false; } - - extension->AddInstallWarnings(std::move(warnings)); SetExtensionPagesCSP(extension, manifest_key, secure_only, content_security_policy_str); return true; } + std::vector<InstallWarning> warnings; std::string sanitized_content_security_policy = SanitizeContentSecurityPolicy( content_security_policy_str, manifest_key.as_string(), GetValidatorOptions(extension), &warnings); @@ -303,19 +297,16 @@ bool CSPHandler::SetExtensionPagesCSP(Extension* extension, base::StringPiece manifest_key, bool secure_only, std::string content_security_policy) { -#if DCHECK_IS_ON() if (secure_only) { std::u16string error; - std::vector<InstallWarning> install_warnings; - CHECK(csp_validator::DoesCSPDisallowRemoteCode( - content_security_policy, manifest_key, &error, install_warnings)); + DCHECK(csp_validator::DoesCSPDisallowRemoteCode(content_security_policy, + manifest_key, &error)); } else { - CHECK_EQ(content_security_policy, - SanitizeContentSecurityPolicy( - content_security_policy, manifest_key.as_string(), - GetValidatorOptions(extension), nullptr)); + DCHECK_EQ(content_security_policy, + SanitizeContentSecurityPolicy( + content_security_policy, manifest_key.as_string(), + GetValidatorOptions(extension), nullptr)); } -#endif // DCHECK_IS_ON() extension->SetManifestData( keys::kContentSecurityPolicy, diff --git a/extensions/common/manifest_handlers/csp_info_unittest.cc b/extensions/common/manifest_handlers/csp_info_unittest.cc index 62492c4ba4cd3..a88d88ba7d94d 100644 --- a/extensions/common/manifest_handlers/csp_info_unittest.cc +++ b/extensions/common/manifest_handlers/csp_info_unittest.cc @@ -28,9 +28,7 @@ const char kDefaultSandboxedPageCSP[] = const char kDefaultExtensionPagesCSP[] = "script-src 'self' blob: filesystem:; " "object-src 'self' blob: filesystem:;"; -const char kSecureExtensionPagesCSP[] = - "script-src 'self'; style-src 'self'; object-src 'self';"; -const char kSecureIsolatedWorldCSP[] = "script-src 'self'; object-src 'self';"; +const char kDefaultSecureCSP[] = "script-src 'self'; object-src 'self';"; } // namespace @@ -126,37 +124,17 @@ TEST_F(CSPInfoUnitTest, CSPStringKey) { TEST_F(CSPInfoUnitTest, CSPDictionary_ExtensionPages) { struct { - const char* file_name = nullptr; - const char* csp = nullptr; - const char* expected_warning = nullptr; - } cases[] = { - {"csp_dictionary_valid_1.json", "default-src 'none'"}, - {"csp_dictionary_valid_2.json", - "worker-src 'self'; script-src; default-src 'self'"}, - {"csp_empty_dictionary_valid.json", kSecureExtensionPagesCSP}, - {"csp_unsafe_style_src.json", - "script-src; object-src; default-src google.com", - "'content_security_policy.extension_pages': Insecure CSP value " - "\"google.com\" in directive 'style-src'. This will cause an error " - "beginning M93."}, - {"csp_missing_style_src.json", "script-src; object-src;", - "'content_security_policy.extension_pages': CSP directive 'style-src' " - "must be specified (either explicitly, or implicitly via 'default-src') " - "and must allow only secure resources. This will cause an " - "error beginning M93."}, - {"csp_safe_style_src.json", "script-src; object-src; style-src"}}; + const char* file_name; + const char* csp; + } cases[] = {{"csp_dictionary_valid_1.json", "default-src 'none'"}, + {"csp_dictionary_valid_2.json", + "worker-src 'self'; script-src; default-src 'self'"}, + {"csp_empty_dictionary_valid.json", kDefaultSecureCSP}}; for (const auto& test_case : cases) { SCOPED_TRACE(base::StringPrintf("Testing %s.", test_case.file_name)); - - scoped_refptr<Extension> extension; - if (!test_case.expected_warning) { - extension = LoadAndExpectSuccess(test_case.file_name); - } else { - extension = - LoadAndExpectWarning(test_case.file_name, test_case.expected_warning); - } - + scoped_refptr<Extension> extension = + LoadAndExpectSuccess(test_case.file_name); ASSERT_TRUE(extension.get()); EXPECT_EQ(test_case.csp, CSPInfo::GetExtensionPagesCSP(extension.get())); } @@ -187,8 +165,7 @@ TEST_F(CSPInfoUnitTest, CSPDictionary_Sandbox) { const char kCustomSandboxedCSP[] = "sandbox; script-src 'self'; child-src 'self';"; - const char kCustomExtensionPagesCSP[] = - "script-src; object-src; style-src http://localhost;"; + const char kCustomExtensionPagesCSP[] = "script-src; object-src;"; struct { const char* file_name; @@ -196,7 +173,7 @@ TEST_F(CSPInfoUnitTest, CSPDictionary_Sandbox) { const char* expected_csp; } success_cases[] = { {"sandbox_dictionary_1.json", "/test", kCustomSandboxedCSP}, - {"sandbox_dictionary_1.json", "/index", kSecureExtensionPagesCSP}, + {"sandbox_dictionary_1.json", "/index", kDefaultSecureCSP}, {"sandbox_dictionary_2.json", "/test", kDefaultSandboxedPageCSP}, {"sandbox_dictionary_2.json", "/index", kCustomExtensionPagesCSP}, }; @@ -243,11 +220,11 @@ TEST_F(CSPInfoUnitTest, CSPDictionaryMandatoryForV3) { const std::string* isolated_world_csp = CSPInfo::GetIsolatedWorldCSP(*extension); ASSERT_TRUE(isolated_world_csp); - EXPECT_EQ(kSecureIsolatedWorldCSP, *isolated_world_csp); + EXPECT_EQ(kDefaultSecureCSP, *isolated_world_csp); EXPECT_EQ(kDefaultSandboxedPageCSP, CSPInfo::GetSandboxContentSecurityPolicy(extension.get())); - EXPECT_EQ(kSecureExtensionPagesCSP, + EXPECT_EQ(kDefaultSecureCSP, CSPInfo::GetExtensionPagesCSP(extension.get())); } } diff --git a/extensions/test/data/manifest_tests/csp_missing_style_src.json b/extensions/test/data/manifest_tests/csp_missing_style_src.json deleted file mode 100644 index 85e9cd9f89242..0000000000000 --- a/extensions/test/data/manifest_tests/csp_missing_style_src.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "test", - "version": "0.1", - "manifest_version": 3, - "content_security_policy": { - "extension_pages" : "script-src; object-src;" - } -} diff --git a/extensions/test/data/manifest_tests/csp_safe_style_src.json b/extensions/test/data/manifest_tests/csp_safe_style_src.json deleted file mode 100644 index d5d8ad9787432..0000000000000 --- a/extensions/test/data/manifest_tests/csp_safe_style_src.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "test", - "version": "0.1", - "manifest_version": 3, - "content_security_policy": { - "extension_pages" : "script-src; object-src; style-src" - } -} diff --git a/extensions/test/data/manifest_tests/csp_unsafe_style_src.json b/extensions/test/data/manifest_tests/csp_unsafe_style_src.json deleted file mode 100644 index 49b39409527e0..0000000000000 --- a/extensions/test/data/manifest_tests/csp_unsafe_style_src.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "test", - "version": "0.1", - "manifest_version": 3, - "content_security_policy": { - "extension_pages" : "script-src; object-src; default-src google.com" - } -} diff --git a/extensions/test/data/manifest_tests/sandbox_dictionary_2.json b/extensions/test/data/manifest_tests/sandbox_dictionary_2.json index cd13e3d14d6c5..b370249917fb3 100644 --- a/extensions/test/data/manifest_tests/sandbox_dictionary_2.json +++ b/extensions/test/data/manifest_tests/sandbox_dictionary_2.json @@ -6,6 +6,6 @@ "pages": ["test"] }, "content_security_policy" : { - "extension_pages" : "script-src; object-src; style-src http://localhost;" + "extension_pages" : "script-src; object-src;" } }