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

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

Issue 23583039: Convert a bunch of resource IPCs to be control messages. They didn't need to be routed. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 7 years, 3 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 | Annotate | Revision Log
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 <vector> 5 #include <vector>
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/files/file_path.h" 8 #include "base/files/file_path.h"
9 #include "base/memory/scoped_vector.h" 9 #include "base/memory/scoped_vector.h"
10 #include "base/message_loop/message_loop.h" 10 #include "base/message_loop/message_loop.h"
(...skipping 690 matching lines...) Expand 10 before | Expand all | Expand 10 after
701 delay_complete_ = delay_job_complete; 701 delay_complete_ = delay_job_complete;
702 } 702 }
703 703
704 void GenerateDataReceivedACK(const IPC::Message& msg) { 704 void GenerateDataReceivedACK(const IPC::Message& msg) {
705 EXPECT_EQ(ResourceMsg_DataReceived::ID, msg.type()); 705 EXPECT_EQ(ResourceMsg_DataReceived::ID, msg.type());
706 706
707 int request_id = -1; 707 int request_id = -1;
708 bool result = PickleIterator(msg).ReadInt(&request_id); 708 bool result = PickleIterator(msg).ReadInt(&request_id);
709 DCHECK(result); 709 DCHECK(result);
710 scoped_ptr<IPC::Message> ack( 710 scoped_ptr<IPC::Message> ack(
711 new ResourceHostMsg_DataReceived_ACK(msg.routing_id(), request_id)); 711 new ResourceHostMsg_DataReceived_ACK(request_id));
712 712
713 base::MessageLoop::current()->PostTask( 713 base::MessageLoop::current()->PostTask(
714 FROM_HERE, 714 FROM_HERE,
715 base::Bind(&GenerateIPCMessage, filter_, base::Passed(&ack))); 715 base::Bind(&GenerateIPCMessage, filter_, base::Passed(&ack)));
716 } 716 }
717 717
718 base::MessageLoopForIO message_loop_; 718 base::MessageLoopForIO message_loop_;
719 BrowserThreadImpl ui_thread_; 719 BrowserThreadImpl ui_thread_;
720 BrowserThreadImpl file_thread_; 720 BrowserThreadImpl file_thread_;
721 BrowserThreadImpl cache_thread_; 721 BrowserThreadImpl cache_thread_;
(...skipping 880 matching lines...) Expand 10 before | Expand all | Expand 10 after
1602 SetResourceType(ResourceType::MAIN_FRAME); 1602 SetResourceType(ResourceType::MAIN_FRAME);
1603 SetDelayedCompleteJobGeneration(true); 1603 SetDelayedCompleteJobGeneration(true);
1604 HandleScheme("http"); 1604 HandleScheme("http");
1605 1605
1606 MakeTestRequest(render_view_id, request_id, GURL("http://example.com/blah")); 1606 MakeTestRequest(render_view_id, request_id, GURL("http://example.com/blah"));
1607 // Return some data so that the request is identified as a download 1607 // Return some data so that the request is identified as a download
1608 // and the proper resource handlers are created. 1608 // and the proper resource handlers are created.
1609 EXPECT_TRUE(net::URLRequestTestJob::ProcessOnePendingMessage()); 1609 EXPECT_TRUE(net::URLRequestTestJob::ProcessOnePendingMessage());
1610 1610
1611 // And now simulate a cancellation coming from the renderer. 1611 // And now simulate a cancellation coming from the renderer.
1612 ResourceHostMsg_CancelRequest msg(filter_->child_id(), request_id); 1612 ResourceHostMsg_CancelRequest msg(request_id);
1613 bool msg_was_ok; 1613 bool msg_was_ok;
1614 host_.OnMessageReceived(msg, filter_.get(), &msg_was_ok); 1614 host_.OnMessageReceived(msg, filter_.get(), &msg_was_ok);
1615 1615
1616 // Since the request had already started processing as a download, 1616 // Since the request had already started processing as a download,
1617 // the cancellation above should have been ignored and the request 1617 // the cancellation above should have been ignored and the request
1618 // should still be alive. 1618 // should still be alive.
1619 EXPECT_EQ(1, host_.pending_requests()); 1619 EXPECT_EQ(1, host_.pending_requests());
1620 1620
1621 while (net::URLRequestTestJob::ProcessOnePendingMessage()) {} 1621 while (net::URLRequestTestJob::ProcessOnePendingMessage()) {}
1622 } 1622 }
(...skipping 14 matching lines...) Expand all
1637 SetResourceType(ResourceType::MAIN_FRAME); 1637 SetResourceType(ResourceType::MAIN_FRAME);
1638 SetDelayedCompleteJobGeneration(true); 1638 SetDelayedCompleteJobGeneration(true);
1639 HandleScheme("http"); 1639 HandleScheme("http");
1640 1640
1641 MakeTestRequest(render_view_id, request_id, GURL("http://example.com/blah")); 1641 MakeTestRequest(render_view_id, request_id, GURL("http://example.com/blah"));
1642 // Return some data so that the request is identified as a download 1642 // Return some data so that the request is identified as a download
1643 // and the proper resource handlers are created. 1643 // and the proper resource handlers are created.
1644 EXPECT_TRUE(net::URLRequestTestJob::ProcessOnePendingMessage()); 1644 EXPECT_TRUE(net::URLRequestTestJob::ProcessOnePendingMessage());
1645 1645
1646 // And now simulate a cancellation coming from the renderer. 1646 // And now simulate a cancellation coming from the renderer.
1647 ResourceHostMsg_CancelRequest msg(filter_->child_id(), request_id); 1647 ResourceHostMsg_CancelRequest msg(request_id);
1648 bool msg_was_ok; 1648 bool msg_was_ok;
1649 host_.OnMessageReceived(msg, filter_.get(), &msg_was_ok); 1649 host_.OnMessageReceived(msg, filter_.get(), &msg_was_ok);
1650 1650
1651 // Since the request had already started processing as a download, 1651 // Since the request had already started processing as a download,
1652 // the cancellation above should have been ignored and the request 1652 // the cancellation above should have been ignored and the request
1653 // should still be alive. 1653 // should still be alive.
1654 EXPECT_EQ(1, host_.pending_requests()); 1654 EXPECT_EQ(1, host_.pending_requests());
1655 1655
1656 // Cancelling by other methods shouldn't work either. 1656 // Cancelling by other methods shouldn't work either.
1657 host_.CancelRequestsForProcess(render_view_id); 1657 host_.CancelRequestsForProcess(render_view_id);
(...skipping 20 matching lines...) Expand all
1678 SetResourceType(ResourceType::MAIN_FRAME); 1678 SetResourceType(ResourceType::MAIN_FRAME);
1679 HandleScheme("http"); 1679 HandleScheme("http");
1680 1680
1681 MakeTestRequest(render_view_id, request_id, GURL("http://example.com/blah")); 1681 MakeTestRequest(render_view_id, request_id, GURL("http://example.com/blah"));
1682 1682
1683 GlobalRequestID global_request_id(filter_->child_id(), request_id); 1683 GlobalRequestID global_request_id(filter_->child_id(), request_id);
1684 host_.MarkAsTransferredNavigation(global_request_id, 1684 host_.MarkAsTransferredNavigation(global_request_id,
1685 GURL("http://example.com/blah")); 1685 GURL("http://example.com/blah"));
1686 1686
1687 // And now simulate a cancellation coming from the renderer. 1687 // And now simulate a cancellation coming from the renderer.
1688 ResourceHostMsg_CancelRequest msg(filter_->child_id(), request_id); 1688 ResourceHostMsg_CancelRequest msg(request_id);
1689 bool msg_was_ok; 1689 bool msg_was_ok;
1690 host_.OnMessageReceived(msg, filter_.get(), &msg_was_ok); 1690 host_.OnMessageReceived(msg, filter_.get(), &msg_was_ok);
1691 1691
1692 // Since the request is marked as being transferred, 1692 // Since the request is marked as being transferred,
1693 // the cancellation above should have been ignored and the request 1693 // the cancellation above should have been ignored and the request
1694 // should still be alive. 1694 // should still be alive.
1695 EXPECT_EQ(1, host_.pending_requests()); 1695 EXPECT_EQ(1, host_.pending_requests());
1696 1696
1697 // Cancelling by other methods shouldn't work either. 1697 // Cancelling by other methods shouldn't work either.
1698 host_.CancelRequestsForProcess(render_view_id); 1698 host_.CancelRequestsForProcess(render_view_id);
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
1825 // OK, let the redirect happen. 1825 // OK, let the redirect happen.
1826 SetDelayedStartJobGeneration(false); 1826 SetDelayedStartJobGeneration(false);
1827 CompleteStartRequest(second_filter.get(), new_request_id); 1827 CompleteStartRequest(second_filter.get(), new_request_id);
1828 base::MessageLoop::current()->RunUntilIdle(); 1828 base::MessageLoop::current()->RunUntilIdle();
1829 1829
1830 // Flush all the pending requests. 1830 // Flush all the pending requests.
1831 while (net::URLRequestTestJob::ProcessOnePendingMessage()) {} 1831 while (net::URLRequestTestJob::ProcessOnePendingMessage()) {}
1832 1832
1833 // Now, simulate the renderer choosing to follow the redirect. 1833 // Now, simulate the renderer choosing to follow the redirect.
1834 ResourceHostMsg_FollowRedirect redirect_msg( 1834 ResourceHostMsg_FollowRedirect redirect_msg(
1835 new_render_view_id, new_request_id, false, GURL()); 1835 new_request_id, false, GURL());
1836 host_.OnMessageReceived(redirect_msg, second_filter.get(), &msg_was_ok); 1836 host_.OnMessageReceived(redirect_msg, second_filter.get(), &msg_was_ok);
1837 base::MessageLoop::current()->RunUntilIdle(); 1837 base::MessageLoop::current()->RunUntilIdle();
1838 1838
1839 // Flush all the pending requests. 1839 // Flush all the pending requests.
1840 while (net::URLRequestTestJob::ProcessOnePendingMessage()) {} 1840 while (net::URLRequestTestJob::ProcessOnePendingMessage()) {}
1841 1841
1842 // Check generated messages. 1842 // Check generated messages.
1843 ResourceIPCAccumulator::ClassifiedMessages msgs; 1843 ResourceIPCAccumulator::ClassifiedMessages msgs;
1844 accum_.GetClassifiedMessages(&msgs); 1844 accum_.GetClassifiedMessages(&msgs);
1845 1845
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
1931 bool complete = false; 1931 bool complete = false;
1932 while (!complete) { 1932 while (!complete) {
1933 for (size_t i = 0; i < msgs[0].size(); ++i) { 1933 for (size_t i = 0; i < msgs[0].size(); ++i) {
1934 if (msgs[0][i].type() == ResourceMsg_RequestComplete::ID) { 1934 if (msgs[0][i].type() == ResourceMsg_RequestComplete::ID) {
1935 complete = true; 1935 complete = true;
1936 break; 1936 break;
1937 } 1937 }
1938 1938
1939 EXPECT_EQ(ResourceMsg_DataReceived::ID, msgs[0][i].type()); 1939 EXPECT_EQ(ResourceMsg_DataReceived::ID, msgs[0][i].type());
1940 1940
1941 ResourceHostMsg_DataReceived_ACK msg(0, 1); 1941 ResourceHostMsg_DataReceived_ACK msg(1);
1942 bool msg_was_ok; 1942 bool msg_was_ok;
1943 host_.OnMessageReceived(msg, filter_.get(), &msg_was_ok); 1943 host_.OnMessageReceived(msg, filter_.get(), &msg_was_ok);
1944 } 1944 }
1945 1945
1946 base::MessageLoop::current()->RunUntilIdle(); 1946 base::MessageLoop::current()->RunUntilIdle();
1947 1947
1948 msgs.clear(); 1948 msgs.clear();
1949 accum_.GetClassifiedMessages(&msgs); 1949 accum_.GetClassifiedMessages(&msgs);
1950 } 1950 }
1951 } 1951 }
(...skipping 14 matching lines...) Expand all
1966 EXPECT_EQ(ResourceMsg_ReceivedResponse::ID, msgs[0][0].type()); 1966 EXPECT_EQ(ResourceMsg_ReceivedResponse::ID, msgs[0][0].type());
1967 EXPECT_EQ(ResourceMsg_SetDataBuffer::ID, msgs[0][1].type()); 1967 EXPECT_EQ(ResourceMsg_SetDataBuffer::ID, msgs[0][1].type());
1968 for (size_t i = 2; i < msgs[0].size(); ++i) 1968 for (size_t i = 2; i < msgs[0].size(); ++i)
1969 EXPECT_EQ(ResourceMsg_DataReceived::ID, msgs[0][i].type()); 1969 EXPECT_EQ(ResourceMsg_DataReceived::ID, msgs[0][i].type());
1970 1970
1971 // NOTE: If we fail the above checks then it means that we probably didn't 1971 // NOTE: If we fail the above checks then it means that we probably didn't
1972 // load a big enough response to trigger the delay mechanism. 1972 // load a big enough response to trigger the delay mechanism.
1973 1973
1974 // Send some unexpected ACKs. 1974 // Send some unexpected ACKs.
1975 for (size_t i = 0; i < 128; ++i) { 1975 for (size_t i = 0; i < 128; ++i) {
1976 ResourceHostMsg_DataReceived_ACK msg(0, 1); 1976 ResourceHostMsg_DataReceived_ACK msg(1);
1977 bool msg_was_ok; 1977 bool msg_was_ok;
1978 host_.OnMessageReceived(msg, filter_.get(), &msg_was_ok); 1978 host_.OnMessageReceived(msg, filter_.get(), &msg_was_ok);
1979 } 1979 }
1980 1980
1981 msgs[0].erase(msgs[0].begin()); 1981 msgs[0].erase(msgs[0].begin());
1982 msgs[0].erase(msgs[0].begin()); 1982 msgs[0].erase(msgs[0].begin());
1983 1983
1984 // ACK all DataReceived messages until we find a RequestComplete message. 1984 // ACK all DataReceived messages until we find a RequestComplete message.
1985 bool complete = false; 1985 bool complete = false;
1986 while (!complete) { 1986 while (!complete) {
1987 for (size_t i = 0; i < msgs[0].size(); ++i) { 1987 for (size_t i = 0; i < msgs[0].size(); ++i) {
1988 if (msgs[0][i].type() == ResourceMsg_RequestComplete::ID) { 1988 if (msgs[0][i].type() == ResourceMsg_RequestComplete::ID) {
1989 complete = true; 1989 complete = true;
1990 break; 1990 break;
1991 } 1991 }
1992 1992
1993 EXPECT_EQ(ResourceMsg_DataReceived::ID, msgs[0][i].type()); 1993 EXPECT_EQ(ResourceMsg_DataReceived::ID, msgs[0][i].type());
1994 1994
1995 ResourceHostMsg_DataReceived_ACK msg(0, 1); 1995 ResourceHostMsg_DataReceived_ACK msg(1);
1996 bool msg_was_ok; 1996 bool msg_was_ok;
1997 host_.OnMessageReceived(msg, filter_.get(), &msg_was_ok); 1997 host_.OnMessageReceived(msg, filter_.get(), &msg_was_ok);
1998 } 1998 }
1999 1999
2000 base::MessageLoop::current()->RunUntilIdle(); 2000 base::MessageLoop::current()->RunUntilIdle();
2001 2001
2002 msgs.clear(); 2002 msgs.clear();
2003 accum_.GetClassifiedMessages(&msgs); 2003 accum_.GetClassifiedMessages(&msgs);
2004 } 2004 }
2005 } 2005 }
2006 2006
2007 } // namespace content 2007 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698