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

Side by Side Diff: content/browser/loader/intercepting_resource_handler_unittest.cc

Issue 2542843006: ResourceLoader: Fix a bunch of double-cancellation/double-error notification cases. (Closed)
Patch Set: Fix merge Created 4 years 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "content/browser/loader/intercepting_resource_handler.h" 5 #include "content/browser/loader/intercepting_resource_handler.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <memory> 9 #include <memory>
10 #include <string> 10 #include <string>
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after
226 true, // is_main_frame 226 true, // is_main_frame
227 false, // parent_is_main_frame 227 false, // parent_is_main_frame
228 true, // allow_download 228 true, // allow_download
229 true, // is_async 229 true, // is_async
230 false); // is_using_lofi 230 false); // is_using_lofi
231 231
232 net::URLRequestStatus old_handler_status; 232 net::URLRequestStatus old_handler_status;
233 std::string old_handler_body; 233 std::string old_handler_body;
234 std::unique_ptr<TestResourceHandler> old_handler_scoped( 234 std::unique_ptr<TestResourceHandler> old_handler_scoped(
235 new TestResourceHandler(&old_handler_status, &old_handler_body)); 235 new TestResourceHandler(&old_handler_status, &old_handler_body));
236 // When sending a payload to the old ResourceHandler, the
237 // InterceptingResourceHandler doesn't send a final EOF read.
238 // TODO(mmenke): Should it? Or can we just get rid of that 0-byte read
239 // entirely?
240 old_handler_scoped->set_expect_eof_read(false);
236 TestResourceHandler* old_handler = old_handler_scoped.get(); 241 TestResourceHandler* old_handler = old_handler_scoped.get();
237 scoped_refptr<net::IOBuffer> old_buffer = old_handler->buffer(); 242 scoped_refptr<net::IOBuffer> old_buffer = old_handler->buffer();
238 std::unique_ptr<InterceptingResourceHandler> intercepting_handler( 243 std::unique_ptr<InterceptingResourceHandler> intercepting_handler(
239 new InterceptingResourceHandler(std::move(old_handler_scoped), 244 new InterceptingResourceHandler(std::move(old_handler_scoped),
240 request.get())); 245 request.get()));
241 246
242 scoped_refptr<ResourceResponse> response(new ResourceResponse); 247 scoped_refptr<ResourceResponse> response(new ResourceResponse);
243 248
244 // Simulate the MimeSniffingResourceHandler buffering the data. 249 // Simulate the MimeSniffingResourceHandler buffering the data.
245 scoped_refptr<net::IOBuffer> read_buffer; 250 scoped_refptr<net::IOBuffer> read_buffer;
(...skipping 347 matching lines...) Expand 10 before | Expand all | Expand 10 after
593 true, // is_async 598 true, // is_async
594 false); // is_using_lofi 599 false); // is_using_lofi
595 600
596 std::unique_ptr<TestResourceController> resource_controller = 601 std::unique_ptr<TestResourceController> resource_controller =
597 base::MakeUnique<TestResourceController>(); 602 base::MakeUnique<TestResourceController>();
598 net::URLRequestStatus old_handler_status = {net::URLRequestStatus::IO_PENDING, 603 net::URLRequestStatus old_handler_status = {net::URLRequestStatus::IO_PENDING,
599 0}; 604 0};
600 std::string old_handler_body; 605 std::string old_handler_body;
601 std::unique_ptr<TestResourceHandler> old_handler( 606 std::unique_ptr<TestResourceHandler> old_handler(
602 new TestResourceHandler(&old_handler_status, &old_handler_body)); 607 new TestResourceHandler(&old_handler_status, &old_handler_body));
608 // When sending a payload to the old ResourceHandler, the
609 // InterceptingResourceHandler doesn't send a final EOF read.
610 // TODO(mmenke): Should it? Or can we just get rid of that 0-byte read
611 // entirely?
612 old_handler->set_expect_eof_read(false);
603 old_handler->SetBufferSize(10); 613 old_handler->SetBufferSize(10);
604 old_handler->set_defer_on_read_completed(true); 614 old_handler->set_defer_on_read_completed(true);
605 615
606 scoped_refptr<net::IOBuffer> old_buffer = old_handler.get()->buffer(); 616 scoped_refptr<net::IOBuffer> old_buffer = old_handler.get()->buffer();
607 std::unique_ptr<InterceptingResourceHandler> intercepting_handler( 617 std::unique_ptr<InterceptingResourceHandler> intercepting_handler(
608 new InterceptingResourceHandler(std::move(old_handler), request.get())); 618 new InterceptingResourceHandler(std::move(old_handler), request.get()));
609 intercepting_handler->SetController(resource_controller.get()); 619 intercepting_handler->SetController(resource_controller.get());
610 620
611 scoped_refptr<ResourceResponse> response(new ResourceResponse); 621 scoped_refptr<ResourceResponse> response(new ResourceResponse);
612 622
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
680 EXPECT_EQ("T", new_handler_body); 690 EXPECT_EQ("T", new_handler_body);
681 691
682 intercepting_handler->Resume(); 692 intercepting_handler->Resume();
683 EXPECT_EQ(2, resource_controller->resume_calls()); 693 EXPECT_EQ(2, resource_controller->resume_calls());
684 EXPECT_EQ(kPayload, old_handler_body); 694 EXPECT_EQ(kPayload, old_handler_body);
685 EXPECT_EQ(kData, new_handler_body); 695 EXPECT_EQ(kData, new_handler_body);
686 696
687 EXPECT_EQ(old_handler_status.status(), net::URLRequestStatus::SUCCESS); 697 EXPECT_EQ(old_handler_status.status(), net::URLRequestStatus::SUCCESS);
688 EXPECT_EQ(new_handler_status.status(), net::URLRequestStatus::IO_PENDING); 698 EXPECT_EQ(new_handler_status.status(), net::URLRequestStatus::IO_PENDING);
689 699
700 // Final EOF byte is read.
701 ASSERT_TRUE(intercepting_handler->OnReadCompleted(0, &defer));
702 ASSERT_FALSE(defer);
703
690 defer = false; 704 defer = false;
691 intercepting_handler->OnResponseCompleted({net::URLRequestStatus::SUCCESS, 0}, 705 intercepting_handler->OnResponseCompleted({net::URLRequestStatus::SUCCESS, 0},
692 &defer); 706 &defer);
693 ASSERT_TRUE(defer); 707 ASSERT_TRUE(defer);
694 EXPECT_EQ(old_handler_status.status(), net::URLRequestStatus::SUCCESS); 708 EXPECT_EQ(old_handler_status.status(), net::URLRequestStatus::SUCCESS);
695 EXPECT_EQ(new_handler_status.status(), net::URLRequestStatus::SUCCESS); 709 EXPECT_EQ(new_handler_status.status(), net::URLRequestStatus::SUCCESS);
696 } 710 }
697 711
698 // Test cancellation where there is only the old handler in an 712 // Test cancellation where there is only the old handler in an
699 // InterceptingResourceHandler. 713 // InterceptingResourceHandler.
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
753 true, // is_async 767 true, // is_async
754 false); // is_using_lofi 768 false); // is_using_lofi
755 769
756 std::unique_ptr<TestResourceController> resource_controller = 770 std::unique_ptr<TestResourceController> resource_controller =
757 base::MakeUnique<TestResourceController>(); 771 base::MakeUnique<TestResourceController>();
758 net::URLRequestStatus old_handler_status = {net::URLRequestStatus::IO_PENDING, 772 net::URLRequestStatus old_handler_status = {net::URLRequestStatus::IO_PENDING,
759 0}; 773 0};
760 std::string old_handler_body; 774 std::string old_handler_body;
761 std::unique_ptr<TestResourceHandler> old_handler( 775 std::unique_ptr<TestResourceHandler> old_handler(
762 new TestResourceHandler(&old_handler_status, &old_handler_body)); 776 new TestResourceHandler(&old_handler_status, &old_handler_body));
777 // When sending a payload to the old ResourceHandler, the
778 // InterceptingResourceHandler doesn't send a final EOF read.
779 // TODO(mmenke): Should it? Or can we just get rid of that 0-byte read
780 // entirely?
781 old_handler->set_expect_eof_read(false);
763 782
764 std::unique_ptr<InterceptingResourceHandler> intercepting_handler( 783 std::unique_ptr<InterceptingResourceHandler> intercepting_handler(
765 new InterceptingResourceHandler(std::move(old_handler), request.get())); 784 new InterceptingResourceHandler(std::move(old_handler), request.get()));
766 intercepting_handler->SetController(resource_controller.get()); 785 intercepting_handler->SetController(resource_controller.get());
767 786
768 scoped_refptr<ResourceResponse> response(new ResourceResponse); 787 scoped_refptr<ResourceResponse> response(new ResourceResponse);
769 788
770 // Simulate the MimeSniffingResourceHandler buffering the data. 789 // Simulate the MimeSniffingResourceHandler buffering the data.
771 scoped_refptr<net::IOBuffer> read_buffer; 790 scoped_refptr<net::IOBuffer> read_buffer;
772 int buf_size = 0; 791 int buf_size = 0;
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
879 {net::URLRequestStatus::CANCELED, net::ERR_FAILED}, &defer); 898 {net::URLRequestStatus::CANCELED, net::ERR_FAILED}, &defer);
880 ASSERT_TRUE(defer); 899 ASSERT_TRUE(defer);
881 EXPECT_EQ(0, resource_controller->resume_calls()); 900 EXPECT_EQ(0, resource_controller->resume_calls());
882 EXPECT_EQ(net::URLRequestStatus::CANCELED, old_handler_status.status()); 901 EXPECT_EQ(net::URLRequestStatus::CANCELED, old_handler_status.status());
883 EXPECT_EQ(net::URLRequestStatus::CANCELED, new_handler_status.status()); 902 EXPECT_EQ(net::URLRequestStatus::CANCELED, new_handler_status.status());
884 } 903 }
885 904
886 } // namespace 905 } // namespace
887 906
888 } // namespace content 907 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/cache_storage/cache_storage_blob_to_disk_cache.cc ('k') | content/browser/loader/resource_loader.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698