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/content_decryptor_delegate.h" | 5 #include "webkit/plugins/ppapi/content_decryptor_delegate.h" |
6 | 6 |
7 #include "base/callback_helpers.h" | 7 #include "base/callback_helpers.h" |
8 #include "base/debug/trace_event.h" | 8 #include "base/debug/trace_event.h" |
9 #include "base/message_loop_proxy.h" | 9 #include "base/message_loop_proxy.h" |
10 #include "media/base/audio_decoder_config.h" | 10 #include "media/base/audio_decoder_config.h" |
(...skipping 627 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
638 | 638 |
639 StringVar* key_system_string = StringVar::FromPPVar(key_system_var); | 639 StringVar* key_system_string = StringVar::FromPPVar(key_system_var); |
640 StringVar* session_id_string = StringVar::FromPPVar(session_id_var); | 640 StringVar* session_id_string = StringVar::FromPPVar(session_id_var); |
641 StringVar* default_url_string = StringVar::FromPPVar(default_url_var); | 641 StringVar* default_url_string = StringVar::FromPPVar(default_url_var); |
642 | 642 |
643 if (!key_system_string || !session_id_string || !default_url_string) { | 643 if (!key_system_string || !session_id_string || !default_url_string) { |
644 decryptor_client_->KeyError("", "", media::Decryptor::kUnknownError, 0); | 644 decryptor_client_->KeyError("", "", media::Decryptor::kUnknownError, 0); |
645 return; | 645 return; |
646 } | 646 } |
647 | 647 |
648 EnterResourceNoLock<PPB_Buffer_API> enter(message_resource, true); | 648 scoped_array<uint8> message_array; |
649 if (!enter.succeeded()) { | 649 int message_size = 0; |
650 decryptor_client_->KeyError(key_system_string->value(), | 650 |
651 session_id_string->value(), | 651 if (message_resource) { |
652 media::Decryptor::kUnknownError, | 652 EnterResourceNoLock<PPB_Buffer_API> enter(message_resource, true); |
653 0); | 653 if (!enter.succeeded()) { |
654 return; | 654 decryptor_client_->KeyError(key_system_string->value(), |
| 655 session_id_string->value(), |
| 656 media::Decryptor::kUnknownError, |
| 657 0); |
| 658 return; |
| 659 } |
| 660 |
| 661 BufferAutoMapper mapper(enter.object()); |
| 662 if (!mapper.data() || !mapper.size()) { |
| 663 decryptor_client_->KeyError(key_system_string->value(), |
| 664 session_id_string->value(), |
| 665 media::Decryptor::kUnknownError, |
| 666 0); |
| 667 return; |
| 668 } |
| 669 |
| 670 message_size = mapper.size(); |
| 671 message_array.reset(new uint8[message_size]); |
| 672 memcpy(message_array.get(), mapper.data(), mapper.size()); |
655 } | 673 } |
656 | 674 |
657 BufferAutoMapper mapper(enter.object()); | |
658 scoped_array<uint8> message_array(new uint8[mapper.size()]); | |
659 if (mapper.data() && mapper.size()) | |
660 memcpy(message_array.get(), mapper.data(), mapper.size()); | |
661 | |
662 decryptor_client_->KeyMessage(key_system_string->value(), | 675 decryptor_client_->KeyMessage(key_system_string->value(), |
663 session_id_string->value(), | 676 session_id_string->value(), |
664 message_array.Pass(), | 677 message_array.Pass(), |
665 mapper.size(), | 678 message_size, |
666 default_url_string->value()); | 679 default_url_string->value()); |
667 } | 680 } |
668 | 681 |
669 void ContentDecryptorDelegate::KeyError(PP_Var key_system_var, | 682 void ContentDecryptorDelegate::KeyError(PP_Var key_system_var, |
670 PP_Var session_id_var, | 683 PP_Var session_id_var, |
671 int32_t media_error, | 684 int32_t media_error, |
672 int32_t system_code) { | 685 int32_t system_code) { |
673 if (!decryptor_client_) | 686 if (!decryptor_client_) |
674 return; | 687 return; |
675 | 688 |
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
975 return false; | 988 return false; |
976 } | 989 } |
977 memcpy(mapper.data(), data, size); | 990 memcpy(mapper.data(), data, size); |
978 | 991 |
979 *resource = media_resource; | 992 *resource = media_resource; |
980 return true; | 993 return true; |
981 } | 994 } |
982 | 995 |
983 } // namespace ppapi | 996 } // namespace ppapi |
984 } // namespace webkit | 997 } // namespace webkit |
OLD | NEW |