diff options
author | willchan@chromium.org <willchan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-05-11 03:27:09 +0000 |
---|---|---|
committer | willchan@chromium.org <willchan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-05-11 03:27:09 +0000 |
commit | ef2bf421b04de3134cd7c02aac40a5565ef24dd9 (patch) | |
tree | 5bf90cca0bd015c23e843614ebf2e9f99cb8cd99 /webkit | |
parent | 280e9b5d4b2fb0fe14824e526521710a658bce56 (diff) | |
download | chromium_src-ef2bf421b04de3134cd7c02aac40a5565ef24dd9.zip chromium_src-ef2bf421b04de3134cd7c02aac40a5565ef24dd9.tar.gz chromium_src-ef2bf421b04de3134cd7c02aac40a5565ef24dd9.tar.bz2 |
Stop refcounting URLRequestContext.
While doing so, fix a few issues with the code like ordering of URLRequestContext to ensure correct destruction order. Also fix const correctness in some places.
BUG=58859
TEST=none
TBR=willchan
Review URL: https://chromiumcodereview.appspot.com/10299002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@136497 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit')
5 files changed, 43 insertions, 57 deletions
diff --git a/webkit/appcache/appcache_update_job_unittest.cc b/webkit/appcache/appcache_update_job_unittest.cc index 604eaf1..123a563 100644 --- a/webkit/appcache/appcache_update_job_unittest.cc +++ b/webkit/appcache/appcache_update_job_unittest.cc @@ -536,8 +536,8 @@ class IOThread : public base::Thread { Stop(); } - const scoped_refptr<net::URLRequestContext>& request_context() { - return request_context_; + net::URLRequestContext* request_context() { + return request_context_.get(); } void SetNewJobFactory(net::URLRequestJobFactory* job_factory) { @@ -550,18 +550,18 @@ class IOThread : public base::Thread { job_factory_.reset(new net::URLRequestJobFactory); job_factory_->SetProtocolHandler("http", new MockHttpServerJobFactory); job_factory_->SetProtocolHandler("https", new MockHttpServerJobFactory); - request_context_ = new TestURLRequestContext(); + request_context_.reset(new TestURLRequestContext()); request_context_->set_job_factory(job_factory_.get()); } virtual void CleanUp() { - request_context_ = NULL; + request_context_.reset(); job_factory_.reset(); } private: scoped_ptr<net::URLRequestJobFactory> job_factory_; - scoped_refptr<net::URLRequestContext> request_context_; + scoped_ptr<net::URLRequestContext> request_context_; }; class AppCacheUpdateJobTest : public testing::Test, diff --git a/webkit/fileapi/file_system_operation_write_unittest.cc b/webkit/fileapi/file_system_operation_write_unittest.cc index 5ba14c5..2af53ec 100644 --- a/webkit/fileapi/file_system_operation_write_unittest.cc +++ b/webkit/fileapi/file_system_operation_write_unittest.cc @@ -154,13 +154,12 @@ class TestURLRequestContext : public net::URLRequestContext { TestURLRequestContext() : blob_storage_controller_(new webkit_blob::BlobStorageController) {} + virtual ~TestURLRequestContext() {} + webkit_blob::BlobStorageController* blob_storage_controller() const { return blob_storage_controller_.get(); } - protected: - virtual ~TestURLRequestContext() {} - private: scoped_ptr<webkit_blob::BlobStorageController> blob_storage_controller_; }; @@ -211,16 +210,15 @@ TEST_F(FileSystemOperationWriteTest, TestWriteSuccess) { scoped_refptr<webkit_blob::BlobData> blob_data(new webkit_blob::BlobData()); blob_data->AppendData("Hello, world!\n"); - scoped_refptr<TestURLRequestContext> url_request_context( - new TestURLRequestContext()); - url_request_context->blob_storage_controller()->AddFinishedBlob( + TestURLRequestContext url_request_context; + url_request_context.blob_storage_controller()->AddFinishedBlob( blob_url, blob_data); - operation()->Write(url_request_context, URLForPath(virtual_path_), blob_url, + operation()->Write(&url_request_context, URLForPath(virtual_path_), blob_url, 0, RecordWriteCallback()); MessageLoop::current()->Run(); - url_request_context->blob_storage_controller()->RemoveBlob(blob_url); + url_request_context.blob_storage_controller()->RemoveBlob(blob_url); EXPECT_EQ(14, bytes_written()); EXPECT_EQ(base::PLATFORM_FILE_OK, status()); @@ -232,16 +230,15 @@ TEST_F(FileSystemOperationWriteTest, TestWriteZero) { scoped_refptr<webkit_blob::BlobData> blob_data(new webkit_blob::BlobData()); blob_data->AppendData(""); - scoped_refptr<TestURLRequestContext> url_request_context( - new TestURLRequestContext()); - url_request_context->blob_storage_controller()->AddFinishedBlob( + TestURLRequestContext url_request_context; + url_request_context.blob_storage_controller()->AddFinishedBlob( blob_url, blob_data); - operation()->Write(url_request_context, URLForPath(virtual_path_), + operation()->Write(&url_request_context, URLForPath(virtual_path_), blob_url, 0, RecordWriteCallback()); MessageLoop::current()->Run(); - url_request_context->blob_storage_controller()->RemoveBlob(blob_url); + url_request_context.blob_storage_controller()->RemoveBlob(blob_url); EXPECT_EQ(0, bytes_written()); EXPECT_EQ(base::PLATFORM_FILE_OK, status()); @@ -249,10 +246,9 @@ TEST_F(FileSystemOperationWriteTest, TestWriteZero) { } TEST_F(FileSystemOperationWriteTest, TestWriteInvalidBlobUrl) { - scoped_refptr<TestURLRequestContext> url_request_context( - new TestURLRequestContext()); + TestURLRequestContext url_request_context; - operation()->Write(url_request_context, URLForPath(virtual_path_), + operation()->Write(&url_request_context, URLForPath(virtual_path_), GURL("blob:invalid"), 0, RecordWriteCallback()); MessageLoop::current()->Run(); @@ -266,17 +262,16 @@ TEST_F(FileSystemOperationWriteTest, TestWriteInvalidFile) { scoped_refptr<webkit_blob::BlobData> blob_data(new webkit_blob::BlobData()); blob_data->AppendData("It\'ll not be written."); - scoped_refptr<TestURLRequestContext> url_request_context( - new TestURLRequestContext()); - url_request_context->blob_storage_controller()->AddFinishedBlob( + TestURLRequestContext url_request_context; + url_request_context.blob_storage_controller()->AddFinishedBlob( blob_url, blob_data); - operation()->Write(url_request_context, + operation()->Write(&url_request_context, URLForPath(FilePath(FILE_PATH_LITERAL("nonexist"))), blob_url, 0, RecordWriteCallback()); MessageLoop::current()->Run(); - url_request_context->blob_storage_controller()->RemoveBlob(blob_url); + url_request_context.blob_storage_controller()->RemoveBlob(blob_url); EXPECT_EQ(0, bytes_written()); EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, status()); @@ -294,16 +289,15 @@ TEST_F(FileSystemOperationWriteTest, TestWriteDir) { scoped_refptr<webkit_blob::BlobData> blob_data(new webkit_blob::BlobData()); blob_data->AppendData("It\'ll not be written, too."); - scoped_refptr<TestURLRequestContext> url_request_context( - new TestURLRequestContext()); - url_request_context->blob_storage_controller()->AddFinishedBlob( + TestURLRequestContext url_request_context; + url_request_context.blob_storage_controller()->AddFinishedBlob( blob_url, blob_data); - operation()->Write(url_request_context, URLForPath(virtual_subdir_path), + operation()->Write(&url_request_context, URLForPath(virtual_subdir_path), blob_url, 0, RecordWriteCallback()); MessageLoop::current()->Run(); - url_request_context->blob_storage_controller()->RemoveBlob(blob_url); + url_request_context.blob_storage_controller()->RemoveBlob(blob_url); EXPECT_EQ(0, bytes_written()); EXPECT_EQ(base::PLATFORM_FILE_ERROR_ACCESS_DENIED, status()); @@ -315,17 +309,16 @@ TEST_F(FileSystemOperationWriteTest, TestWriteFailureByQuota) { scoped_refptr<webkit_blob::BlobData> blob_data(new webkit_blob::BlobData()); blob_data->AppendData("Hello, world!\n"); - scoped_refptr<TestURLRequestContext> url_request_context( - new TestURLRequestContext()); - url_request_context->blob_storage_controller()->AddFinishedBlob( + TestURLRequestContext url_request_context; + url_request_context.blob_storage_controller()->AddFinishedBlob( blob_url, blob_data); quota_manager_->set_quota(10); - operation()->Write(url_request_context, URLForPath(virtual_path_), blob_url, + operation()->Write(&url_request_context, URLForPath(virtual_path_), blob_url, 0, RecordWriteCallback()); MessageLoop::current()->Run(); - url_request_context->blob_storage_controller()->RemoveBlob(blob_url); + url_request_context.blob_storage_controller()->RemoveBlob(blob_url); EXPECT_EQ(10, bytes_written()); EXPECT_EQ(base::PLATFORM_FILE_ERROR_NO_SPACE, status()); @@ -337,13 +330,12 @@ TEST_F(FileSystemOperationWriteTest, TestImmediateCancelSuccessfulWrite) { scoped_refptr<webkit_blob::BlobData> blob_data(new webkit_blob::BlobData()); blob_data->AppendData("Hello, world!\n"); - scoped_refptr<TestURLRequestContext> url_request_context( - new TestURLRequestContext()); - url_request_context->blob_storage_controller()->AddFinishedBlob( + TestURLRequestContext url_request_context; + url_request_context.blob_storage_controller()->AddFinishedBlob( blob_url, blob_data); FileSystemOperationInterface* write_operation = operation(); - write_operation->Write(url_request_context, URLForPath(virtual_path_), + write_operation->Write(&url_request_context, URLForPath(virtual_path_), blob_url, 0, RecordWriteCallback()); write_operation->Cancel(RecordCancelCallback()); // We use RunAllPendings() instead of Run() here, because we won't dispatch @@ -351,7 +343,7 @@ TEST_F(FileSystemOperationWriteTest, TestImmediateCancelSuccessfulWrite) { // to run another write cycle. MessageLoop::current()->RunAllPending(); - url_request_context->blob_storage_controller()->RemoveBlob(blob_url); + url_request_context.blob_storage_controller()->RemoveBlob(blob_url); // Issued Cancel() before receiving any response from Write(), // so nothing should have happen. @@ -366,13 +358,12 @@ TEST_F(FileSystemOperationWriteTest, TestImmediateCancelFailingWrite) { scoped_refptr<webkit_blob::BlobData> blob_data(new webkit_blob::BlobData()); blob_data->AppendData("It\'ll not be written."); - scoped_refptr<TestURLRequestContext> url_request_context( - new TestURLRequestContext()); - url_request_context->blob_storage_controller()->AddFinishedBlob( + TestURLRequestContext url_request_context; + url_request_context.blob_storage_controller()->AddFinishedBlob( blob_url, blob_data); FileSystemOperationInterface* write_operation = operation(); - write_operation->Write(url_request_context, + write_operation->Write(&url_request_context, URLForPath(FilePath(FILE_PATH_LITERAL("nonexist"))), blob_url, 0, RecordWriteCallback()); write_operation->Cancel(RecordCancelCallback()); @@ -381,7 +372,7 @@ TEST_F(FileSystemOperationWriteTest, TestImmediateCancelFailingWrite) { // to run another write cycle. MessageLoop::current()->RunAllPending(); - url_request_context->blob_storage_controller()->RemoveBlob(blob_url); + url_request_context.blob_storage_controller()->RemoveBlob(blob_url); // Issued Cancel() before receiving any response from Write(), // so nothing should have happen. diff --git a/webkit/tools/test_shell/simple_resource_loader_bridge.cc b/webkit/tools/test_shell/simple_resource_loader_bridge.cc index 074580d..450cbee 100644 --- a/webkit/tools/test_shell/simple_resource_loader_bridge.cc +++ b/webkit/tools/test_shell/simple_resource_loader_bridge.cc @@ -217,8 +217,6 @@ class IOThread : public base::Thread { g_request_context = new TestShellRequestContext(); } - g_request_context->AddRef(); - g_network_delegate = new TestShellNetworkDelegate(); g_request_context->set_network_delegate(g_network_delegate); @@ -241,7 +239,7 @@ class IOThread : public base::Thread { if (g_request_context) { g_request_context->set_network_delegate(NULL); - g_request_context->Release(); + delete g_request_context; g_request_context = NULL; } diff --git a/webkit/tools/test_shell/simple_socket_stream_bridge.cc b/webkit/tools/test_shell/simple_socket_stream_bridge.cc index 0d52ea2..05c9e74d 100644 --- a/webkit/tools/test_shell/simple_socket_stream_bridge.cc +++ b/webkit/tools/test_shell/simple_socket_stream_bridge.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -223,14 +223,11 @@ void WebSocketStreamHandleBridgeImpl::DoOnClose() { void SimpleSocketStreamBridge::InitializeOnIOThread( net::URLRequestContext* request_context) { g_io_thread = MessageLoop::current(); - if ((g_request_context = request_context)) - g_request_context->AddRef(); + g_request_context = request_context; } void SimpleSocketStreamBridge::Cleanup() { g_io_thread = NULL; - if (g_request_context) - g_request_context->Release(); g_request_context = NULL; } diff --git a/webkit/tools/test_shell/test_shell_request_context.h b/webkit/tools/test_shell/test_shell_request_context.h index 0eb29cf..946248f 100644 --- a/webkit/tools/test_shell/test_shell_request_context.h +++ b/webkit/tools/test_shell/test_shell_request_context.h @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -32,6 +32,8 @@ class TestShellRequestContext : public net::URLRequestContext { net::HttpCache::Mode cache_mode, bool no_proxy); + virtual ~TestShellRequestContext(); + virtual const std::string& GetUserAgent(const GURL& url) const OVERRIDE; webkit_blob::BlobStorageController* blob_storage_controller() const { @@ -43,8 +45,6 @@ class TestShellRequestContext : public net::URLRequestContext { } private: - virtual ~TestShellRequestContext(); - void Init(const FilePath& cache_path, net::HttpCache::Mode cache_mode, bool no_proxy); |