extension_manifests_web_accessible_resources_unittest.cc revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
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)
52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/common/extensions/extension_manifest_constants.h"
62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/common/extensions/manifest_tests/extension_manifest_test.h"
72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/common/extensions/web_accessible_resources_handler.h"
8bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch#include "testing/gtest/include/gtest/gtest.h"
92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)using extensions::Extension;
112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)using extensions::WebAccessibleResourcesInfo;
122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class WebAccessibleResourcesManifestTest : public ExtensionManifestTest {
142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void SetUp() OVERRIDE {
152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    ExtensionManifestTest::SetUp();
162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    (new extensions::WebAccessibleResourcesHandler)->Register();
172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)};
192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(WebAccessibleResourcesManifestTest, WebAccessibleResources) {
212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Manifest version 2 with web accessible resources specified.
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  scoped_refptr<Extension> extension1(
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      LoadAndExpectSuccess("web_accessible_resources_1.json"));
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Manifest version 2 with no web accessible resources.
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  scoped_refptr<Extension> extension2(
272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      LoadAndExpectSuccess("web_accessible_resources_2.json"));
282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Default manifest version with web accessible resources specified.
302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  scoped_refptr<Extension> extension3(
312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      LoadAndExpectSuccess("web_accessible_resources_3.json"));
322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Default manifest version with no web accessible resources.
342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  scoped_refptr<Extension> extension4(
352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      LoadAndExpectSuccess("web_accessible_resources_4.json"));
362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Default manifest version with wildcard web accessible resource.
38  scoped_refptr<Extension> extension5(
39      LoadAndExpectSuccess("web_accessible_resources_5.json"));
40
41  // Default manifest version with wildcard with specific path and extension.
42  scoped_refptr<Extension> extension6(
43      LoadAndExpectSuccess("web_accessible_resources_6.json"));
44
45  EXPECT_TRUE(
46      WebAccessibleResourcesInfo::HasWebAccessibleResources(extension1));
47  EXPECT_FALSE(
48      WebAccessibleResourcesInfo::HasWebAccessibleResources(extension2));
49  EXPECT_TRUE(
50      WebAccessibleResourcesInfo::HasWebAccessibleResources(extension3));
51  EXPECT_FALSE(
52      WebAccessibleResourcesInfo::HasWebAccessibleResources(extension4));
53  EXPECT_TRUE(
54      WebAccessibleResourcesInfo::HasWebAccessibleResources(extension5));
55  EXPECT_TRUE(
56      WebAccessibleResourcesInfo::HasWebAccessibleResources(extension6));
57
58  EXPECT_TRUE(WebAccessibleResourcesInfo::IsResourceWebAccessible(
59      extension1, "test"));
60  EXPECT_FALSE(WebAccessibleResourcesInfo::IsResourceWebAccessible(
61      extension1, "none"));
62
63  EXPECT_FALSE(WebAccessibleResourcesInfo::IsResourceWebAccessible(
64      extension2, "test"));
65
66  EXPECT_TRUE(WebAccessibleResourcesInfo::IsResourceWebAccessible(
67      extension3, "test"));
68  EXPECT_FALSE(WebAccessibleResourcesInfo::IsResourceWebAccessible(
69      extension3, "none"));
70
71  EXPECT_TRUE(WebAccessibleResourcesInfo::IsResourceWebAccessible(
72      extension4, "test"));
73  EXPECT_TRUE(WebAccessibleResourcesInfo::IsResourceWebAccessible(
74      extension4, "none"));
75
76  EXPECT_TRUE(WebAccessibleResourcesInfo::IsResourceWebAccessible(
77      extension5, "anything"));
78  EXPECT_TRUE(WebAccessibleResourcesInfo::IsResourceWebAccessible(
79      extension5, "path/anything"));
80
81  EXPECT_TRUE(WebAccessibleResourcesInfo::IsResourceWebAccessible(
82      extension6, "path/anything.ext"));
83  EXPECT_FALSE(WebAccessibleResourcesInfo::IsResourceWebAccessible(
84      extension6, "anything.ext"));
85  EXPECT_FALSE(WebAccessibleResourcesInfo::IsResourceWebAccessible(
86      extension6, "path/anything.badext"));
87}
88