diff options
author | darin@chromium.org <darin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-02-28 01:13:47 +0000 |
---|---|---|
committer | darin@chromium.org <darin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-02-28 01:13:47 +0000 |
commit | 90a3fbb1723ba60bcf557121b7bbe80817a7533f (patch) | |
tree | 28d845ed0f1d64cdfa418f4561af4536de6f3c40 /chrome/renderer/render_thread.cc | |
parent | 41fb1d7d262e44d8561a5c4d6d7e353f638b56e8 (diff) | |
download | chromium_src-90a3fbb1723ba60bcf557121b7bbe80817a7533f.zip chromium_src-90a3fbb1723ba60bcf557121b7bbe80817a7533f.tar.gz chromium_src-90a3fbb1723ba60bcf557121b7bbe80817a7533f.tar.bz2 |
Chrome side to pick up new WebKit API changes.
WebKit API now provides:
- layoutTestMode
- support for registering extra local URL schemes
- access to the current WebKitClient
WebKitClient was extended to include:
- access to the default locale
- access to the current time
- methods to start/stop the shared timer
- method to get work scheduled on the main thread
- methods to access cookies
- method to prefetch hostnames
R=dglazkov
Review URL: http://codereview.chromium.org/27276
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@10665 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer/render_thread.cc')
-rw-r--r-- | chrome/renderer/render_thread.cc | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/chrome/renderer/render_thread.cc b/chrome/renderer/render_thread.cc index fb8082b..f77686b 100644 --- a/chrome/renderer/render_thread.cc +++ b/chrome/renderer/render_thread.cc @@ -16,6 +16,7 @@ #include "chrome/common/chrome_plugin_lib.h" #include "chrome/common/render_messages.h" #include "chrome/common/notification_service.h" +#include "chrome/common/url_constants.h" #include "chrome/plugin/npobject_util.h" // TODO(port) #if defined(OS_WIN) @@ -35,6 +36,7 @@ #include "webkit/glue/cache_manager.h" #include "WebKit.h" +#include "WebString.h" static const unsigned int kCacheStatsDelayMS = 2000 /* milliseconds */; @@ -95,9 +97,6 @@ void RenderThread::Init() { cache_stats_factory_.reset( new ScopedRunnableMethodFactory<RenderThread>(this)); - webkit_client_impl_.reset(new RendererWebKitClientImpl); - WebKit::initialize(webkit_client_impl_.get()); - visited_link_slave_.reset(new VisitedLinkSlave()); user_script_slave_.reset(new UserScriptSlave()); dns_master_.reset(new RenderDnsMaster()); @@ -112,7 +111,10 @@ void RenderThread::CleanUp() { user_script_slave_.reset(); visited_link_slave_.reset(); - WebKit::shutdown(); + if (webkit_client_.get()) { + WebKit::shutdown(); + webkit_client_.reset(); + } notification_service_.reset(); @@ -185,6 +187,8 @@ void RenderThread::OnCreateNewView(gfx::NativeViewId parent_hwnd, ModalDialogEvent modal_dialog_event, const WebPreferences& webkit_prefs, int32 view_id) { + EnsureWebKitInitialized(); + // When bringing in render_view, also bring in webkit's glue and jsbindings. base::WaitableEvent* waitable_event = new base::WaitableEvent( #if defined(OS_WIN) @@ -203,6 +207,7 @@ void RenderThread::OnCreateNewView(gfx::NativeViewId parent_hwnd, void RenderThread::OnSetCacheCapacities(size_t min_dead_capacity, size_t max_dead_capacity, size_t capacity) { + EnsureWebKitInitialized(); #if defined(OS_WIN) || defined(OS_LINUX) CacheManager::SetCapacities(min_dead_capacity, max_dead_capacity, capacity); #else @@ -212,6 +217,7 @@ void RenderThread::OnSetCacheCapacities(size_t min_dead_capacity, } void RenderThread::OnGetCacheResourceStats() { + EnsureWebKitInitialized(); #if defined(OS_WIN) || defined(OS_LINUX) CacheManager::ResourceTypeStats stats; CacheManager::GetResourceTypeStats(&stats); @@ -227,6 +233,7 @@ void RenderThread::OnGetRendererHistograms() { } void RenderThread::InformHostOfCacheStats() { + EnsureWebKitInitialized(); #if defined(OS_WIN) || defined(OS_LINUX) CacheManager::UsageStats stats; CacheManager::GetUsageStats(&stats); @@ -247,3 +254,11 @@ void RenderThread::InformHostOfCacheStatsLater() { &RenderThread::InformHostOfCacheStats), kCacheStatsDelayMS); } + +void RenderThread::EnsureWebKitInitialized() { + if (webkit_client_.get()) + return; + webkit_client_.reset(new RendererWebKitClientImpl); + WebKit::initialize(webkit_client_.get()); + WebKit::registerURLSchemeAsLocal(ASCIIToUTF16(chrome::kChromeUIScheme)); +} |