permissions_data_unittest.cc revision 424c4d7b64af9d0d8fd9624f381f469654d5e3d2
1f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com// Copyright (c) 2013 The Chromium Authors. All rights reserved. 2f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com// Use of this source code is governed by a BSD-style license that can be 3f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com// found in the LICENSE file. 4f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 5f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com#include <vector> 6f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 7f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com#include "base/command_line.h" 8f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com#include "base/memory/ref_counted.h" 9f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com#include "base/strings/string16.h" 10f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com#include "base/strings/utf_string_conversions.h" 11f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com#include "chrome/common/chrome_version_info.h" 12f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com#include "chrome/common/extensions/extension.h" 13f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com#include "chrome/common/extensions/extension_manifest_constants.h" 14f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com#include "chrome/common/extensions/extension_test_util.h" 15f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com#include "chrome/common/extensions/features/feature_channel.h" 16f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com#include "chrome/common/extensions/permissions/api_permission.h" 17f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com#include "chrome/common/extensions/permissions/permission_set.h" 18f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com#include "chrome/common/extensions/permissions/permissions_data.h" 19f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com#include "chrome/common/extensions/permissions/socket_permission.h" 20f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com#include "content/public/common/socket_permission_request.h" 21f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com#include "extensions/common/error_utils.h" 22f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com#include "extensions/common/id_util.h" 23f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com#include "extensions/common/switches.h" 24f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com#include "extensions/common/url_pattern_set.h" 25f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com#include "testing/gtest/include/gtest/gtest.h" 26f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 27f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.comusing content::SocketPermissionRequest; 28f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.comusing extension_test_util::LoadManifest; 29f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.comusing extension_test_util::LoadManifestUnchecked; 30f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.comusing extension_test_util::LoadManifestStrict; 31f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 32f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.comnamespace extensions { 33f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 34f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.comnamespace { 35f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 36f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.combool CheckSocketPermission( 37f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com scoped_refptr<Extension> extension, 38f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com SocketPermissionRequest::OperationType type, 39f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com const char* host, 40f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com int port) { 41f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com SocketPermission::CheckParam param(type, host, port); 42f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com return PermissionsData::CheckAPIPermissionWithParam( 43f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com extension.get(), APIPermission::kSocket, ¶m); 44f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com} 45f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 46f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com} // namespace 47f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 48f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.comTEST(ExtensionPermissionsTest, EffectiveHostPermissions) { 49f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com scoped_refptr<Extension> extension; 50f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com URLPatternSet hosts; 51f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 52f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com extension = LoadManifest("effective_host_permissions", "empty.json"); 53f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_EQ(0u, 54f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com PermissionsData::GetEffectiveHostPermissions(extension.get()) 55f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com .patterns().size()); 56f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_FALSE(hosts.MatchesURL(GURL("http://www.google.com"))); 57f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_FALSE(PermissionsData::HasEffectiveAccessToAllHosts(extension.get())); 58f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 59f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com extension = LoadManifest("effective_host_permissions", "one_host.json"); 60f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com hosts = PermissionsData::GetEffectiveHostPermissions(extension.get()); 61f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(hosts.MatchesURL(GURL("http://www.google.com"))); 62f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_FALSE(hosts.MatchesURL(GURL("https://www.google.com"))); 63f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_FALSE(PermissionsData::HasEffectiveAccessToAllHosts(extension.get())); 64f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 65f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com extension = LoadManifest("effective_host_permissions", 66f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com "one_host_wildcard.json"); 67f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com hosts = PermissionsData::GetEffectiveHostPermissions(extension.get()); 68f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(hosts.MatchesURL(GURL("http://google.com"))); 69f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(hosts.MatchesURL(GURL("http://foo.google.com"))); 70f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_FALSE(PermissionsData::HasEffectiveAccessToAllHosts(extension.get())); 71f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 72f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com extension = LoadManifest("effective_host_permissions", "two_hosts.json"); 73f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com hosts = PermissionsData::GetEffectiveHostPermissions(extension.get()); 74f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(hosts.MatchesURL(GURL("http://www.google.com"))); 75f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(hosts.MatchesURL(GURL("http://www.reddit.com"))); 76f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_FALSE(PermissionsData::HasEffectiveAccessToAllHosts(extension.get())); 77f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 78f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com extension = LoadManifest("effective_host_permissions", 79f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com "https_not_considered.json"); 80f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com hosts = PermissionsData::GetEffectiveHostPermissions(extension.get()); 81f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(hosts.MatchesURL(GURL("http://google.com"))); 82f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(hosts.MatchesURL(GURL("https://google.com"))); 83f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_FALSE(PermissionsData::HasEffectiveAccessToAllHosts(extension.get())); 84f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 85f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com extension = LoadManifest("effective_host_permissions", 86f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com "two_content_scripts.json"); 87f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com hosts = PermissionsData::GetEffectiveHostPermissions(extension.get()); 88f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(hosts.MatchesURL(GURL("http://google.com"))); 89f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(hosts.MatchesURL(GURL("http://www.reddit.com"))); 90f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(extension->GetActivePermissions()->HasEffectiveAccessToURL( 91f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com GURL("http://www.reddit.com"))); 92f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(hosts.MatchesURL(GURL("http://news.ycombinator.com"))); 93f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(extension->GetActivePermissions()->HasEffectiveAccessToURL( 94f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com GURL("http://news.ycombinator.com"))); 95f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_FALSE(PermissionsData::HasEffectiveAccessToAllHosts(extension.get())); 96f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 97f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com extension = LoadManifest("effective_host_permissions", "all_hosts.json"); 98f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com hosts = PermissionsData::GetEffectiveHostPermissions(extension.get()); 99f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(hosts.MatchesURL(GURL("http://test/"))); 100f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_FALSE(hosts.MatchesURL(GURL("https://test/"))); 101f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(hosts.MatchesURL(GURL("http://www.google.com"))); 102f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(PermissionsData::HasEffectiveAccessToAllHosts(extension.get())); 103f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 104f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com extension = LoadManifest("effective_host_permissions", "all_hosts2.json"); 105f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com hosts = PermissionsData::GetEffectiveHostPermissions(extension.get()); 106f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(hosts.MatchesURL(GURL("http://test/"))); 107f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(hosts.MatchesURL(GURL("http://www.google.com"))); 108f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(PermissionsData::HasEffectiveAccessToAllHosts(extension.get())); 109f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 110f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com extension = LoadManifest("effective_host_permissions", "all_hosts3.json"); 111f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com hosts = PermissionsData::GetEffectiveHostPermissions(extension.get()); 112f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_FALSE(hosts.MatchesURL(GURL("http://test/"))); 113f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(hosts.MatchesURL(GURL("https://test/"))); 114f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(hosts.MatchesURL(GURL("http://www.google.com"))); 115f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(PermissionsData::HasEffectiveAccessToAllHosts(extension.get())); 116f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com} 117f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 118f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.comTEST(ExtensionPermissionsTest, SocketPermissions) { 119f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com // Set feature current channel to appropriate value. 120f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com ScopedCurrentChannel scoped_channel(chrome::VersionInfo::CHANNEL_DEV); 121f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com scoped_refptr<Extension> extension; 122f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com std::string error; 123f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 124f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com extension = LoadManifest("socket_permissions", "empty.json"); 125f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_FALSE(CheckSocketPermission(extension, 126f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com SocketPermissionRequest::TCP_CONNECT, "www.example.com", 80)); 127f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 128f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com extension = LoadManifestUnchecked("socket_permissions", 129f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com "socket1.json", 130f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com Manifest::INTERNAL, Extension::NO_FLAGS, 131f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com &error); 132f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(extension.get() == NULL); 133f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com ASSERT_EQ(ErrorUtils::FormatErrorMessage( 134f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com extension_manifest_errors::kInvalidPermission, "socket"), 135f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com error); 136f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 137f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com extension = LoadManifest("socket_permissions", "socket2.json"); 138f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(CheckSocketPermission(extension, 139f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com SocketPermissionRequest::TCP_CONNECT, "www.example.com", 80)); 140f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_FALSE(CheckSocketPermission( 141f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com extension, SocketPermissionRequest::UDP_BIND, "", 80)); 142f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(CheckSocketPermission( 143f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com extension, SocketPermissionRequest::UDP_BIND, "", 8888)); 144f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 145f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_FALSE(CheckSocketPermission( 146f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com extension, SocketPermissionRequest::UDP_SEND_TO, "example.com", 1900)); 147f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(CheckSocketPermission( 148f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com extension, 149f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com SocketPermissionRequest::UDP_SEND_TO, 150f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com "239.255.255.250", 1900)); 151f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com} 152f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 153f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.comTEST(ExtensionPermissionsTest, GetPermissionMessages_ManyAPIPermissions) { 154f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com scoped_refptr<Extension> extension; 155f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com extension = LoadManifest("permissions", "many-apis.json"); 156f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com std::vector<string16> warnings = 157f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com PermissionsData::GetPermissionMessageStrings(extension.get()); 158f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com ASSERT_EQ(6u, warnings.size()); 159f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_EQ("Access your data on api.flickr.com", 160f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com UTF16ToUTF8(warnings[0])); 161f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_EQ("Read and modify your bookmarks", UTF16ToUTF8(warnings[1])); 162f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_EQ("Detect your physical location", UTF16ToUTF8(warnings[2])); 163f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_EQ("Read and modify your browsing history", UTF16ToUTF8(warnings[3])); 164f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_EQ("Access your tabs and browsing activity", UTF16ToUTF8(warnings[4])); 165f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_EQ("Manage your apps, extensions, and themes", 166f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com UTF16ToUTF8(warnings[5])); 167f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com} 168f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 169f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.comTEST(ExtensionPermissionsTest, GetPermissionMessages_ManyHostsPermissions) { 170f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com scoped_refptr<Extension> extension; 171f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com extension = LoadManifest("permissions", "more-than-3-hosts.json"); 172f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com std::vector<string16> warnings = 173f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com PermissionsData::GetPermissionMessageStrings(extension.get()); 174f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com std::vector<string16> warnings_details = 175f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com PermissionsData::GetPermissionMessageDetailsStrings(extension.get()); 176f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com ASSERT_EQ(1u, warnings.size()); 177f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com ASSERT_EQ(1u, warnings_details.size()); 178f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com#if defined(TOOLKIT_VIEWS) || defined(OS_MACOSX) 179f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_EQ("Access your data on 5 website(s)", UTF16ToUTF8(warnings[0])); 180f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_EQ("- www.a.com\n- www.b.com\n- www.c.com\n- www.d.com\n- www.e.com", 181f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com UTF16ToUTF8(warnings_details[0])); 182f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com#else 183f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com // TODO(finnur): Remove once other platforms support expandable sections. 184f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_EQ("Access your data on www.a.com, www.b.com, and 3 other websites", 185f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com UTF16ToUTF8(warnings[0])); 186f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(warnings_details[0].empty()); 187f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com#endif 188f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com} 189f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 190f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.comTEST(ExtensionPermissionsTest, GetPermissionMessages_LocationApiPermission) { 191f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com scoped_refptr<Extension> extension; 192f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com extension = LoadManifest("permissions", 193f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com "location-api.json", 194f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com Manifest::COMPONENT, 195f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com Extension::NO_FLAGS); 196f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com std::vector<string16> warnings = 197f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com PermissionsData::GetPermissionMessageStrings(extension.get()); 198f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com ASSERT_EQ(1u, warnings.size()); 199f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_EQ("Detect your physical location", UTF16ToUTF8(warnings[0])); 200f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com} 201f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 202f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.comTEST(ExtensionPermissionsTest, GetPermissionMessages_ManyHosts) { 203f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com scoped_refptr<Extension> extension; 204f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com extension = LoadManifest("permissions", "many-hosts.json"); 205f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com std::vector<string16> warnings = 206f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com PermissionsData::GetPermissionMessageStrings(extension.get()); 207f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com ASSERT_EQ(1u, warnings.size()); 208f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_EQ("Access your data on encrypted.google.com and www.google.com", 209f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com UTF16ToUTF8(warnings[0])); 210f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com} 211f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 212f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.comTEST(ExtensionPermissionsTest, GetPermissionMessages_Plugins) { 213f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com scoped_refptr<Extension> extension; 214f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com extension = LoadManifest("permissions", "plugins.json"); 215f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com std::vector<string16> warnings = 216f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com PermissionsData::GetPermissionMessageStrings(extension.get()); 217f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com// We don't parse the plugins key on Chrome OS, so it should not ask for any 218f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com// permissions. 219f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com#if defined(OS_CHROMEOS) 220f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com ASSERT_EQ(0u, warnings.size()); 221f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com#else 222f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com ASSERT_EQ(1u, warnings.size()); 223f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_EQ("Access all data on your computer and the websites you visit", 224f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com UTF16ToUTF8(warnings[0])); 225f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com#endif 226f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com} 227f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 228f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com// Base class for testing the CanExecuteScriptOnPage and CanCaptureVisiblePage 229f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com// methods of Extension for extensions with various permissions. 230f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.comclass ExtensionScriptAndCaptureVisibleTest : public testing::Test { 231f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com protected: 232f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com ExtensionScriptAndCaptureVisibleTest() 233f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com : http_url("http://www.google.com"), 234f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com http_url_with_path("http://www.google.com/index.html"), 235f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com https_url("https://www.google.com"), 236f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com file_url("file:///foo/bar"), 237f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com favicon_url("chrome://favicon/http://www.google.com"), 238f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com extension_url("chrome-extension://" + 239f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com id_util::GenerateIdForPath( 240f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com base::FilePath(FILE_PATH_LITERAL("foo")))), 241f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com settings_url("chrome://settings"), 242f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com about_url("about:flags") { 243f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com urls_.insert(http_url); 244f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com urls_.insert(http_url_with_path); 245f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com urls_.insert(https_url); 246f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com urls_.insert(file_url); 247f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com urls_.insert(favicon_url); 248f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com urls_.insert(extension_url); 249f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com urls_.insert(settings_url); 250f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com urls_.insert(about_url); 251f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com // Ignore the policy delegate for this test. 252f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com PermissionsData::SetPolicyDelegate(NULL); 253f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com } 254f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 255f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com bool AllowedScript(const Extension* extension, const GURL& url, 256f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com const GURL& top_url) { 257f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com return PermissionsData::CanExecuteScriptOnPage( 258f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com extension, url, top_url, -1, NULL, -1, NULL); 259f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com } 260f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 261f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com bool BlockedScript(const Extension* extension, const GURL& url, 262f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com const GURL& top_url) { 263f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com return !PermissionsData::CanExecuteScriptOnPage( 264f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com extension, url, top_url, -1, NULL, -1, NULL); 265f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com } 266f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 267f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com bool Allowed(const Extension* extension, const GURL& url) { 268f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com return Allowed(extension, url, -1); 269f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com } 270f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 271f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com bool Allowed(const Extension* extension, const GURL& url, int tab_id) { 272f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com return (PermissionsData::CanExecuteScriptOnPage( 273f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com extension, url, url, tab_id, NULL, -1, NULL) && 274f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com PermissionsData::CanCaptureVisiblePage( 275f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com extension, url, tab_id, NULL)); 276f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com } 277f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 278f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com bool CaptureOnly(const Extension* extension, const GURL& url) { 279f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com return CaptureOnly(extension, url, -1); 280f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com } 281f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 282f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com bool CaptureOnly(const Extension* extension, const GURL& url, int tab_id) { 283f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com return !PermissionsData::CanExecuteScriptOnPage( 284f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com extension, url, url, tab_id, NULL, -1, NULL) && 285f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com PermissionsData::CanCaptureVisiblePage(extension, url, tab_id, NULL); 286f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com } 287f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 288f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com bool Blocked(const Extension* extension, const GURL& url) { 289f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com return Blocked(extension, url, -1); 290f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com } 291f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 292f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com bool Blocked(const Extension* extension, const GURL& url, int tab_id) { 293f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com return !(PermissionsData::CanExecuteScriptOnPage( 294f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com extension, url, url, tab_id, NULL, -1, NULL) || 295f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com PermissionsData::CanCaptureVisiblePage( 296f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com extension, url, tab_id, NULL)); 297f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com } 298f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 299f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com bool AllowedExclusivelyOnTab( 300f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com const Extension* extension, 301f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com const std::set<GURL>& allowed_urls, 302f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com int tab_id) { 303f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com bool result = true; 304f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com for (std::set<GURL>::iterator it = urls_.begin(); it != urls_.end(); ++it) { 305f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com const GURL& url = *it; 306f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com if (allowed_urls.count(url)) 307f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com result &= Allowed(extension, url, tab_id); 308f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com else 309f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com result &= Blocked(extension, url, tab_id); 310f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com } 311f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com return result; 312f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com } 313f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 314f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com // URLs that are "safe" to provide scripting and capture visible tab access 315f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com // to if the permissions allow it. 316f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com const GURL http_url; 317f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com const GURL http_url_with_path; 318f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com const GURL https_url; 319f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com const GURL file_url; 320f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 321f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com // We should allow host permission but not scripting permission for favicon 322f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com // urls. 323f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com const GURL favicon_url; 324f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 325f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com // URLs that regular extensions should never get access to. 326f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com const GURL extension_url; 327f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com const GURL settings_url; 328f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com const GURL about_url; 329f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 330f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com private: 331f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com // The set of all URLs above. 332f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com std::set<GURL> urls_; 333f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com}; 334f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 335f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.comTEST_F(ExtensionScriptAndCaptureVisibleTest, Permissions) { 336f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com // Test <all_urls> for regular extensions. 337f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com scoped_refptr<Extension> extension = LoadManifestStrict("script_and_capture", 338f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com "extension_regular_all.json"); 339f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 340f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Allowed(extension.get(), http_url)); 341f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Allowed(extension.get(), https_url)); 342f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Blocked(extension.get(), file_url)); 343f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Blocked(extension.get(), settings_url)); 344f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(CaptureOnly(extension.get(), favicon_url)); 345f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Blocked(extension.get(), about_url)); 346f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Blocked(extension.get(), extension_url)); 347f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 348f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com // Test access to iframed content. 349f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com GURL within_extension_url = extension->GetResourceURL("page.html"); 350f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(AllowedScript(extension.get(), http_url, http_url_with_path)); 351f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(AllowedScript(extension.get(), https_url, http_url_with_path)); 352f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(AllowedScript(extension.get(), http_url, within_extension_url)); 353f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(AllowedScript(extension.get(), https_url, within_extension_url)); 354f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(BlockedScript(extension.get(), http_url, extension_url)); 355f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(BlockedScript(extension.get(), https_url, extension_url)); 356f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 357f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_FALSE( 358f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com PermissionsData::HasHostPermission(extension.get(), settings_url)); 359f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_FALSE(PermissionsData::HasHostPermission(extension.get(), about_url)); 360f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(PermissionsData::HasHostPermission(extension.get(), favicon_url)); 361f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 362f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com // Test * for scheme, which implies just the http/https schemes. 363f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com extension = LoadManifestStrict("script_and_capture", 364f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com "extension_wildcard.json"); 365f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Allowed(extension.get(), http_url)); 366f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Allowed(extension.get(), https_url)); 367f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Blocked(extension.get(), settings_url)); 368f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Blocked(extension.get(), about_url)); 369f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Blocked(extension.get(), file_url)); 370f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Blocked(extension.get(), favicon_url)); 371f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com extension = 372f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com LoadManifest("script_and_capture", "extension_wildcard_settings.json"); 373f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Blocked(extension.get(), settings_url)); 374f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 375f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com // Having chrome://*/ should not work for regular extensions. Note that 376f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com // for favicon access, we require the explicit pattern chrome://favicon/*. 377f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com std::string error; 378f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com extension = LoadManifestUnchecked("script_and_capture", 379f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com "extension_wildcard_chrome.json", 380f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com Manifest::INTERNAL, Extension::NO_FLAGS, 381f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com &error); 382f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(extension.get() == NULL); 383f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_EQ( 384f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com ErrorUtils::FormatErrorMessage( 385f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com extension_manifest_errors::kInvalidPermissionScheme, "chrome://*/"), 386f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com error); 387f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 388f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com // Having chrome://favicon/* should not give you chrome://* 389f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com extension = LoadManifestStrict("script_and_capture", 390f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com "extension_chrome_favicon_wildcard.json"); 391f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Blocked(extension.get(), settings_url)); 392f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(CaptureOnly(extension.get(), favicon_url)); 393f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Blocked(extension.get(), about_url)); 394f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(PermissionsData::HasHostPermission(extension.get(), favicon_url)); 395f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 396f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com // Having http://favicon should not give you chrome://favicon 397f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com extension = LoadManifestStrict("script_and_capture", 398f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com "extension_http_favicon.json"); 399f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Blocked(extension.get(), settings_url)); 400f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Blocked(extension.get(), favicon_url)); 401f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 402f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com // Component extensions with <all_urls> should get everything. 403f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com extension = LoadManifest("script_and_capture", "extension_component_all.json", 404f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com Manifest::COMPONENT, Extension::NO_FLAGS); 405f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Allowed(extension.get(), http_url)); 406f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Allowed(extension.get(), https_url)); 407f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Allowed(extension.get(), settings_url)); 408f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Allowed(extension.get(), about_url)); 409f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Allowed(extension.get(), favicon_url)); 410f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(PermissionsData::HasHostPermission(extension.get(), favicon_url)); 411f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 412f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com // Component extensions should only get access to what they ask for. 413f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com extension = LoadManifest("script_and_capture", 414f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com "extension_component_google.json", Manifest::COMPONENT, 415f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com Extension::NO_FLAGS); 416f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Allowed(extension.get(), http_url)); 417f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Blocked(extension.get(), https_url)); 418f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Blocked(extension.get(), file_url)); 419f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Blocked(extension.get(), settings_url)); 420f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Blocked(extension.get(), favicon_url)); 421f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Blocked(extension.get(), about_url)); 422f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Blocked(extension.get(), extension_url)); 423f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_FALSE( 424f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com PermissionsData::HasHostPermission(extension.get(), settings_url)); 425f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com} 426f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 427f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.comTEST_F(ExtensionScriptAndCaptureVisibleTest, PermissionsWithChromeURLsEnabled) { 428f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com CommandLine::ForCurrentProcess()->AppendSwitch( 429f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com switches::kExtensionsOnChromeURLs); 430f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 431f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com scoped_refptr<Extension> extension; 432f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 433f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com // Test <all_urls> for regular extensions. 434f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com extension = LoadManifestStrict("script_and_capture", 435f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com "extension_regular_all.json"); 436f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Allowed(extension.get(), http_url)); 437f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Allowed(extension.get(), https_url)); 438f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Blocked(extension.get(), file_url)); 439f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Blocked(extension.get(), settings_url)); 440f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Allowed(extension.get(), favicon_url)); // chrome:// requested 441f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Blocked(extension.get(), about_url)); 442f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Blocked(extension.get(), extension_url)); 443f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 444f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com // Test access to iframed content. 445f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com GURL within_extension_url = extension->GetResourceURL("page.html"); 446f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(AllowedScript(extension.get(), http_url, http_url_with_path)); 447f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(AllowedScript(extension.get(), https_url, http_url_with_path)); 448f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(AllowedScript(extension.get(), http_url, within_extension_url)); 449f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(AllowedScript(extension.get(), https_url, within_extension_url)); 450f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(BlockedScript(extension.get(), http_url, extension_url)); 451f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(BlockedScript(extension.get(), https_url, extension_url)); 452f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 453f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_FALSE( 454f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com PermissionsData::HasHostPermission(extension.get(), settings_url)); 455f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_FALSE(PermissionsData::HasHostPermission(extension.get(), about_url)); 456f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(PermissionsData::HasHostPermission(extension.get(), favicon_url)); 457f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 458f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com // Test * for scheme, which implies just the http/https schemes. 459f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com extension = LoadManifestStrict("script_and_capture", 460f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com "extension_wildcard.json"); 461f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Allowed(extension.get(), http_url)); 462f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Allowed(extension.get(), https_url)); 463f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Blocked(extension.get(), settings_url)); 464f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Blocked(extension.get(), about_url)); 465f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Blocked(extension.get(), file_url)); 466f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Blocked(extension.get(), favicon_url)); 467f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com extension = 468f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com LoadManifest("script_and_capture", "extension_wildcard_settings.json"); 469f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Blocked(extension.get(), settings_url)); 470f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 471f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com // Having chrome://*/ should work for regular extensions with the flag 472f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com // enabled. 473f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com std::string error; 474f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com extension = LoadManifestUnchecked("script_and_capture", 475f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com "extension_wildcard_chrome.json", 476f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com Manifest::INTERNAL, Extension::NO_FLAGS, 477f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com &error); 478f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_FALSE(extension.get() == NULL); 479f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Blocked(extension.get(), http_url)); 480f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Blocked(extension.get(), https_url)); 481f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Allowed(extension.get(), settings_url)); 482f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Blocked(extension.get(), about_url)); 483f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Blocked(extension.get(), file_url)); 484f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Allowed(extension.get(), favicon_url)); // chrome:// requested 485f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 486f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com // Having chrome://favicon/* should not give you chrome://* 487f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com extension = LoadManifestStrict("script_and_capture", 488f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com "extension_chrome_favicon_wildcard.json"); 489f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Blocked(extension.get(), settings_url)); 490f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Allowed(extension.get(), favicon_url)); // chrome:// requested 491f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Blocked(extension.get(), about_url)); 492f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(PermissionsData::HasHostPermission(extension.get(), favicon_url)); 493f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 494f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com // Having http://favicon should not give you chrome://favicon 495f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com extension = LoadManifestStrict("script_and_capture", 496f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com "extension_http_favicon.json"); 497f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Blocked(extension.get(), settings_url)); 498f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Blocked(extension.get(), favicon_url)); 499f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 500f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com // Component extensions with <all_urls> should get everything. 501f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com extension = LoadManifest("script_and_capture", "extension_component_all.json", 502f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com Manifest::COMPONENT, Extension::NO_FLAGS); 503f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Allowed(extension.get(), http_url)); 504f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Allowed(extension.get(), https_url)); 505f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Allowed(extension.get(), settings_url)); 506f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Allowed(extension.get(), about_url)); 507f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Allowed(extension.get(), favicon_url)); 508f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(PermissionsData::HasHostPermission(extension.get(), favicon_url)); 509f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 510f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com // Component extensions should only get access to what they ask for. 511f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com extension = LoadManifest("script_and_capture", 512f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com "extension_component_google.json", Manifest::COMPONENT, 513f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com Extension::NO_FLAGS); 514f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Allowed(extension.get(), http_url)); 515f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Blocked(extension.get(), https_url)); 516f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Blocked(extension.get(), file_url)); 517f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Blocked(extension.get(), settings_url)); 518f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Blocked(extension.get(), favicon_url)); 519f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Blocked(extension.get(), about_url)); 520f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(Blocked(extension.get(), extension_url)); 521f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_FALSE( 522f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com PermissionsData::HasHostPermission(extension.get(), settings_url)); 523f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com} 524f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 525f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.comTEST_F(ExtensionScriptAndCaptureVisibleTest, TabSpecific) { 526f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com scoped_refptr<Extension> extension = 527f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com LoadManifestStrict("script_and_capture", "tab_specific.json"); 528f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 529f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_FALSE(PermissionsData::GetTabSpecificPermissions(extension.get(), 0) 530f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com .get()); 531f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_FALSE(PermissionsData::GetTabSpecificPermissions(extension.get(), 1) 532f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com .get()); 533f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_FALSE(PermissionsData::GetTabSpecificPermissions(extension.get(), 2) 534f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com .get()); 535f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 536f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com std::set<GURL> no_urls; 537f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 538f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), no_urls, 0)); 539f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), no_urls, 1)); 540f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), no_urls, 2)); 541f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 542f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com URLPatternSet allowed_hosts; 543f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com allowed_hosts.AddPattern(URLPattern(URLPattern::SCHEME_ALL, 544f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com http_url.spec())); 545f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com std::set<GURL> allowed_urls; 546f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com allowed_urls.insert(http_url); 547f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com // http_url_with_path() will also be allowed, because Extension should be 548f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com // considering the security origin of the URL not the URL itself, and 549f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com // http_url is in allowed_hosts. 550f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com allowed_urls.insert(http_url_with_path); 551f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 552f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com { 553f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com scoped_refptr<PermissionSet> permissions( 554f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com new PermissionSet(APIPermissionSet(), allowed_hosts, URLPatternSet())); 555f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com PermissionsData::UpdateTabSpecificPermissions( 556f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com extension.get(), 0, permissions); 557f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_EQ(permissions->explicit_hosts(), 558f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com PermissionsData::GetTabSpecificPermissions(extension.get(), 0) 559f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com ->explicit_hosts()); 560f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com } 561f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 562f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), allowed_urls, 0)); 563f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), no_urls, 1)); 564f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), no_urls, 2)); 565f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 566f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com PermissionsData::ClearTabSpecificPermissions(extension.get(), 0); 567f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_FALSE(PermissionsData::GetTabSpecificPermissions(extension.get(), 0) 568f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com .get()); 569f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 570f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), no_urls, 0)); 571f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), no_urls, 1)); 572f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), no_urls, 2)); 573f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 574f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com std::set<GURL> more_allowed_urls = allowed_urls; 575f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com more_allowed_urls.insert(https_url); 576f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com URLPatternSet more_allowed_hosts = allowed_hosts; 577f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com more_allowed_hosts.AddPattern(URLPattern(URLPattern::SCHEME_ALL, 578f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com https_url.spec())); 579f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 580f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com { 581f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com scoped_refptr<PermissionSet> permissions( 582f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com new PermissionSet(APIPermissionSet(), allowed_hosts, URLPatternSet())); 583f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com PermissionsData::UpdateTabSpecificPermissions( 584f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com extension.get(), 0, permissions); 585f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_EQ(permissions->explicit_hosts(), 586f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com PermissionsData::GetTabSpecificPermissions(extension.get(), 0) 587f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com ->explicit_hosts()); 588f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 589f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com permissions = new PermissionSet(APIPermissionSet(), 590f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com more_allowed_hosts, 591f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com URLPatternSet()); 592f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com PermissionsData::UpdateTabSpecificPermissions( 593f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com extension.get(), 1, permissions); 594f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_EQ(permissions->explicit_hosts(), 595f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com PermissionsData::GetTabSpecificPermissions(extension.get(), 1) 596f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com ->explicit_hosts()); 597f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com } 598f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 599f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), allowed_urls, 0)); 600f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), more_allowed_urls, 1)); 601f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), no_urls, 2)); 602f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 603f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com PermissionsData::ClearTabSpecificPermissions(extension.get(), 0); 604f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_FALSE(PermissionsData::GetTabSpecificPermissions(extension.get(), 0) 605f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com .get()); 606f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 607f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), no_urls, 0)); 608f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), more_allowed_urls, 1)); 609f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), no_urls, 2)); 610f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 611f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com PermissionsData::ClearTabSpecificPermissions(extension.get(), 1); 612f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_FALSE(PermissionsData::GetTabSpecificPermissions(extension.get(), 1) 613f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com .get()); 614f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 615f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), no_urls, 0)); 616f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), no_urls, 1)); 617f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), no_urls, 2)); 618f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com} 619f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com 620f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com} // namespace extensions 621f26ddae9acc05461792c8b1b6b35444ddf209de8shannon.woods%transgaming.com@gtempaccount.com