Index: chrome/renderer/render_view.cc |
diff --git a/chrome/renderer/render_view.cc b/chrome/renderer/render_view.cc |
index 9666b67c7cb525e751f66135a5b4a4c6676b40e0..8de46f47f317c5823c7b4632f56c7c5568ea4af9 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; |
@@ -810,8 +801,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. |
@@ -3506,21 +3495,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 ----------------------------------------- |
@@ -5813,20 +5799,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) { |