15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/common/extensions/manifest_tests/chrome_manifest_test.h" 6d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "extensions/common/manifest_constants.h" 7f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "extensions/common/manifest_handlers/csp_info.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace extensions { 11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 12d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)namespace errors = manifest_errors; 13d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass SandboxedPagesManifestTest : public ChromeManifestTest { 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(SandboxedPagesManifestTest, SandboxedPages) { 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Sandboxed pages specified, no custom CSP value. 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<Extension> extension1( 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LoadAndExpectSuccess("sandboxed_pages_valid_1.json")); 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // No sandboxed pages. 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<Extension> extension2( 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LoadAndExpectSuccess("sandboxed_pages_valid_2.json")); 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Sandboxed pages specified with a custom CSP value. 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<Extension> extension3( 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LoadAndExpectSuccess("sandboxed_pages_valid_3.json")); 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Sandboxed pages specified with wildcard, no custom CSP value. 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<Extension> extension4( 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LoadAndExpectSuccess("sandboxed_pages_valid_4.json")); 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Sandboxed pages specified with filename wildcard, no custom CSP value. 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<Extension> extension5( 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LoadAndExpectSuccess("sandboxed_pages_valid_5.json")); 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char kSandboxedCSP[] = "sandbox allow-scripts allow-forms allow-popups"; 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char kDefaultCSP[] = 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "script-src 'self' chrome-extension-resource:; object-src 'self'"; 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char kCustomSandboxedCSP[] = 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "sandbox; script-src: https://www.google.com"; 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ( 45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) kSandboxedCSP, 46868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) CSPInfo::GetResourceContentSecurityPolicy(extension1.get(), "/test")); 47868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_EQ( 48868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) kDefaultCSP, 49868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) CSPInfo::GetResourceContentSecurityPolicy(extension1.get(), "/none")); 50868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_EQ( 51868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) kDefaultCSP, 52868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) CSPInfo::GetResourceContentSecurityPolicy(extension2.get(), "/test")); 53868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_EQ( 54868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) kCustomSandboxedCSP, 55868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) CSPInfo::GetResourceContentSecurityPolicy(extension3.get(), "/test")); 56868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_EQ( 57868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) kDefaultCSP, 58868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) CSPInfo::GetResourceContentSecurityPolicy(extension3.get(), "/none")); 59868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_EQ( 60868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) kSandboxedCSP, 61868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) CSPInfo::GetResourceContentSecurityPolicy(extension4.get(), "/test")); 62868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_EQ(kSandboxedCSP, 63868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) CSPInfo::GetResourceContentSecurityPolicy(extension5.get(), 64868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) "/path/test.ext")); 65868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_EQ( 66868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) kDefaultCSP, 67868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) CSPInfo::GetResourceContentSecurityPolicy(extension5.get(), "/test")); 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Testcase testcases[] = { 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Testcase("sandboxed_pages_invalid_1.json", 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) errors::kInvalidSandboxedPagesList), 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Testcase("sandboxed_pages_invalid_2.json", 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) errors::kInvalidSandboxedPage), 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Testcase("sandboxed_pages_invalid_3.json", 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) errors::kInvalidSandboxedPagesCSP), 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Testcase("sandboxed_pages_invalid_4.json", 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) errors::kInvalidSandboxedPagesCSP), 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Testcase("sandboxed_pages_invalid_5.json", 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) errors::kInvalidSandboxedPagesCSP) 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RunTestcases(testcases, arraysize(testcases), 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TYPE_ERROR); 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 84c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 85c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace extensions 86