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

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

Issue 1130343006: Don't share ResourceDispatcherHostImpl's timer for reporting upload progress. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@safari-backend
Patch Set: Created 5 years, 7 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) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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/resource_loader.h" 5 #include "content/browser/loader/resource_loader.h"
6 6
7 #include "base/files/file.h" 7 #include "base/files/file.h"
8 #include "base/files/file_util.h" 8 #include "base/files/file_util.h"
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "base/message_loop/message_loop_proxy.h" 10 #include "base/message_loop/message_loop_proxy.h"
11 #include "base/run_loop.h" 11 #include "base/run_loop.h"
12 #include "content/browser/browser_thread_impl.h" 12 #include "content/browser/browser_thread_impl.h"
13 #include "content/browser/loader/redirect_to_file_resource_handler.h" 13 #include "content/browser/loader/redirect_to_file_resource_handler.h"
14 #include "content/browser/loader/resource_loader_delegate.h" 14 #include "content/browser/loader/resource_loader_delegate.h"
15 #include "content/public/browser/client_certificate_delegate.h" 15 #include "content/public/browser/client_certificate_delegate.h"
16 #include "content/public/browser/resource_request_info.h" 16 #include "content/public/browser/resource_request_info.h"
17 #include "content/public/common/content_paths.h"
17 #include "content/public/common/resource_response.h" 18 #include "content/public/common/resource_response.h"
18 #include "content/public/test/mock_resource_context.h" 19 #include "content/public/test/mock_resource_context.h"
19 #include "content/public/test/test_browser_context.h" 20 #include "content/public/test/test_browser_context.h"
20 #include "content/public/test/test_browser_thread_bundle.h" 21 #include "content/public/test/test_browser_thread_bundle.h"
21 #include "content/public/test/test_renderer_host.h" 22 #include "content/public/test/test_renderer_host.h"
22 #include "content/test/test_content_browser_client.h" 23 #include "content/test/test_content_browser_client.h"
23 #include "content/test/test_web_contents.h" 24 #include "content/test/test_web_contents.h"
24 #include "ipc/ipc_message.h" 25 #include "ipc/ipc_message.h"
25 #include "net/base/io_buffer.h" 26 #include "net/base/io_buffer.h"
26 #include "net/base/mock_file_stream.h" 27 #include "net/base/mock_file_stream.h"
27 #include "net/base/net_errors.h" 28 #include "net/base/net_errors.h"
28 #include "net/base/request_priority.h" 29 #include "net/base/request_priority.h"
29 #include "net/cert/x509_certificate.h" 30 #include "net/cert/x509_certificate.h"
30 #include "net/ssl/client_cert_store.h" 31 #include "net/ssl/client_cert_store.h"
31 #include "net/ssl/ssl_cert_request_info.h" 32 #include "net/ssl/ssl_cert_request_info.h"
33 #include "net/test/embedded_test_server/embedded_test_server.h"
32 #include "net/url_request/url_request.h" 34 #include "net/url_request/url_request.h"
33 #include "net/url_request/url_request_job_factory.h" 35 #include "net/url_request/url_request_job_factory.h"
34 #include "net/url_request/url_request_job_factory_impl.h" 36 #include "net/url_request/url_request_job_factory_impl.h"
35 #include "net/url_request/url_request_test_job.h" 37 #include "net/url_request/url_request_test_job.h"
36 #include "net/url_request/url_request_test_util.h" 38 #include "net/url_request/url_request_test_util.h"
37 #include "storage/browser/blob/shareable_file_reference.h" 39 #include "storage/browser/blob/shareable_file_reference.h"
38 #include "testing/gtest/include/gtest/gtest.h" 40 #include "testing/gtest/include/gtest/gtest.h"
39 41
40 using storage::ShareableFileReference; 42 using storage::ShareableFileReference;
41 43
(...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after
383 virtual net::URLRequestJobFactory::ProtocolHandler* CreateProtocolHandler() { 385 virtual net::URLRequestJobFactory::ProtocolHandler* CreateProtocolHandler() {
384 return net::URLRequestTestJob::CreateProtocolHandler(); 386 return net::URLRequestTestJob::CreateProtocolHandler();
385 } 387 }
386 388
387 virtual scoped_ptr<ResourceHandler> WrapResourceHandler( 389 virtual scoped_ptr<ResourceHandler> WrapResourceHandler(
388 scoped_ptr<ResourceHandlerStub> leaf_handler, 390 scoped_ptr<ResourceHandlerStub> leaf_handler,
389 net::URLRequest* request) { 391 net::URLRequest* request) {
390 return leaf_handler.Pass(); 392 return leaf_handler.Pass();
391 } 393 }
392 394
393 void SetUp() override { 395 void SetUpResourceLoader(const GURL& url) {
394 job_factory_.SetProtocolHandler("test", CreateProtocolHandler());
395
396 browser_context_.reset(new TestBrowserContext());
397 scoped_refptr<SiteInstance> site_instance =
398 SiteInstance::Create(browser_context_.get());
399 web_contents_.reset(
400 TestWebContents::Create(browser_context_.get(), site_instance.get()));
401 RenderFrameHost* rfh = web_contents_->GetMainFrame();
402
403 scoped_ptr<net::URLRequest> request( 396 scoped_ptr<net::URLRequest> request(
404 resource_context_.GetRequestContext()->CreateRequest( 397 resource_context_.GetRequestContext()->CreateRequest(
405 test_url(), 398 url,
406 net::DEFAULT_PRIORITY, 399 net::DEFAULT_PRIORITY,
407 NULL /* delegate */)); 400 NULL /* delegate */));
408 raw_ptr_to_request_ = request.get(); 401 raw_ptr_to_request_ = request.get();
402
403 RenderFrameHost* rfh = web_contents_->GetMainFrame();
409 ResourceRequestInfo::AllocateForTesting( 404 ResourceRequestInfo::AllocateForTesting(
410 request.get(), RESOURCE_TYPE_MAIN_FRAME, &resource_context_, 405 request.get(), RESOURCE_TYPE_MAIN_FRAME, &resource_context_,
411 rfh->GetProcess()->GetID(), rfh->GetRenderViewHost()->GetRoutingID(), 406 rfh->GetProcess()->GetID(), rfh->GetRenderViewHost()->GetRoutingID(),
412 rfh->GetRoutingID(), true /* is_main_frame */, 407 rfh->GetRoutingID(), true /* is_main_frame */,
413 false /* parent_is_main_frame */, true /* allow_download */, 408 false /* parent_is_main_frame */, true /* allow_download */,
414 false /* is_async */); 409 false /* is_async */);
415 scoped_ptr<ResourceHandlerStub> resource_handler( 410 scoped_ptr<ResourceHandlerStub> resource_handler(
416 new ResourceHandlerStub(request.get())); 411 new ResourceHandlerStub(request.get()));
417 raw_ptr_resource_handler_ = resource_handler.get(); 412 raw_ptr_resource_handler_ = resource_handler.get();
418 loader_.reset(new ResourceLoader( 413 loader_.reset(new ResourceLoader(
419 request.Pass(), 414 request.Pass(),
420 WrapResourceHandler(resource_handler.Pass(), raw_ptr_to_request_), 415 WrapResourceHandler(resource_handler.Pass(), raw_ptr_to_request_),
421 this)); 416 this));
422 } 417 }
423 418
419 void SetUp() override {
420 job_factory_.SetProtocolHandler("test", CreateProtocolHandler());
421
422 browser_context_.reset(new TestBrowserContext());
423 scoped_refptr<SiteInstance> site_instance =
424 SiteInstance::Create(browser_context_.get());
425 web_contents_.reset(
426 TestWebContents::Create(browser_context_.get(), site_instance.get()));
427
428 SetUpResourceLoader(test_url());
429 }
430
424 void TearDown() override { 431 void TearDown() override {
425 // Destroy the WebContents and pump the event loop before destroying 432 // Destroy the WebContents and pump the event loop before destroying
426 // |rvh_test_enabler_| and |thread_bundle_|. This lets asynchronous cleanup 433 // |rvh_test_enabler_| and |thread_bundle_|. This lets asynchronous cleanup
427 // tasks complete. 434 // tasks complete.
428 web_contents_.reset(); 435 web_contents_.reset();
429 base::RunLoop().RunUntilIdle(); 436 base::RunLoop().RunUntilIdle();
430 } 437 }
431 438
432 // ResourceLoaderDelegate: 439 // ResourceLoaderDelegate:
433 ResourceDispatcherHostLoginDelegate* CreateLoginDelegate( 440 ResourceDispatcherHostLoginDelegate* CreateLoginDelegate(
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after
633 EXPECT_FALSE(raw_ptr_resource_handler_->received_response_completed()); 640 EXPECT_FALSE(raw_ptr_resource_handler_->received_response_completed());
634 641
635 raw_ptr_resource_handler_->Resume(); 642 raw_ptr_resource_handler_->Resume();
636 base::RunLoop().RunUntilIdle(); 643 base::RunLoop().RunUntilIdle();
637 644
638 EXPECT_TRUE(raw_ptr_resource_handler_->received_response_completed()); 645 EXPECT_TRUE(raw_ptr_resource_handler_->received_response_completed());
639 EXPECT_EQ(net::URLRequestStatus::SUCCESS, 646 EXPECT_EQ(net::URLRequestStatus::SUCCESS,
640 raw_ptr_resource_handler_->status().status()); 647 raw_ptr_resource_handler_->status().status());
641 } 648 }
642 649
650 TEST_F(ResourceLoaderTest, UploadProgress) {
651 // Set up a test server.
652 net::test_server::EmbeddedTestServer server;
653 ASSERT_TRUE(server.InitializeAndWaitUntilReady());
654 base::FilePath path;
655 PathService::Get(content::DIR_TEST_DATA, &path);
656 server.ServeFilesFromDirectory(path);
657
658 SetUpResourceLoader(server.GetURL("/title1.html"));
659
660 raw_ptr_to_request_->EnableChunkedUpload();
661 raw_ptr_to_request_->AppendChunkToUpload("test", 4, true);
662
663 loader_->StartRequest();
664 base::RunLoop().RunUntilIdle();
Andre 2015/05/20 21:05:12 What should we do here? What is the best way to wa
mmenke 2015/05/20 21:15:04 My suggestion: Add a method to ResourceHandlerStu
Andre 2015/05/20 22:36:10 Thanks, that works well.
665 }
666
643 class ResourceLoaderRedirectToFileTest : public ResourceLoaderTest { 667 class ResourceLoaderRedirectToFileTest : public ResourceLoaderTest {
644 public: 668 public:
645 ResourceLoaderRedirectToFileTest() 669 ResourceLoaderRedirectToFileTest()
646 : file_stream_(NULL), 670 : file_stream_(NULL),
647 redirect_to_file_resource_handler_(NULL) { 671 redirect_to_file_resource_handler_(NULL) {
648 } 672 }
649 673
650 base::FilePath temp_path() const { return temp_path_; } 674 base::FilePath temp_path() const { return temp_path_; }
651 ShareableFileReference* deletable_file() const { 675 ShareableFileReference* deletable_file() const {
652 return deletable_file_.get(); 676 return deletable_file_.get();
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after
884 ASSERT_TRUE(base::ReadFileToString(temp_path(), &contents)); 908 ASSERT_TRUE(base::ReadFileToString(temp_path(), &contents));
885 EXPECT_EQ(test_data(), contents); 909 EXPECT_EQ(test_data(), contents);
886 910
887 // Release the loader. The file should be gone now. 911 // Release the loader. The file should be gone now.
888 ReleaseLoader(); 912 ReleaseLoader();
889 base::RunLoop().RunUntilIdle(); 913 base::RunLoop().RunUntilIdle();
890 EXPECT_FALSE(base::PathExists(temp_path())); 914 EXPECT_FALSE(base::PathExists(temp_path()));
891 } 915 }
892 916
893 } // namespace content 917 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698