15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
25d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// found in the LICENSE file.
45d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/strings/string_number_conversions.h"
61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/common/extensions/manifest_tests/chrome_manifest_test.h"
75d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "extensions/common/error_utils.h"
85d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "extensions/common/manifest_constants.h"
95d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "extensions/common/manifest_handlers/webview_info.h"
105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)using extensions::ErrorUtils;
125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)using extensions::Extension;
135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)using extensions::WebviewInfo;
145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)namespace errors = extensions::manifest_errors;
155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass WebviewAccessibleResourcesManifestTest : public ChromeManifestTest {
175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)};
185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)TEST_F(WebviewAccessibleResourcesManifestTest, WebviewAccessibleResources) {
205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // Manifest version 2 with webview accessible resources specified.
215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  scoped_refptr<Extension> extension1(
225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      LoadAndExpectSuccess("webview_accessible_resources_1.json"));
235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  EXPECT_FALSE(
255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      WebviewInfo::IsResourceWebviewAccessible(extension1.get(),
265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                                               "fail",
275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                                               "a.html"));
285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  EXPECT_FALSE(
295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      WebviewInfo::IsResourceWebviewAccessible(extension1.get(),
305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                                               "fail",
315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                                               "b.html"));
325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  EXPECT_FALSE(
335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      WebviewInfo::IsResourceWebviewAccessible(extension1.get(),
345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                                               "fail",
355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                                               "c.html"));
365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  EXPECT_FALSE(
375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      WebviewInfo::IsResourceWebviewAccessible(extension1.get(),
385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                                               "fail",
395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                                               "d.html"));
405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  EXPECT_TRUE(
425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      WebviewInfo::IsResourceWebviewAccessible(extension1.get(),
435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                                               "foo",
445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                                               "a.html"));
455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  EXPECT_TRUE(
465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      WebviewInfo::IsResourceWebviewAccessible(extension1.get(),
475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                                               "foo",
485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                                               "b.html"));
495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  EXPECT_FALSE(
505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      WebviewInfo::IsResourceWebviewAccessible(extension1.get(),
515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                                               "foo",
525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                                               "c.html"));
535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  EXPECT_FALSE(
545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      WebviewInfo::IsResourceWebviewAccessible(extension1.get(),
555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                                               "foo",
565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                                               "d.html"));
575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  EXPECT_TRUE(
595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      WebviewInfo::IsResourceWebviewAccessible(extension1.get(),
605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                                               "bar",
615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                                               "a.html"));
625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  EXPECT_FALSE(
635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      WebviewInfo::IsResourceWebviewAccessible(extension1.get(),
645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                                               "bar",
655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                                               "b.html"));
665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  EXPECT_TRUE(
675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      WebviewInfo::IsResourceWebviewAccessible(extension1.get(),
685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                                               "bar",
695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                                               "c.html"));
705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  EXPECT_FALSE(
715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      WebviewInfo::IsResourceWebviewAccessible(extension1.get(),
725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                                               "bar",
735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                                               "d.html"));
745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  EXPECT_TRUE(
765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      WebviewInfo::IsResourceWebviewAccessible(extension1.get(),
775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                                               "foobar",
785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                                               "a.html"));
795d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  EXPECT_TRUE(
805d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      WebviewInfo::IsResourceWebviewAccessible(extension1.get(),
815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                                               "foobar",
825d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                                               "b.html"));
835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  EXPECT_TRUE(
845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      WebviewInfo::IsResourceWebviewAccessible(extension1.get(),
855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                                               "foobar",
865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                                               "c.html"));
875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  EXPECT_FALSE(
885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      WebviewInfo::IsResourceWebviewAccessible(extension1.get(),
895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                                               "foobar",
905d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                                               "d.html"));
915d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
925d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
935d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)TEST_F(WebviewAccessibleResourcesManifestTest, InvalidManifest) {
945d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  LoadAndExpectError("webview_accessible_resources_invalid1.json",
955d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                      errors::kInvalidWebview);
965d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  LoadAndExpectError("webview_accessible_resources_invalid2.json",
975d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                      errors::kInvalidWebviewPartitionsList);
985d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  LoadAndExpectError("webview_accessible_resources_invalid3.json",
995d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                      errors::kInvalidWebviewPartitionsList);
1005d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  LoadAndExpectError("webview_accessible_resources_invalid4.json",
1015d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      ErrorUtils::FormatErrorMessage(
1025d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)          errors::kInvalidWebviewPartition, base::IntToString(0)));
1035d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  LoadAndExpectError("webview_accessible_resources_invalid5.json",
1045d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                     errors::kInvalidWebviewPartitionName);
1055d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  LoadAndExpectError("webview_accessible_resources_invalid6.json",
1065d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                     errors::kInvalidWebviewAccessibleResourcesList);
1075d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  LoadAndExpectError("webview_accessible_resources_invalid7.json",
1085d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                     errors::kInvalidWebviewAccessibleResourcesList);
1095d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  LoadAndExpectError("webview_accessible_resources_invalid8.json",
1105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      ErrorUtils::FormatErrorMessage(
1115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)          errors::kInvalidWebviewAccessibleResource, base::IntToString(0)));
1125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
113