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

Side by Side Diff: media/base/android/browser_cdm_factory_android.cc

Issue 930413003: MediaDrm: Only apply Widevine security levels to the Widevine key system. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add creation and SetSecurityLevel tests. Created 5 years, 10 months 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "media/base/android/browser_cdm_factory_android.h" 5 #include "media/base/android/browser_cdm_factory_android.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "media/base/android/media_drm_bridge.h" 10 #include "media/base/android/media_drm_bridge.h"
11 #include "media/base/media_switches.h" 11 #include "media/base/media_switches.h"
12 #include "third_party/widevine/cdm/widevine_cdm_common.h"
12 13
13 namespace media { 14 namespace media {
14 15
15 scoped_ptr<BrowserCdm> BrowserCdmFactoryAndroid::CreateBrowserCdm( 16 scoped_ptr<BrowserCdm> BrowserCdmFactoryAndroid::CreateBrowserCdm(
16 const std::string& key_system, 17 const std::string& key_system,
17 const SessionMessageCB& session_message_cb, 18 const SessionMessageCB& session_message_cb,
18 const SessionClosedCB& session_closed_cb, 19 const SessionClosedCB& session_closed_cb,
19 const SessionErrorCB& session_error_cb, 20 const SessionErrorCB& session_error_cb,
20 const SessionKeysChangeCB& session_keys_change_cb, 21 const SessionKeysChangeCB& session_keys_change_cb,
21 const SessionExpirationUpdateCB& session_expiration_update_cb) { 22 const SessionExpirationUpdateCB& session_expiration_update_cb) {
22 if (!MediaDrmBridge::IsKeySystemSupported(key_system)) { 23 if (!MediaDrmBridge::IsKeySystemSupported(key_system)) {
23 NOTREACHED() << "Unsupported key system: " << key_system; 24 NOTREACHED() << "Unsupported key system: " << key_system;
24 return scoped_ptr<BrowserCdm>(); 25 return scoped_ptr<BrowserCdm>();
25 } 26 }
26 27
27 scoped_ptr<MediaDrmBridge> cdm(MediaDrmBridge::Create( 28 scoped_ptr<MediaDrmBridge> cdm(MediaDrmBridge::Create(
28 key_system, session_message_cb, session_closed_cb, session_error_cb, 29 key_system, session_message_cb, session_closed_cb, session_error_cb,
29 session_keys_change_cb, session_expiration_update_cb)); 30 session_keys_change_cb, session_expiration_update_cb));
30 if (!cdm) { 31 if (!cdm) {
31 NOTREACHED() << "MediaDrmBridge cannot be created for " << key_system; 32 NOTREACHED() << "MediaDrmBridge cannot be created for " << key_system;
32 return scoped_ptr<BrowserCdm>(); 33 return scoped_ptr<BrowserCdm>();
33 } 34 }
34 35
35 // TODO(xhwang/ddorwin): Pass the security level from key system. 36 // TODO(xhwang/ddorwin): Pass the security level from key system.
36 MediaDrmBridge::SecurityLevel security_level = 37 // http://crbug.com/459400
37 MediaDrmBridge::SECURITY_LEVEL_3; 38 if (key_system == kWidevineKeySystem) {
38 if (base::CommandLine::ForCurrentProcess()->HasSwitch( 39 MediaDrmBridge::SecurityLevel security_level =
39 switches::kMediaDrmEnableNonCompositing)) { 40 MediaDrmBridge::SECURITY_LEVEL_3;
40 security_level = MediaDrmBridge::SECURITY_LEVEL_1; 41 if (base::CommandLine::ForCurrentProcess()->HasSwitch(
41 } 42 switches::kMediaDrmEnableNonCompositing)) {
42 if (!cdm->SetSecurityLevel(security_level)) { 43 security_level = MediaDrmBridge::SECURITY_LEVEL_1;
43 DVLOG(1) << "failed to set security level " << security_level; 44 }
44 return scoped_ptr<BrowserCdm>(); 45 if (!cdm->SetSecurityLevel(security_level)) {
46 DVLOG(1) << "failed to set security level " << security_level;
47 return scoped_ptr<BrowserCdm>();
48 }
49 } else {
50 // Assume other key systems do not support full compositing.
51 if (!base::CommandLine::ForCurrentProcess()->HasSwitch(
52 switches::kMediaDrmEnableNonCompositing)) {
53 NOTREACHED() << key_system << " may require "
54 << switches::kMediaDrmEnableNonCompositing;
55 return scoped_ptr<BrowserCdm>();
56 }
45 } 57 }
46 58
47 return cdm.Pass(); 59 return cdm.Pass();
48 } 60 }
49 61
50 } // namespace media 62 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698