Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(711)

Side by Side Diff: chrome/renderer/render_view.cc

Issue 3394003: Add Worker support for FileSystem API. (Closed)
Patch Set: '' Created 10 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « chrome/renderer/render_view.h ('k') | chrome/worker/websharedworker_stub.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/renderer/render_view.h" 5 #include "chrome/renderer/render_view.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 13 matching lines...) Expand all
24 #include "base/sys_string_conversions.h" 24 #include "base/sys_string_conversions.h"
25 #include "base/utf_string_conversions.h" 25 #include "base/utf_string_conversions.h"
26 #include "build/build_config.h" 26 #include "build/build_config.h"
27 #include "chrome/common/appcache/appcache_dispatcher.h" 27 #include "chrome/common/appcache/appcache_dispatcher.h"
28 #include "chrome/common/bindings_policy.h" 28 #include "chrome/common/bindings_policy.h"
29 #include "chrome/common/child_process_logging.h" 29 #include "chrome/common/child_process_logging.h"
30 #include "chrome/common/chrome_constants.h" 30 #include "chrome/common/chrome_constants.h"
31 #include "chrome/common/chrome_paths.h" 31 #include "chrome/common/chrome_paths.h"
32 #include "chrome/common/chrome_switches.h" 32 #include "chrome/common/chrome_switches.h"
33 #include "chrome/common/extensions/extension.h" 33 #include "chrome/common/extensions/extension.h"
34 #include "chrome/common/file_system/file_system_dispatcher.h"
35 #include "chrome/common/file_system/webfilesystem_callback_dispatcher.h"
34 #include "chrome/common/jstemplate_builder.h" 36 #include "chrome/common/jstemplate_builder.h"
35 #include "chrome/common/notification_service.h" 37 #include "chrome/common/notification_service.h"
36 #include "chrome/common/page_zoom.h" 38 #include "chrome/common/page_zoom.h"
37 #include "chrome/common/pepper_plugin_registry.h" 39 #include "chrome/common/pepper_plugin_registry.h"
38 #include "chrome/common/plugin_group.h" 40 #include "chrome/common/plugin_group.h"
39 #include "chrome/common/render_messages.h" 41 #include "chrome/common/render_messages.h"
40 #include "chrome/common/render_messages_params.h" 42 #include "chrome/common/render_messages_params.h"
41 #include "chrome/common/renderer_preferences.h" 43 #include "chrome/common/renderer_preferences.h"
42 #include "chrome/common/thumbnail_score.h" 44 #include "chrome/common/thumbnail_score.h"
43 #include "chrome/common/url_constants.h" 45 #include "chrome/common/url_constants.h"
(...skipping 357 matching lines...) Expand 10 before | Expand all | Expand 10 after
401 // the languages CLD can detect. As a result, it'll return the invalid 403 // the languages CLD can detect. As a result, it'll return the invalid
402 // language code for tradtional Chinese among others. 404 // language code for tradtional Chinese among others.
403 // |LanguageCodeWithDialect| will go through ISO 639-1, ISO-639-2 and 405 // |LanguageCodeWithDialect| will go through ISO 639-1, ISO-639-2 and
404 // 'other' tables to do the 'right' thing. In addition, it'll return zh-CN 406 // 'other' tables to do the 'right' thing. In addition, it'll return zh-CN
405 // for Simplified Chinese. 407 // for Simplified Chinese.
406 language = LanguageCodeWithDialects(cld_language); 408 language = LanguageCodeWithDialects(cld_language);
407 } 409 }
408 return language; 410 return language;
409 } 411 }
410 412
411 // Holds pending openFileSystem callbacks.
412 struct RenderView::PendingOpenFileSystem {
413 explicit PendingOpenFileSystem(WebFileSystemCallbacks* c) : callbacks(c) {
414 }
415 ~PendingOpenFileSystem() {
416 if (callbacks)
417 callbacks->didFail(WebKit::WebFileErrorAbort);
418 }
419 WebFileSystemCallbacks* callbacks;
420 };
421
422 /////////////////////////////////////////////////////////////////////////////// 413 ///////////////////////////////////////////////////////////////////////////////
423 414
424 int32 RenderView::next_page_id_ = 1; 415 int32 RenderView::next_page_id_ = 1;
425 416
426 struct RenderView::PendingFileChooser { 417 struct RenderView::PendingFileChooser {
427 PendingFileChooser(const ViewHostMsg_RunFileChooser_Params& p, 418 PendingFileChooser(const ViewHostMsg_RunFileChooser_Params& p,
428 WebFileChooserCompletion* c) 419 WebFileChooserCompletion* c)
429 : params(p), 420 : params(p),
430 completion(c) { 421 completion(c) {
431 } 422 }
(...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after
803 IPC_MESSAGE_HANDLER(ViewMsg_CustomContextMenuAction, 794 IPC_MESSAGE_HANDLER(ViewMsg_CustomContextMenuAction,
804 OnCustomContextMenuAction) 795 OnCustomContextMenuAction)
805 IPC_MESSAGE_HANDLER(ViewMsg_TranslatePage, OnTranslatePage) 796 IPC_MESSAGE_HANDLER(ViewMsg_TranslatePage, OnTranslatePage)
806 IPC_MESSAGE_HANDLER(ViewMsg_RevertTranslation, OnRevertTranslation) 797 IPC_MESSAGE_HANDLER(ViewMsg_RevertTranslation, OnRevertTranslation)
807 IPC_MESSAGE_HANDLER(ViewMsg_GetAccessibilityTree, OnGetAccessibilityTree) 798 IPC_MESSAGE_HANDLER(ViewMsg_GetAccessibilityTree, OnGetAccessibilityTree)
808 IPC_MESSAGE_HANDLER(ViewMsg_SetAccessibilityFocus, OnSetAccessibilityFocus) 799 IPC_MESSAGE_HANDLER(ViewMsg_SetAccessibilityFocus, OnSetAccessibilityFocus)
809 IPC_MESSAGE_HANDLER(ViewMsg_AccessibilityDoDefaultAction, 800 IPC_MESSAGE_HANDLER(ViewMsg_AccessibilityDoDefaultAction,
810 OnAccessibilityDoDefaultAction) 801 OnAccessibilityDoDefaultAction)
811 IPC_MESSAGE_HANDLER(ViewMsg_AccessibilityNotifications_ACK, 802 IPC_MESSAGE_HANDLER(ViewMsg_AccessibilityNotifications_ACK,
812 OnAccessibilityNotificationsAck) 803 OnAccessibilityNotificationsAck)
813 IPC_MESSAGE_HANDLER(ViewMsg_OpenFileSystemRequest_Complete,
814 OnOpenFileSystemRequestComplete)
815 IPC_MESSAGE_HANDLER(ViewMsg_AsyncOpenFile_ACK, OnAsyncFileOpened) 804 IPC_MESSAGE_HANDLER(ViewMsg_AsyncOpenFile_ACK, OnAsyncFileOpened)
816 805
817 // Have the super handle all other messages. 806 // Have the super handle all other messages.
818 IPC_MESSAGE_UNHANDLED(RenderWidget::OnMessageReceived(message)) 807 IPC_MESSAGE_UNHANDLED(RenderWidget::OnMessageReceived(message))
819 IPC_END_MESSAGE_MAP() 808 IPC_END_MESSAGE_MAP()
820 } 809 }
821 810
822 void RenderView::OnCaptureThumbnail() { 811 void RenderView::OnCaptureThumbnail() {
823 WebFrame* main_frame = webview()->mainFrame(); 812 WebFrame* main_frame = webview()->mainFrame();
824 if (!main_frame) 813 if (!main_frame)
(...skipping 2674 matching lines...) Expand 10 before | Expand all | Expand 10 after
3499 selection_rect, 3488 selection_rect,
3500 active_match_ordinal, 3489 active_match_ordinal,
3501 false)); 3490 false));
3502 } 3491 }
3503 3492
3504 void RenderView::openFileSystem( 3493 void RenderView::openFileSystem(
3505 WebFrame* frame, 3494 WebFrame* frame,
3506 WebFileSystem::Type type, 3495 WebFileSystem::Type type,
3507 long long size, 3496 long long size,
3508 WebFileSystemCallbacks* callbacks) { 3497 WebFileSystemCallbacks* callbacks) {
3509 scoped_ptr<PendingOpenFileSystem> request( 3498 DCHECK(callbacks);
3510 new PendingOpenFileSystem(callbacks));
3511 3499
3512 WebSecurityOrigin origin = frame->securityOrigin(); 3500 WebSecurityOrigin origin = frame->securityOrigin();
3513 if (origin.isEmpty()) 3501 if (origin.isEmpty()) {
3514 return; // Uninitialized document? 3502 // Uninitialized document?
3503 callbacks->didFail(WebKit::WebFileErrorAbort);
3504 return;
3505 }
3515 3506
3516 ViewHostMsg_OpenFileSystemRequest_Params params; 3507 ChildThread::current()->file_system_dispatcher()->OpenFileSystem(
3517 params.routing_id = routing_id_; 3508 GURL(origin.toString()), static_cast<fileapi::FileSystemType>(type),
3518 params.request_id = pending_file_system_requests_.Add(request.release()); 3509 size, new WebFileSystemCallbackDispatcher(callbacks));
3519 params.origin_url = GURL(origin.toString());
3520 params.type = type;
3521 params.requested_size = size;
3522
3523 Send(new ViewHostMsg_OpenFileSystemRequest(params));
3524 } 3510 }
3525 3511
3526 // webkit_glue::WebPluginPageDelegate ----------------------------------------- 3512 // webkit_glue::WebPluginPageDelegate -----------------------------------------
3527 3513
3528 webkit_glue::WebPluginDelegate* RenderView::CreatePluginDelegate( 3514 webkit_glue::WebPluginDelegate* RenderView::CreatePluginDelegate(
3529 const FilePath& file_path, 3515 const FilePath& file_path,
3530 const std::string& mime_type) { 3516 const std::string& mime_type) {
3531 if (!PluginChannelHost::IsListening()) 3517 if (!PluginChannelHost::IsListening())
3532 return NULL; 3518 return NULL;
3533 3519
(...skipping 2272 matching lines...) Expand 10 before | Expand all | Expand 10 after
5806 return true; 5792 return true;
5807 } 5793 }
5808 } 5794 }
5809 5795
5810 if (url.GetOrigin() != GURL(opener->url()).GetOrigin()) 5796 if (url.GetOrigin() != GURL(opener->url()).GetOrigin())
5811 return true; 5797 return true;
5812 } 5798 }
5813 return false; 5799 return false;
5814 } 5800 }
5815 5801
5816 void RenderView::OnOpenFileSystemRequestComplete(
5817 int request_id, bool accepted, const string16& name,
5818 const string16& root_path) {
5819 PendingOpenFileSystem* request = pending_file_system_requests_.Lookup(
5820 request_id);
5821 DCHECK(request);
5822 if (accepted)
5823 request->callbacks->didOpenFileSystem(name, root_path);
5824 else
5825 request->callbacks->didFail(WebKit::WebFileErrorSecurity);
5826 request->callbacks = NULL;
5827 pending_file_system_requests_.Remove(request_id);
5828 }
5829
5830 void RenderView::OnAsyncFileOpened(base::PlatformFileError error_code, 5802 void RenderView::OnAsyncFileOpened(base::PlatformFileError error_code,
5831 IPC::PlatformFileForTransit file_for_transit, 5803 IPC::PlatformFileForTransit file_for_transit,
5832 int message_id) { 5804 int message_id) {
5833 pepper_delegate_.OnAsyncFileOpened( 5805 pepper_delegate_.OnAsyncFileOpened(
5834 error_code, 5806 error_code,
5835 IPC::PlatformFileForTransitToPlatformFile(file_for_transit), 5807 IPC::PlatformFileForTransitToPlatformFile(file_for_transit),
5836 message_id); 5808 message_id);
5837 } 5809 }
OLDNEW
« no previous file with comments | « chrome/renderer/render_view.h ('k') | chrome/worker/websharedworker_stub.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698