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

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

Issue 1154283003: Change most uses of Pickle to base::Pickle (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 6 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 <vector> 5 #include <vector>
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/files/file_path.h" 9 #include "base/files/file_path.h"
10 #include "base/files/file_util.h" 10 #include "base/files/file_util.h"
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
62 namespace { 62 namespace {
63 63
64 // Returns the resource response header structure for this request. 64 // Returns the resource response header structure for this request.
65 void GetResponseHead(const std::vector<IPC::Message>& messages, 65 void GetResponseHead(const std::vector<IPC::Message>& messages,
66 ResourceResponseHead* response_head) { 66 ResourceResponseHead* response_head) {
67 ASSERT_GE(messages.size(), 2U); 67 ASSERT_GE(messages.size(), 2U);
68 68
69 // The first messages should be received response. 69 // The first messages should be received response.
70 ASSERT_EQ(ResourceMsg_ReceivedResponse::ID, messages[0].type()); 70 ASSERT_EQ(ResourceMsg_ReceivedResponse::ID, messages[0].type());
71 71
72 PickleIterator iter(messages[0]); 72 base::PickleIterator iter(messages[0]);
73 int request_id; 73 int request_id;
74 ASSERT_TRUE(IPC::ReadParam(&messages[0], &iter, &request_id)); 74 ASSERT_TRUE(IPC::ReadParam(&messages[0], &iter, &request_id));
75 ASSERT_TRUE(IPC::ReadParam(&messages[0], &iter, response_head)); 75 ASSERT_TRUE(IPC::ReadParam(&messages[0], &iter, response_head));
76 } 76 }
77 77
78 void GenerateIPCMessage( 78 void GenerateIPCMessage(
79 scoped_refptr<ResourceMessageFilter> filter, 79 scoped_refptr<ResourceMessageFilter> filter,
80 scoped_ptr<IPC::Message> message) { 80 scoped_ptr<IPC::Message> message) {
81 ResourceDispatcherHostImpl::Get()->OnMessageReceived( 81 ResourceDispatcherHostImpl::Get()->OnMessageReceived(
82 *message, filter.get()); 82 *message, filter.get());
83 } 83 }
84 84
85 // On Windows, ResourceMsg_SetDataBuffer supplies a HANDLE which is not 85 // On Windows, ResourceMsg_SetDataBuffer supplies a HANDLE which is not
86 // automatically released. 86 // automatically released.
87 // 87 //
88 // See ResourceDispatcher::ReleaseResourcesInDataMessage. 88 // See ResourceDispatcher::ReleaseResourcesInDataMessage.
89 // 89 //
90 // TODO(davidben): It would be nice if the behavior for base::SharedMemoryHandle 90 // TODO(davidben): It would be nice if the behavior for base::SharedMemoryHandle
91 // were more like it is in POSIX where the received fds are tracked in a 91 // were more like it is in POSIX where the received fds are tracked in a
92 // ref-counted core that closes them if not extracted. 92 // ref-counted core that closes them if not extracted.
93 void ReleaseHandlesInMessage(const IPC::Message& message) { 93 void ReleaseHandlesInMessage(const IPC::Message& message) {
94 if (message.type() == ResourceMsg_SetDataBuffer::ID) { 94 if (message.type() == ResourceMsg_SetDataBuffer::ID) {
95 PickleIterator iter(message); 95 base::PickleIterator iter(message);
96 int request_id; 96 int request_id;
97 CHECK(iter.ReadInt(&request_id)); 97 CHECK(iter.ReadInt(&request_id));
98 base::SharedMemoryHandle shm_handle; 98 base::SharedMemoryHandle shm_handle;
99 if (IPC::ParamTraits<base::SharedMemoryHandle>::Read(&message, 99 if (IPC::ParamTraits<base::SharedMemoryHandle>::Read(&message,
100 &iter, 100 &iter,
101 &shm_handle)) { 101 &shm_handle)) {
102 if (base::SharedMemory::IsHandleValid(shm_handle)) 102 if (base::SharedMemory::IsHandleValid(shm_handle))
103 base::SharedMemory::CloseHandle(shm_handle); 103 base::SharedMemory::CloseHandle(shm_handle);
104 } 104 }
105 } 105 }
106 } 106 }
107 107
108 } // namespace 108 } // namespace
109 109
110 static int RequestIDForMessage(const IPC::Message& msg) { 110 static int RequestIDForMessage(const IPC::Message& msg) {
111 int request_id = -1; 111 int request_id = -1;
112 switch (msg.type()) { 112 switch (msg.type()) {
113 case ResourceMsg_UploadProgress::ID: 113 case ResourceMsg_UploadProgress::ID:
114 case ResourceMsg_ReceivedResponse::ID: 114 case ResourceMsg_ReceivedResponse::ID:
115 case ResourceMsg_ReceivedRedirect::ID: 115 case ResourceMsg_ReceivedRedirect::ID:
116 case ResourceMsg_SetDataBuffer::ID: 116 case ResourceMsg_SetDataBuffer::ID:
117 case ResourceMsg_DataReceived::ID: 117 case ResourceMsg_DataReceived::ID:
118 case ResourceMsg_DataDownloaded::ID: 118 case ResourceMsg_DataDownloaded::ID:
119 case ResourceMsg_RequestComplete::ID: { 119 case ResourceMsg_RequestComplete::ID: {
120 bool result = PickleIterator(msg).ReadInt(&request_id); 120 bool result = base::PickleIterator(msg).ReadInt(&request_id);
121 DCHECK(result); 121 DCHECK(result);
122 break; 122 break;
123 } 123 }
124 } 124 }
125 return request_id; 125 return request_id;
126 } 126 }
127 127
128 static ResourceHostMsg_Request CreateResourceRequest(const char* method, 128 static ResourceHostMsg_Request CreateResourceRequest(const char* method,
129 ResourceType type, 129 ResourceType type,
130 const GURL& url) { 130 const GURL& url) {
(...skipping 779 matching lines...) Expand 10 before | Expand all | Expand 10 after
910 // Intercepts requests for the given protocol. 910 // Intercepts requests for the given protocol.
911 void HandleScheme(const std::string& scheme) { 911 void HandleScheme(const std::string& scheme) {
912 job_factory_->HandleScheme(scheme); 912 job_factory_->HandleScheme(scheme);
913 EnsureSchemeIsAllowed(scheme); 913 EnsureSchemeIsAllowed(scheme);
914 } 914 }
915 915
916 void GenerateDataReceivedACK(const IPC::Message& msg) { 916 void GenerateDataReceivedACK(const IPC::Message& msg) {
917 EXPECT_EQ(ResourceMsg_DataReceived::ID, msg.type()); 917 EXPECT_EQ(ResourceMsg_DataReceived::ID, msg.type());
918 918
919 int request_id = -1; 919 int request_id = -1;
920 bool result = PickleIterator(msg).ReadInt(&request_id); 920 bool result = base::PickleIterator(msg).ReadInt(&request_id);
921 DCHECK(result); 921 DCHECK(result);
922 scoped_ptr<IPC::Message> ack( 922 scoped_ptr<IPC::Message> ack(
923 new ResourceHostMsg_DataReceived_ACK(request_id)); 923 new ResourceHostMsg_DataReceived_ACK(request_id));
924 924
925 base::MessageLoop::current()->PostTask( 925 base::MessageLoop::current()->PostTask(
926 FROM_HERE, 926 FROM_HERE,
927 base::Bind(&GenerateIPCMessage, filter_, base::Passed(&ack))); 927 base::Bind(&GenerateIPCMessage, filter_, base::Passed(&ack)));
928 } 928 }
929 929
930 // Setting filters for testing renderer messages. 930 // Setting filters for testing renderer messages.
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
1000 } 1000 }
1001 1001
1002 void CheckRequestCompleteErrorCode(const IPC::Message& message, 1002 void CheckRequestCompleteErrorCode(const IPC::Message& message,
1003 int expected_error_code) { 1003 int expected_error_code) {
1004 // Verify the expected error code was received. 1004 // Verify the expected error code was received.
1005 int request_id; 1005 int request_id;
1006 int error_code; 1006 int error_code;
1007 1007
1008 ASSERT_EQ(ResourceMsg_RequestComplete::ID, message.type()); 1008 ASSERT_EQ(ResourceMsg_RequestComplete::ID, message.type());
1009 1009
1010 PickleIterator iter(message); 1010 base::PickleIterator iter(message);
1011 ASSERT_TRUE(IPC::ReadParam(&message, &iter, &request_id)); 1011 ASSERT_TRUE(IPC::ReadParam(&message, &iter, &request_id));
1012 ASSERT_TRUE(IPC::ReadParam(&message, &iter, &error_code)); 1012 ASSERT_TRUE(IPC::ReadParam(&message, &iter, &error_code));
1013 ASSERT_EQ(expected_error_code, error_code); 1013 ASSERT_EQ(expected_error_code, error_code);
1014 } 1014 }
1015 1015
1016 testing::AssertionResult ExtractDataOffsetAndLength(const IPC::Message& message, 1016 testing::AssertionResult ExtractDataOffsetAndLength(const IPC::Message& message,
1017 int* data_offset, 1017 int* data_offset,
1018 int* data_length) { 1018 int* data_length) {
1019 PickleIterator iter(message); 1019 base::PickleIterator iter(message);
1020 int request_id; 1020 int request_id;
1021 if (!IPC::ReadParam(&message, &iter, &request_id)) 1021 if (!IPC::ReadParam(&message, &iter, &request_id))
1022 return testing::AssertionFailure() << "Could not read request_id"; 1022 return testing::AssertionFailure() << "Could not read request_id";
1023 if (!IPC::ReadParam(&message, &iter, data_offset)) 1023 if (!IPC::ReadParam(&message, &iter, data_offset))
1024 return testing::AssertionFailure() << "Could not read data_offset"; 1024 return testing::AssertionFailure() << "Could not read data_offset";
1025 if (!IPC::ReadParam(&message, &iter, data_length)) 1025 if (!IPC::ReadParam(&message, &iter, data_length))
1026 return testing::AssertionFailure() << "Could not read data_length"; 1026 return testing::AssertionFailure() << "Could not read data_length";
1027 return testing::AssertionSuccess(); 1027 return testing::AssertionSuccess();
1028 } 1028 }
1029 1029
(...skipping 10 matching lines...) Expand all
1040 // This function verifies that we received 4 messages and that they are 1040 // This function verifies that we received 4 messages and that they are
1041 // appropriate. It allows for an error code other than net::OK if the request 1041 // appropriate. It allows for an error code other than net::OK if the request
1042 // should successfully receive data and then abort, e.g., on cancel. 1042 // should successfully receive data and then abort, e.g., on cancel.
1043 ASSERT_EQ(4U, messages.size()); 1043 ASSERT_EQ(4U, messages.size());
1044 1044
1045 // The first messages should be received response 1045 // The first messages should be received response
1046 ASSERT_EQ(ResourceMsg_ReceivedResponse::ID, messages[0].type()); 1046 ASSERT_EQ(ResourceMsg_ReceivedResponse::ID, messages[0].type());
1047 1047
1048 ASSERT_EQ(ResourceMsg_SetDataBuffer::ID, messages[1].type()); 1048 ASSERT_EQ(ResourceMsg_SetDataBuffer::ID, messages[1].type());
1049 1049
1050 PickleIterator iter(messages[1]); 1050 base::PickleIterator iter(messages[1]);
1051 int request_id; 1051 int request_id;
1052 ASSERT_TRUE(IPC::ReadParam(&messages[1], &iter, &request_id)); 1052 ASSERT_TRUE(IPC::ReadParam(&messages[1], &iter, &request_id));
1053 base::SharedMemoryHandle shm_handle; 1053 base::SharedMemoryHandle shm_handle;
1054 ASSERT_TRUE(IPC::ReadParam(&messages[1], &iter, &shm_handle)); 1054 ASSERT_TRUE(IPC::ReadParam(&messages[1], &iter, &shm_handle));
1055 int shm_size; 1055 int shm_size;
1056 ASSERT_TRUE(IPC::ReadParam(&messages[1], &iter, &shm_size)); 1056 ASSERT_TRUE(IPC::ReadParam(&messages[1], &iter, &shm_size));
1057 1057
1058 // Followed by the data, currently we only do the data in one chunk, but 1058 // Followed by the data, currently we only do the data in one chunk, but
1059 // should probably test multiple chunks later 1059 // should probably test multiple chunks later
1060 ASSERT_EQ(ResourceMsg_DataReceived::ID, messages[2].type()); 1060 ASSERT_EQ(ResourceMsg_DataReceived::ID, messages[2].type());
(...skipping 1945 matching lines...) Expand 10 before | Expand all | Expand 10 after
3006 3006
3007 // ReceivedResponse 3007 // ReceivedResponse
3008 ResourceResponseHead response_head; 3008 ResourceResponseHead response_head;
3009 GetResponseHead(messages, &response_head); 3009 GetResponseHead(messages, &response_head);
3010 ASSERT_FALSE(response_head.download_file_path.empty()); 3010 ASSERT_FALSE(response_head.download_file_path.empty());
3011 3011
3012 // DataDownloaded 3012 // DataDownloaded
3013 size_t total_len = 0; 3013 size_t total_len = 0;
3014 for (size_t i = 1; i < messages.size() - 1; i++) { 3014 for (size_t i = 1; i < messages.size() - 1; i++) {
3015 ASSERT_EQ(ResourceMsg_DataDownloaded::ID, messages[i].type()); 3015 ASSERT_EQ(ResourceMsg_DataDownloaded::ID, messages[i].type());
3016 PickleIterator iter(messages[i]); 3016 base::PickleIterator iter(messages[i]);
3017 int request_id, data_len; 3017 int request_id, data_len;
3018 ASSERT_TRUE(IPC::ReadParam(&messages[i], &iter, &request_id)); 3018 ASSERT_TRUE(IPC::ReadParam(&messages[i], &iter, &request_id));
3019 ASSERT_TRUE(IPC::ReadParam(&messages[i], &iter, &data_len)); 3019 ASSERT_TRUE(IPC::ReadParam(&messages[i], &iter, &data_len));
3020 total_len += data_len; 3020 total_len += data_len;
3021 } 3021 }
3022 EXPECT_EQ(net::URLRequestTestJob::test_data_1().size(), total_len); 3022 EXPECT_EQ(net::URLRequestTestJob::test_data_1().size(), total_len);
3023 3023
3024 // RequestComplete 3024 // RequestComplete
3025 CheckRequestCompleteErrorCode(messages.back(), net::OK); 3025 CheckRequestCompleteErrorCode(messages.back(), net::OK);
3026 3026
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after
3242 return nullptr; 3242 return nullptr;
3243 } 3243 }
3244 3244
3245 net::URLRequestJob* TestURLRequestJobFactory::MaybeInterceptResponse( 3245 net::URLRequestJob* TestURLRequestJobFactory::MaybeInterceptResponse(
3246 net::URLRequest* request, 3246 net::URLRequest* request,
3247 net::NetworkDelegate* network_delegate) const { 3247 net::NetworkDelegate* network_delegate) const {
3248 return nullptr; 3248 return nullptr;
3249 } 3249 }
3250 3250
3251 } // namespace content 3251 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/loader/resource_dispatcher_host_impl.cc ('k') | content/browser/loader/resource_scheduler_filter.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698