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