diff options
author | kinuko@chromium.org <kinuko@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-09-27 18:37:08 +0000 |
---|---|---|
committer | kinuko@chromium.org <kinuko@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-09-27 18:37:08 +0000 |
commit | c5a272dbd00c74dffe922523811a4ecbcd7f882b (patch) | |
tree | 90528ee8bec3657a531a2f5095aff97f5f0a3f18 /chrome/renderer | |
parent | 445028be1162ed994286addce0b27d0e6239382d (diff) | |
download | chromium_src-c5a272dbd00c74dffe922523811a4ecbcd7f882b.zip chromium_src-c5a272dbd00c74dffe922523811a4ecbcd7f882b.tar.gz chromium_src-c5a272dbd00c74dffe922523811a4ecbcd7f882b.tar.bz2 |
Add Worker support for FileSystem API.
(corresponds to https://bugs.webkit.org/show_bug.cgi?id=45808)
No support for shared workers yet.
BUG=32277
TEST=none; layout tests will be added later.
Review URL: http://codereview.chromium.org/3394003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@60683 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer')
-rw-r--r-- | chrome/renderer/render_view.cc | 50 | ||||
-rw-r--r-- | chrome/renderer/render_view.h | 10 |
2 files changed, 11 insertions, 49 deletions
diff --git a/chrome/renderer/render_view.cc b/chrome/renderer/render_view.cc index 3f65c3e..02e67ea 100644 --- a/chrome/renderer/render_view.cc +++ b/chrome/renderer/render_view.cc @@ -31,6 +31,8 @@ #include "chrome/common/chrome_paths.h" #include "chrome/common/chrome_switches.h" #include "chrome/common/extensions/extension.h" +#include "chrome/common/file_system/file_system_dispatcher.h" +#include "chrome/common/file_system/webfilesystem_callback_dispatcher.h" #include "chrome/common/jstemplate_builder.h" #include "chrome/common/notification_service.h" #include "chrome/common/page_zoom.h" @@ -408,17 +410,6 @@ static std::string DetermineTextLanguage(const string16& text) { return language; } -// Holds pending openFileSystem callbacks. -struct RenderView::PendingOpenFileSystem { - explicit PendingOpenFileSystem(WebFileSystemCallbacks* c) : callbacks(c) { - } - ~PendingOpenFileSystem() { - if (callbacks) - callbacks->didFail(WebKit::WebFileErrorAbort); - } - WebFileSystemCallbacks* callbacks; -}; - /////////////////////////////////////////////////////////////////////////////// int32 RenderView::next_page_id_ = 1; @@ -812,8 +803,6 @@ void RenderView::OnMessageReceived(const IPC::Message& message) { OnAccessibilityDoDefaultAction) IPC_MESSAGE_HANDLER(ViewMsg_AccessibilityNotifications_ACK, OnAccessibilityNotificationsAck) - IPC_MESSAGE_HANDLER(ViewMsg_OpenFileSystemRequest_Complete, - OnOpenFileSystemRequestComplete) IPC_MESSAGE_HANDLER(ViewMsg_AsyncOpenFile_ACK, OnAsyncFileOpened) // Have the super handle all other messages. @@ -3508,21 +3497,18 @@ void RenderView::openFileSystem( WebFileSystem::Type type, long long size, WebFileSystemCallbacks* callbacks) { - scoped_ptr<PendingOpenFileSystem> request( - new PendingOpenFileSystem(callbacks)); + DCHECK(callbacks); WebSecurityOrigin origin = frame->securityOrigin(); - if (origin.isEmpty()) - return; // Uninitialized document? - - ViewHostMsg_OpenFileSystemRequest_Params params; - params.routing_id = routing_id_; - params.request_id = pending_file_system_requests_.Add(request.release()); - params.origin_url = GURL(origin.toString()); - params.type = type; - params.requested_size = size; + if (origin.isEmpty()) { + // Uninitialized document? + callbacks->didFail(WebKit::WebFileErrorAbort); + return; + } - Send(new ViewHostMsg_OpenFileSystemRequest(params)); + ChildThread::current()->file_system_dispatcher()->OpenFileSystem( + GURL(origin.toString()), static_cast<fileapi::FileSystemType>(type), + size, new WebFileSystemCallbackDispatcher(callbacks)); } // webkit_glue::WebPluginPageDelegate ----------------------------------------- @@ -5836,20 +5822,6 @@ bool RenderView::IsNonLocalTopLevelNavigation( return false; } -void RenderView::OnOpenFileSystemRequestComplete( - int request_id, bool accepted, const string16& name, - const string16& root_path) { - PendingOpenFileSystem* request = pending_file_system_requests_.Lookup( - request_id); - DCHECK(request); - if (accepted) - request->callbacks->didOpenFileSystem(name, root_path); - else - request->callbacks->didFail(WebKit::WebFileErrorSecurity); - request->callbacks = NULL; - pending_file_system_requests_.Remove(request_id); -} - void RenderView::OnAsyncFileOpened(base::PlatformFileError error_code, IPC::PlatformFileForTransit file_for_transit, int message_id) { diff --git a/chrome/renderer/render_view.h b/chrome/renderer/render_view.h index 0826b6c5..4fe4c3b 100644 --- a/chrome/renderer/render_view.h +++ b/chrome/renderer/render_view.h @@ -16,7 +16,6 @@ #include "app/surface/transport_dib.h" #include "base/basictypes.h" #include "base/gtest_prod_util.h" -#include "base/id_map.h" #include "base/linked_ptr.h" #include "base/timer.h" #include "base/weak_ptr.h" @@ -818,10 +817,6 @@ class RenderView : public RenderWidget, void OnNotifyRendererViewType(ViewType::Type view_type); void OnFillPasswordForm( const webkit_glue::PasswordFormFillData& form_data); - void OnOpenFileSystemRequestComplete(int request_id, - bool accepted, - const string16& name, - const string16& root_path); void OnPaste(); void OnPrintingDone(int document_cookie, bool success); void OnPrintPages(); @@ -1344,11 +1339,6 @@ class RenderView : public RenderWidget, // External host exposed through automation controller. scoped_ptr<ExternalHostBindings> external_host_bindings_; - // Pending openFileSystem completion objects. - struct PendingOpenFileSystem; - IDMap<PendingOpenFileSystem, IDMapOwnPointer> - pending_file_system_requests_; - // --------------------------------------------------------------------------- // ADDING NEW DATA? Please see if it fits appropriately in one of the above // sections rather than throwing it randomly at the end. If you're adding a |