| Index: chrome/browser/renderer_host/buffered_resource_handler.cc
|
| ===================================================================
|
| --- chrome/browser/renderer_host/buffered_resource_handler.cc (revision 30650)
|
| +++ chrome/browser/renderer_host/buffered_resource_handler.cc (working copy)
|
| @@ -404,8 +404,7 @@
|
| AddRef();
|
| ChromeThread::PostTask(
|
| ChromeThread::FILE, FROM_HERE,
|
| - NewRunnableFunction(&BufferedResourceHandler::LoadPlugins,
|
| - this, host_->ui_loop()));
|
| + NewRunnableFunction(&BufferedResourceHandler::LoadPlugins, this));
|
| return true;
|
| }
|
|
|
| @@ -469,34 +468,26 @@
|
| GURL(), type, allow_wildcard, &info, NULL);
|
| }
|
|
|
| -void BufferedResourceHandler::LoadPlugins(BufferedResourceHandler* handler,
|
| - MessageLoop* main_message_loop) {
|
| +void BufferedResourceHandler::LoadPlugins(BufferedResourceHandler* handler) {
|
| std::vector<WebPluginInfo> plugins;
|
| NPAPI::PluginList::Singleton()->GetPlugins(false, &plugins);
|
|
|
| - // Note, we want to get to the IO thread now, but the file thread outlives it
|
| - // so we can't post a task to it directly as it might be in the middle of
|
| - // destruction. So hop through the main thread, where the destruction of the
|
| - // IO thread happens and hence no race conditions exist.
|
| - main_message_loop->PostTask(FROM_HERE,
|
| - NewRunnableFunction(&BufferedResourceHandler::NotifyPluginsLoaded,
|
| + ChromeThread::PostTask(
|
| + ChromeThread::IO, FROM_HERE,
|
| + NewRunnableFunction(&BufferedResourceHandler::OnPluginsLoaded,
|
| handler));
|
| }
|
|
|
| -void BufferedResourceHandler::NotifyPluginsLoaded(
|
| +void BufferedResourceHandler::OnPluginsLoaded(
|
| BufferedResourceHandler* handler) {
|
| - g_browser_process->io_thread()->message_loop()->PostTask(FROM_HERE,
|
| - NewRunnableMethod(handler, &BufferedResourceHandler::OnPluginsLoaded));
|
| -}
|
| -
|
| -void BufferedResourceHandler::OnPluginsLoaded() {
|
| - wait_for_plugins_ = false;
|
| - if (request_) {
|
| + handler->wait_for_plugins_ = false;
|
| + if (handler->request_) {
|
| ResourceDispatcherHostRequestInfo* info =
|
| - ResourceDispatcherHost::InfoForRequest(request_);
|
| - host_->PauseRequest(info->child_id(), info->request_id(), false);
|
| - if (!CompleteResponseStarted(info->request_id(), false))
|
| - host_->CancelRequest(info->child_id(), info->request_id(), false);
|
| + ResourceDispatcherHost::InfoForRequest(handler->request_);
|
| + handler->host_->PauseRequest(info->child_id(), info->request_id(), false);
|
| + if (!handler->CompleteResponseStarted(info->request_id(), false))
|
| + handler->host_->CancelRequest(
|
| + info->child_id(), info->request_id(), false);
|
| }
|
| - Release();
|
| + handler->Release();
|
| }
|
|
|