| 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 "ppapi/cpp/private/flash.h" | 5 #include "ppapi/cpp/private/flash.h" |
| 6 | 6 |
| 7 #include <string.h> | 7 #include <string.h> |
| 8 | 8 |
| 9 #include "ppapi/c/pp_bool.h" | 9 #include "ppapi/c/pp_bool.h" |
| 10 #include "ppapi/c/pp_errors.h" | 10 #include "ppapi/c/pp_errors.h" |
| 11 #include "ppapi/cpp/dev/device_ref_dev.h" |
| 11 #include "ppapi/cpp/dev/font_dev.h" | 12 #include "ppapi/cpp/dev/font_dev.h" |
| 13 #include "ppapi/cpp/dev/video_capture_dev.h" |
| 12 #include "ppapi/cpp/image_data.h" | 14 #include "ppapi/cpp/image_data.h" |
| 13 #include "ppapi/cpp/instance_handle.h" | 15 #include "ppapi/cpp/instance_handle.h" |
| 14 #include "ppapi/cpp/module.h" | 16 #include "ppapi/cpp/module.h" |
| 15 #include "ppapi/cpp/module_impl.h" | 17 #include "ppapi/cpp/module_impl.h" |
| 16 #include "ppapi/cpp/point.h" | 18 #include "ppapi/cpp/point.h" |
| 17 #include "ppapi/cpp/rect.h" | 19 #include "ppapi/cpp/rect.h" |
| 18 #include "ppapi/cpp/url_request_info.h" | 20 #include "ppapi/cpp/url_request_info.h" |
| 19 #include "ppapi/cpp/var.h" | 21 #include "ppapi/cpp/var.h" |
| 20 #include "ppapi/c/private/ppb_flash.h" | 22 #include "ppapi/c/private/ppb_flash.h" |
| 21 #include "ppapi/c/private/ppb_flash_print.h" | 23 #include "ppapi/c/private/ppb_flash_print.h" |
| 22 | 24 |
| 23 namespace pp { | 25 namespace pp { |
| 24 | 26 |
| 25 namespace { | 27 namespace { |
| 26 | 28 |
| 29 template <> const char* interface_name<PPB_Flash_12_6>() { |
| 30 return PPB_FLASH_INTERFACE_12_6; |
| 31 } |
| 32 |
| 27 template <> const char* interface_name<PPB_Flash_12_5>() { | 33 template <> const char* interface_name<PPB_Flash_12_5>() { |
| 28 return PPB_FLASH_INTERFACE_12_5; | 34 return PPB_FLASH_INTERFACE_12_5; |
| 29 } | 35 } |
| 30 | 36 |
| 31 template <> const char* interface_name<PPB_Flash_12_4>() { | 37 template <> const char* interface_name<PPB_Flash_12_4>() { |
| 32 return PPB_FLASH_INTERFACE_12_4; | 38 return PPB_FLASH_INTERFACE_12_4; |
| 33 } | 39 } |
| 34 | 40 |
| 35 template <> const char* interface_name<PPB_Flash_12_3>() { | 41 template <> const char* interface_name<PPB_Flash_12_3>() { |
| 36 return PPB_FLASH_INTERFACE_12_3; | 42 return PPB_FLASH_INTERFACE_12_3; |
| 37 } | 43 } |
| 38 | 44 |
| 39 template <> const char* interface_name<PPB_Flash_Print_1_0>() { | 45 template <> const char* interface_name<PPB_Flash_Print_1_0>() { |
| 40 return PPB_FLASH_PRINT_INTERFACE_1_0; | 46 return PPB_FLASH_PRINT_INTERFACE_1_0; |
| 41 } | 47 } |
| 42 | 48 |
| 43 // The combined Flash interface is all Flash v12.* interfaces. All v12 | 49 // The combined Flash interface is all Flash v12.* interfaces. All v12 |
| 44 // interfaces just append one or more functions to the previous one, so we can | 50 // interfaces just append one or more functions to the previous one, so we can |
| 45 // have this meta one at the most recent version. Function pointers will be | 51 // have this meta one at the most recent version. Function pointers will be |
| 46 // null if they're not supported on the current Chrome version. | 52 // null if they're not supported on the current Chrome version. |
| 47 bool initialized_combined_interface = false; | 53 bool initialized_combined_interface = false; |
| 48 PPB_Flash flash_12_combined_interface; | 54 PPB_Flash flash_12_combined_interface; |
| 49 | 55 |
| 50 // Makes sure that the most recent version is loaded into the combined | 56 // Makes sure that the most recent version is loaded into the combined |
| 51 // interface struct above. Any unsupported functions will be NULL. If there | 57 // interface struct above. Any unsupported functions will be NULL. If there |
| 52 // is no Flash interface supported, all functions will be NULL. | 58 // is no Flash interface supported, all functions will be NULL. |
| 53 void InitializeCombinedInterface() { | 59 void InitializeCombinedInterface() { |
| 54 if (initialized_combined_interface) | 60 if (initialized_combined_interface) |
| 55 return; | 61 return; |
| 56 if (has_interface<PPB_Flash_12_5>()) { | 62 if (has_interface<PPB_Flash_12_6>()) { |
| 63 memcpy(&flash_12_combined_interface, get_interface<PPB_Flash_12_6>(), |
| 64 sizeof(PPB_Flash_12_6)); |
| 65 } else if (has_interface<PPB_Flash_12_5>()) { |
| 57 memcpy(&flash_12_combined_interface, get_interface<PPB_Flash_12_5>(), | 66 memcpy(&flash_12_combined_interface, get_interface<PPB_Flash_12_5>(), |
| 58 sizeof(PPB_Flash_12_5)); | 67 sizeof(PPB_Flash_12_5)); |
| 59 } else if (has_interface<PPB_Flash_12_4>()) { | 68 } else if (has_interface<PPB_Flash_12_4>()) { |
| 60 memcpy(&flash_12_combined_interface, get_interface<PPB_Flash_12_4>(), | 69 memcpy(&flash_12_combined_interface, get_interface<PPB_Flash_12_4>(), |
| 61 sizeof(PPB_Flash_12_4)); | 70 sizeof(PPB_Flash_12_4)); |
| 62 } else if (has_interface<PPB_Flash_12_3>()) { | 71 } else if (has_interface<PPB_Flash_12_3>()) { |
| 63 memcpy(&flash_12_combined_interface, get_interface<PPB_Flash_12_3>(), | 72 memcpy(&flash_12_combined_interface, get_interface<PPB_Flash_12_3>(), |
| 64 sizeof(PPB_Flash_12_3)); | 73 sizeof(PPB_Flash_12_3)); |
| 65 } | 74 } |
| 66 initialized_combined_interface = true; | 75 initialized_combined_interface = true; |
| 67 } | 76 } |
| 68 | 77 |
| 69 } // namespace | 78 } // namespace |
| 70 | 79 |
| 71 namespace flash { | 80 namespace flash { |
| 72 | 81 |
| 73 // static | 82 // static |
| 74 bool Flash::IsAvailable() { | 83 bool Flash::IsAvailable() { |
| 75 return has_interface<PPB_Flash_12_5>() || | 84 return has_interface<PPB_Flash_12_6>() || |
| 85 has_interface<PPB_Flash_12_5>() || |
| 76 has_interface<PPB_Flash_12_4>() || | 86 has_interface<PPB_Flash_12_4>() || |
| 77 has_interface<PPB_Flash_12_3>(); | 87 has_interface<PPB_Flash_12_3>(); |
| 78 } | 88 } |
| 79 | 89 |
| 80 // static | 90 // static |
| 81 void Flash::SetInstanceAlwaysOnTop(const InstanceHandle& instance, | 91 void Flash::SetInstanceAlwaysOnTop(const InstanceHandle& instance, |
| 82 bool on_top) { | 92 bool on_top) { |
| 83 InitializeCombinedInterface(); | 93 InitializeCombinedInterface(); |
| 84 if (flash_12_combined_interface.SetInstanceAlwaysOnTop) { | 94 if (flash_12_combined_interface.SetInstanceAlwaysOnTop) { |
| 85 flash_12_combined_interface.SetInstanceAlwaysOnTop( | 95 flash_12_combined_interface.SetInstanceAlwaysOnTop( |
| (...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 239 InitializeCombinedInterface(); | 249 InitializeCombinedInterface(); |
| 240 if (flash_12_combined_interface.SetCrashData) { | 250 if (flash_12_combined_interface.SetCrashData) { |
| 241 return PP_ToBool( | 251 return PP_ToBool( |
| 242 flash_12_combined_interface.SetCrashData(instance.pp_instance(), | 252 flash_12_combined_interface.SetCrashData(instance.pp_instance(), |
| 243 key, value.pp_var())); | 253 key, value.pp_var())); |
| 244 } | 254 } |
| 245 return false; | 255 return false; |
| 246 } | 256 } |
| 247 | 257 |
| 248 // static | 258 // static |
| 259 int32_t Flash::EnumerateVideoCaptureDevices( |
| 260 const InstanceHandle& instance, |
| 261 const VideoCapture_Dev& video_capture, |
| 262 std::vector<DeviceRef_Dev>* devices_out) { |
| 263 InitializeCombinedInterface(); |
| 264 if (flash_12_combined_interface.EnumerateVideoCaptureDevices) { |
| 265 ResourceArrayOutputAdapter<DeviceRef_Dev> adapter(devices_out); |
| 266 return flash_12_combined_interface.EnumerateVideoCaptureDevices( |
| 267 instance.pp_instance(), |
| 268 video_capture.pp_resource(), |
| 269 adapter.pp_array_output()); |
| 270 } |
| 271 return PP_ERROR_FAILED; |
| 272 } |
| 273 |
| 274 // static |
| 249 bool Flash::InvokePrinting(const InstanceHandle& instance) { | 275 bool Flash::InvokePrinting(const InstanceHandle& instance) { |
| 250 if (has_interface<PPB_Flash_Print_1_0>()) { | 276 if (has_interface<PPB_Flash_Print_1_0>()) { |
| 251 get_interface<PPB_Flash_Print_1_0>()->InvokePrinting( | 277 get_interface<PPB_Flash_Print_1_0>()->InvokePrinting( |
| 252 instance.pp_instance()); | 278 instance.pp_instance()); |
| 253 return true; | 279 return true; |
| 254 } | 280 } |
| 255 return false; | 281 return false; |
| 256 } | 282 } |
| 257 | 283 |
| 258 } // namespace flash | 284 } // namespace flash |
| 259 } // namespace pp | 285 } // namespace pp |
| OLD | NEW |