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

Side by Side Diff: chrome/browser/extensions/extension_protocols_unittest.cc

Issue 2441843002: Fix <webview> subframe resource loads with PlzNavigate. (Closed)
Patch Set: fix NavigationRequest to handle blocking, and fix unit tests Created 4 years, 2 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
« no previous file with comments | « no previous file | content/browser/frame_host/navigation_request.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 #include <string> 8 #include <string>
9 9
10 #include "base/files/file_util.h" 10 #include "base/files/file_util.h"
11 #include "base/macros.h" 11 #include "base/macros.h"
12 #include "base/message_loop/message_loop.h" 12 #include "base/message_loop/message_loop.h"
13 #include "base/run_loop.h" 13 #include "base/run_loop.h"
14 #include "base/strings/string_number_conversions.h" 14 #include "base/strings/string_number_conversions.h"
15 #include "base/strings/string_util.h" 15 #include "base/strings/string_util.h"
16 #include "base/values.h" 16 #include "base/values.h"
17 #include "chrome/common/chrome_paths.h" 17 #include "chrome/common/chrome_paths.h"
18 #include "content/public/browser/resource_request_info.h" 18 #include "content/public/browser/resource_request_info.h"
19 #include "content/public/common/browser_side_navigation_policy.h"
19 #include "content/public/test/mock_resource_context.h" 20 #include "content/public/test/mock_resource_context.h"
20 #include "content/public/test/test_browser_thread_bundle.h" 21 #include "content/public/test/test_browser_thread_bundle.h"
21 #include "extensions/browser/extension_protocols.h" 22 #include "extensions/browser/extension_protocols.h"
22 #include "extensions/browser/info_map.h" 23 #include "extensions/browser/info_map.h"
23 #include "extensions/common/constants.h" 24 #include "extensions/common/constants.h"
24 #include "extensions/common/extension.h" 25 #include "extensions/common/extension.h"
25 #include "extensions/common/file_util.h" 26 #include "extensions/common/file_util.h"
26 #include "net/base/request_priority.h" 27 #include "net/base/request_priority.h"
27 #include "net/url_request/url_request.h" 28 #include "net/url_request/url_request.h"
28 #include "net/url_request/url_request_job_factory_impl.h" 29 #include "net/url_request/url_request_job_factory_impl.h"
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
223 EXPECT_EQ(net::ERR_FILE_NOT_FOUND, test_delegate_.request_status()) 224 EXPECT_EQ(net::ERR_FILE_NOT_FOUND, test_delegate_.request_status())
224 << cases[i].name; 225 << cases[i].name;
225 } else { 226 } else {
226 EXPECT_EQ(net::ERR_BLOCKED_BY_CLIENT, test_delegate_.request_status()) 227 EXPECT_EQ(net::ERR_BLOCKED_BY_CLIENT, test_delegate_.request_status())
227 << cases[i].name; 228 << cases[i].name;
228 } 229 }
229 } 230 }
230 231
231 // Now do a subframe request. 232 // Now do a subframe request.
232 { 233 {
233 std::unique_ptr<net::URLRequest> request( 234 // With PlzNavigate, the subframe navigation requests are blocked in
234 resource_context_.GetRequestContext()->CreateRequest( 235 // ExtensionNavigationThrottle which isn't added in this unit test. This
235 extension->GetResourceURL("404.html"), net::DEFAULT_PRIORITY, 236 // is tested in an integration test in
236 &test_delegate_)); 237 // ExtensionResourceRequestPolicyTest.IframeNavigateToInaccessible.
237 StartRequest(request.get(), content::RESOURCE_TYPE_SUB_FRAME); 238 if (!content::IsBrowserSideNavigationEnabled()) {
239 std::unique_ptr<net::URLRequest> request(
240 resource_context_.GetRequestContext()->CreateRequest(
241 extension->GetResourceURL("404.html"), net::DEFAULT_PRIORITY,
242 &test_delegate_));
243 StartRequest(request.get(), content::RESOURCE_TYPE_SUB_FRAME);
238 244
239 if (cases[i].should_allow_sub_frame_load) { 245 if (cases[i].should_allow_sub_frame_load) {
240 EXPECT_EQ(net::ERR_FILE_NOT_FOUND, test_delegate_.request_status()) 246 EXPECT_EQ(net::ERR_FILE_NOT_FOUND, test_delegate_.request_status())
241 << cases[i].name; 247 << cases[i].name;
242 } else { 248 } else {
243 EXPECT_EQ(net::ERR_BLOCKED_BY_CLIENT, test_delegate_.request_status()) 249 EXPECT_EQ(net::ERR_BLOCKED_BY_CLIENT, test_delegate_.request_status())
244 << cases[i].name; 250 << cases[i].name;
251 }
245 } 252 }
246 } 253 }
247 } 254 }
248 } 255 }
249 256
250 void CheckForContentLengthHeader(net::URLRequest* request) { 257 void CheckForContentLengthHeader(net::URLRequest* request) {
251 std::string content_length; 258 std::string content_length;
252 request->GetResponseHeaderByName(net::HttpRequestHeaders::kContentLength, 259 request->GetResponseHeaderByName(net::HttpRequestHeaders::kContentLength,
253 &content_length); 260 &content_length);
254 EXPECT_FALSE(content_length.empty()); 261 EXPECT_FALSE(content_length.empty());
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
349 // should not succeed. 356 // should not succeed.
350 { 357 {
351 std::unique_ptr<net::URLRequest> request( 358 std::unique_ptr<net::URLRequest> request(
352 resource_context_.GetRequestContext()->CreateRequest( 359 resource_context_.GetRequestContext()->CreateRequest(
353 extension->GetResourceURL("test.dat"), net::DEFAULT_PRIORITY, 360 extension->GetResourceURL("test.dat"), net::DEFAULT_PRIORITY,
354 &test_delegate_)); 361 &test_delegate_));
355 StartRequest(request.get(), content::RESOURCE_TYPE_MAIN_FRAME); 362 StartRequest(request.get(), content::RESOURCE_TYPE_MAIN_FRAME);
356 EXPECT_EQ(net::OK, test_delegate_.request_status()); 363 EXPECT_EQ(net::OK, test_delegate_.request_status());
357 } 364 }
358 { 365 {
359 std::unique_ptr<net::URLRequest> request( 366 // With PlzNavigate, the subframe navigation requests are blocked in
360 resource_context_.GetRequestContext()->CreateRequest( 367 // ExtensionNavigationThrottle which isn't added in this unit test. This is
361 extension->GetResourceURL("test.dat"), net::DEFAULT_PRIORITY, 368 // tested in an integration test in
362 &test_delegate_)); 369 // ExtensionResourceRequestPolicyTest.IframeNavigateToInaccessible.
363 StartRequest(request.get(), content::RESOURCE_TYPE_SUB_FRAME); 370 if (!content::IsBrowserSideNavigationEnabled()) {
364 EXPECT_EQ(net::ERR_BLOCKED_BY_CLIENT, test_delegate_.request_status()); 371 std::unique_ptr<net::URLRequest> request(
372 resource_context_.GetRequestContext()->CreateRequest(
373 extension->GetResourceURL("test.dat"), net::DEFAULT_PRIORITY,
374 &test_delegate_));
375 StartRequest(request.get(), content::RESOURCE_TYPE_SUB_FRAME);
376 EXPECT_EQ(net::ERR_BLOCKED_BY_CLIENT, test_delegate_.request_status());
377 }
365 } 378 }
366 379
367 // And subresource types, such as media, should fail. 380 // And subresource types, such as media, should fail.
368 { 381 {
369 std::unique_ptr<net::URLRequest> request( 382 std::unique_ptr<net::URLRequest> request(
370 resource_context_.GetRequestContext()->CreateRequest( 383 resource_context_.GetRequestContext()->CreateRequest(
371 extension->GetResourceURL("test.dat"), net::DEFAULT_PRIORITY, 384 extension->GetResourceURL("test.dat"), net::DEFAULT_PRIORITY,
372 &test_delegate_)); 385 &test_delegate_));
373 StartRequest(request.get(), content::RESOURCE_TYPE_MEDIA); 386 StartRequest(request.get(), content::RESOURCE_TYPE_MEDIA);
374 EXPECT_EQ(net::ERR_BLOCKED_BY_CLIENT, test_delegate_.request_status()); 387 EXPECT_EQ(net::ERR_BLOCKED_BY_CLIENT, test_delegate_.request_status());
(...skipping 22 matching lines...) Expand all
397 DoRequest(*extension, relative_path.AsUTF8Unsafe())); 410 DoRequest(*extension, relative_path.AsUTF8Unsafe()));
398 411
399 // Loading "/_metadata/a.txt" should also fail. 412 // Loading "/_metadata/a.txt" should also fail.
400 relative_path = base::FilePath(kMetadataFolder).AppendASCII("a.txt"); 413 relative_path = base::FilePath(kMetadataFolder).AppendASCII("a.txt");
401 EXPECT_TRUE(base::PathExists(extension_dir.Append(relative_path))); 414 EXPECT_TRUE(base::PathExists(extension_dir.Append(relative_path)));
402 EXPECT_EQ(net::ERR_FAILED, 415 EXPECT_EQ(net::ERR_FAILED,
403 DoRequest(*extension, relative_path.AsUTF8Unsafe())); 416 DoRequest(*extension, relative_path.AsUTF8Unsafe()));
404 } 417 }
405 418
406 } // namespace extensions 419 } // namespace extensions
OLDNEW
« no previous file with comments | « no previous file | content/browser/frame_host/navigation_request.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698