| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "content/child/fileapi/webfilesystem_impl.h" | 5 #include "content/child/fileapi/webfilesystem_impl.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/lazy_instance.h" | 8 #include "base/lazy_instance.h" |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/message_loop/message_loop_proxy.h" | 10 #include "base/message_loop/message_loop_proxy.h" |
| 11 #include "base/strings/utf_string_conversions.h" | 11 #include "base/strings/utf_string_conversions.h" |
| 12 #include "base/synchronization/waitable_event.h" | 12 #include "base/synchronization/waitable_event.h" |
| 13 #include "base/threading/thread_local.h" | 13 #include "base/threading/thread_local.h" |
| 14 #include "content/child/child_thread.h" | 14 #include "content/child/child_thread_impl.h" |
| 15 #include "content/child/file_info_util.h" | 15 #include "content/child/file_info_util.h" |
| 16 #include "content/child/fileapi/file_system_dispatcher.h" | 16 #include "content/child/fileapi/file_system_dispatcher.h" |
| 17 #include "content/child/fileapi/webfilewriter_impl.h" | 17 #include "content/child/fileapi/webfilewriter_impl.h" |
| 18 #include "content/child/worker_task_runner.h" | 18 #include "content/child/worker_task_runner.h" |
| 19 #include "content/common/fileapi/file_system_messages.h" | 19 #include "content/common/fileapi/file_system_messages.h" |
| 20 #include "storage/common/fileapi/directory_entry.h" | 20 #include "storage/common/fileapi/directory_entry.h" |
| 21 #include "storage/common/fileapi/file_system_util.h" | 21 #include "storage/common/fileapi/file_system_util.h" |
| 22 #include "third_party/WebKit/public/platform/WebFileInfo.h" | 22 #include "third_party/WebKit/public/platform/WebFileInfo.h" |
| 23 #include "third_party/WebKit/public/platform/WebFileSystemCallbacks.h" | 23 #include "third_party/WebKit/public/platform/WebFileSystemCallbacks.h" |
| 24 #include "third_party/WebKit/public/platform/WebString.h" | 24 #include "third_party/WebKit/public/platform/WebString.h" |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 79 }; | 79 }; |
| 80 | 80 |
| 81 namespace { | 81 namespace { |
| 82 | 82 |
| 83 typedef WebFileSystemImpl::WaitableCallbackResults WaitableCallbackResults; | 83 typedef WebFileSystemImpl::WaitableCallbackResults WaitableCallbackResults; |
| 84 | 84 |
| 85 base::LazyInstance<base::ThreadLocalPointer<WebFileSystemImpl> >::Leaky | 85 base::LazyInstance<base::ThreadLocalPointer<WebFileSystemImpl> >::Leaky |
| 86 g_webfilesystem_tls = LAZY_INSTANCE_INITIALIZER; | 86 g_webfilesystem_tls = LAZY_INSTANCE_INITIALIZER; |
| 87 | 87 |
| 88 void DidReceiveSnapshotFile(int request_id) { | 88 void DidReceiveSnapshotFile(int request_id) { |
| 89 if (ChildThread::current()) | 89 if (ChildThreadImpl::current()) |
| 90 ChildThread::current()->Send( | 90 ChildThreadImpl::current()->Send( |
| 91 new FileSystemHostMsg_DidReceiveSnapshotFile(request_id)); | 91 new FileSystemHostMsg_DidReceiveSnapshotFile(request_id)); |
| 92 } | 92 } |
| 93 | 93 |
| 94 int CurrentWorkerId() { | 94 int CurrentWorkerId() { |
| 95 return WorkerTaskRunner::Instance()->CurrentWorkerId(); | 95 return WorkerTaskRunner::Instance()->CurrentWorkerId(); |
| 96 } | 96 } |
| 97 | 97 |
| 98 template <typename Method, typename Params> | 98 template <typename Method, typename Params> |
| 99 void CallDispatcherOnMainThread( | 99 void CallDispatcherOnMainThread( |
| 100 const scoped_refptr<base::SingleThreadTaskRunner>& main_thread_task_runner, | 100 const scoped_refptr<base::SingleThreadTaskRunner>& main_thread_task_runner, |
| 101 Method method, const Params& params, | 101 Method method, const Params& params, |
| 102 WaitableCallbackResults* waitable_results) { | 102 WaitableCallbackResults* waitable_results) { |
| 103 if (!main_thread_task_runner->RunsTasksOnCurrentThread()) { | 103 if (!main_thread_task_runner->RunsTasksOnCurrentThread()) { |
| 104 main_thread_task_runner->PostTask( | 104 main_thread_task_runner->PostTask( |
| 105 FROM_HERE, | 105 FROM_HERE, |
| 106 base::Bind(&CallDispatcherOnMainThread<Method, Params>, | 106 base::Bind(&CallDispatcherOnMainThread<Method, Params>, |
| 107 main_thread_task_runner, method, params, | 107 main_thread_task_runner, method, params, |
| 108 scoped_refptr<WaitableCallbackResults>())); | 108 scoped_refptr<WaitableCallbackResults>())); |
| 109 if (!waitable_results) | 109 if (!waitable_results) |
| 110 return; | 110 return; |
| 111 waitable_results->WaitAndRun(); | 111 waitable_results->WaitAndRun(); |
| 112 } | 112 } |
| 113 if (!ChildThread::current() || | 113 if (!ChildThreadImpl::current() || |
| 114 !ChildThread::current()->file_system_dispatcher()) | 114 !ChildThreadImpl::current()->file_system_dispatcher()) |
| 115 return; | 115 return; |
| 116 | 116 |
| 117 DCHECK(!waitable_results); | 117 DCHECK(!waitable_results); |
| 118 DispatchToMethod(ChildThread::current()->file_system_dispatcher(), | 118 DispatchToMethod(ChildThreadImpl::current()->file_system_dispatcher(), |
| 119 method, params); | 119 method, params); |
| 120 } | 120 } |
| 121 | 121 |
| 122 enum CallbacksUnregisterMode { | 122 enum CallbacksUnregisterMode { |
| 123 UNREGISTER_CALLBACKS, | 123 UNREGISTER_CALLBACKS, |
| 124 DO_NOT_UNREGISTER_CALLBACKS, | 124 DO_NOT_UNREGISTER_CALLBACKS, |
| 125 }; | 125 }; |
| 126 | 126 |
| 127 // Bridging functions that convert the arguments into Blink objects | 127 // Bridging functions that convert the arguments into Blink objects |
| 128 // (e.g. WebFileInfo, WebString, WebVector<WebFileSystemEntry>) | 128 // (e.g. WebFileInfo, WebString, WebVector<WebFileSystemEntry>) |
| (...skipping 568 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 697 WaitableCallbackResults* WebFileSystemImpl::MaybeCreateWaitableResults( | 697 WaitableCallbackResults* WebFileSystemImpl::MaybeCreateWaitableResults( |
| 698 const WebFileSystemCallbacks& callbacks, int callbacks_id) { | 698 const WebFileSystemCallbacks& callbacks, int callbacks_id) { |
| 699 if (!callbacks.shouldBlockUntilCompletion()) | 699 if (!callbacks.shouldBlockUntilCompletion()) |
| 700 return NULL; | 700 return NULL; |
| 701 WaitableCallbackResults* results = new WaitableCallbackResults(); | 701 WaitableCallbackResults* results = new WaitableCallbackResults(); |
| 702 waitable_results_[callbacks_id] = results; | 702 waitable_results_[callbacks_id] = results; |
| 703 return results; | 703 return results; |
| 704 } | 704 } |
| 705 | 705 |
| 706 } // namespace content | 706 } // namespace content |
| OLD | NEW |