Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(320)

Side by Side Diff: chrome/browser/extensions/api/web_request/web_request_permissions_unittest.cc

Issue 2804023003: Network traffic annotation added to chrome/browser/ unittests. (Closed)
Patch Set: Another missing header added. Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <stddef.h> 5 #include <stddef.h>
6 6
7 #include <memory> 7 #include <memory>
8 8
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "base/message_loop/message_loop.h" 10 #include "base/message_loop/message_loop.h"
11 #include "chrome/common/extensions/extension_test_util.h" 11 #include "chrome/common/extensions/extension_test_util.h"
12 #include "chromeos/login/login_state.h" 12 #include "chromeos/login/login_state.h"
13 #include "content/public/browser/resource_request_info.h" 13 #include "content/public/browser/resource_request_info.h"
14 #include "content/public/common/previews_state.h" 14 #include "content/public/common/previews_state.h"
15 #include "content/public/test/test_browser_thread_bundle.h" 15 #include "content/public/test/test_browser_thread_bundle.h"
16 #include "extensions/browser/api/web_request/web_request_permissions.h" 16 #include "extensions/browser/api/web_request/web_request_permissions.h"
17 #include "extensions/browser/info_map.h" 17 #include "extensions/browser/info_map.h"
18 #include "extensions/common/constants.h" 18 #include "extensions/common/constants.h"
19 #include "extensions/common/permissions/permissions_data.h" 19 #include "extensions/common/permissions/permissions_data.h"
20 #include "ipc/ipc_message.h" 20 #include "ipc/ipc_message.h"
21 #include "net/base/request_priority.h" 21 #include "net/base/request_priority.h"
22 #include "net/traffic_annotation/network_traffic_annotation_test_helper.h"
22 #include "net/url_request/url_request.h" 23 #include "net/url_request/url_request.h"
23 #include "net/url_request/url_request_test_util.h" 24 #include "net/url_request/url_request_test_util.h"
24 #include "testing/gtest/include/gtest/gtest.h" 25 #include "testing/gtest/include/gtest/gtest.h"
25 26
26 using content::ResourceRequestInfo; 27 using content::ResourceRequestInfo;
27 using extensions::Extension; 28 using extensions::Extension;
28 using extensions::Manifest; 29 using extensions::Manifest;
29 using extensions::PermissionsData; 30 using extensions::PermissionsData;
30 using extension_test_util::LoadManifestUnchecked; 31 using extension_test_util::LoadManifestUnchecked;
31 32
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 "inlineinstall/detail/kcnhkahnjcbndmmehfkdnkjomaanaooo" 116 "inlineinstall/detail/kcnhkahnjcbndmmehfkdnkjomaanaooo"
116 }; 117 };
117 const char* const non_sensitive_urls[] = { 118 const char* const non_sensitive_urls[] = {
118 "http://www.google.com/" 119 "http://www.google.com/"
119 }; 120 };
120 121
121 // Check that requests are rejected based on the destination 122 // Check that requests are rejected based on the destination
122 for (size_t i = 0; i < arraysize(sensitive_urls); ++i) { 123 for (size_t i = 0; i < arraysize(sensitive_urls); ++i) {
123 GURL sensitive_url(sensitive_urls[i]); 124 GURL sensitive_url(sensitive_urls[i]);
124 std::unique_ptr<net::URLRequest> request( 125 std::unique_ptr<net::URLRequest> request(
125 context.CreateRequest(sensitive_url, net::DEFAULT_PRIORITY, NULL)); 126 context.CreateRequest(sensitive_url, net::DEFAULT_PRIORITY, NULL,
127 TRAFFIC_ANNOTATION_FOR_TESTS));
126 EXPECT_TRUE(WebRequestPermissions::HideRequest( 128 EXPECT_TRUE(WebRequestPermissions::HideRequest(
127 extension_info_map_.get(), request.get(), nullptr)) << 129 extension_info_map_.get(), request.get(), nullptr)) <<
128 sensitive_urls[i]; 130 sensitive_urls[i];
129 } 131 }
130 // Check that requests are accepted if they don't touch sensitive urls. 132 // Check that requests are accepted if they don't touch sensitive urls.
131 for (size_t i = 0; i < arraysize(non_sensitive_urls); ++i) { 133 for (size_t i = 0; i < arraysize(non_sensitive_urls); ++i) {
132 GURL non_sensitive_url(non_sensitive_urls[i]); 134 GURL non_sensitive_url(non_sensitive_urls[i]);
133 std::unique_ptr<net::URLRequest> request( 135 std::unique_ptr<net::URLRequest> request(
134 context.CreateRequest(non_sensitive_url, net::DEFAULT_PRIORITY, NULL)); 136 context.CreateRequest(non_sensitive_url, net::DEFAULT_PRIORITY, NULL,
137 TRAFFIC_ANNOTATION_FOR_TESTS));
135 EXPECT_FALSE(WebRequestPermissions::HideRequest( 138 EXPECT_FALSE(WebRequestPermissions::HideRequest(
136 extension_info_map_.get(), request.get(), nullptr)) << 139 extension_info_map_.get(), request.get(), nullptr)) <<
137 non_sensitive_urls[i]; 140 non_sensitive_urls[i];
138 } 141 }
139 142
140 // Check protection of requests originating from the frame showing the Chrome 143 // Check protection of requests originating from the frame showing the Chrome
141 // WebStore. 144 // WebStore.
142 // Normally this request is not protected: 145 // Normally this request is not protected:
143 GURL non_sensitive_url("http://www.google.com/test.js"); 146 GURL non_sensitive_url("http://www.google.com/test.js");
144 std::unique_ptr<net::URLRequest> non_sensitive_request( 147 std::unique_ptr<net::URLRequest> non_sensitive_request(
145 context.CreateRequest(non_sensitive_url, net::DEFAULT_PRIORITY, NULL)); 148 context.CreateRequest(non_sensitive_url, net::DEFAULT_PRIORITY, NULL,
149 TRAFFIC_ANNOTATION_FOR_TESTS));
146 EXPECT_FALSE(WebRequestPermissions::HideRequest( 150 EXPECT_FALSE(WebRequestPermissions::HideRequest(
147 extension_info_map_.get(), non_sensitive_request.get(), nullptr)); 151 extension_info_map_.get(), non_sensitive_request.get(), nullptr));
148 // If the origin is labeled by the WebStoreAppId, it becomes protected. 152 // If the origin is labeled by the WebStoreAppId, it becomes protected.
149 { 153 {
150 int process_id = 42; 154 int process_id = 42;
151 int site_instance_id = 23; 155 int site_instance_id = 23;
152 int view_id = 17; 156 int view_id = 17;
153 std::unique_ptr<net::URLRequest> sensitive_request( 157 std::unique_ptr<net::URLRequest> sensitive_request(
154 context.CreateRequest(non_sensitive_url, net::DEFAULT_PRIORITY, NULL)); 158 context.CreateRequest(non_sensitive_url, net::DEFAULT_PRIORITY, NULL,
159 TRAFFIC_ANNOTATION_FOR_TESTS));
155 ResourceRequestInfo::AllocateForTesting( 160 ResourceRequestInfo::AllocateForTesting(
156 sensitive_request.get(), content::RESOURCE_TYPE_SCRIPT, NULL, 161 sensitive_request.get(), content::RESOURCE_TYPE_SCRIPT, NULL,
157 process_id, view_id, MSG_ROUTING_NONE, 162 process_id, view_id, MSG_ROUTING_NONE,
158 /*is_main_frame=*/false, 163 /*is_main_frame=*/false,
159 /*parent_is_main_frame=*/false, 164 /*parent_is_main_frame=*/false,
160 /*allow_download=*/true, 165 /*allow_download=*/true,
161 /*is_async=*/false, content::PREVIEWS_OFF); 166 /*is_async=*/false, content::PREVIEWS_OFF);
162 extension_info_map_->RegisterExtensionProcess(extensions::kWebStoreAppId, 167 extension_info_map_->RegisterExtensionProcess(extensions::kWebStoreAppId,
163 process_id, site_instance_id); 168 process_id, site_instance_id);
164 EXPECT_TRUE(WebRequestPermissions::HideRequest( 169 EXPECT_TRUE(WebRequestPermissions::HideRequest(
165 extension_info_map_.get(), sensitive_request.get(), nullptr)); 170 extension_info_map_.get(), sensitive_request.get(), nullptr));
166 } 171 }
167 } 172 }
168 173
169 TEST_F(ExtensionWebRequestHelpersTestWithThreadsTest, 174 TEST_F(ExtensionWebRequestHelpersTestWithThreadsTest,
170 TestCanExtensionAccessURL_HostPermissions) { 175 TestCanExtensionAccessURL_HostPermissions) {
171 std::unique_ptr<net::URLRequest> request(context.CreateRequest( 176 std::unique_ptr<net::URLRequest> request(
172 GURL("http://example.com"), net::DEFAULT_PRIORITY, NULL)); 177 context.CreateRequest(GURL("http://example.com"), net::DEFAULT_PRIORITY,
178 NULL, TRAFFIC_ANNOTATION_FOR_TESTS));
173 179
174 EXPECT_EQ(PermissionsData::ACCESS_ALLOWED, 180 EXPECT_EQ(PermissionsData::ACCESS_ALLOWED,
175 WebRequestPermissions::CanExtensionAccessURL( 181 WebRequestPermissions::CanExtensionAccessURL(
176 extension_info_map_.get(), permissionless_extension_->id(), 182 extension_info_map_.get(), permissionless_extension_->id(),
177 request->url(), 183 request->url(),
178 -1, // No tab id. 184 -1, // No tab id.
179 false, // crosses_incognito 185 false, // crosses_incognito
180 WebRequestPermissions::DO_NOT_CHECK_HOST)); 186 WebRequestPermissions::DO_NOT_CHECK_HOST));
181 EXPECT_EQ(PermissionsData::ACCESS_DENIED, 187 EXPECT_EQ(PermissionsData::ACCESS_DENIED,
182 WebRequestPermissions::CanExtensionAccessURL( 188 WebRequestPermissions::CanExtensionAccessURL(
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
230 236
231 EXPECT_EQ(PermissionsData::ACCESS_ALLOWED, 237 EXPECT_EQ(PermissionsData::ACCESS_ALLOWED,
232 WebRequestPermissions::CanExtensionAccessURL( 238 WebRequestPermissions::CanExtensionAccessURL(
233 extension_info_map_.get(), com_policy_extension_->id(), 239 extension_info_map_.get(), com_policy_extension_->id(),
234 org_request->url(), 240 org_request->url(),
235 -1, // No tab id. 241 -1, // No tab id.
236 false, // crosses_incognito 242 false, // crosses_incognito
237 WebRequestPermissions::REQUIRE_ALL_URLS)); 243 WebRequestPermissions::REQUIRE_ALL_URLS));
238 244
239 // Make sure that chrome:// URLs cannot be accessed. 245 // Make sure that chrome:// URLs cannot be accessed.
240 std::unique_ptr<net::URLRequest> chrome_request(context.CreateRequest( 246 std::unique_ptr<net::URLRequest> chrome_request(
241 GURL("chrome://version/"), net::DEFAULT_PRIORITY, nullptr)); 247 context.CreateRequest(GURL("chrome://version/"), net::DEFAULT_PRIORITY,
248 nullptr, TRAFFIC_ANNOTATION_FOR_TESTS));
242 249
243 EXPECT_EQ(PermissionsData::ACCESS_DENIED, 250 EXPECT_EQ(PermissionsData::ACCESS_DENIED,
244 WebRequestPermissions::CanExtensionAccessURL( 251 WebRequestPermissions::CanExtensionAccessURL(
245 extension_info_map_.get(), com_policy_extension_->id(), 252 extension_info_map_.get(), com_policy_extension_->id(),
246 chrome_request->url(), 253 chrome_request->url(),
247 -1, // No tab id. 254 -1, // No tab id.
248 false, // crosses_incognito 255 false, // crosses_incognito
249 WebRequestPermissions::REQUIRE_HOST_PERMISSION)); 256 WebRequestPermissions::REQUIRE_HOST_PERMISSION));
250 #endif 257 #endif
251 } 258 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698