Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(25)

Side by Side Diff: webkit/plugins/ppapi/content_decryptor_delegate.cc

Issue 11348365: Encrypted Media: Allows empty key message to be fired. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: update doc Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « webkit/media/crypto/ppapi/clear_key_cdm.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
OLDNEW
« no previous file with comments | « webkit/media/crypto/ppapi/clear_key_cdm.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698