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

Side by Side Diff: webkit/media/crypto/ppapi/cdm_wrapper.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 | « ppapi/proxy/ppb_instance_proxy.cc ('k') | webkit/media/crypto/ppapi/clear_key_cdm.cc » ('j') | 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 <cstring> 5 #include <cstring>
6 #include <string> 6 #include <string>
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/compiler_specific.h" 10 #include "base/compiler_specific.h"
(...skipping 536 matching lines...) Expand 10 before | Expand all | Expand 10 after
547 } 547 }
548 } 548 }
549 549
550 LinkedKeyMessage key_request(new KeyMessageImpl()); 550 LinkedKeyMessage key_request(new KeyMessageImpl());
551 cdm::Status status = cdm_->GenerateKeyRequest( 551 cdm::Status status = cdm_->GenerateKeyRequest(
552 type.data(), type.size(), 552 type.data(), type.size(),
553 static_cast<const uint8_t*>(init_data.Map()), 553 static_cast<const uint8_t*>(init_data.Map()),
554 init_data.ByteLength(), 554 init_data.ByteLength(),
555 key_request.get()); 555 key_request.get());
556 PP_DCHECK(status == cdm::kSuccess || status == cdm::kSessionError); 556 PP_DCHECK(status == cdm::kSuccess || status == cdm::kSessionError);
557 if (status != cdm::kSuccess || 557 if (status != cdm::kSuccess) {
558 !key_request->message() ||
559 key_request->message()->size() == 0) {
560 FireKeyError(""); 558 FireKeyError("");
561 return; 559 return;
562 } 560 }
563 561
564 // TODO(xhwang): Remove unnecessary CallOnMain calls here and below once we 562 // TODO(xhwang): Remove unnecessary CallOnMain calls here and below once we
565 // only support out-of-process. 563 // only support out-of-process.
566 // If running out-of-process, PPB calls will always behave asynchronously 564 // If running out-of-process, PPB calls will always behave asynchronously
567 // since IPC is involved. In that case, if we are already on main thread, 565 // since IPC is involved. In that case, if we are already on main thread,
568 // we don't need to use CallOnMain to help us call PPB call on main thread, 566 // we don't need to use CallOnMain to help us call PPB call on main thread,
569 // or to help call PPB asynchronously. 567 // or to help call PPB asynchronously.
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after
809 } 807 }
810 808
811 void CdmWrapper::KeyAdded(int32_t result, const std::string& session_id) { 809 void CdmWrapper::KeyAdded(int32_t result, const std::string& session_id) {
812 PP_DCHECK(result == PP_OK); 810 PP_DCHECK(result == PP_OK);
813 pp::ContentDecryptor_Private::KeyAdded(key_system_, session_id); 811 pp::ContentDecryptor_Private::KeyAdded(key_system_, session_id);
814 } 812 }
815 813
816 void CdmWrapper::KeyMessage(int32_t result, 814 void CdmWrapper::KeyMessage(int32_t result,
817 const LinkedKeyMessage& key_message) { 815 const LinkedKeyMessage& key_message) {
818 PP_DCHECK(result == PP_OK); 816 PP_DCHECK(result == PP_OK);
819 pp::Buffer_Dev message_buffer = 817
820 static_cast<const PpbBuffer*>(key_message->message())->buffer_dev(); 818 pp::Buffer_Dev message_buffer;
819 if (key_message->message()) {
820 message_buffer = static_cast<const PpbBuffer*>(
821 key_message->message())->buffer_dev();
822 }
823
821 pp::ContentDecryptor_Private::KeyMessage( 824 pp::ContentDecryptor_Private::KeyMessage(
822 key_system_, 825 key_system_,
823 key_message->session_id_string(), 826 key_message->session_id_string(),
824 message_buffer, 827 message_buffer,
825 key_message->default_url_string()); 828 key_message->default_url_string());
826 } 829 }
827 830
828 // TODO(xhwang): Support MediaKeyError (see spec: http://goo.gl/rbdnR) in CDM 831 // TODO(xhwang): Support MediaKeyError (see spec: http://goo.gl/rbdnR) in CDM
829 // interface and in this function. 832 // interface and in this function.
830 void CdmWrapper::KeyError(int32_t result, const std::string& session_id) { 833 void CdmWrapper::KeyError(int32_t result, const std::string& session_id) {
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
980 } // namespace webkit_media 983 } // namespace webkit_media
981 984
982 namespace pp { 985 namespace pp {
983 986
984 // Factory function for your specialization of the Module object. 987 // Factory function for your specialization of the Module object.
985 Module* CreateModule() { 988 Module* CreateModule() {
986 return new webkit_media::CdmWrapperModule(); 989 return new webkit_media::CdmWrapperModule();
987 } 990 }
988 991
989 } // namespace pp 992 } // namespace pp
OLDNEW
« no previous file with comments | « ppapi/proxy/ppb_instance_proxy.cc ('k') | webkit/media/crypto/ppapi/clear_key_cdm.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698