summaryrefslogtreecommitdiffstats
path: root/chrome/renderer/renderer_webkitclient_impl.cc
diff options
context:
space:
mode:
authorerg@google.com <erg@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-28 19:36:41 +0000
committererg@google.com <erg@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-28 19:36:41 +0000
commit46f36a49b661fe4af87e95befb659464e3b1fbbc (patch)
tree86a774a4175c32c882460e61ec9081800fa0ca56 /chrome/renderer/renderer_webkitclient_impl.cc
parentbf19ce759d2e46e7f1f8839c9f2791f5f7661929 (diff)
downloadchromium_src-46f36a49b661fe4af87e95befb659464e3b1fbbc.zip
chromium_src-46f36a49b661fe4af87e95befb659464e3b1fbbc.tar.gz
chromium_src-46f36a49b661fe4af87e95befb659464e3b1fbbc.tar.bz2
Header cleanup in chrome/renderer/.
In renderer_webkit_client_impl, several impl classes got moved to the implementation file. BUG=none TEST=none Review URL: http://codereview.chromium.org/3032027 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@53996 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer/renderer_webkitclient_impl.cc')
-rw-r--r--chrome/renderer/renderer_webkitclient_impl.cc77
1 files changed, 71 insertions, 6 deletions
diff --git a/chrome/renderer/renderer_webkitclient_impl.cc b/chrome/renderer/renderer_webkitclient_impl.cc
index 8537d65..f2d6a9e 100644
--- a/chrome/renderer/renderer_webkitclient_impl.cc
+++ b/chrome/renderer/renderer_webkitclient_impl.cc
@@ -21,6 +21,7 @@
#include "chrome/renderer/visitedlink_slave.h"
#include "chrome/renderer/webgles2context_impl.h"
#include "chrome/renderer/webgraphicscontext3d_command_buffer_impl.h"
+#include "chrome/renderer/websharedworkerrepository_impl.h"
#include "googleurl/src/gurl.h"
#include "ipc/ipc_sync_message_filter.h"
#include "third_party/WebKit/WebKit/chromium/public/WebFrame.h"
@@ -29,15 +30,28 @@
#include "third_party/WebKit/WebKit/chromium/public/WebStorageEventDispatcher.h"
#include "third_party/WebKit/WebKit/chromium/public/WebURL.h"
#include "third_party/WebKit/WebKit/chromium/public/WebVector.h"
+#include "webkit/glue/simple_webmimeregistry_impl.h"
+#include "webkit/glue/webclipboard_impl.h"
+#include "webkit/glue/webfilesystem_impl.h"
#include "webkit/glue/webkit_glue.h"
+#if defined(OS_WIN)
+#include "third_party/WebKit/WebKit/chromium/public/win/WebSandboxSupport.h"
+#endif
+
#if defined(OS_MACOSX)
#include "chrome/common/font_descriptor_mac.h"
#include "chrome/common/font_loader_mac.h"
+#include "third_party/WebKit/WebKit/chromium/public/mac/WebSandboxSupport.h"
#endif
#if defined(OS_LINUX)
+#include <string>
+#include <map>
+
+#include "base/lock.h"
#include "chrome/renderer/renderer_sandbox_support_linux.h"
+#include "third_party/WebKit/WebKit/chromium/public/linux/WebSandboxSupport.h"
#endif
#if defined(OS_POSIX)
@@ -54,8 +68,59 @@ using WebKit::WebString;
using WebKit::WebURL;
using WebKit::WebVector;
+//------------------------------------------------------------------------------
+
+class RendererWebKitClientImpl::MimeRegistry
+ : public webkit_glue::SimpleWebMimeRegistryImpl {
+ public:
+ virtual WebKit::WebString mimeTypeForExtension(const WebKit::WebString&);
+ virtual WebKit::WebString mimeTypeFromFile(const WebKit::WebString&);
+ virtual WebKit::WebString preferredExtensionForMIMEType(
+ const WebKit::WebString&);
+};
+
+class RendererWebKitClientImpl::FileSystem
+ : public webkit_glue::WebFileSystemImpl {
+ public:
+ virtual bool getFileSize(const WebKit::WebString& path, long long& result);
+ virtual bool getFileModificationTime(const WebKit::WebString& path,
+ double& result);
+ virtual base::PlatformFile openFile(const WebKit::WebString& path,
+ int mode);
+};
+
+class RendererWebKitClientImpl::SandboxSupport
+ : public WebKit::WebSandboxSupport {
+ public:
+#if defined(OS_WIN)
+ virtual bool ensureFontLoaded(HFONT);
+#elif defined(OS_MACOSX)
+ virtual bool loadFont(NSFont* srcFont, ATSFontContainerRef* out);
+#elif defined(OS_LINUX)
+ virtual WebKit::WebString getFontFamilyForCharacters(
+ const WebKit::WebUChar* characters, size_t numCharacters);
+ virtual void getRenderStyleForStrike(
+ const char* family, int sizeAndStyle, WebKit::WebFontRenderStyle* out);
+
+ private:
+ // WebKit likes to ask us for the correct font family to use for a set of
+ // unicode code points. It needs this information frequently so we cache it
+ // here. The key in this map is an array of 16-bit UTF16 values from WebKit.
+ // The value is a string containing the correct font family.
+ Lock unicode_font_families_mutex_;
+ std::map<std::string, std::string> unicode_font_families_;
+#endif
+};
+
+//------------------------------------------------------------------------------
+
RendererWebKitClientImpl::RendererWebKitClientImpl()
- : sudden_termination_disables_(0) {
+ : clipboard_(new webkit_glue::WebClipboardImpl),
+ file_system_(new RendererWebKitClientImpl::FileSystem),
+ mime_registry_(new RendererWebKitClientImpl::MimeRegistry),
+ sandbox_support_(new RendererWebKitClientImpl::SandboxSupport),
+ sudden_termination_disables_(0),
+ shared_worker_repository_(new WebSharedWorkerRepositoryImpl) {
}
RendererWebKitClientImpl::~RendererWebKitClientImpl() {
@@ -64,19 +129,19 @@ RendererWebKitClientImpl::~RendererWebKitClientImpl() {
//------------------------------------------------------------------------------
WebKit::WebClipboard* RendererWebKitClientImpl::clipboard() {
- return &clipboard_;
+ return clipboard_.get();
}
WebKit::WebMimeRegistry* RendererWebKitClientImpl::mimeRegistry() {
- return &mime_registry_;
+ return mime_registry_.get();
}
WebKit::WebFileSystem* RendererWebKitClientImpl::fileSystem() {
- return &file_system_;
+ return file_system_.get();
}
WebKit::WebSandboxSupport* RendererWebKitClientImpl::sandboxSupport() {
- return &sandbox_support_;
+ return sandbox_support_.get();
}
WebKit::WebCookieJar* RendererWebKitClientImpl::cookieJar() {
@@ -385,7 +450,7 @@ WebKit::WebSharedWorkerRepository*
RendererWebKitClientImpl::sharedWorkerRepository() {
if (!CommandLine::ForCurrentProcess()->HasSwitch(
switches::kDisableSharedWorkers)) {
- return &shared_worker_repository_;
+ return shared_worker_repository_.get();
} else {
return NULL;
}