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

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

Issue 2481093003: Introduce ResourceRequesterInfo to abstract the requester of resource request (Closed)
Patch Set: incorporated kinuko's comment 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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_revalidation_manager.h" 5 #include "content/browser/loader/async_revalidation_manager.h"
6 6
7 #include <deque> 7 #include <deque>
8 #include <string> 8 #include <string>
9 #include <utility> 9 #include <utility>
10 10
11 #include "base/bind.h" 11 #include "base/bind.h"
12 #include "base/callback.h" 12 #include "base/callback.h"
13 #include "base/macros.h" 13 #include "base/macros.h"
14 #include "base/memory/ptr_util.h" 14 #include "base/memory/ptr_util.h"
15 #include "base/memory/shared_memory_handle.h" 15 #include "base/memory/shared_memory_handle.h"
16 #include "base/pickle.h" 16 #include "base/pickle.h"
17 #include "base/run_loop.h" 17 #include "base/run_loop.h"
18 #include "base/strings/string_util.h" 18 #include "base/strings/string_util.h"
19 #include "content/browser/child_process_security_policy_impl.h" 19 #include "content/browser/child_process_security_policy_impl.h"
20 #include "content/browser/loader/resource_dispatcher_host_impl.h" 20 #include "content/browser/loader/resource_dispatcher_host_impl.h"
21 #include "content/browser/loader/resource_message_filter.h" 21 #include "content/browser/loader/resource_message_filter.h"
22 #include "content/browser/loader_delegate_impl.h" 22 #include "content/browser/loader_delegate_impl.h"
23 #include "content/common/child_process_host_impl.h" 23 #include "content/common/child_process_host_impl.h"
24 #include "content/common/resource_messages.h" 24 #include "content/common/resource_messages.h"
25 #include "content/common/resource_request.h" 25 #include "content/common/resource_request.h"
26 #include "content/public/browser/resource_context.h" 26 #include "content/public/browser/resource_context.h"
27 #include "content/public/common/appcache_info.h" 27 #include "content/public/common/appcache_info.h"
28 #include "content/public/common/process_type.h"
29 #include "content/public/common/resource_type.h" 28 #include "content/public/common/resource_type.h"
30 #include "content/public/test/test_browser_context.h" 29 #include "content/public/test/test_browser_context.h"
31 #include "content/public/test/test_browser_thread_bundle.h" 30 #include "content/public/test/test_browser_thread_bundle.h"
32 #include "ipc/ipc_param_traits.h" 31 #include "ipc/ipc_param_traits.h"
33 #include "net/base/load_flags.h" 32 #include "net/base/load_flags.h"
34 #include "net/base/network_delegate.h" 33 #include "net/base/network_delegate.h"
35 #include "net/http/http_util.h" 34 #include "net/http/http_util.h"
36 #include "net/url_request/url_request.h" 35 #include "net/url_request/url_request.h"
37 #include "net/url_request/url_request_job.h" 36 #include "net/url_request/url_request_job.h"
38 #include "net/url_request/url_request_job_factory.h" 37 #include "net/url_request/url_request_job_factory.h"
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
200 } 199 }
201 } 200 }
202 } 201 }
203 202
204 // This filter just deletes any messages that are sent through it. 203 // This filter just deletes any messages that are sent through it.
205 class BlackholeFilter : public ResourceMessageFilter { 204 class BlackholeFilter : public ResourceMessageFilter {
206 public: 205 public:
207 explicit BlackholeFilter(ResourceContext* resource_context) 206 explicit BlackholeFilter(ResourceContext* resource_context)
208 : ResourceMessageFilter( 207 : ResourceMessageFilter(
209 ChildProcessHostImpl::GenerateChildProcessUniqueId(), 208 ChildProcessHostImpl::GenerateChildProcessUniqueId(),
210 PROCESS_TYPE_RENDERER,
211 nullptr, 209 nullptr,
212 nullptr, 210 nullptr,
213 nullptr, 211 nullptr,
214 nullptr, 212 nullptr,
215 base::Bind(&BlackholeFilter::GetContexts, base::Unretained(this))), 213 base::Bind(&BlackholeFilter::GetContexts, base::Unretained(this))),
216 resource_context_(resource_context) { 214 resource_context_(resource_context) {
215 InitializeOnIOThread();
217 ChildProcessSecurityPolicyImpl::GetInstance()->Add(child_id()); 216 ChildProcessSecurityPolicyImpl::GetInstance()->Add(child_id());
218 } 217 }
219 218
220 bool Send(IPC::Message* msg) override { 219 bool Send(IPC::Message* msg) override {
221 std::unique_ptr<IPC::Message> take_ownership(msg); 220 std::unique_ptr<IPC::Message> take_ownership(msg);
222 ReleaseHandlesInMessage(*msg); 221 ReleaseHandlesInMessage(*msg);
223 return true; 222 return true;
224 } 223 }
225 224
226 private: 225 private:
(...skipping 30 matching lines...) Expand all
257 request.download_to_file = false; 256 request.download_to_file = false;
258 request.should_reset_appcache = false; 257 request.should_reset_appcache = false;
259 request.is_main_frame = true; 258 request.is_main_frame = true;
260 request.parent_is_main_frame = false; 259 request.parent_is_main_frame = false;
261 request.parent_render_frame_id = -1; 260 request.parent_render_frame_id = -1;
262 request.transition_type = ui::PAGE_TRANSITION_LINK; 261 request.transition_type = ui::PAGE_TRANSITION_LINK;
263 request.allow_download = true; 262 request.allow_download = true;
264 return request; 263 return request;
265 } 264 }
266 265
266 } // namespace
mmenke 2016/11/21 19:51:55 Why this change?
horo 2016/11/22 01:12:07 Done. reverted.
267
267 class AsyncRevalidationManagerTest : public ::testing::Test { 268 class AsyncRevalidationManagerTest : public ::testing::Test {
268 protected: 269 protected:
269 AsyncRevalidationManagerTest( 270 AsyncRevalidationManagerTest(
270 std::unique_ptr<net::TestNetworkDelegate> network_delegate) 271 std::unique_ptr<net::TestNetworkDelegate> network_delegate)
271 : thread_bundle_(content::TestBrowserThreadBundle::IO_MAINLOOP), 272 : thread_bundle_(content::TestBrowserThreadBundle::IO_MAINLOOP),
272 network_delegate_(std::move(network_delegate)) { 273 network_delegate_(std::move(network_delegate)) {
273 host_.SetLoaderDelegate(&loader_delegate_); 274 host_.SetLoaderDelegate(&loader_delegate_);
274 browser_context_.reset(new TestBrowserContext()); 275 browser_context_.reset(new TestBrowserContext());
275 BrowserContext::EnsureResourceContextInitialized(browser_context_.get()); 276 BrowserContext::EnsureResourceContextInitialized(browser_context_.get());
276 base::RunLoop().RunUntilIdle(); 277 base::RunLoop().RunUntilIdle();
(...skipping 23 matching lines...) Expand all
300 void SetResponse(const std::string& headers, const std::string& data) { 301 void SetResponse(const std::string& headers, const std::string& data) {
301 job_factory_->SetResponse(headers, data); 302 job_factory_->SetResponse(headers, data);
302 } 303 }
303 304
304 // Creates a request using the current test object as the filter and 305 // Creates a request using the current test object as the filter and
305 // SubResource as the resource type. 306 // SubResource as the resource type.
306 void MakeTestRequest(int render_view_id, int request_id, const GURL& url) { 307 void MakeTestRequest(int render_view_id, int request_id, const GURL& url) {
307 ResourceRequest request = 308 ResourceRequest request =
308 CreateResourceRequest("GET", RESOURCE_TYPE_SUB_RESOURCE, url); 309 CreateResourceRequest("GET", RESOURCE_TYPE_SUB_RESOURCE, url);
309 ResourceHostMsg_RequestResource msg(render_view_id, request_id, request); 310 ResourceHostMsg_RequestResource msg(render_view_id, request_id, request);
310 host_.OnMessageReceived(msg, filter_.get()); 311 filter_->OnMessageReceived(msg);
311 base::RunLoop().RunUntilIdle(); 312 base::RunLoop().RunUntilIdle();
312 } 313 }
313 314
314 void EnsureSchemeIsAllowed(const std::string& scheme) { 315 void EnsureSchemeIsAllowed(const std::string& scheme) {
315 ChildProcessSecurityPolicyImpl* policy = 316 ChildProcessSecurityPolicyImpl* policy =
316 ChildProcessSecurityPolicyImpl::GetInstance(); 317 ChildProcessSecurityPolicyImpl::GetInstance();
317 if (!policy->IsWebSafeScheme(scheme)) 318 if (!policy->IsWebSafeScheme(scheme))
318 policy->RegisterWebSafeScheme(scheme); 319 policy->RegisterWebSafeScheme(scheme);
319 } 320 }
320 321
(...skipping 16 matching lines...) Expand all
337 338
338 EXPECT_TRUE(url_request->load_flags() & net::LOAD_SUPPORT_ASYNC_REVALIDATION); 339 EXPECT_TRUE(url_request->load_flags() & net::LOAD_SUPPORT_ASYNC_REVALIDATION);
339 } 340 }
340 341
341 TEST_F(AsyncRevalidationManagerTest, AsyncRevalidationNotSupportedForPOST) { 342 TEST_F(AsyncRevalidationManagerTest, AsyncRevalidationNotSupportedForPOST) {
342 SetResponse(net::URLRequestTestJob::test_headers(), "delay complete"); 343 SetResponse(net::URLRequestTestJob::test_headers(), "delay complete");
343 // Create POST request. 344 // Create POST request.
344 ResourceRequest request = CreateResourceRequest( 345 ResourceRequest request = CreateResourceRequest(
345 "POST", RESOURCE_TYPE_SUB_RESOURCE, GURL("http://example.com/baz.php")); 346 "POST", RESOURCE_TYPE_SUB_RESOURCE, GURL("http://example.com/baz.php"));
346 ResourceHostMsg_RequestResource msg(0, 1, request); 347 ResourceHostMsg_RequestResource msg(0, 1, request);
347 host_.OnMessageReceived(msg, filter_.get()); 348 filter_->OnMessageReceived(msg);
348 base::RunLoop().RunUntilIdle(); 349 base::RunLoop().RunUntilIdle();
349 350
350 net::URLRequest* url_request( 351 net::URLRequest* url_request(
351 host_.GetURLRequest(GlobalRequestID(filter_->child_id(), 1))); 352 host_.GetURLRequest(GlobalRequestID(filter_->child_id(), 1)));
352 ASSERT_TRUE(url_request); 353 ASSERT_TRUE(url_request);
353 354
354 EXPECT_FALSE(url_request->load_flags() & 355 EXPECT_FALSE(url_request->load_flags() &
355 net::LOAD_SUPPORT_ASYNC_REVALIDATION); 356 net::LOAD_SUPPORT_ASYNC_REVALIDATION);
356 } 357 }
357 358
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
547 net::LOAD_SUPPORT_ASYNC_REVALIDATION); 548 net::LOAD_SUPPORT_ASYNC_REVALIDATION);
548 549
549 // An async revalidation happens for the redirect. It has no body, so it has 550 // An async revalidation happens for the redirect. It has no body, so it has
550 // already completed. 551 // already completed.
551 EXPECT_TRUE(NextRequestWasDestroyed()); 552 EXPECT_TRUE(NextRequestWasDestroyed());
552 553
553 // But no others. 554 // But no others.
554 EXPECT_TRUE(IsEmpty()); 555 EXPECT_TRUE(IsEmpty());
555 } 556 }
556 557
557 } // namespace
558
559 } // namespace content 558 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698