| Index: extensions/common/manifest_handlers/sandboxed_page_info.cc
 | 
| diff --git a/extensions/common/manifest_handlers/sandboxed_page_info.cc b/extensions/common/manifest_handlers/sandboxed_page_info.cc
 | 
| index d3c82d5fdc12bb7301e9e6ea4c4dc626e4303e41..c8ad586b8ec130e53a8b57fb879f8b8a7ea82a99 100644
 | 
| --- a/extensions/common/manifest_handlers/sandboxed_page_info.cc
 | 
| +++ b/extensions/common/manifest_handlers/sandboxed_page_info.cc
 | 
| @@ -25,7 +25,8 @@ namespace keys = extensions::manifest_keys;
 | 
|  namespace errors = manifest_errors;
 | 
|  
 | 
|  const char kDefaultSandboxedPageContentSecurityPolicy[] =
 | 
| -    "sandbox allow-scripts allow-forms allow-popups allow-modals";
 | 
| +    "sandbox allow-scripts allow-forms allow-popups allow-modals; "
 | 
| +    "script-src 'self' 'unsafe-inline' 'unsafe-eval'; child-src 'self';";
 | 
|  
 | 
|  static base::LazyInstance<SandboxedPageInfo> g_empty_sandboxed_info =
 | 
|      LAZY_INSTANCE_INITIALIZER;
 | 
| @@ -93,26 +94,31 @@ bool SandboxedPageHandler::Parse(Extension* extension, base::string16* error) {
 | 
|    }
 | 
|  
 | 
|    if (extension->manifest()->HasPath(keys::kSandboxedPagesCSP)) {
 | 
| -    if (!extension->manifest()->GetString(
 | 
| -            keys::kSandboxedPagesCSP,
 | 
| -            &sandboxed_info->content_security_policy)) {
 | 
| +    std::string content_security_policy;
 | 
| +    if (!extension->manifest()->GetString(keys::kSandboxedPagesCSP,
 | 
| +                                          &content_security_policy)) {
 | 
|        *error = base::ASCIIToUTF16(errors::kInvalidSandboxedPagesCSP);
 | 
|        return false;
 | 
|      }
 | 
|  
 | 
| -    if (!csp_validator::ContentSecurityPolicyIsLegal(
 | 
| -            sandboxed_info->content_security_policy) ||
 | 
| +    if (!csp_validator::ContentSecurityPolicyIsLegal(content_security_policy) ||
 | 
|          !csp_validator::ContentSecurityPolicyIsSandboxed(
 | 
| -            sandboxed_info->content_security_policy, extension->GetType())) {
 | 
| +            content_security_policy, extension->GetType())) {
 | 
|        *error = base::ASCIIToUTF16(errors::kInvalidSandboxedPagesCSP);
 | 
|        return false;
 | 
|      }
 | 
| +
 | 
| +    std::vector<InstallWarning> warnings;
 | 
| +    sandboxed_info->content_security_policy =
 | 
| +        csp_validator::GetEffectiveSandoxedPageCSP(content_security_policy,
 | 
| +                                                   &warnings);
 | 
| +    extension->AddInstallWarnings(warnings);
 | 
|    } else {
 | 
|      sandboxed_info->content_security_policy =
 | 
|          kDefaultSandboxedPageContentSecurityPolicy;
 | 
| -    CHECK(csp_validator::ContentSecurityPolicyIsSandboxed(
 | 
| -        sandboxed_info->content_security_policy, extension->GetType()));
 | 
|    }
 | 
| +  CHECK(csp_validator::ContentSecurityPolicyIsSandboxed(
 | 
| +      sandboxed_info->content_security_policy, extension->GetType()));
 | 
|  
 | 
|    extension->SetManifestData(keys::kSandboxedPages, sandboxed_info.release());
 | 
|    return true;
 | 
| 
 |