12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file.
42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/common/extensions/manifest_tests/chrome_manifest_test.h"
65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "extensions/common/manifest_handlers/web_accessible_resources_info.h"
72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h"
82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)using extensions::Extension;
102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)using extensions::WebAccessibleResourcesInfo;
112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass WebAccessibleResourcesManifestTest : public ChromeManifestTest {
132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)};
142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(WebAccessibleResourcesManifestTest, WebAccessibleResources) {
162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Manifest version 2 with web accessible resources specified.
172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  scoped_refptr<Extension> extension1(
182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      LoadAndExpectSuccess("web_accessible_resources_1.json"));
192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Manifest version 2 with no web accessible resources.
212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  scoped_refptr<Extension> extension2(
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      LoadAndExpectSuccess("web_accessible_resources_2.json"));
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Default manifest version with web accessible resources specified.
252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  scoped_refptr<Extension> extension3(
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      LoadAndExpectSuccess("web_accessible_resources_3.json"));
272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Default manifest version with no web accessible resources.
292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  scoped_refptr<Extension> extension4(
302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      LoadAndExpectSuccess("web_accessible_resources_4.json"));
312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Default manifest version with wildcard web accessible resource.
332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  scoped_refptr<Extension> extension5(
342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      LoadAndExpectSuccess("web_accessible_resources_5.json"));
352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Default manifest version with wildcard with specific path and extension.
372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  scoped_refptr<Extension> extension6(
382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      LoadAndExpectSuccess("web_accessible_resources_6.json"));
392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(
41868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)      WebAccessibleResourcesInfo::HasWebAccessibleResources(extension1.get()));
422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_FALSE(
43868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)      WebAccessibleResourcesInfo::HasWebAccessibleResources(extension2.get()));
442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(
45868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)      WebAccessibleResourcesInfo::HasWebAccessibleResources(extension3.get()));
462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_FALSE(
47868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)      WebAccessibleResourcesInfo::HasWebAccessibleResources(extension4.get()));
482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(
49868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)      WebAccessibleResourcesInfo::HasWebAccessibleResources(extension5.get()));
502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(
51868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)      WebAccessibleResourcesInfo::HasWebAccessibleResources(extension6.get()));
522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(WebAccessibleResourcesInfo::IsResourceWebAccessible(
54868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)      extension1.get(), "test"));
552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_FALSE(WebAccessibleResourcesInfo::IsResourceWebAccessible(
56868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)      extension1.get(), "none"));
572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_FALSE(WebAccessibleResourcesInfo::IsResourceWebAccessible(
59868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)      extension2.get(), "test"));
602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(WebAccessibleResourcesInfo::IsResourceWebAccessible(
62868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)      extension3.get(), "test"));
632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_FALSE(WebAccessibleResourcesInfo::IsResourceWebAccessible(
64868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)      extension3.get(), "none"));
652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(WebAccessibleResourcesInfo::IsResourceWebAccessible(
67868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)      extension4.get(), "test"));
682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(WebAccessibleResourcesInfo::IsResourceWebAccessible(
69868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)      extension4.get(), "none"));
702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(WebAccessibleResourcesInfo::IsResourceWebAccessible(
72868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)      extension5.get(), "anything"));
732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(WebAccessibleResourcesInfo::IsResourceWebAccessible(
74868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)      extension5.get(), "path/anything"));
752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(WebAccessibleResourcesInfo::IsResourceWebAccessible(
77868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)      extension6.get(), "path/anything.ext"));
782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_FALSE(WebAccessibleResourcesInfo::IsResourceWebAccessible(
79868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)      extension6.get(), "anything.ext"));
802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_FALSE(WebAccessibleResourcesInfo::IsResourceWebAccessible(
81868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)      extension6.get(), "path/anything.badext"));
822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
83