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

Side by Side Diff: chrome/browser/extensions/extension_protocols_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 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/command_line.h" 10 #include "base/command_line.h"
(...skipping 16 matching lines...) Expand all
27 #include "content/public/test/test_browser_thread_bundle.h" 27 #include "content/public/test/test_browser_thread_bundle.h"
28 #include "content/public/test/test_utils.h" 28 #include "content/public/test/test_utils.h"
29 #include "extensions/browser/content_verifier.h" 29 #include "extensions/browser/content_verifier.h"
30 #include "extensions/browser/extension_protocols.h" 30 #include "extensions/browser/extension_protocols.h"
31 #include "extensions/browser/info_map.h" 31 #include "extensions/browser/info_map.h"
32 #include "extensions/common/constants.h" 32 #include "extensions/common/constants.h"
33 #include "extensions/common/extension.h" 33 #include "extensions/common/extension.h"
34 #include "extensions/common/extension_builder.h" 34 #include "extensions/common/extension_builder.h"
35 #include "extensions/common/file_util.h" 35 #include "extensions/common/file_util.h"
36 #include "net/base/request_priority.h" 36 #include "net/base/request_priority.h"
37 #include "net/traffic_annotation/network_traffic_annotation_test_helper.h"
37 #include "net/url_request/url_request.h" 38 #include "net/url_request/url_request.h"
38 #include "net/url_request/url_request_job_factory_impl.h" 39 #include "net/url_request/url_request_job_factory_impl.h"
39 #include "net/url_request/url_request_status.h" 40 #include "net/url_request/url_request_status.h"
40 #include "net/url_request/url_request_test_util.h" 41 #include "net/url_request/url_request_test_util.h"
41 #include "testing/gtest/include/gtest/gtest.h" 42 #include "testing/gtest/include/gtest/gtest.h"
42 43
43 using content::ResourceType; 44 using content::ResourceType;
44 45
45 namespace extensions { 46 namespace extensions {
46 namespace { 47 namespace {
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
239 int DoRequest(const Extension& extension, const std::string& relative_path) { 240 int DoRequest(const Extension& extension, const std::string& relative_path) {
240 if (!extension_info_map_->extensions().Contains(extension.id())) { 241 if (!extension_info_map_->extensions().Contains(extension.id())) {
241 extension_info_map_->AddExtension(&extension, 242 extension_info_map_->AddExtension(&extension,
242 base::Time::Now(), 243 base::Time::Now(),
243 false, // incognito_enabled 244 false, // incognito_enabled
244 false); // notifications_disabled 245 false); // notifications_disabled
245 } 246 }
246 std::unique_ptr<net::URLRequest> request( 247 std::unique_ptr<net::URLRequest> request(
247 resource_context_.GetRequestContext()->CreateRequest( 248 resource_context_.GetRequestContext()->CreateRequest(
248 extension.GetResourceURL(relative_path), net::DEFAULT_PRIORITY, 249 extension.GetResourceURL(relative_path), net::DEFAULT_PRIORITY,
249 &test_delegate_)); 250 &test_delegate_, TRAFFIC_ANNOTATION_FOR_TESTS));
250 StartRequest(request.get(), content::RESOURCE_TYPE_MAIN_FRAME); 251 StartRequest(request.get(), content::RESOURCE_TYPE_MAIN_FRAME);
251 return test_delegate_.request_status(); 252 return test_delegate_.request_status();
252 } 253 }
253 254
254 protected: 255 protected:
255 content::TestBrowserThreadBundle thread_bundle_; 256 content::TestBrowserThreadBundle thread_bundle_;
256 scoped_refptr<InfoMap> extension_info_map_; 257 scoped_refptr<InfoMap> extension_info_map_;
257 net::URLRequestJobFactoryImpl job_factory_; 258 net::URLRequestJobFactoryImpl job_factory_;
258 const net::URLRequestJobFactory* old_factory_; 259 const net::URLRequestJobFactory* old_factory_;
259 net::TestDelegate test_delegate_; 260 net::TestDelegate test_delegate_;
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
294 extension.get(), base::Time::Now(), cases[i].incognito_enabled, false); 295 extension.get(), base::Time::Now(), cases[i].incognito_enabled, false);
295 296
296 // First test a main frame request. 297 // First test a main frame request.
297 { 298 {
298 // It doesn't matter that the resource doesn't exist. If the resource 299 // It doesn't matter that the resource doesn't exist. If the resource
299 // is blocked, we should see BLOCKED_BY_CLIENT. Otherwise, the request 300 // is blocked, we should see BLOCKED_BY_CLIENT. Otherwise, the request
300 // should just fail because the file doesn't exist. 301 // should just fail because the file doesn't exist.
301 std::unique_ptr<net::URLRequest> request( 302 std::unique_ptr<net::URLRequest> request(
302 resource_context_.GetRequestContext()->CreateRequest( 303 resource_context_.GetRequestContext()->CreateRequest(
303 extension->GetResourceURL("404.html"), net::DEFAULT_PRIORITY, 304 extension->GetResourceURL("404.html"), net::DEFAULT_PRIORITY,
304 &test_delegate_)); 305 &test_delegate_, TRAFFIC_ANNOTATION_FOR_TESTS));
305 StartRequest(request.get(), content::RESOURCE_TYPE_MAIN_FRAME); 306 StartRequest(request.get(), content::RESOURCE_TYPE_MAIN_FRAME);
306 307
307 if (cases[i].should_allow_main_frame_load) { 308 if (cases[i].should_allow_main_frame_load) {
308 EXPECT_EQ(net::ERR_FILE_NOT_FOUND, test_delegate_.request_status()) 309 EXPECT_EQ(net::ERR_FILE_NOT_FOUND, test_delegate_.request_status())
309 << cases[i].name; 310 << cases[i].name;
310 } else { 311 } else {
311 EXPECT_EQ(net::ERR_BLOCKED_BY_CLIENT, test_delegate_.request_status()) 312 EXPECT_EQ(net::ERR_BLOCKED_BY_CLIENT, test_delegate_.request_status())
312 << cases[i].name; 313 << cases[i].name;
313 } 314 }
314 } 315 }
315 316
316 // Now do a subframe request. 317 // Now do a subframe request.
317 { 318 {
318 // With PlzNavigate, the subframe navigation requests are blocked in 319 // With PlzNavigate, the subframe navigation requests are blocked in
319 // ExtensionNavigationThrottle which isn't added in this unit test. This 320 // ExtensionNavigationThrottle which isn't added in this unit test. This
320 // is tested in an integration test in 321 // is tested in an integration test in
321 // ExtensionResourceRequestPolicyTest.IframeNavigateToInaccessible. 322 // ExtensionResourceRequestPolicyTest.IframeNavigateToInaccessible.
322 if (!content::IsBrowserSideNavigationEnabled()) { 323 if (!content::IsBrowserSideNavigationEnabled()) {
323 std::unique_ptr<net::URLRequest> request( 324 std::unique_ptr<net::URLRequest> request(
324 resource_context_.GetRequestContext()->CreateRequest( 325 resource_context_.GetRequestContext()->CreateRequest(
325 extension->GetResourceURL("404.html"), net::DEFAULT_PRIORITY, 326 extension->GetResourceURL("404.html"), net::DEFAULT_PRIORITY,
326 &test_delegate_)); 327 &test_delegate_, TRAFFIC_ANNOTATION_FOR_TESTS));
327 StartRequest(request.get(), content::RESOURCE_TYPE_SUB_FRAME); 328 StartRequest(request.get(), content::RESOURCE_TYPE_SUB_FRAME);
328 329
329 if (cases[i].should_allow_sub_frame_load) { 330 if (cases[i].should_allow_sub_frame_load) {
330 EXPECT_EQ(net::ERR_FILE_NOT_FOUND, test_delegate_.request_status()) 331 EXPECT_EQ(net::ERR_FILE_NOT_FOUND, test_delegate_.request_status())
331 << cases[i].name; 332 << cases[i].name;
332 } else { 333 } else {
333 EXPECT_EQ(net::ERR_BLOCKED_BY_CLIENT, test_delegate_.request_status()) 334 EXPECT_EQ(net::ERR_BLOCKED_BY_CLIENT, test_delegate_.request_status())
334 << cases[i].name; 335 << cases[i].name;
335 } 336 }
336 } 337 }
(...skipping 21 matching lines...) Expand all
358 extension_info_map_->AddExtension(extension.get(), 359 extension_info_map_->AddExtension(extension.get(),
359 base::Time::Now(), 360 base::Time::Now(),
360 false, 361 false,
361 false); 362 false);
362 363
363 // First test it with the extension enabled. 364 // First test it with the extension enabled.
364 { 365 {
365 std::unique_ptr<net::URLRequest> request( 366 std::unique_ptr<net::URLRequest> request(
366 resource_context_.GetRequestContext()->CreateRequest( 367 resource_context_.GetRequestContext()->CreateRequest(
367 extension->GetResourceURL("webstore_icon_16.png"), 368 extension->GetResourceURL("webstore_icon_16.png"),
368 net::DEFAULT_PRIORITY, &test_delegate_)); 369 net::DEFAULT_PRIORITY, &test_delegate_,
370 TRAFFIC_ANNOTATION_FOR_TESTS));
369 StartRequest(request.get(), content::RESOURCE_TYPE_MEDIA); 371 StartRequest(request.get(), content::RESOURCE_TYPE_MEDIA);
370 EXPECT_EQ(net::OK, test_delegate_.request_status()); 372 EXPECT_EQ(net::OK, test_delegate_.request_status());
371 CheckForContentLengthHeader(request.get()); 373 CheckForContentLengthHeader(request.get());
372 } 374 }
373 375
374 // And then test it with the extension disabled. 376 // And then test it with the extension disabled.
375 extension_info_map_->RemoveExtension(extension->id(), 377 extension_info_map_->RemoveExtension(extension->id(),
376 UnloadedExtensionInfo::REASON_DISABLE); 378 UnloadedExtensionInfo::REASON_DISABLE);
377 { 379 {
378 std::unique_ptr<net::URLRequest> request( 380 std::unique_ptr<net::URLRequest> request(
379 resource_context_.GetRequestContext()->CreateRequest( 381 resource_context_.GetRequestContext()->CreateRequest(
380 extension->GetResourceURL("webstore_icon_16.png"), 382 extension->GetResourceURL("webstore_icon_16.png"),
381 net::DEFAULT_PRIORITY, &test_delegate_)); 383 net::DEFAULT_PRIORITY, &test_delegate_,
384 TRAFFIC_ANNOTATION_FOR_TESTS));
382 StartRequest(request.get(), content::RESOURCE_TYPE_MEDIA); 385 StartRequest(request.get(), content::RESOURCE_TYPE_MEDIA);
383 EXPECT_EQ(net::OK, test_delegate_.request_status()); 386 EXPECT_EQ(net::OK, test_delegate_.request_status());
384 CheckForContentLengthHeader(request.get()); 387 CheckForContentLengthHeader(request.get());
385 } 388 }
386 } 389 }
387 390
388 // Tests that a URL request for resource from an extension returns a few 391 // Tests that a URL request for resource from an extension returns a few
389 // expected response headers. 392 // expected response headers.
390 TEST_F(ExtensionProtocolsTest, ResourceRequestResponseHeaders) { 393 TEST_F(ExtensionProtocolsTest, ResourceRequestResponseHeaders) {
391 // Register a non-incognito extension protocol handler. 394 // Register a non-incognito extension protocol handler.
392 SetProtocolHandler(false); 395 SetProtocolHandler(false);
393 396
394 scoped_refptr<Extension> extension = CreateTestResponseHeaderExtension(); 397 scoped_refptr<Extension> extension = CreateTestResponseHeaderExtension();
395 extension_info_map_->AddExtension(extension.get(), 398 extension_info_map_->AddExtension(extension.get(),
396 base::Time::Now(), 399 base::Time::Now(),
397 false, 400 false,
398 false); 401 false);
399 402
400 { 403 {
401 std::unique_ptr<net::URLRequest> request( 404 std::unique_ptr<net::URLRequest> request(
402 resource_context_.GetRequestContext()->CreateRequest( 405 resource_context_.GetRequestContext()->CreateRequest(
403 extension->GetResourceURL("test.dat"), net::DEFAULT_PRIORITY, 406 extension->GetResourceURL("test.dat"), net::DEFAULT_PRIORITY,
404 &test_delegate_)); 407 &test_delegate_, TRAFFIC_ANNOTATION_FOR_TESTS));
405 StartRequest(request.get(), content::RESOURCE_TYPE_MEDIA); 408 StartRequest(request.get(), content::RESOURCE_TYPE_MEDIA);
406 EXPECT_EQ(net::OK, test_delegate_.request_status()); 409 EXPECT_EQ(net::OK, test_delegate_.request_status());
407 410
408 // Check that cache-related headers are set. 411 // Check that cache-related headers are set.
409 std::string etag; 412 std::string etag;
410 request->GetResponseHeaderByName("ETag", &etag); 413 request->GetResponseHeaderByName("ETag", &etag);
411 EXPECT_TRUE(base::StartsWith(etag, "\"", base::CompareCase::SENSITIVE)); 414 EXPECT_TRUE(base::StartsWith(etag, "\"", base::CompareCase::SENSITIVE));
412 EXPECT_TRUE(base::EndsWith(etag, "\"", base::CompareCase::SENSITIVE)); 415 EXPECT_TRUE(base::EndsWith(etag, "\"", base::CompareCase::SENSITIVE));
413 416
414 std::string revalidation_header; 417 std::string revalidation_header;
(...skipping 20 matching lines...) Expand all
435 false, 438 false,
436 false); 439 false);
437 440
438 // All MAIN_FRAME requests should succeed. SUB_FRAME requests that are not 441 // All MAIN_FRAME requests should succeed. SUB_FRAME requests that are not
439 // explicitly listed in web_accesible_resources or same-origin to the parent 442 // explicitly listed in web_accesible_resources or same-origin to the parent
440 // should not succeed. 443 // should not succeed.
441 { 444 {
442 std::unique_ptr<net::URLRequest> request( 445 std::unique_ptr<net::URLRequest> request(
443 resource_context_.GetRequestContext()->CreateRequest( 446 resource_context_.GetRequestContext()->CreateRequest(
444 extension->GetResourceURL("test.dat"), net::DEFAULT_PRIORITY, 447 extension->GetResourceURL("test.dat"), net::DEFAULT_PRIORITY,
445 &test_delegate_)); 448 &test_delegate_, TRAFFIC_ANNOTATION_FOR_TESTS));
446 StartRequest(request.get(), content::RESOURCE_TYPE_MAIN_FRAME); 449 StartRequest(request.get(), content::RESOURCE_TYPE_MAIN_FRAME);
447 EXPECT_EQ(net::OK, test_delegate_.request_status()); 450 EXPECT_EQ(net::OK, test_delegate_.request_status());
448 } 451 }
449 { 452 {
450 // With PlzNavigate, the subframe navigation requests are blocked in 453 // With PlzNavigate, the subframe navigation requests are blocked in
451 // ExtensionNavigationThrottle which isn't added in this unit test. This is 454 // ExtensionNavigationThrottle which isn't added in this unit test. This is
452 // tested in an integration test in 455 // tested in an integration test in
453 // ExtensionResourceRequestPolicyTest.IframeNavigateToInaccessible. 456 // ExtensionResourceRequestPolicyTest.IframeNavigateToInaccessible.
454 if (!content::IsBrowserSideNavigationEnabled()) { 457 if (!content::IsBrowserSideNavigationEnabled()) {
455 std::unique_ptr<net::URLRequest> request( 458 std::unique_ptr<net::URLRequest> request(
456 resource_context_.GetRequestContext()->CreateRequest( 459 resource_context_.GetRequestContext()->CreateRequest(
457 extension->GetResourceURL("test.dat"), net::DEFAULT_PRIORITY, 460 extension->GetResourceURL("test.dat"), net::DEFAULT_PRIORITY,
458 &test_delegate_)); 461 &test_delegate_, TRAFFIC_ANNOTATION_FOR_TESTS));
459 StartRequest(request.get(), content::RESOURCE_TYPE_SUB_FRAME); 462 StartRequest(request.get(), content::RESOURCE_TYPE_SUB_FRAME);
460 EXPECT_EQ(net::ERR_BLOCKED_BY_CLIENT, test_delegate_.request_status()); 463 EXPECT_EQ(net::ERR_BLOCKED_BY_CLIENT, test_delegate_.request_status());
461 } 464 }
462 } 465 }
463 466
464 // And subresource types, such as media, should fail. 467 // And subresource types, such as media, should fail.
465 { 468 {
466 std::unique_ptr<net::URLRequest> request( 469 std::unique_ptr<net::URLRequest> request(
467 resource_context_.GetRequestContext()->CreateRequest( 470 resource_context_.GetRequestContext()->CreateRequest(
468 extension->GetResourceURL("test.dat"), net::DEFAULT_PRIORITY, 471 extension->GetResourceURL("test.dat"), net::DEFAULT_PRIORITY,
469 &test_delegate_)); 472 &test_delegate_, TRAFFIC_ANNOTATION_FOR_TESTS));
470 StartRequest(request.get(), content::RESOURCE_TYPE_MEDIA); 473 StartRequest(request.get(), content::RESOURCE_TYPE_MEDIA);
471 EXPECT_EQ(net::ERR_BLOCKED_BY_CLIENT, test_delegate_.request_status()); 474 EXPECT_EQ(net::ERR_BLOCKED_BY_CLIENT, test_delegate_.request_status());
472 } 475 }
473 } 476 }
474 477
475 TEST_F(ExtensionProtocolsTest, MetadataFolder) { 478 TEST_F(ExtensionProtocolsTest, MetadataFolder) {
476 SetProtocolHandler(false); 479 SetProtocolHandler(false);
477 480
478 base::FilePath extension_dir = GetTestPath("metadata_folder"); 481 base::FilePath extension_dir = GetTestPath("metadata_folder");
479 std::string error; 482 std::string error;
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
593 content_verifier_->OnExtensionLoaded(testing_profile_.get(), extension.get()); 596 content_verifier_->OnExtensionLoaded(testing_profile_.get(), extension.get());
594 // Wait for PostTask to ContentVerifierIOData::AddData() to finish. 597 // Wait for PostTask to ContentVerifierIOData::AddData() to finish.
595 content::RunAllPendingInMessageLoop(); 598 content::RunAllPendingInMessageLoop();
596 599
597 // Request foo.js. 600 // Request foo.js.
598 EXPECT_EQ(net::OK, DoRequest(*extension, kFooJs)); 601 EXPECT_EQ(net::OK, DoRequest(*extension, kFooJs));
599 test_job_delegate.WaitForDoneReading(extension->id()); 602 test_job_delegate.WaitForDoneReading(extension->id());
600 } 603 }
601 604
602 } // namespace extensions 605 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698