diff options
author | jianli@chromium.org <jianli@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-05-06 21:08:59 +0000 |
---|---|---|
committer | jianli@chromium.org <jianli@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-05-06 21:08:59 +0000 |
commit | 10b998f8a366c02a69b1e8688a1b5e0cb653a154 (patch) | |
tree | 4aa5d267e957f46ead7fd6742ade99679ff57a4c /chrome/renderer/renderer_webkitclient_impl.cc | |
parent | 0568e6ca9cba8826a42eed080e569dba3fe6afec (diff) | |
download | chromium_src-10b998f8a366c02a69b1e8688a1b5e0cb653a154.zip chromium_src-10b998f8a366c02a69b1e8688a1b5e0cb653a154.tar.gz chromium_src-10b998f8a366c02a69b1e8688a1b5e0cb653a154.tar.bz2 |
Add Chromium side implementation for WebFileSystem interface in WebKit.
BUG=none
TEST=non
Review URL: http://codereview.chromium.org/1748015
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@46625 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer/renderer_webkitclient_impl.cc')
-rw-r--r-- | chrome/renderer/renderer_webkitclient_impl.cc | 76 |
1 files changed, 52 insertions, 24 deletions
diff --git a/chrome/renderer/renderer_webkitclient_impl.cc b/chrome/renderer/renderer_webkitclient_impl.cc index e8f4214..b9c1dd6 100644 --- a/chrome/renderer/renderer_webkitclient_impl.cc +++ b/chrome/renderer/renderer_webkitclient_impl.cc @@ -25,6 +25,7 @@ #include "chrome/renderer/visitedlink_slave.h" #include "chrome/renderer/webgraphicscontext3d_command_buffer_impl.h" #include "googleurl/src/gurl.h" +#include "ipc/ipc_sync_message_filter.h" #include "third_party/WebKit/WebKit/chromium/public/WebFrame.h" #include "third_party/WebKit/WebKit/chromium/public/WebGraphicsContext3D.h" #include "third_party/WebKit/WebKit/chromium/public/WebStorageEventDispatcher.h" @@ -60,6 +61,10 @@ WebKit::WebMimeRegistry* RendererWebKitClientImpl::mimeRegistry() { return &mime_registry_; } +WebKit::WebFileSystem* RendererWebKitClientImpl::fileSystem() { + return &file_system_; +} + WebKit::WebSandboxSupport* RendererWebKitClientImpl::sandboxSupport() { #if defined(OS_WIN) || defined(OS_LINUX) return &sandbox_support_; @@ -84,31 +89,15 @@ bool RendererWebKitClientImpl::sandboxEnabled() { return !CommandLine::ForCurrentProcess()->HasSwitch(switches::kSingleProcess); } -bool RendererWebKitClientImpl::getFileSize(const WebString& path, - long long& result) { - if (RenderThread::current()->Send( - new ViewHostMsg_GetFileSize(webkit_glue::WebStringToFilePath(path), - reinterpret_cast<int64*>(&result)))) { - return result >= 0; - } - - result = -1; - return false; -} - -bool RendererWebKitClientImpl::getFileModificationTime( - const WebKit::WebString& path, - double& result) { - base::Time time; - if (RenderThread::current()->Send( - new ViewHostMsg_GetFileModificationTime( - webkit_glue::WebStringToFilePath(path), &time))) { - result = time.ToDoubleT(); - return true; - } +bool RendererWebKitClientImpl::SendSyncMessageFromAnyThread( + IPC::SyncMessage* msg) { + RenderThread* render_thread = RenderThread::current(); + if (render_thread) + return render_thread->Send(msg); - result = 0; - return false; + scoped_refptr<IPC::SyncMessageFilter> sync_msg_filter = + ChildThread::current()->sync_message_filter(); + return sync_msg_filter->Send(msg); } unsigned long long RendererWebKitClientImpl::visitedLinkHash( @@ -225,6 +214,45 @@ WebString RendererWebKitClientImpl::MimeRegistry::preferredExtensionForMIMEType( //------------------------------------------------------------------------------ +bool RendererWebKitClientImpl::FileSystem::getFileSize(const WebString& path, + long long& result) { + if (SendSyncMessageFromAnyThread(new ViewHostMsg_GetFileSize( + webkit_glue::WebStringToFilePath(path), + reinterpret_cast<int64*>(&result)))) { + return result >= 0; + } + + result = -1; + return false; +} + +bool RendererWebKitClientImpl::FileSystem::getFileModificationTime( + const WebString& path, + double& result) { + base::Time time; + if (SendSyncMessageFromAnyThread(new ViewHostMsg_GetFileModificationTime( + webkit_glue::WebStringToFilePath(path), &time))) { + result = time.ToDoubleT(); + return !time.is_null(); + } + + result = 0; + return false; +} + +base::PlatformFile RendererWebKitClientImpl::FileSystem::openFile( + const WebString& path, + int mode) { + base::PlatformFile handle; + if (!SendSyncMessageFromAnyThread(new ViewHostMsg_OpenFile( + webkit_glue::WebStringToFilePath(path), mode, &handle))) { + handle = base::kInvalidPlatformFileValue; + } + return handle; +} + +//------------------------------------------------------------------------------ + #if defined(OS_WIN) bool RendererWebKitClientImpl::SandboxSupport::ensureFontLoaded(HFONT font) { |