summaryrefslogtreecommitdiffstats
path: root/chrome/renderer/render_thread.cc
diff options
context:
space:
mode:
authordarin@chromium.org <darin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-02-28 01:13:47 +0000
committerdarin@chromium.org <darin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-02-28 01:13:47 +0000
commit90a3fbb1723ba60bcf557121b7bbe80817a7533f (patch)
tree28d845ed0f1d64cdfa418f4561af4536de6f3c40 /chrome/renderer/render_thread.cc
parent41fb1d7d262e44d8561a5c4d6d7e353f638b56e8 (diff)
downloadchromium_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.cc23
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));
+}