summaryrefslogtreecommitdiffstats
path: root/chrome/renderer
diff options
context:
space:
mode:
authorkinuko@chromium.org <kinuko@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-09-27 18:37:08 +0000
committerkinuko@chromium.org <kinuko@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-09-27 18:37:08 +0000
commitc5a272dbd00c74dffe922523811a4ecbcd7f882b (patch)
tree90528ee8bec3657a531a2f5095aff97f5f0a3f18 /chrome/renderer
parent445028be1162ed994286addce0b27d0e6239382d (diff)
downloadchromium_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.cc50
-rw-r--r--chrome/renderer/render_view.h10
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