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

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

Issue 2481093003: Introduce ResourceRequesterInfo to abstract the requester of resource request (Closed)
Patch Set: fix URLLoaderFactoryImplTest.CancelFromRenderer Created 4 years, 1 month 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/async_resource_handler.h" 5 #include "content/browser/loader/async_resource_handler.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 #include <memory> 9 #include <memory>
10 #include <string> 10 #include <string>
(...skipping 15 matching lines...) Expand all
26 #include "content/browser/loader/resource_dispatcher_host_impl.h" 26 #include "content/browser/loader/resource_dispatcher_host_impl.h"
27 #include "content/browser/loader/resource_loader.h" 27 #include "content/browser/loader/resource_loader.h"
28 #include "content/browser/loader/resource_loader_delegate.h" 28 #include "content/browser/loader/resource_loader_delegate.h"
29 #include "content/browser/loader/resource_message_filter.h" 29 #include "content/browser/loader/resource_message_filter.h"
30 #include "content/browser/loader/resource_request_info_impl.h" 30 #include "content/browser/loader/resource_request_info_impl.h"
31 #include "content/common/resource_messages.h" 31 #include "content/common/resource_messages.h"
32 #include "content/common/resource_request.h" 32 #include "content/common/resource_request.h"
33 #include "content/public/browser/resource_context.h" 33 #include "content/public/browser/resource_context.h"
34 #include "content/public/browser/resource_request_info.h" 34 #include "content/public/browser/resource_request_info.h"
35 #include "content/public/common/content_features.h" 35 #include "content/public/common/content_features.h"
36 #include "content/public/common/process_type.h"
37 #include "content/public/common/resource_type.h" 36 #include "content/public/common/resource_type.h"
38 #include "content/public/test/mock_resource_context.h" 37 #include "content/public/test/mock_resource_context.h"
39 #include "content/public/test/test_browser_thread_bundle.h" 38 #include "content/public/test/test_browser_thread_bundle.h"
40 #include "ipc/ipc_message.h" 39 #include "ipc/ipc_message.h"
41 #include "ipc/ipc_message_macros.h" 40 #include "ipc/ipc_message_macros.h"
42 #include "net/http/http_response_headers.h" 41 #include "net/http/http_response_headers.h"
43 #include "net/http/http_util.h" 42 #include "net/http/http_util.h"
44 #include "net/ssl/client_cert_store.h" 43 #include "net/ssl/client_cert_store.h"
45 #include "net/url_request/url_request.h" 44 #include "net/url_request/url_request.h"
46 #include "net/url_request/url_request_context.h" 45 #include "net/url_request/url_request_context.h"
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 size_t response_data_size_; 84 size_t response_data_size_;
86 }; 85 };
87 86
88 // A subclass of ResourceMessageFilter that records IPC messages that are sent. 87 // A subclass of ResourceMessageFilter that records IPC messages that are sent.
89 class RecordingResourceMessageFilter : public ResourceMessageFilter { 88 class RecordingResourceMessageFilter : public ResourceMessageFilter {
90 public: 89 public:
91 RecordingResourceMessageFilter(ResourceContext* resource_context, 90 RecordingResourceMessageFilter(ResourceContext* resource_context,
92 net::URLRequestContext* request_context) 91 net::URLRequestContext* request_context)
93 : ResourceMessageFilter( 92 : ResourceMessageFilter(
94 0, 93 0,
95 PROCESS_TYPE_RENDERER,
96 nullptr, 94 nullptr,
97 nullptr, 95 nullptr,
98 nullptr, 96 nullptr,
99 nullptr, 97 nullptr,
100 base::Bind(&RecordingResourceMessageFilter::GetContexts, 98 base::Bind(&RecordingResourceMessageFilter::GetContexts,
101 base::Unretained(this))), 99 base::Unretained(this))),
102 resource_context_(resource_context), 100 resource_context_(resource_context),
103 request_context_(request_context) { 101 request_context_(request_context) {
102 OnFilterAdded(nullptr);
kinuko 2016/11/18 01:29:21 Needing to OnFilterAdded even with nullptr in unit
horo 2016/11/18 02:02:51 Done.
104 set_peer_process_for_testing(base::Process::Current()); 103 set_peer_process_for_testing(base::Process::Current());
105 } 104 }
106 105
107 const std::vector<std::unique_ptr<IPC::Message>>& messages() const { 106 const std::vector<std::unique_ptr<IPC::Message>>& messages() const {
108 return messages_; 107 return messages_;
109 } 108 }
110 109
111 // IPC::Sender implementation: 110 // IPC::Sender implementation:
112 bool Send(IPC::Message* message) override { 111 bool Send(IPC::Message* message) override {
113 // Unpickle the base::SharedMemoryHandle to avoid warnings about 112 // Unpickle the base::SharedMemoryHandle to avoid warnings about
(...skipping 14 matching lines...) Expand all
128 net::URLRequestContext** request_context) { 127 net::URLRequestContext** request_context) {
129 *resource_context = resource_context_; 128 *resource_context = resource_context_;
130 *request_context = request_context_; 129 *request_context = request_context_;
131 } 130 }
132 131
133 ResourceContext* const resource_context_; 132 ResourceContext* const resource_context_;
134 net::URLRequestContext* const request_context_; 133 net::URLRequestContext* const request_context_;
135 std::vector<std::unique_ptr<IPC::Message>> messages_; 134 std::vector<std::unique_ptr<IPC::Message>> messages_;
136 }; 135 };
137 136
137 } // namespace
138
138 class AsyncResourceHandlerTest : public ::testing::Test, 139 class AsyncResourceHandlerTest : public ::testing::Test,
139 public ResourceLoaderDelegate { 140 public ResourceLoaderDelegate {
140 protected: 141 protected:
141 AsyncResourceHandlerTest() 142 AsyncResourceHandlerTest()
142 : thread_bundle_(TestBrowserThreadBundle::IO_MAINLOOP), context_(true) {} 143 : thread_bundle_(TestBrowserThreadBundle::IO_MAINLOOP), context_(true) {}
143 144
144 void TearDown() override { 145 void TearDown() override {
145 if (filter_) 146 if (filter_)
146 filter_->OnChannelClosing(); 147 filter_->OnChannelClosing();
147 // Prevent memory leaks. 148 // Prevent memory leaks.
148 filter_ = nullptr; 149 filter_ = nullptr;
149 rdh_.Shutdown(); 150 rdh_.Shutdown();
150 base::RunLoop().RunUntilIdle(); 151 base::RunLoop().RunUntilIdle();
151 } 152 }
152 153
153 void CreateRequestWithResponseDataSize(size_t response_data_size) { 154 void CreateRequestWithResponseDataSize(size_t response_data_size) {
154 test_job_factory_.SetProtocolHandler( 155 test_job_factory_.SetProtocolHandler(
155 "test", base::MakeUnique<TestProtocolHandler>(response_data_size)); 156 "test", base::MakeUnique<TestProtocolHandler>(response_data_size));
156 context_.set_job_factory(&test_job_factory_); 157 context_.set_job_factory(&test_job_factory_);
157 context_.Init(); 158 context_.Init();
158 std::unique_ptr<net::URLRequest> request = context_.CreateRequest( 159 std::unique_ptr<net::URLRequest> request = context_.CreateRequest(
159 GURL("test:test"), net::DEFAULT_PRIORITY, nullptr); 160 GURL("test:test"), net::DEFAULT_PRIORITY, nullptr);
160 resource_context_ = base::MakeUnique<MockResourceContext>(&context_); 161 resource_context_ = base::MakeUnique<MockResourceContext>(&context_);
161 filter_ = 162 filter_ =
162 new RecordingResourceMessageFilter(resource_context_.get(), &context_); 163 new RecordingResourceMessageFilter(resource_context_.get(), &context_);
163 ResourceRequestInfoImpl* info = new ResourceRequestInfoImpl( 164 ResourceRequestInfoImpl* info = new ResourceRequestInfoImpl(
164 PROCESS_TYPE_RENDERER, // process_type 165 filter_->requester_info(),
165 0, // child_id
166 0, // route_id 166 0, // route_id
167 -1, // frame_tree_node_id 167 -1, // frame_tree_node_id
168 0, // origin_pid 168 0, // origin_pid
169 0, // request_id 169 0, // request_id
170 0, // render_frame_id 170 0, // render_frame_id
171 false, // is_main_frame 171 false, // is_main_frame
172 false, // parent_is_main_frame 172 false, // parent_is_main_frame
173 RESOURCE_TYPE_IMAGE, // resource_type 173 RESOURCE_TYPE_IMAGE, // resource_type
174 ui::PAGE_TRANSITION_LINK, // transition_type 174 ui::PAGE_TRANSITION_LINK, // transition_type
175 false, // should_replace_current_entry 175 false, // should_replace_current_entry
176 false, // is_download 176 false, // is_download
177 false, // is_stream 177 false, // is_stream
178 false, // allow_download 178 false, // allow_download
179 false, // has_user_gesture 179 false, // has_user_gesture
180 false, // enable load timing 180 false, // enable load timing
181 false, // enable upload progress 181 false, // enable upload progress
182 false, // do_not_prompt_for_login 182 false, // do_not_prompt_for_login
183 blink::WebReferrerPolicyDefault, // referrer_policy 183 blink::WebReferrerPolicyDefault, // referrer_policy
184 blink::WebPageVisibilityStateVisible, // visibility_state 184 blink::WebPageVisibilityStateVisible, // visibility_state
185 resource_context_.get(), // context 185 resource_context_.get(), // context
186 filter_->GetWeakPtr(), // filter
187 false, // report_raw_headers 186 false, // report_raw_headers
188 true, // is_async 187 true, // is_async
189 false, // is_using_lofi 188 false, // is_using_lofi
190 std::string(), // original_headers 189 std::string(), // original_headers
191 nullptr, // body 190 nullptr, // body
192 false); // initiated_in_secure_context 191 false); // initiated_in_secure_context
193 info->AssociateWithRequest(request.get()); 192 info->AssociateWithRequest(request.get());
194 std::unique_ptr<AsyncResourceHandler> handler = 193 std::unique_ptr<AsyncResourceHandler> handler =
195 base::MakeUnique<AsyncResourceHandler>(request.get(), &rdh_); 194 base::MakeUnique<AsyncResourceHandler>(request.get(), &rdh_);
196 loader_ = base::MakeUnique<ResourceLoader>( 195 loader_ = base::MakeUnique<ResourceLoader>(
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
298 297
299 ASSERT_EQ(ResourceMsg_DataReceived::ID, messages[3]->type()); 298 ASSERT_EQ(ResourceMsg_DataReceived::ID, messages[3]->type());
300 ResourceMsg_DataReceived::Read(messages[3].get(), &params); 299 ResourceMsg_DataReceived::Read(messages[3].get(), &params);
301 300
302 encoded_data_length = std::get<3>(params); 301 encoded_data_length = std::get<3>(params);
303 EXPECT_EQ(32768, encoded_data_length); 302 EXPECT_EQ(32768, encoded_data_length);
304 encoded_body_length = std::get<4>(params); 303 encoded_body_length = std::get<4>(params);
305 EXPECT_EQ(32768, encoded_body_length); 304 EXPECT_EQ(32768, encoded_body_length);
306 } 305 }
307 306
308 } // namespace
309
310 } // namespace content 307 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698