| 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_plugin_delegate_impl.h" | 5 #include "content/renderer/pepper_plugin_delegate_impl.h" |
| 6 | 6 |
| 7 #include <cmath> | 7 #include <cmath> |
| 8 #include <map> |
| 8 #include <queue> | 9 #include <queue> |
| 9 | 10 |
| 10 #include "base/bind.h" | 11 #include "base/bind.h" |
| 11 #include "base/callback.h" | 12 #include "base/callback.h" |
| 12 #include "base/command_line.h" | 13 #include "base/command_line.h" |
| 13 #include "base/file_path.h" | 14 #include "base/file_path.h" |
| 14 #include "base/file_util_proxy.h" | 15 #include "base/file_util_proxy.h" |
| 15 #include "base/logging.h" | 16 #include "base/logging.h" |
| 16 #include "base/memory/scoped_ptr.h" | |
| 17 #include "base/memory/weak_ptr.h" | |
| 18 #include "base/string_split.h" | 17 #include "base/string_split.h" |
| 19 #include "base/sync_socket.h" | 18 #include "base/sync_socket.h" |
| 20 #include "base/time.h" | 19 #include "base/time.h" |
| 21 #include "content/common/child_process.h" | 20 #include "content/common/child_process.h" |
| 22 #include "content/common/child_process_messages.h" | 21 #include "content/common/child_process_messages.h" |
| 23 #include "content/common/child_thread.h" | 22 #include "content/common/child_thread.h" |
| 24 #include "content/common/file_system/file_system_dispatcher.h" | 23 #include "content/common/file_system/file_system_dispatcher.h" |
| 25 #include "content/common/file_system_messages.h" | 24 #include "content/common/file_system_messages.h" |
| 26 #include "content/common/gpu/client/content_gl_context.h" | 25 #include "content/common/gpu/client/content_gl_context.h" |
| 27 #include "content/common/gpu/client/webgraphicscontext3d_command_buffer_impl.h" | 26 #include "content/common/gpu/client/webgraphicscontext3d_command_buffer_impl.h" |
| 28 #include "content/common/media/audio_messages.h" | 27 #include "content/common/media/audio_messages.h" |
| 29 #include "content/common/pepper_file_messages.h" | 28 #include "content/common/pepper_file_messages.h" |
| 30 #include "content/common/pepper_plugin_registry.h" | 29 #include "content/common/pepper_plugin_registry.h" |
| 31 #include "content/common/pepper_messages.h" | 30 #include "content/common/pepper_messages.h" |
| 32 #include "content/common/quota_dispatcher.h" | 31 #include "content/common/quota_dispatcher.h" |
| 33 #include "content/common/view_messages.h" | 32 #include "content/common/view_messages.h" |
| 34 #include "content/public/common/content_switches.h" | 33 #include "content/public/common/content_switches.h" |
| 35 #include "content/public/common/context_menu_params.h" | 34 #include "content/public/common/context_menu_params.h" |
| 36 #include "content/public/renderer/content_renderer_client.h" | 35 #include "content/public/renderer/content_renderer_client.h" |
| 37 #include "content/renderer/gamepad_shared_memory_reader.h" | 36 #include "content/renderer/gamepad_shared_memory_reader.h" |
| 38 #include "content/renderer/media/audio_input_message_filter.h" | 37 #include "content/renderer/media/audio_input_message_filter.h" |
| 39 #include "content/renderer/media/audio_message_filter.h" | 38 #include "content/renderer/media/audio_message_filter.h" |
| 39 #include "content/renderer/media/media_stream_dispatcher.h" |
| 40 #include "content/renderer/media/media_stream_dispatcher_eventhandler.h" |
| 40 #include "content/renderer/media/pepper_platform_video_decoder_impl.h" | 41 #include "content/renderer/media/pepper_platform_video_decoder_impl.h" |
| 41 #include "content/renderer/media/video_capture_impl_manager.h" | |
| 42 #include "content/renderer/p2p/p2p_transport_impl.h" | 42 #include "content/renderer/p2p/p2p_transport_impl.h" |
| 43 #include "content/renderer/pepper_platform_context_3d_impl.h" | 43 #include "content/renderer/pepper_platform_context_3d_impl.h" |
| 44 #include "content/renderer/pepper_platform_video_capture_impl.h" |
| 44 #include "content/renderer/render_thread_impl.h" | 45 #include "content/renderer/render_thread_impl.h" |
| 45 #include "content/renderer/render_view_impl.h" | 46 #include "content/renderer/render_view_impl.h" |
| 46 #include "content/renderer/render_widget_fullscreen_pepper.h" | 47 #include "content/renderer/render_widget_fullscreen_pepper.h" |
| 47 #include "content/renderer/webplugin_delegate_proxy.h" | 48 #include "content/renderer/webplugin_delegate_proxy.h" |
| 48 #include "ipc/ipc_channel_handle.h" | 49 #include "ipc/ipc_channel_handle.h" |
| 49 #include "media/audio/audio_manager_base.h" | 50 #include "media/audio/audio_manager_base.h" |
| 50 #include "media/video/capture/video_capture_proxy.h" | 51 #include "media/video/capture/video_capture_proxy.h" |
| 51 #include "ppapi/c/dev/pp_video_dev.h" | 52 #include "ppapi/c/dev/pp_video_dev.h" |
| 52 #include "ppapi/c/pp_errors.h" | 53 #include "ppapi/c/pp_errors.h" |
| 53 #include "ppapi/c/private/ppb_flash.h" | 54 #include "ppapi/c/private/ppb_flash.h" |
| 54 #include "ppapi/c/private/ppb_flash_net_connector.h" | 55 #include "ppapi/c/private/ppb_flash_net_connector.h" |
| 55 #include "ppapi/proxy/host_dispatcher.h" | 56 #include "ppapi/proxy/host_dispatcher.h" |
| 56 #include "ppapi/proxy/ppapi_messages.h" | 57 #include "ppapi/proxy/ppapi_messages.h" |
| 58 #include "ppapi/shared_impl/ppb_device_ref_shared.h" |
| 57 #include "ppapi/shared_impl/platform_file.h" | 59 #include "ppapi/shared_impl/platform_file.h" |
| 58 #include "ppapi/shared_impl/ppapi_preferences.h" | 60 #include "ppapi/shared_impl/ppapi_preferences.h" |
| 59 #include "third_party/WebKit/Source/WebKit/chromium/public/WebCursorInfo.h" | 61 #include "third_party/WebKit/Source/WebKit/chromium/public/WebCursorInfo.h" |
| 60 #include "third_party/WebKit/Source/WebKit/chromium/public/WebDocument.h" | 62 #include "third_party/WebKit/Source/WebKit/chromium/public/WebDocument.h" |
| 61 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFileChooserComplet
ion.h" | 63 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFileChooserComplet
ion.h" |
| 62 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFileChooserParams.
h" | 64 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFileChooserParams.
h" |
| 63 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h" | 65 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h" |
| 64 #include "third_party/WebKit/Source/WebKit/chromium/public/WebInputEvent.h" | 66 #include "third_party/WebKit/Source/WebKit/chromium/public/WebInputEvent.h" |
| 65 #include "third_party/WebKit/Source/WebKit/chromium/public/WebPluginContainer.h" | 67 #include "third_party/WebKit/Source/WebKit/chromium/public/WebPluginContainer.h" |
| 66 #include "third_party/WebKit/Source/WebKit/chromium/public/WebScreenInfo.h" | 68 #include "third_party/WebKit/Source/WebKit/chromium/public/WebScreenInfo.h" |
| (...skipping 497 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 564 virtual void DidGrantStorageQuota(int64 granted_quota) OVERRIDE { | 566 virtual void DidGrantStorageQuota(int64 granted_quota) OVERRIDE { |
| 565 NOTREACHED(); | 567 NOTREACHED(); |
| 566 } | 568 } |
| 567 virtual void DidFail(quota::QuotaStatusCode error) OVERRIDE { | 569 virtual void DidFail(quota::QuotaStatusCode error) OVERRIDE { |
| 568 callback_.Run(0); | 570 callback_.Run(0); |
| 569 } | 571 } |
| 570 private: | 572 private: |
| 571 PluginCallback callback_; | 573 PluginCallback callback_; |
| 572 }; | 574 }; |
| 573 | 575 |
| 574 class PlatformVideoCaptureImpl | 576 media_stream::MediaStreamType FromPepperDeviceType(PP_DeviceType_Dev type) { |
| 575 : public webkit::ppapi::PluginDelegate::PlatformVideoCapture { | 577 switch (type) { |
| 576 public: | 578 case PP_DEVICETYPE_DEV_INVALID: |
| 577 PlatformVideoCaptureImpl(media::VideoCapture::EventHandler* handler) | 579 return media_stream::kNoService; |
| 578 : handler_proxy_(new media::VideoCaptureHandlerProxy( | 580 case PP_DEVICETYPE_DEV_AUDIOCAPTURE: |
| 579 handler, base::MessageLoopProxy::current())) { | 581 return media_stream::kAudioCapture; |
| 580 VideoCaptureImplManager* manager = | 582 case PP_DEVICETYPE_DEV_VIDEOCAPTURE: |
| 581 RenderThreadImpl::current()->video_capture_impl_manager(); | 583 return media_stream::kVideoCapture; |
| 582 // 1 means the "default" video capture device. | 584 default: |
| 583 // TODO(piman): Add a way to enumerate devices and pass them through the | 585 NOTREACHED(); |
| 584 // API. | 586 return media_stream::kNoService; |
| 585 video_capture_ = manager->AddDevice(1, handler_proxy_.get()); | |
| 586 } | 587 } |
| 588 } |
| 587 | 589 |
| 588 // Overrides from media::VideoCapture::EventHandler | 590 PP_DeviceType_Dev FromMediaStreamType(media_stream::MediaStreamType type) { |
| 589 virtual ~PlatformVideoCaptureImpl() { | 591 switch (type) { |
| 590 VideoCaptureImplManager* manager = | 592 case media_stream::kNoService: |
| 591 RenderThreadImpl::current()->video_capture_impl_manager(); | 593 return PP_DEVICETYPE_DEV_INVALID; |
| 592 manager->RemoveDevice(1, handler_proxy_.get()); | 594 case media_stream::kAudioCapture: |
| 595 return PP_DEVICETYPE_DEV_AUDIOCAPTURE; |
| 596 case media_stream::kVideoCapture: |
| 597 return PP_DEVICETYPE_DEV_VIDEOCAPTURE; |
| 598 default: |
| 599 NOTREACHED(); |
| 600 return PP_DEVICETYPE_DEV_INVALID; |
| 593 } | 601 } |
| 602 } |
| 594 | 603 |
| 595 virtual void StartCapture( | 604 ppapi::DeviceRefData FromStreamDeviceInfo( |
| 596 EventHandler* handler, | 605 const media_stream::StreamDeviceInfo& info) { |
| 597 const VideoCaptureCapability& capability) OVERRIDE { | 606 ppapi::DeviceRefData data; |
| 598 DCHECK(handler == handler_proxy_->proxied()); | 607 data.id = info.device_id; |
| 599 video_capture_->StartCapture(handler_proxy_.get(), capability); | 608 data.name = info.name; |
| 600 } | 609 data.type = FromMediaStreamType(info.stream_type); |
| 601 | 610 return data; |
| 602 virtual void StopCapture(EventHandler* handler) OVERRIDE { | 611 } |
| 603 DCHECK(handler == handler_proxy_->proxied()); | |
| 604 video_capture_->StopCapture(handler_proxy_.get()); | |
| 605 } | |
| 606 | |
| 607 virtual void FeedBuffer(scoped_refptr<VideoFrameBuffer> buffer) OVERRIDE { | |
| 608 video_capture_->FeedBuffer(buffer); | |
| 609 } | |
| 610 | |
| 611 virtual bool CaptureStarted() OVERRIDE { | |
| 612 return handler_proxy_->state().started; | |
| 613 } | |
| 614 | |
| 615 virtual int CaptureWidth() OVERRIDE { | |
| 616 return handler_proxy_->state().width; | |
| 617 } | |
| 618 | |
| 619 virtual int CaptureHeight() OVERRIDE { | |
| 620 return handler_proxy_->state().height; | |
| 621 } | |
| 622 | |
| 623 virtual int CaptureFrameRate() OVERRIDE { | |
| 624 return handler_proxy_->state().frame_rate; | |
| 625 } | |
| 626 | |
| 627 private: | |
| 628 scoped_ptr<media::VideoCaptureHandlerProxy> handler_proxy_; | |
| 629 media::VideoCapture* video_capture_; | |
| 630 }; | |
| 631 | 612 |
| 632 class PluginInstanceLockTarget : public MouseLockDispatcher::LockTarget { | 613 class PluginInstanceLockTarget : public MouseLockDispatcher::LockTarget { |
| 633 public: | 614 public: |
| 634 PluginInstanceLockTarget(webkit::ppapi::PluginInstance* plugin) | 615 PluginInstanceLockTarget(webkit::ppapi::PluginInstance* plugin) |
| 635 : plugin_(plugin) {} | 616 : plugin_(plugin) {} |
| 636 | 617 |
| 637 virtual void OnLockMouseACK(bool succeeded) OVERRIDE { | 618 virtual void OnLockMouseACK(bool succeeded) OVERRIDE { |
| 638 plugin_->OnLockMouseACK(succeeded); | 619 plugin_->OnLockMouseACK(succeeded); |
| 639 } | 620 } |
| 640 | 621 |
| (...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 846 } | 827 } |
| 847 | 828 |
| 848 // TOOD(ddorwin): Change the IPC to asynchronous: Queue an object containing | 829 // TOOD(ddorwin): Change the IPC to asynchronous: Queue an object containing |
| 849 // client and plugin_socket.release(), then return. | 830 // client and plugin_socket.release(), then return. |
| 850 // That message handler will then call client->BrokerConnected() with the | 831 // That message handler will then call client->BrokerConnected() with the |
| 851 // saved pipe handle. | 832 // saved pipe handle. |
| 852 // Temporarily, just call back. | 833 // Temporarily, just call back. |
| 853 client->BrokerConnected(ppapi::PlatformFileToInt(plugin_handle), result); | 834 client->BrokerConnected(ppapi::PlatformFileToInt(plugin_handle), result); |
| 854 } | 835 } |
| 855 | 836 |
| 837 class PepperPluginDelegateImpl::DeviceEnumerationEventHandler |
| 838 : public MediaStreamDispatcherEventHandler { |
| 839 public: |
| 840 DeviceEnumerationEventHandler() : next_id_(1) { |
| 841 } |
| 842 |
| 843 virtual ~DeviceEnumerationEventHandler() { |
| 844 DCHECK(enumerate_callbacks_.empty()); |
| 845 DCHECK(open_callbacks_.empty()); |
| 846 } |
| 847 |
| 848 int RegisterEnumerateDevicesCallback( |
| 849 const EnumerateDevicesCallback& callback) { |
| 850 enumerate_callbacks_[next_id_] = callback; |
| 851 return next_id_++; |
| 852 } |
| 853 |
| 854 int RegisterOpenDeviceCallback(const OpenDeviceCallback& callback) { |
| 855 open_callbacks_[next_id_] = callback; |
| 856 return next_id_++; |
| 857 } |
| 858 |
| 859 // MediaStreamDispatcherEventHandler implementation. |
| 860 virtual void OnStreamGenerated( |
| 861 int request_id, |
| 862 const std::string& label, |
| 863 const media_stream::StreamDeviceInfoArray& audio_device_array, |
| 864 const media_stream::StreamDeviceInfoArray& video_device_array) OVERRIDE { |
| 865 } |
| 866 |
| 867 virtual void OnStreamGenerationFailed(int request_id) OVERRIDE { |
| 868 } |
| 869 |
| 870 virtual void OnVideoDeviceFailed(const std::string& label, |
| 871 int index) OVERRIDE { |
| 872 } |
| 873 |
| 874 virtual void OnAudioDeviceFailed(const std::string& label, |
| 875 int index) OVERRIDE { |
| 876 } |
| 877 |
| 878 virtual void OnDevicesEnumerated( |
| 879 int request_id, |
| 880 const media_stream::StreamDeviceInfoArray& device_array) OVERRIDE { |
| 881 NotifyDevicesEnumerated(request_id, true, device_array); |
| 882 } |
| 883 |
| 884 virtual void OnDevicesEnumerationFailed(int request_id) OVERRIDE { |
| 885 NotifyDevicesEnumerated(request_id, false, |
| 886 media_stream::StreamDeviceInfoArray()); |
| 887 } |
| 888 |
| 889 virtual void OnDeviceOpened( |
| 890 int request_id, |
| 891 const std::string& label, |
| 892 const media_stream::StreamDeviceInfo& device_info) OVERRIDE { |
| 893 NotifyDeviceOpened(request_id, true, label); |
| 894 } |
| 895 |
| 896 virtual void OnDeviceOpenFailed(int request_id) OVERRIDE { |
| 897 NotifyDeviceOpened(request_id, false, ""); |
| 898 } |
| 899 |
| 900 private: |
| 901 void NotifyDevicesEnumerated( |
| 902 int request_id, |
| 903 bool succeeded, |
| 904 const media_stream::StreamDeviceInfoArray& device_array) { |
| 905 EnumerateCallbackMap::iterator iter = enumerate_callbacks_.find(request_id); |
| 906 if (iter == enumerate_callbacks_.end()) { |
| 907 NOTREACHED(); |
| 908 return; |
| 909 } |
| 910 |
| 911 EnumerateDevicesCallback callback = iter->second; |
| 912 enumerate_callbacks_.erase(iter); |
| 913 |
| 914 std::vector<ppapi::DeviceRefData> devices; |
| 915 if (succeeded) { |
| 916 devices.reserve(device_array.size()); |
| 917 for (media_stream::StreamDeviceInfoArray::const_iterator info = |
| 918 device_array.begin(); info != device_array.end(); ++info) { |
| 919 devices.push_back(FromStreamDeviceInfo(*info)); |
| 920 } |
| 921 } |
| 922 callback.Run(request_id, succeeded, devices); |
| 923 } |
| 924 |
| 925 void NotifyDeviceOpened(int request_id, |
| 926 bool succeeded, |
| 927 const std::string& label) { |
| 928 OpenCallbackMap::iterator iter = open_callbacks_.find(request_id); |
| 929 if (iter == open_callbacks_.end()) { |
| 930 NOTREACHED(); |
| 931 return; |
| 932 } |
| 933 |
| 934 OpenDeviceCallback callback = iter->second; |
| 935 open_callbacks_.erase(iter); |
| 936 |
| 937 callback.Run(request_id, succeeded, label); |
| 938 } |
| 939 |
| 940 int next_id_; |
| 941 |
| 942 typedef std::map<int, EnumerateDevicesCallback> EnumerateCallbackMap; |
| 943 EnumerateCallbackMap enumerate_callbacks_; |
| 944 |
| 945 typedef std::map<int, OpenDeviceCallback> OpenCallbackMap; |
| 946 OpenCallbackMap open_callbacks_; |
| 947 |
| 948 DISALLOW_COPY_AND_ASSIGN(DeviceEnumerationEventHandler); |
| 949 }; |
| 950 |
| 856 PepperPluginDelegateImpl::PepperPluginDelegateImpl(RenderViewImpl* render_view) | 951 PepperPluginDelegateImpl::PepperPluginDelegateImpl(RenderViewImpl* render_view) |
| 857 : content::RenderViewObserver(render_view), | 952 : content::RenderViewObserver(render_view), |
| 858 render_view_(render_view), | 953 render_view_(render_view), |
| 859 has_saved_context_menu_action_(false), | 954 has_saved_context_menu_action_(false), |
| 860 saved_context_menu_action_(0), | 955 saved_context_menu_action_(0), |
| 861 focused_plugin_(NULL), | 956 focused_plugin_(NULL), |
| 862 last_mouse_event_target_(NULL) { | 957 last_mouse_event_target_(NULL), |
| 958 device_enumeration_event_handler_(new DeviceEnumerationEventHandler()) { |
| 863 } | 959 } |
| 864 | 960 |
| 865 PepperPluginDelegateImpl::~PepperPluginDelegateImpl() { | 961 PepperPluginDelegateImpl::~PepperPluginDelegateImpl() { |
| 866 DCHECK(mouse_lock_instances_.empty()); | 962 DCHECK(mouse_lock_instances_.empty()); |
| 867 } | 963 } |
| 868 | 964 |
| 869 scoped_refptr<webkit::ppapi::PluginModule> | 965 scoped_refptr<webkit::ppapi::PluginModule> |
| 870 PepperPluginDelegateImpl::CreatePepperPluginModule( | 966 PepperPluginDelegateImpl::CreatePepperPluginModule( |
| 871 const webkit::WebPluginInfo& webplugin_info, | 967 const webkit::WebPluginInfo& webplugin_info, |
| 872 bool* pepper_plugin_was_registered) { | 968 bool* pepper_plugin_was_registered) { |
| (...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1231 if (!render_view_->webkit_preferences().accelerated_plugins_enabled) | 1327 if (!render_view_->webkit_preferences().accelerated_plugins_enabled) |
| 1232 return NULL; | 1328 return NULL; |
| 1233 return new PlatformContext3DImpl(this); | 1329 return new PlatformContext3DImpl(this); |
| 1234 #else | 1330 #else |
| 1235 return NULL; | 1331 return NULL; |
| 1236 #endif | 1332 #endif |
| 1237 } | 1333 } |
| 1238 | 1334 |
| 1239 webkit::ppapi::PluginDelegate::PlatformVideoCapture* | 1335 webkit::ppapi::PluginDelegate::PlatformVideoCapture* |
| 1240 PepperPluginDelegateImpl::CreateVideoCapture( | 1336 PepperPluginDelegateImpl::CreateVideoCapture( |
| 1241 media::VideoCapture::EventHandler* handler) { | 1337 const std::string& device_id, |
| 1242 return new PlatformVideoCaptureImpl(handler); | 1338 PlatformVideoCaptureEventHandler* handler) { |
| 1339 return new PepperPlatformVideoCaptureImpl(AsWeakPtr(), device_id, handler); |
| 1243 } | 1340 } |
| 1244 | 1341 |
| 1245 webkit::ppapi::PluginDelegate::PlatformVideoDecoder* | 1342 webkit::ppapi::PluginDelegate::PlatformVideoDecoder* |
| 1246 PepperPluginDelegateImpl::CreateVideoDecoder( | 1343 PepperPluginDelegateImpl::CreateVideoDecoder( |
| 1247 media::VideoDecodeAccelerator::Client* client, | 1344 media::VideoDecodeAccelerator::Client* client, |
| 1248 int32 command_buffer_route_id) { | 1345 int32 command_buffer_route_id) { |
| 1249 return new PlatformVideoDecoderImpl(client, command_buffer_route_id); | 1346 return new PlatformVideoDecoderImpl(client, command_buffer_route_id); |
| 1250 } | 1347 } |
| 1251 | 1348 |
| 1252 void PepperPluginDelegateImpl::NumberOfFindResultsChanged(int identifier, | 1349 void PepperPluginDelegateImpl::NumberOfFindResultsChanged(int identifier, |
| (...skipping 705 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1958 void PepperPluginDelegateImpl::SampleGamepads(WebKit::WebGamepads* data) { | 2055 void PepperPluginDelegateImpl::SampleGamepads(WebKit::WebGamepads* data) { |
| 1959 if (!gamepad_shared_memory_reader_.get()) | 2056 if (!gamepad_shared_memory_reader_.get()) |
| 1960 gamepad_shared_memory_reader_.reset(new content::GamepadSharedMemoryReader); | 2057 gamepad_shared_memory_reader_.reset(new content::GamepadSharedMemoryReader); |
| 1961 gamepad_shared_memory_reader_->SampleGamepads(*data); | 2058 gamepad_shared_memory_reader_->SampleGamepads(*data); |
| 1962 } | 2059 } |
| 1963 | 2060 |
| 1964 bool PepperPluginDelegateImpl::IsPageVisible() const { | 2061 bool PepperPluginDelegateImpl::IsPageVisible() const { |
| 1965 return !render_view_->is_hidden(); | 2062 return !render_view_->is_hidden(); |
| 1966 } | 2063 } |
| 1967 | 2064 |
| 2065 int PepperPluginDelegateImpl::EnumerateDevices( |
| 2066 PP_DeviceType_Dev type, |
| 2067 const EnumerateDevicesCallback& callback) { |
| 2068 int request_id = |
| 2069 device_enumeration_event_handler_->RegisterEnumerateDevicesCallback( |
| 2070 callback); |
| 2071 render_view_->media_stream_dispatcher()->EnumerateDevices( |
| 2072 request_id, device_enumeration_event_handler_.get(), |
| 2073 FromPepperDeviceType(type), ""); |
| 2074 return request_id; |
| 2075 } |
| 2076 |
| 1968 bool PepperPluginDelegateImpl::OnMessageReceived(const IPC::Message& message) { | 2077 bool PepperPluginDelegateImpl::OnMessageReceived(const IPC::Message& message) { |
| 1969 bool handled = true; | 2078 bool handled = true; |
| 1970 IPC_BEGIN_MESSAGE_MAP(PepperPluginDelegateImpl, message) | 2079 IPC_BEGIN_MESSAGE_MAP(PepperPluginDelegateImpl, message) |
| 1971 IPC_MESSAGE_HANDLER(PpapiMsg_PPBTCPSocket_ConnectACK, | 2080 IPC_MESSAGE_HANDLER(PpapiMsg_PPBTCPSocket_ConnectACK, |
| 1972 OnTCPSocketConnectACK) | 2081 OnTCPSocketConnectACK) |
| 1973 IPC_MESSAGE_HANDLER(PpapiMsg_PPBTCPSocket_SSLHandshakeACK, | 2082 IPC_MESSAGE_HANDLER(PpapiMsg_PPBTCPSocket_SSLHandshakeACK, |
| 1974 OnTCPSocketSSLHandshakeACK) | 2083 OnTCPSocketSSLHandshakeACK) |
| 1975 IPC_MESSAGE_HANDLER(PpapiMsg_PPBTCPSocket_ReadACK, OnTCPSocketReadACK) | 2084 IPC_MESSAGE_HANDLER(PpapiMsg_PPBTCPSocket_ReadACK, OnTCPSocketReadACK) |
| 1976 IPC_MESSAGE_HANDLER(PpapiMsg_PPBTCPSocket_WriteACK, OnTCPSocketWriteACK) | 2085 IPC_MESSAGE_HANDLER(PpapiMsg_PPBTCPSocket_WriteACK, OnTCPSocketWriteACK) |
| 1977 IPC_MESSAGE_HANDLER(PpapiMsg_PPBUDPSocket_BindACK, OnUDPSocketBindACK) | 2086 IPC_MESSAGE_HANDLER(PpapiMsg_PPBUDPSocket_BindACK, OnUDPSocketBindACK) |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2059 webkit::ppapi::PPB_UDPSocket_Private_Impl* socket = | 2168 webkit::ppapi::PPB_UDPSocket_Private_Impl* socket = |
| 2060 udp_sockets_.Lookup(socket_id); | 2169 udp_sockets_.Lookup(socket_id); |
| 2061 if (socket) | 2170 if (socket) |
| 2062 socket->OnSendToCompleted(succeeded, bytes_written); | 2171 socket->OnSendToCompleted(succeeded, bytes_written); |
| 2063 } | 2172 } |
| 2064 | 2173 |
| 2065 int PepperPluginDelegateImpl::GetRoutingId() const { | 2174 int PepperPluginDelegateImpl::GetRoutingId() const { |
| 2066 return render_view_->routing_id(); | 2175 return render_view_->routing_id(); |
| 2067 } | 2176 } |
| 2068 | 2177 |
| 2178 int PepperPluginDelegateImpl::OpenDevice(PP_DeviceType_Dev type, |
| 2179 const std::string& device_id, |
| 2180 const OpenDeviceCallback& callback) { |
| 2181 int request_id = |
| 2182 device_enumeration_event_handler_->RegisterOpenDeviceCallback(callback); |
| 2183 render_view_->media_stream_dispatcher()->OpenDevice( |
| 2184 request_id, device_enumeration_event_handler_.get(), device_id, |
| 2185 FromPepperDeviceType(type), ""); |
| 2186 return request_id; |
| 2187 } |
| 2188 |
| 2189 void PepperPluginDelegateImpl::CloseDevice(const std::string& label) { |
| 2190 render_view_->media_stream_dispatcher()->CloseDevice(label); |
| 2191 } |
| 2192 |
| 2193 int PepperPluginDelegateImpl::GetSessionID(PP_DeviceType_Dev type, |
| 2194 const std::string& label) { |
| 2195 switch (type) { |
| 2196 case PP_DEVICETYPE_DEV_AUDIOCAPTURE: |
| 2197 return render_view_->media_stream_dispatcher()->audio_session_id(label, |
| 2198 0); |
| 2199 case PP_DEVICETYPE_DEV_VIDEOCAPTURE: |
| 2200 return render_view_->media_stream_dispatcher()->video_session_id(label, |
| 2201 0); |
| 2202 default: |
| 2203 NOTREACHED(); |
| 2204 return 0; |
| 2205 } |
| 2206 } |
| 2207 |
| 2069 ContentGLContext* | 2208 ContentGLContext* |
| 2070 PepperPluginDelegateImpl::GetParentContextForPlatformContext3D() { | 2209 PepperPluginDelegateImpl::GetParentContextForPlatformContext3D() { |
| 2071 WebGraphicsContext3DCommandBufferImpl* context = | 2210 WebGraphicsContext3DCommandBufferImpl* context = |
| 2072 static_cast<WebGraphicsContext3DCommandBufferImpl*>( | 2211 static_cast<WebGraphicsContext3DCommandBufferImpl*>( |
| 2073 render_view_->webview()->graphicsContext3D()); | 2212 render_view_->webview()->graphicsContext3D()); |
| 2074 if (!context) | 2213 if (!context) |
| 2075 return NULL; | 2214 return NULL; |
| 2076 if (!context->makeContextCurrent() || context->isContextLost()) | 2215 if (!context->makeContextCurrent() || context->isContextLost()) |
| 2077 return NULL; | 2216 return NULL; |
| 2078 | 2217 |
| (...skipping 27 matching lines...) Expand all Loading... |
| 2106 void PepperPluginDelegateImpl::UnSetAndDeleteLockTargetAdapter( | 2245 void PepperPluginDelegateImpl::UnSetAndDeleteLockTargetAdapter( |
| 2107 webkit::ppapi::PluginInstance* instance) { | 2246 webkit::ppapi::PluginInstance* instance) { |
| 2108 LockTargetMap::iterator it = mouse_lock_instances_.find(instance); | 2247 LockTargetMap::iterator it = mouse_lock_instances_.find(instance); |
| 2109 if (it != mouse_lock_instances_.end()) { | 2248 if (it != mouse_lock_instances_.end()) { |
| 2110 MouseLockDispatcher::LockTarget* target = it->second; | 2249 MouseLockDispatcher::LockTarget* target = it->second; |
| 2111 render_view_->mouse_lock_dispatcher()->OnLockTargetDestroyed(target); | 2250 render_view_->mouse_lock_dispatcher()->OnLockTargetDestroyed(target); |
| 2112 delete target; | 2251 delete target; |
| 2113 mouse_lock_instances_.erase(it); | 2252 mouse_lock_instances_.erase(it); |
| 2114 } | 2253 } |
| 2115 } | 2254 } |
| OLD | NEW |