OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/renderer/pepper/pepper_plugin_delegate_impl.h" | 5 #include "content/renderer/pepper/pepper_plugin_delegate_impl.h" |
6 | 6 |
7 #include <cmath> | 7 #include <cmath> |
8 #include <cstddef> | 8 #include <cstddef> |
9 #include <map> | 9 #include <map> |
10 #include <queue> | 10 #include <queue> |
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
248 virtual bool HandleMouseLockedInputEvent( | 248 virtual bool HandleMouseLockedInputEvent( |
249 const WebKit::WebMouseEvent &event) OVERRIDE { | 249 const WebKit::WebMouseEvent &event) OVERRIDE { |
250 plugin_->HandleMouseLockedInputEvent(event); | 250 plugin_->HandleMouseLockedInputEvent(event); |
251 return true; | 251 return true; |
252 } | 252 } |
253 | 253 |
254 private: | 254 private: |
255 webkit::ppapi::PluginInstance* plugin_; | 255 webkit::ppapi::PluginInstance* plugin_; |
256 }; | 256 }; |
257 | 257 |
| 258 void DoNotifyCloseFile(int file_open_id, base::PlatformFileError /* unused */) { |
| 259 ChildThread::current()->file_system_dispatcher()->NotifyCloseFile( |
| 260 file_open_id); |
| 261 } |
| 262 |
258 class AsyncOpenFileSystemURLCallbackTranslator | 263 class AsyncOpenFileSystemURLCallbackTranslator |
259 : public fileapi::FileSystemCallbackDispatcher { | 264 : public fileapi::FileSystemCallbackDispatcher { |
260 public: | 265 public: |
261 AsyncOpenFileSystemURLCallbackTranslator( | 266 AsyncOpenFileSystemURLCallbackTranslator( |
262 const webkit::ppapi::PluginDelegate::AsyncOpenFileSystemURLCallback& | 267 const webkit::ppapi::PluginDelegate::AsyncOpenFileSystemURLCallback& |
263 callback, | 268 callback) |
264 const webkit::ppapi::PluginDelegate::NotifyCloseFileCallback& | 269 : callback_(callback) { |
265 close_file_callback) | |
266 : callback_(callback), | |
267 close_file_callback_(close_file_callback) { | |
268 } | 270 } |
269 | 271 |
270 virtual ~AsyncOpenFileSystemURLCallbackTranslator() {} | 272 virtual ~AsyncOpenFileSystemURLCallbackTranslator() {} |
271 | 273 |
272 virtual void DidSucceed() OVERRIDE { | 274 virtual void DidSucceed() OVERRIDE { |
273 NOTREACHED(); | 275 NOTREACHED(); |
274 } | 276 } |
275 virtual void DidReadMetadata( | 277 virtual void DidReadMetadata( |
276 const base::PlatformFileInfo& file_info, | 278 const base::PlatformFileInfo& file_info, |
277 const base::FilePath& platform_path) OVERRIDE { | 279 const base::FilePath& platform_path) OVERRIDE { |
(...skipping 20 matching lines...) Expand all Loading... |
298 base::PassPlatformFile(&invalid_file), | 300 base::PassPlatformFile(&invalid_file), |
299 quota::kQuotaLimitTypeUnknown, | 301 quota::kQuotaLimitTypeUnknown, |
300 webkit::ppapi::PluginDelegate::NotifyCloseFileCallback()); | 302 webkit::ppapi::PluginDelegate::NotifyCloseFileCallback()); |
301 } | 303 } |
302 | 304 |
303 virtual void DidWrite(int64 bytes, bool complete) OVERRIDE { | 305 virtual void DidWrite(int64 bytes, bool complete) OVERRIDE { |
304 NOTREACHED(); | 306 NOTREACHED(); |
305 } | 307 } |
306 | 308 |
307 virtual void DidOpenFile(base::PlatformFile file, | 309 virtual void DidOpenFile(base::PlatformFile file, |
| 310 int file_open_id, |
308 quota::QuotaLimitType quota_policy) OVERRIDE { | 311 quota::QuotaLimitType quota_policy) OVERRIDE { |
309 callback_.Run(base::PLATFORM_FILE_OK, | 312 callback_.Run(base::PLATFORM_FILE_OK, |
310 base::PassPlatformFile(&file), | 313 base::PassPlatformFile(&file), |
311 quota_policy, | 314 quota_policy, |
312 close_file_callback_); | 315 base::Bind(&DoNotifyCloseFile, file_open_id)); |
313 // Make sure we won't leak file handle if the requester has died. | 316 // Make sure we won't leak file handle if the requester has died. |
314 if (file != base::kInvalidPlatformFileValue) { | 317 if (file != base::kInvalidPlatformFileValue) { |
315 base::FileUtilProxy::Close( | 318 base::FileUtilProxy::Close( |
316 RenderThreadImpl::current()->GetFileThreadMessageLoopProxy(), file, | 319 RenderThreadImpl::current()->GetFileThreadMessageLoopProxy(), file, |
317 close_file_callback_); | 320 base::Bind(&DoNotifyCloseFile, file_open_id)); |
318 } | 321 } |
319 } | 322 } |
320 | 323 |
321 private: | 324 private: |
322 webkit::ppapi::PluginDelegate::AsyncOpenFileSystemURLCallback callback_; | 325 webkit::ppapi::PluginDelegate::AsyncOpenFileSystemURLCallback callback_; |
323 webkit::ppapi::PluginDelegate::NotifyCloseFileCallback close_file_callback_; | |
324 }; | 326 }; |
325 | 327 |
326 void DoNotifyCloseFile(const GURL& path, base::PlatformFileError /* unused */) { | |
327 ChildThread::current()->file_system_dispatcher()->NotifyCloseFile(path); | |
328 } | |
329 | |
330 void CreateHostForInProcessModule(RenderViewImpl* render_view, | 328 void CreateHostForInProcessModule(RenderViewImpl* render_view, |
331 webkit::ppapi::PluginModule* module, | 329 webkit::ppapi::PluginModule* module, |
332 const webkit::WebPluginInfo& webplugin_info) { | 330 const webkit::WebPluginInfo& webplugin_info) { |
333 // First time an in-process plugin was used, make a host for it. | 331 // First time an in-process plugin was used, make a host for it. |
334 const PepperPluginInfo* info = | 332 const PepperPluginInfo* info = |
335 PepperPluginRegistry::GetInstance()->GetInfoForPlugin(webplugin_info); | 333 PepperPluginRegistry::GetInstance()->GetInfoForPlugin(webplugin_info); |
336 DCHECK(!info->is_out_of_process); | 334 DCHECK(!info->is_out_of_process); |
337 | 335 |
338 ppapi::PpapiPermissions perms( | 336 ppapi::PpapiPermissions perms( |
339 PepperPluginRegistry::GetInstance()->GetInfoForPlugin( | 337 PepperPluginRegistry::GetInstance()->GetInfoForPlugin( |
(...skipping 792 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1132 | 1130 |
1133 bool PepperPluginDelegateImpl::AsyncOpenFileSystemURL( | 1131 bool PepperPluginDelegateImpl::AsyncOpenFileSystemURL( |
1134 const GURL& path, | 1132 const GURL& path, |
1135 int flags, | 1133 int flags, |
1136 const AsyncOpenFileSystemURLCallback& callback) { | 1134 const AsyncOpenFileSystemURLCallback& callback) { |
1137 | 1135 |
1138 FileSystemDispatcher* file_system_dispatcher = | 1136 FileSystemDispatcher* file_system_dispatcher = |
1139 ChildThread::current()->file_system_dispatcher(); | 1137 ChildThread::current()->file_system_dispatcher(); |
1140 return file_system_dispatcher->OpenFile(path, flags, | 1138 return file_system_dispatcher->OpenFile(path, flags, |
1141 new AsyncOpenFileSystemURLCallbackTranslator( | 1139 new AsyncOpenFileSystemURLCallbackTranslator( |
1142 callback, | 1140 callback)); |
1143 base::Bind(&DoNotifyCloseFile, path))); | |
1144 } | 1141 } |
1145 | 1142 |
1146 void PepperPluginDelegateImpl::SyncGetFileSystemPlatformPath( | 1143 void PepperPluginDelegateImpl::SyncGetFileSystemPlatformPath( |
1147 const GURL& url, base::FilePath* platform_path) { | 1144 const GURL& url, base::FilePath* platform_path) { |
1148 RenderThreadImpl::current()->Send(new FileSystemHostMsg_SyncGetPlatformPath( | 1145 RenderThreadImpl::current()->Send(new FileSystemHostMsg_SyncGetPlatformPath( |
1149 url, platform_path)); | 1146 url, platform_path)); |
1150 } | 1147 } |
1151 | 1148 |
1152 scoped_refptr<base::MessageLoopProxy> | 1149 scoped_refptr<base::MessageLoopProxy> |
1153 PepperPluginDelegateImpl::GetFileThreadMessageLoopProxy() { | 1150 PepperPluginDelegateImpl::GetFileThreadMessageLoopProxy() { |
(...skipping 489 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1643 should_close_source); | 1640 should_close_source); |
1644 } | 1641 } |
1645 | 1642 |
1646 bool PepperPluginDelegateImpl::IsRunningInProcess(PP_Instance instance) const { | 1643 bool PepperPluginDelegateImpl::IsRunningInProcess(PP_Instance instance) const { |
1647 RendererPpapiHostImpl* host = | 1644 RendererPpapiHostImpl* host = |
1648 RendererPpapiHostImpl::GetForPPInstance(instance); | 1645 RendererPpapiHostImpl::GetForPPInstance(instance); |
1649 return host && host->IsRunningInProcess(); | 1646 return host && host->IsRunningInProcess(); |
1650 } | 1647 } |
1651 | 1648 |
1652 } // namespace content | 1649 } // namespace content |
OLD | NEW |