summaryrefslogtreecommitdiffstats
path: root/chrome/browser/renderer_host
diff options
context:
space:
mode:
authorjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-11-03 23:12:42 +0000
committerjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-11-03 23:12:42 +0000
commit79084c2d01586797f762cbb308cb2c204dd9a164 (patch)
treede83878b22e4641589e8d7ea8bc0fe020c429876 /chrome/browser/renderer_host
parent755bbc4326d8c6c05900d681e232ec7b069e25c2 (diff)
downloadchromium_src-79084c2d01586797f762cbb308cb2c204dd9a164.zip
chromium_src-79084c2d01586797f762cbb308cb2c204dd9a164.tar.gz
chromium_src-79084c2d01586797f762cbb308cb2c204dd9a164.tar.bz2
Last patch in removing MessageLoop* caching.
BUG=25354 Review URL: http://codereview.chromium.org/353015 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@30881 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/renderer_host')
-rw-r--r--chrome/browser/renderer_host/cross_site_resource_handler.cc19
-rw-r--r--chrome/browser/renderer_host/database_dispatcher_host.cc85
-rw-r--r--chrome/browser/renderer_host/database_dispatcher_host.h14
-rw-r--r--chrome/browser/renderer_host/resource_dispatcher_host.cc8
-rw-r--r--chrome/browser/renderer_host/resource_dispatcher_host.h13
-rw-r--r--chrome/browser/renderer_host/resource_dispatcher_host_unittest.cc1
-rw-r--r--chrome/browser/renderer_host/safe_browsing_resource_handler.cc4
7 files changed, 57 insertions, 87 deletions
diff --git a/chrome/browser/renderer_host/cross_site_resource_handler.cc b/chrome/browser/renderer_host/cross_site_resource_handler.cc
index 8bc6517..158a4f3 100644
--- a/chrome/browser/renderer_host/cross_site_resource_handler.cc
+++ b/chrome/browser/renderer_host/cross_site_resource_handler.cc
@@ -7,7 +7,7 @@
#include "chrome/browser/renderer_host/cross_site_resource_handler.h"
#include "base/logging.h"
-#include "base/message_loop.h"
+#include "chrome/browser/chrome_thread.h"
#include "chrome/browser/renderer_host/render_view_host.h"
#include "chrome/browser/renderer_host/render_view_host_delegate.h"
#include "chrome/browser/renderer_host/resource_dispatcher_host_request_info.h"
@@ -161,10 +161,10 @@ bool CrossSiteResourceHandler::OnResponseCompleted(
// Here the request was canceled, which happens when selecting "take me
// back" from an interstitial. Nothing to do but cancel the pending
// render view host.
- CancelPendingRenderViewTask* task =
- new CancelPendingRenderViewTask(render_process_host_id_,
- render_view_id_);
- rdh_->ui_loop()->PostTask(FROM_HERE, task);
+ ChromeThread::PostTask(
+ ChromeThread::UI, FROM_HERE,
+ new CancelPendingRenderViewTask(
+ render_process_host_id_, render_view_id_));
return next_handler_->OnResponseCompleted(request_id, status,
security_info);
} else {
@@ -266,9 +266,8 @@ void CrossSiteResourceHandler::StartCrossSiteTransition(
// Tell the tab responsible for this request that a cross-site response is
// starting, so that it can tell its old renderer to run its onunload
// handler now. We will wait to hear the corresponding ClosePage_ACK.
- CrossSiteNotifyTask* task =
- new CrossSiteNotifyTask(render_process_host_id_,
- render_view_id_,
- request_id);
- rdh_->ui_loop()->PostTask(FROM_HERE, task);
+ ChromeThread::PostTask(
+ ChromeThread::UI, FROM_HERE,
+ new CrossSiteNotifyTask(
+ render_process_host_id_, render_view_id_, request_id));
}
diff --git a/chrome/browser/renderer_host/database_dispatcher_host.cc b/chrome/browser/renderer_host/database_dispatcher_host.cc
index f4c7e3b..c13f8c7 100644
--- a/chrome/browser/renderer_host/database_dispatcher_host.cc
+++ b/chrome/browser/renderer_host/database_dispatcher_host.cc
@@ -14,8 +14,7 @@
#include "third_party/sqlite/preprocessed/sqlite3.h"
#endif
-#include "base/thread.h"
-#include "chrome/browser/browser_process.h"
+#include "chrome/browser/chrome_thread.h"
#include "chrome/browser/renderer_host/resource_message_filter.h"
#include "chrome/common/render_messages.h"
#include "webkit/database/vfs_backend.h"
@@ -61,8 +60,7 @@ static void SendMessage(ResourceMessageFilter* sender,
// Opens the given database file, then schedules
// a task on the IO thread's message loop to send an IPC back to
// corresponding renderer process with the file handle.
-static void DatabaseOpenFile(MessageLoop* io_thread_message_loop,
- const OpenFileParams& params,
+static void DatabaseOpenFile(const OpenFileParams& params,
int32 message_id,
ResourceMessageFilter* sender) {
base::PlatformFile target_handle = base::kInvalidPlatformFileValue;
@@ -77,7 +75,8 @@ static void DatabaseOpenFile(MessageLoop* io_thread_message_loop,
response_params.file_handle = base::FileDescriptor(target_handle, true);
response_params.dir_handle = base::FileDescriptor(target_dir_handle, true);
#endif
- io_thread_message_loop->PostTask(FROM_HERE,
+ ChromeThread::PostTask(
+ ChromeThread::IO, FROM_HERE,
NewRunnableFunction(SendMessage, sender,
new ViewMsg_DatabaseOpenFileResponse(message_id, response_params)));
}
@@ -86,15 +85,15 @@ static void DatabaseOpenFile(MessageLoop* io_thread_message_loop,
// Deletes the given database file, then schedules
// a task on the IO thread's message loop to send an IPC back to
// corresponding renderer process with the error code.
-static void DatabaseDeleteFile(MessageLoop* io_thread_message_loop,
- const DeleteFileParams& params,
+static void DatabaseDeleteFile(const DeleteFileParams& params,
int32 message_id,
int reschedule_count,
ResourceMessageFilter* sender) {
// Return an error if the file could not be deleted
// after kNumDeleteRetries times.
if (!reschedule_count) {
- io_thread_message_loop->PostTask(FROM_HERE,
+ ChromeThread::PostTask(
+ ChromeThread::IO, FROM_HERE,
NewRunnableFunction(SendMessage, sender,
new ViewMsg_DatabaseDeleteFileResponse(message_id,
SQLITE_IOERR_DELETE)));
@@ -106,13 +105,14 @@ static void DatabaseDeleteFile(MessageLoop* io_thread_message_loop,
if (error_code == SQLITE_IOERR_DELETE) {
// If the file could not be deleted, try again.
MessageLoop::current()->PostDelayedTask(FROM_HERE,
- NewRunnableFunction(DatabaseDeleteFile, io_thread_message_loop,
- params, message_id, reschedule_count - 1, sender),
+ NewRunnableFunction(DatabaseDeleteFile, params, message_id,
+ reschedule_count - 1, sender),
kDelayDeleteRetryMs);
return;
}
- io_thread_message_loop->PostTask(FROM_HERE,
+ ChromeThread::PostTask(
+ ChromeThread::IO, FROM_HERE,
NewRunnableFunction(SendMessage, sender,
new ViewMsg_DatabaseDeleteFileResponse(message_id, error_code)));
}
@@ -121,12 +121,12 @@ static void DatabaseDeleteFile(MessageLoop* io_thread_message_loop,
// Gets the attributes of the given database file, then schedules
// a task on the IO thread's message loop to send an IPC back to
// corresponding renderer process.
-static void DatabaseGetFileAttributes(MessageLoop* io_thread_message_loop,
- const FilePath& file_name,
+static void DatabaseGetFileAttributes(const FilePath& file_name,
int32 message_id,
ResourceMessageFilter* sender) {
uint32 attributes = VfsBackend::GetFileAttributes(file_name);
- io_thread_message_loop->PostTask(FROM_HERE,
+ ChromeThread::PostTask(
+ ChromeThread::IO, FROM_HERE,
NewRunnableFunction(SendMessage, sender,
new ViewMsg_DatabaseGetFileAttributesResponse(
message_id, attributes)));
@@ -136,12 +136,12 @@ static void DatabaseGetFileAttributes(MessageLoop* io_thread_message_loop,
// Gets the size of the given file, then schedules a task
// on the IO thread's message loop to send an IPC back to
// the corresponding renderer process.
-static void DatabaseGetFileSize(MessageLoop* io_thread_message_loop,
- const FilePath& file_name,
+static void DatabaseGetFileSize(const FilePath& file_name,
int32 message_id,
ResourceMessageFilter* sender) {
int64 size = VfsBackend::GetFileSize(file_name);
- io_thread_message_loop->PostTask(FROM_HERE,
+ ChromeThread::PostTask(
+ ChromeThread::IO, FROM_HERE,
NewRunnableFunction(SendMessage, sender,
new ViewMsg_DatabaseGetFileSizeResponse(message_id, size)));
}
@@ -152,28 +152,11 @@ DatabaseDispatcherHost::DatabaseDispatcherHost(
const FilePath& profile_path,
ResourceMessageFilter* resource_message_filter)
: profile_path_(profile_path),
- resource_message_filter_(resource_message_filter),
- file_thread_message_loop_(
- g_browser_process->file_thread()->message_loop()) {
-}
-
-
-bool DatabaseDispatcherHost::IsDBMessage(const IPC::Message& message) {
- switch (message.type()) {
- case ViewHostMsg_DatabaseOpenFile::ID:
- case ViewHostMsg_DatabaseDeleteFile::ID:
- case ViewHostMsg_DatabaseGetFileAttributes::ID:
- case ViewHostMsg_DatabaseGetFileSize::ID:
- return true;
- default:
- return false;
- }
+ resource_message_filter_(resource_message_filter) {
}
bool DatabaseDispatcherHost::OnMessageReceived(
const IPC::Message& message, bool* message_was_ok) {
- if (!IsDBMessage(message))
- return false;
*message_was_ok = true;
bool handled = true;
@@ -230,9 +213,10 @@ void DatabaseDispatcherHost::OnDatabaseOpenFile(const FilePath& file_name,
params.desired_flags = desired_flags;
params.handle = resource_message_filter_->handle();
resource_message_filter_->AddRef();
- file_thread_message_loop_->PostTask(FROM_HERE,
- NewRunnableFunction(DatabaseOpenFile, MessageLoop::current(),
- params, message_id, resource_message_filter_));
+ ChromeThread::PostTask(
+ ChromeThread::FILE, FROM_HERE,
+ NewRunnableFunction(
+ DatabaseOpenFile, params, message_id, resource_message_filter_));
}
void DatabaseDispatcherHost::OnDatabaseDeleteFile(
@@ -249,10 +233,11 @@ void DatabaseDispatcherHost::OnDatabaseDeleteFile(
params.file_name = db_file_name;
params.sync_dir = sync_dir;
resource_message_filter_->AddRef();
- file_thread_message_loop_->PostTask(FROM_HERE,
- NewRunnableFunction(DatabaseDeleteFile, MessageLoop::current(),
- params, message_id, kNumDeleteRetries,
- resource_message_filter_));
+ ChromeThread::PostTask(
+ ChromeThread::FILE, FROM_HERE,
+ NewRunnableFunction(
+ DatabaseDeleteFile, params, message_id, kNumDeleteRetries,
+ resource_message_filter_));
}
void DatabaseDispatcherHost::OnDatabaseGetFileAttributes(
@@ -265,9 +250,11 @@ void DatabaseDispatcherHost::OnDatabaseGetFileAttributes(
}
resource_message_filter_->AddRef();
- file_thread_message_loop_->PostTask(FROM_HERE,
- NewRunnableFunction(DatabaseGetFileAttributes, MessageLoop::current(),
- db_file_name, message_id, resource_message_filter_));
+ ChromeThread::PostTask(
+ ChromeThread::FILE, FROM_HERE,
+ NewRunnableFunction(
+ DatabaseGetFileAttributes, db_file_name, message_id,
+ resource_message_filter_));
}
void DatabaseDispatcherHost::OnDatabaseGetFileSize(
@@ -280,7 +267,9 @@ void DatabaseDispatcherHost::OnDatabaseGetFileSize(
}
resource_message_filter_->AddRef();
- file_thread_message_loop_->PostTask(FROM_HERE,
- NewRunnableFunction(DatabaseGetFileSize, MessageLoop::current(),
- db_file_name, message_id, resource_message_filter_));
+ ChromeThread::PostTask(
+ ChromeThread::FILE, FROM_HERE,
+ NewRunnableFunction(
+ DatabaseGetFileSize, db_file_name, message_id,
+ resource_message_filter_));
}
diff --git a/chrome/browser/renderer_host/database_dispatcher_host.h b/chrome/browser/renderer_host/database_dispatcher_host.h
index 1b59f08..fd403d2 100644
--- a/chrome/browser/renderer_host/database_dispatcher_host.h
+++ b/chrome/browser/renderer_host/database_dispatcher_host.h
@@ -7,7 +7,6 @@
#include "base/file_path.h"
-class MessageLoop;
class ResourceMessageFilter;
namespace IPC {
@@ -23,6 +22,8 @@ class DatabaseDispatcherHost {
// Returns true iff the message is HTML5 DB related and was processed.
bool OnMessageReceived(const IPC::Message& message, bool* message_was_ok);
+ private:
+ // Message handlers.
// Processes the request to return a handle to the given DB file.
void OnDatabaseOpenFile(const FilePath& file_name,
int desired_flags,
@@ -41,10 +42,6 @@ class DatabaseDispatcherHost {
void OnDatabaseGetFileSize(const FilePath& file_name,
int32 message_id);
- private:
- // Determines if the message is HTML5 DB related.
- bool IsDBMessage(const IPC::Message& message);
-
// Returns the directory where all DB files are stored.
FilePath GetDBDir();
@@ -54,11 +51,10 @@ class DatabaseDispatcherHost {
// The user data directory.
FilePath profile_path_;
- // The ResourceMessageFilter instance of this renderer process.
+ // The ResourceMessageFilter instance of this renderer process. Can't keep
+ // a refptr or else we'll get into a cycle. It's always ok to use this in
+ // the IO thread since if the RMF goes away, this object is deleted.
ResourceMessageFilter* resource_message_filter_;
-
- // The message loop of the file thread.
- MessageLoop* file_thread_message_loop_;
};
#endif // CHROME_BROWSER_RENDERER_HOST_DATABASE_DISPATCHER_HOST_H_
diff --git a/chrome/browser/renderer_host/resource_dispatcher_host.cc b/chrome/browser/renderer_host/resource_dispatcher_host.cc
index 13ca1721..8f51253 100644
--- a/chrome/browser/renderer_host/resource_dispatcher_host.cc
+++ b/chrome/browser/renderer_host/resource_dispatcher_host.cc
@@ -250,12 +250,10 @@ void PopulateResourceResponse(URLRequest* request,
} // namespace
-ResourceDispatcherHost::ResourceDispatcherHost(MessageLoop* io_loop)
- : ui_loop_(MessageLoop::current()),
- io_loop_(io_loop),
- ALLOW_THIS_IN_INITIALIZER_LIST(
+ResourceDispatcherHost::ResourceDispatcherHost()
+ : ALLOW_THIS_IN_INITIALIZER_LIST(
download_file_manager_(new DownloadFileManager(this))),
- download_request_manager_(new DownloadRequestManager(io_loop, ui_loop_)),
+ download_request_manager_(new DownloadRequestManager()),
ALLOW_THIS_IN_INITIALIZER_LIST(
save_file_manager_(new SaveFileManager(this))),
ALLOW_THIS_IN_INITIALIZER_LIST(user_script_listener_(
diff --git a/chrome/browser/renderer_host/resource_dispatcher_host.h b/chrome/browser/renderer_host/resource_dispatcher_host.h
index 147a7f9..c354b0a 100644
--- a/chrome/browser/renderer_host/resource_dispatcher_host.h
+++ b/chrome/browser/renderer_host/resource_dispatcher_host.h
@@ -31,7 +31,6 @@ class CrossSiteResourceHandler;
class DownloadFileManager;
class DownloadRequestManager;
class LoginHandler;
-class MessageLoop;
class PluginService;
class ResourceDispatcherHostRequestInfo;
class ResourceHandler;
@@ -105,8 +104,7 @@ class ResourceDispatcherHost : public URLRequest::Delegate {
}
};
- // TODO(jam): take the parameter out once 25354 is done.
- explicit ResourceDispatcherHost(MessageLoop* io_loop);
+ ResourceDispatcherHost();
~ResourceDispatcherHost();
void Initialize();
@@ -193,8 +191,6 @@ class ResourceDispatcherHost : public URLRequest::Delegate {
return webkit_thread_.get();
}
- MessageLoop* ui_loop() const { return ui_loop_; }
-
// Called when the onunload handler for a cross-site request has finished.
void OnClosePageACK(const ViewMsg_ClosePage_Params& params);
@@ -411,13 +407,6 @@ class ResourceDispatcherHost : public URLRequest::Delegate {
PendingRequestList pending_requests_;
- // We cache the UI message loop so we can create new UI-related objects on it.
- MessageLoop* ui_loop_;
-
- // We cache the IO loop to ensure that GetURLRequest is only called from the
- // IO thread.
- MessageLoop* io_loop_;
-
// A timer that periodically calls UpdateLoadStates while pending_requests_
// is not empty.
base::RepeatingTimer<ResourceDispatcherHost> update_load_states_timer_;
diff --git a/chrome/browser/renderer_host/resource_dispatcher_host_unittest.cc b/chrome/browser/renderer_host/resource_dispatcher_host_unittest.cc
index 0b704b9..bbf97c3 100644
--- a/chrome/browser/renderer_host/resource_dispatcher_host_unittest.cc
+++ b/chrome/browser/renderer_host/resource_dispatcher_host_unittest.cc
@@ -147,7 +147,6 @@ class ResourceDispatcherHostTest : public testing::Test,
ResourceDispatcherHostTest()
: Receiver(ChildProcessInfo::RENDER_PROCESS, -1),
io_thread_(ChromeThread::IO, &message_loop_),
- host_(NULL),
old_factory_(NULL) {
set_handle(base::GetCurrentProcessHandle());
}
diff --git a/chrome/browser/renderer_host/safe_browsing_resource_handler.cc b/chrome/browser/renderer_host/safe_browsing_resource_handler.cc
index 63cd46d..e33e796 100644
--- a/chrome/browser/renderer_host/safe_browsing_resource_handler.cc
+++ b/chrome/browser/renderer_host/safe_browsing_resource_handler.cc
@@ -185,8 +185,8 @@ void SafeBrowsingResourceHandler::OnUrlCheckResult(
} else {
displaying_blocking_page_ = true;
safe_browsing_->DisplayBlockingPage(
- url, resource_type_, result, this, rdh_->ui_loop(),
- render_process_host_id_, render_view_id_);
+ url, resource_type_, result, this, render_process_host_id_,
+ render_view_id_);
}
}