| 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 "webkit/plugins/ppapi/ppapi_plugin_instance.h" | 5 #include "webkit/plugins/ppapi/ppapi_plugin_instance.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/debug/trace_event.h" | 8 #include "base/debug/trace_event.h" |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/memory/linked_ptr.h" | 10 #include "base/memory/linked_ptr.h" |
| 11 #include "base/message_loop.h" | 11 #include "base/message_loop.h" |
| 12 #include "base/stringprintf.h" | 12 #include "base/stringprintf.h" |
| 13 #include "base/time.h" | 13 #include "base/time.h" |
| 14 #include "base/utf_offset_string_conversions.h" | 14 #include "base/utf_offset_string_conversions.h" |
| 15 #include "base/utf_string_conversions.h" | 15 #include "base/utf_string_conversions.h" |
| 16 #include "ppapi/c/dev/ppb_find_dev.h" | 16 #include "ppapi/c/dev/ppb_find_dev.h" |
| 17 #include "ppapi/c/dev/ppb_zoom_dev.h" | 17 #include "ppapi/c/dev/ppb_zoom_dev.h" |
| 18 #include "ppapi/c/dev/ppp_find_dev.h" | 18 #include "ppapi/c/dev/ppp_find_dev.h" |
| 19 #include "ppapi/c/dev/ppp_selection_dev.h" | 19 #include "ppapi/c/dev/ppp_selection_dev.h" |
| 20 #include "ppapi/c/dev/ppp_text_input_dev.h" | 20 #include "ppapi/c/dev/ppp_text_input_dev.h" |
| 21 #include "ppapi/c/dev/ppp_zoom_dev.h" | 21 #include "ppapi/c/dev/ppp_zoom_dev.h" |
| 22 #include "ppapi/c/pp_rect.h" | 22 #include "ppapi/c/pp_rect.h" |
| 23 #include "ppapi/c/ppb_audio_config.h" | 23 #include "ppapi/c/ppb_audio_config.h" |
| 24 #include "ppapi/c/ppb_core.h" | 24 #include "ppapi/c/ppb_core.h" |
| 25 #include "ppapi/c/ppb_gamepad.h" | 25 #include "ppapi/c/ppb_gamepad.h" |
| 26 #include "ppapi/c/ppp_input_event.h" | 26 #include "ppapi/c/ppp_input_event.h" |
| 27 #include "ppapi/c/ppp_instance.h" | 27 #include "ppapi/c/ppp_instance.h" |
| 28 #include "ppapi/c/ppp_messaging.h" | 28 #include "ppapi/c/ppp_messaging.h" |
| 29 #include "ppapi/c/ppp_mouse_lock.h" | 29 #include "ppapi/c/ppp_mouse_lock.h" |
| 30 #include "ppapi/c/private/pp_content_decryptor.h" |
| 30 #include "ppapi/c/private/ppp_instance_private.h" | 31 #include "ppapi/c/private/ppp_instance_private.h" |
| 31 #include "ppapi/shared_impl/ppb_input_event_shared.h" | 32 #include "ppapi/shared_impl/ppb_input_event_shared.h" |
| 32 #include "ppapi/shared_impl/ppb_url_util_shared.h" | 33 #include "ppapi/shared_impl/ppb_url_util_shared.h" |
| 33 #include "ppapi/shared_impl/ppb_view_shared.h" | 34 #include "ppapi/shared_impl/ppb_view_shared.h" |
| 34 #include "ppapi/shared_impl/ppp_instance_combined.h" | 35 #include "ppapi/shared_impl/ppp_instance_combined.h" |
| 35 #include "ppapi/shared_impl/resource.h" | 36 #include "ppapi/shared_impl/resource.h" |
| 36 #include "ppapi/shared_impl/scoped_pp_resource.h" | 37 #include "ppapi/shared_impl/scoped_pp_resource.h" |
| 37 #include "ppapi/shared_impl/time_conversion.h" | 38 #include "ppapi/shared_impl/time_conversion.h" |
| 38 #include "ppapi/shared_impl/var.h" | 39 #include "ppapi/shared_impl/var.h" |
| 39 #include "ppapi/thunk/enter.h" | 40 #include "ppapi/thunk/enter.h" |
| (...skipping 1287 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1327 PpapiGlobals::Get()->GetVarTracker()->MakeArrayBufferPPVar( | 1328 PpapiGlobals::Get()->GetVarTracker()->MakeArrayBufferPPVar( |
| 1328 init_data.size(), init_data.data()); | 1329 init_data.size(), init_data.data()); |
| 1329 | 1330 |
| 1330 return PP_ToBool(plugin_decryption_interface_->GenerateKeyRequest( | 1331 return PP_ToBool(plugin_decryption_interface_->GenerateKeyRequest( |
| 1331 pp_instance(), | 1332 pp_instance(), |
| 1332 StringVar::StringToPPVar(key_system), | 1333 StringVar::StringToPPVar(key_system), |
| 1333 init_data_array)); | 1334 init_data_array)); |
| 1334 } | 1335 } |
| 1335 | 1336 |
| 1336 bool PluginInstance::AddKey(const std::string& session_id, | 1337 bool PluginInstance::AddKey(const std::string& session_id, |
| 1337 const std::string& key) { | 1338 const std::string& key, |
| 1339 const std::string& init_data) { |
| 1338 if (!LoadContentDecryptorInterface()) | 1340 if (!LoadContentDecryptorInterface()) |
| 1339 return false; | 1341 return false; |
| 1340 PP_Var key_array = | 1342 PP_Var key_array = |
| 1341 PpapiGlobals::Get()->GetVarTracker()->MakeArrayBufferPPVar(key.size(), | 1343 PpapiGlobals::Get()->GetVarTracker()->MakeArrayBufferPPVar(key.size(), |
| 1342 key.data()); | 1344 key.data()); |
| 1345 PP_Var init_data_array = |
| 1346 PpapiGlobals::Get()->GetVarTracker()->MakeArrayBufferPPVar( |
| 1347 init_data.size(), |
| 1348 init_data.data()); |
| 1343 | 1349 |
| 1344 return PP_ToBool(plugin_decryption_interface_->AddKey( | 1350 return PP_ToBool(plugin_decryption_interface_->AddKey( |
| 1345 pp_instance(), | 1351 pp_instance(), |
| 1346 StringVar::StringToPPVar(session_id), | 1352 StringVar::StringToPPVar(session_id), |
| 1347 key_array)); | 1353 key_array, |
| 1354 init_data_array)); |
| 1348 } | 1355 } |
| 1349 | 1356 |
| 1350 bool PluginInstance::CancelKeyRequest(const std::string& session_id) { | 1357 bool PluginInstance::CancelKeyRequest(const std::string& session_id) { |
| 1351 if (!LoadContentDecryptorInterface()) | 1358 if (!LoadContentDecryptorInterface()) |
| 1352 return false; | 1359 return false; |
| 1353 | 1360 |
| 1354 return PP_ToBool(plugin_decryption_interface_->CancelKeyRequest( | 1361 return PP_ToBool(plugin_decryption_interface_->CancelKeyRequest( |
| 1355 pp_instance(), | 1362 pp_instance(), |
| 1356 StringVar::StringToPPVar(session_id))); | 1363 StringVar::StringToPPVar(session_id))); |
| 1357 } | 1364 } |
| 1358 | 1365 |
| 1359 bool PluginInstance::Decrypt(const base::StringPiece& encrypted_block, | 1366 bool PluginInstance::Decrypt(const base::StringPiece& encrypted_block, |
| 1360 const DecryptedDataCB& callback) { | 1367 const DecryptedDataCB& callback) { |
| 1361 if (!LoadContentDecryptorInterface()) | 1368 if (!LoadContentDecryptorInterface()) |
| 1362 return false; | 1369 return false; |
| 1363 ScopedPPResource encrypted_resource(MakeBufferResource(pp_instance(), | 1370 ScopedPPResource encrypted_resource(MakeBufferResource(pp_instance(), |
| 1364 encrypted_block)); | 1371 encrypted_block)); |
| 1365 if (!encrypted_resource.get()) | 1372 if (!encrypted_resource.get()) |
| 1366 return false; | 1373 return false; |
| 1367 | 1374 |
| 1375 PP_EncryptedBlockInfo block_info; |
| 1376 |
| 1368 // TODO(tomfinegan): Store callback and ID in a map, and pass ID to decryptor. | 1377 // TODO(tomfinegan): Store callback and ID in a map, and pass ID to decryptor. |
| 1369 return PP_ToBool(plugin_decryption_interface_->Decrypt(pp_instance(), | 1378 return PP_ToBool(plugin_decryption_interface_->Decrypt(pp_instance(), |
| 1370 encrypted_resource, | 1379 encrypted_resource, |
| 1371 0)); | 1380 &block_info)); |
| 1372 } | 1381 } |
| 1373 | 1382 |
| 1374 bool PluginInstance::DecryptAndDecode(const base::StringPiece& encrypted_block, | 1383 bool PluginInstance::DecryptAndDecode(const base::StringPiece& encrypted_block, |
| 1375 const DecryptedDataCB& callback) { | 1384 const DecryptedDataCB& callback) { |
| 1376 if (!LoadContentDecryptorInterface()) | 1385 if (!LoadContentDecryptorInterface()) |
| 1377 return false; | 1386 return false; |
| 1378 ScopedPPResource encrypted_resource(MakeBufferResource(pp_instance(), | 1387 ScopedPPResource encrypted_resource(MakeBufferResource(pp_instance(), |
| 1379 encrypted_block)); | 1388 encrypted_block)); |
| 1380 if (!encrypted_resource.get()) | 1389 if (!encrypted_resource.get()) |
| 1381 return false; | 1390 return false; |
| 1391 |
| 1392 PP_EncryptedBlockInfo block_info; |
| 1393 |
| 1382 // TODO(tomfinegan): Store callback and ID in a map, and pass ID to decryptor. | 1394 // TODO(tomfinegan): Store callback and ID in a map, and pass ID to decryptor. |
| 1383 return PP_ToBool(plugin_decryption_interface_->DecryptAndDecode( | 1395 return PP_ToBool(plugin_decryption_interface_->DecryptAndDecode( |
| 1384 pp_instance(), | 1396 pp_instance(), |
| 1385 encrypted_resource, | 1397 encrypted_resource, |
| 1386 0)); | 1398 &block_info)); |
| 1387 } | 1399 } |
| 1388 | 1400 |
| 1389 bool PluginInstance::FlashIsFullscreenOrPending() { | 1401 bool PluginInstance::FlashIsFullscreenOrPending() { |
| 1390 return fullscreen_container_ != NULL; | 1402 return fullscreen_container_ != NULL; |
| 1391 } | 1403 } |
| 1392 | 1404 |
| 1393 bool PluginInstance::IsFullscreenOrPending() { | 1405 bool PluginInstance::IsFullscreenOrPending() { |
| 1394 return desired_fullscreen_state_; | 1406 return desired_fullscreen_state_; |
| 1395 } | 1407 } |
| 1396 | 1408 |
| (...skipping 621 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2018 void PluginInstance::KeyError(PP_Instance instance, | 2030 void PluginInstance::KeyError(PP_Instance instance, |
| 2019 PP_Var key_system_var, | 2031 PP_Var key_system_var, |
| 2020 PP_Var session_id_var, | 2032 PP_Var session_id_var, |
| 2021 int32_t media_error, | 2033 int32_t media_error, |
| 2022 int32_t system_code) { | 2034 int32_t system_code) { |
| 2023 // TODO(tomfinegan): send the data to media stack. | 2035 // TODO(tomfinegan): send the data to media stack. |
| 2024 } | 2036 } |
| 2025 | 2037 |
| 2026 void PluginInstance::DeliverBlock(PP_Instance instance, | 2038 void PluginInstance::DeliverBlock(PP_Instance instance, |
| 2027 PP_Resource decrypted_block, | 2039 PP_Resource decrypted_block, |
| 2028 int32_t request_id) { | 2040 const PP_DecryptedBlockInfo* block_info) { |
| 2029 // TODO(xhwang): Pass the decrypted block back to media stack. | 2041 // TODO(xhwang): Pass the decrypted block back to media stack. |
| 2030 } | 2042 } |
| 2031 | 2043 |
| 2032 void PluginInstance::DeliverFrame(PP_Instance instance, | 2044 void PluginInstance::DeliverFrame(PP_Instance instance, |
| 2033 PP_Resource decrypted_frame, | 2045 PP_Resource decrypted_frame, |
| 2034 int32_t request_id) { | 2046 const PP_DecryptedBlockInfo* block_info) { |
| 2035 // TODO(tomfinegan): To be implemented after completion of v0.1 of the | 2047 // TODO(tomfinegan): To be implemented after completion of v0.1 of the |
| 2036 // EME/CDM work. | 2048 // EME/CDM work. |
| 2037 } | 2049 } |
| 2038 | 2050 |
| 2039 void PluginInstance::DeliverSamples(PP_Instance instance, | 2051 void PluginInstance::DeliverSamples(PP_Instance instance, |
| 2040 PP_Resource decrypted_samples, | 2052 PP_Resource decrypted_samples, |
| 2041 int32_t request_id) { | 2053 const PP_DecryptedBlockInfo* block_info) { |
| 2042 // TODO(tomfinegan): To be implemented after completion of v0.1 of the | 2054 // TODO(tomfinegan): To be implemented after completion of v0.1 of the |
| 2043 // EME/CDM work. | 2055 // EME/CDM work. |
| 2044 } | 2056 } |
| 2045 | 2057 |
| 2046 | 2058 |
| 2047 void PluginInstance::NumberOfFindResultsChanged(PP_Instance instance, | 2059 void PluginInstance::NumberOfFindResultsChanged(PP_Instance instance, |
| 2048 int32_t total, | 2060 int32_t total, |
| 2049 PP_Bool final_result) { | 2061 PP_Bool final_result) { |
| 2050 DCHECK_NE(find_identifier_, -1); | 2062 DCHECK_NE(find_identifier_, -1); |
| 2051 delegate_->NumberOfFindResultsChanged(find_identifier_, total, | 2063 delegate_->NumberOfFindResultsChanged(find_identifier_, total, |
| (...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2412 screen_size_for_fullscreen_ = gfx::Size(); | 2424 screen_size_for_fullscreen_ = gfx::Size(); |
| 2413 WebElement element = container_->element(); | 2425 WebElement element = container_->element(); |
| 2414 element.setAttribute(WebString::fromUTF8(kWidth), width_before_fullscreen_); | 2426 element.setAttribute(WebString::fromUTF8(kWidth), width_before_fullscreen_); |
| 2415 element.setAttribute(WebString::fromUTF8(kHeight), height_before_fullscreen_); | 2427 element.setAttribute(WebString::fromUTF8(kHeight), height_before_fullscreen_); |
| 2416 element.setAttribute(WebString::fromUTF8(kBorder), border_before_fullscreen_); | 2428 element.setAttribute(WebString::fromUTF8(kBorder), border_before_fullscreen_); |
| 2417 element.setAttribute(WebString::fromUTF8(kStyle), style_before_fullscreen_); | 2429 element.setAttribute(WebString::fromUTF8(kStyle), style_before_fullscreen_); |
| 2418 } | 2430 } |
| 2419 | 2431 |
| 2420 } // namespace ppapi | 2432 } // namespace ppapi |
| 2421 } // namespace webkit | 2433 } // namespace webkit |
| OLD | NEW |