| Index: chrome/renderer/render_thread.cc
|
| ===================================================================
|
| --- chrome/renderer/render_thread.cc (revision 21342)
|
| +++ chrome/renderer/render_thread.cc (working copy)
|
| @@ -17,7 +17,6 @@
|
| #include "chrome/common/chrome_switches.h"
|
| #include "chrome/common/render_messages.h"
|
| #include "chrome/common/renderer_preferences.h"
|
| -#include "chrome/common/notification_service.h"
|
| #include "chrome/common/url_constants.h"
|
| #include "chrome/plugin/npobject_util.h"
|
| // TODO(port)
|
| @@ -55,54 +54,10 @@
|
| using WebKit::WebCache;
|
| using WebKit::WebString;
|
|
|
| +namespace {
|
| static const unsigned int kCacheStatsDelayMS = 2000 /* milliseconds */;
|
| -
|
| static base::LazyInstance<base::ThreadLocalPointer<RenderThread> > lazy_tls(
|
| base::LINKER_INITIALIZED);
|
| -
|
| -//-----------------------------------------------------------------------------
|
| -// Methods below are only called on the owner's thread:
|
| -
|
| -// When we run plugins in process, we actually run them on the render thread,
|
| -// which means that we need to make the render thread pump UI events.
|
| -RenderThread::RenderThread()
|
| - : ChildThread(
|
| - base::Thread::Options(RenderProcess::InProcessPlugins() ?
|
| - MessageLoop::TYPE_UI : MessageLoop::TYPE_DEFAULT, kV8StackSize)),
|
| - plugin_refresh_allowed_(true) {
|
| -}
|
| -
|
| -RenderThread::RenderThread(const std::string& channel_name)
|
| - : ChildThread(
|
| - base::Thread::Options(RenderProcess::InProcessPlugins() ?
|
| - MessageLoop::TYPE_UI : MessageLoop::TYPE_DEFAULT, kV8StackSize)),
|
| - plugin_refresh_allowed_(true) {
|
| - SetChannelName(channel_name);
|
| -}
|
| -
|
| -RenderThread::~RenderThread() {
|
| -}
|
| -
|
| -RenderThread* RenderThread::current() {
|
| - return lazy_tls.Pointer()->Get();
|
| -}
|
| -
|
| -void RenderThread::AddFilter(IPC::ChannelProxy::MessageFilter* filter) {
|
| - channel()->AddFilter(filter);
|
| -}
|
| -
|
| -void RenderThread::RemoveFilter(IPC::ChannelProxy::MessageFilter* filter) {
|
| - channel()->RemoveFilter(filter);
|
| -}
|
| -
|
| -void RenderThread::Resolve(const char* name, size_t length) {
|
| - return dns_master_->Resolve(name, length);
|
| -}
|
| -
|
| -void RenderThread::SendHistograms(int sequence_number) {
|
| - return histogram_snapshots_->SendHistograms(sequence_number);
|
| -}
|
| -
|
| static WebAppCacheContext* CreateAppCacheContextForRenderer() {
|
| return new AppCacheContextImpl(RenderThread::current());
|
| }
|
| @@ -128,7 +83,19 @@
|
| }
|
| };
|
| #endif
|
| +} // namespace
|
|
|
| +// When we run plugins in process, we actually run them on the render thread,
|
| +// which means that we need to make the render thread pump UI events.
|
| +RenderThread::RenderThread() {
|
| + Init();
|
| +}
|
| +
|
| +RenderThread::RenderThread(const std::string& channel_name)
|
| + : ChildThread(channel_name) {
|
| + Init();
|
| +}
|
| +
|
| void RenderThread::Init() {
|
| lazy_tls.Pointer()->Set(this);
|
| #if defined(OS_WIN)
|
| @@ -138,8 +105,7 @@
|
| CoInitialize(0);
|
| #endif
|
|
|
| - ChildThread::Init();
|
| - notification_service_.reset(new NotificationService);
|
| + plugin_refresh_allowed_ = true;
|
| cache_stats_factory_.reset(
|
| new ScopedRunnableMethodFactory<RenderThread>(this));
|
|
|
| @@ -158,24 +124,13 @@
|
| #endif
|
| }
|
|
|
| -void RenderThread::CleanUp() {
|
| +RenderThread::~RenderThread() {
|
| // Shutdown in reverse of the initialization order.
|
| RemoveFilter(devtools_agent_filter_.get());
|
| - devtools_agent_filter_ = NULL;
|
| WebAppCacheContext::SetFactory(NULL);
|
| - app_cache_dispatcher_.reset();
|
| - histogram_snapshots_.reset();
|
| - dns_master_.reset();
|
| - user_script_slave_.reset();
|
| - visited_link_slave_.reset();
|
| -
|
| - if (webkit_client_.get()) {
|
| + if (webkit_client_.get())
|
| WebKit::shutdown();
|
| - webkit_client_.reset();
|
| - }
|
|
|
| - notification_service_.reset();
|
| - ChildThread::CleanUp();
|
| lazy_tls.Pointer()->Set(NULL);
|
|
|
| // TODO(port)
|
| @@ -188,6 +143,26 @@
|
| #endif
|
| }
|
|
|
| +RenderThread* RenderThread::current() {
|
| + return lazy_tls.Pointer()->Get();
|
| +}
|
| +
|
| +void RenderThread::AddFilter(IPC::ChannelProxy::MessageFilter* filter) {
|
| + channel()->AddFilter(filter);
|
| +}
|
| +
|
| +void RenderThread::RemoveFilter(IPC::ChannelProxy::MessageFilter* filter) {
|
| + channel()->RemoveFilter(filter);
|
| +}
|
| +
|
| +void RenderThread::Resolve(const char* name, size_t length) {
|
| + return dns_master_->Resolve(name, length);
|
| +}
|
| +
|
| +void RenderThread::SendHistograms(int sequence_number) {
|
| + return histogram_snapshots_->SendHistograms(sequence_number);
|
| +}
|
| +
|
| void RenderThread::OnUpdateVisitedLinks(base::SharedMemoryHandle table) {
|
| DCHECK(base::SharedMemory::IsHandleValid(table)) << "Bad table handle";
|
| visited_link_slave_->Init(table);
|
| @@ -274,8 +249,6 @@
|
| true, false);
|
| #endif
|
|
|
| - // TODO(darin): once we have a RenderThread per RenderView, this will need to
|
| - // change to assert that we are not creating more than one view.
|
| RenderView::Create(
|
| this, parent_hwnd, waitable_event, MSG_ROUTING_NONE, renderer_prefs,
|
| webkit_prefs, new SharedRenderViewCounter(0), view_id);
|
|
|