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

Side by Side Diff: chrome/browser/media/android/cdm/media_drm_credential_manager.cc

Issue 1427183002: Move MediaDrmBridge provision communication to native side. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: AndroidCdmFactory use a fetcher factory instead of a fetcher; addressed more comments Created 5 years, 1 month 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "chrome/browser/media/android/cdm/media_drm_credential_manager.h" 5 #include "chrome/browser/media/android/cdm/media_drm_credential_manager.h"
6 6
7 #include "base/android/jni_android.h" 7 #include "base/android/jni_android.h"
8 #include "base/android/scoped_java_ref.h" 8 #include "base/android/scoped_java_ref.h"
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/callback_helpers.h" 10 #include "base/callback_helpers.h"
11 #include "base/location.h" 11 #include "base/location.h"
12 #include "base/single_thread_task_runner.h" 12 #include "base/single_thread_task_runner.h"
13 #include "base/thread_task_runner_handle.h" 13 #include "base/thread_task_runner_handle.h"
14 #include "chrome/browser/browser_process.h"
15 #include "content/public/browser/android/provision_fetcher_factory.h"
14 #include "jni/MediaDrmCredentialManager_jni.h" 16 #include "jni/MediaDrmCredentialManager_jni.h"
15 #include "media/base/android/media_drm_bridge.h" 17 #include "media/base/android/media_drm_bridge.h"
18 #include "media/base/android/provision_fetcher.h"
16 #include "url/gurl.h" 19 #include "url/gurl.h"
17 20
18 #include "widevine_cdm_version.h" // In SHARED_INTERMEDIATE_DIR. 21 #include "widevine_cdm_version.h" // In SHARED_INTERMEDIATE_DIR.
19 22
20 using base::android::ScopedJavaGlobalRef; 23 using base::android::ScopedJavaGlobalRef;
21 24
22 namespace { 25 namespace {
23 26
24 void MediaDrmCredentialManagerCallback( 27 void MediaDrmCredentialManagerCallback(
25 const ScopedJavaGlobalRef<jobject>& j_media_drm_credential_manager_callback, 28 const ScopedJavaGlobalRef<jobject>& j_media_drm_credential_manager_callback,
26 bool succeeded) { 29 bool succeeded) {
27 JNIEnv* env = base::android::AttachCurrentThread(); 30 JNIEnv* env = base::android::AttachCurrentThread();
28 Java_MediaDrmCredentialManagerCallback_onCredentialResetFinished( 31 Java_MediaDrmCredentialManagerCallback_onCredentialResetFinished(
29 env, j_media_drm_credential_manager_callback.obj(), succeeded); 32 env, j_media_drm_credential_manager_callback.obj(), succeeded);
30 } 33 }
31 34
32 } // namespace 35 } // namespace
33 36
34 MediaDrmCredentialManager::MediaDrmCredentialManager() {} 37 MediaDrmCredentialManager::MediaDrmCredentialManager() {
38 DCHECK(g_browser_process);
39 provision_fetcher_factory_.reset(content::CreateURLProvisionFetcherFactory(
40 g_browser_process->system_request_context()));
xhwang 2015/11/12 22:27:03 Did you try this and does it work? I don't see why
Tima Vaisburd 2015/11/13 03:13:10 Yes, I tested and it worked for me.
41 }
35 42
36 MediaDrmCredentialManager::~MediaDrmCredentialManager() {} 43 MediaDrmCredentialManager::~MediaDrmCredentialManager() {}
37 44
38 // static 45 // static
39 MediaDrmCredentialManager* MediaDrmCredentialManager::GetInstance() { 46 MediaDrmCredentialManager* MediaDrmCredentialManager::GetInstance() {
40 return base::Singleton<MediaDrmCredentialManager>::get(); 47 return base::Singleton<MediaDrmCredentialManager>::get();
41 } 48 }
42 49
43 void MediaDrmCredentialManager::ResetCredentials( 50 void MediaDrmCredentialManager::ResetCredentials(
44 const ResetCredentialsCB& reset_credentials_cb) { 51 const ResetCredentialsCB& reset_credentials_cb) {
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 success = false; 89 success = false;
83 } 90 }
84 91
85 base::ResetAndReturn(&reset_credentials_cb_).Run(success); 92 base::ResetAndReturn(&reset_credentials_cb_).Run(success);
86 media_drm_bridge_ = nullptr; 93 media_drm_bridge_ = nullptr;
87 } 94 }
88 95
89 // TODO(ddorwin): The key system should be passed in. http://crbug.com/459400 96 // TODO(ddorwin): The key system should be passed in. http://crbug.com/459400
90 bool MediaDrmCredentialManager::ResetCredentialsInternal( 97 bool MediaDrmCredentialManager::ResetCredentialsInternal(
91 SecurityLevel security_level) { 98 SecurityLevel security_level) {
92 media_drm_bridge_ = 99 scoped_ptr<media::ProvisionFetcher> provision_fetcher =
93 media::MediaDrmBridge::CreateWithoutSessionSupport(kWidevineKeySystem); 100 provision_fetcher_factory_->CreateFetcher();
101
102 media_drm_bridge_ = media::MediaDrmBridge::CreateWithoutSessionSupport(
103 kWidevineKeySystem, provision_fetcher.Pass());
xhwang 2015/11/12 22:27:03 nit: you can just put provision_fetcher_factory_->
xhwang 2015/11/12 22:27:03 Actually, if we have something like content::Creat
Tima Vaisburd 2015/11/13 03:13:10 Done.
94 if (!media_drm_bridge_) 104 if (!media_drm_bridge_)
95 return false; 105 return false;
96 106
97 ResetCredentialsCB reset_credentials_cb = 107 ResetCredentialsCB reset_credentials_cb =
98 base::Bind(&MediaDrmCredentialManager::OnResetCredentialsCompleted, 108 base::Bind(&MediaDrmCredentialManager::OnResetCredentialsCompleted,
99 base::Unretained(this), security_level); 109 base::Unretained(this), security_level);
100 110
101 if (!media_drm_bridge_->SetSecurityLevel(security_level)) { 111 if (!media_drm_bridge_->SetSecurityLevel(security_level)) {
102 // No need to reset credentials for unsupported |security_level|. 112 // No need to reset credentials for unsupported |security_level|.
103 base::ThreadTaskRunnerHandle::Get()->PostTask( 113 base::ThreadTaskRunnerHandle::Get()->PostTask(
104 FROM_HERE, base::Bind(reset_credentials_cb, true)); 114 FROM_HERE, base::Bind(reset_credentials_cb, true));
105 return true; 115 return true;
106 } 116 }
107 117
108 media_drm_bridge_->ResetDeviceCredentials(reset_credentials_cb); 118 media_drm_bridge_->ResetDeviceCredentials(reset_credentials_cb);
109 return true; 119 return true;
110 } 120 }
111 121
112 // static 122 // static
113 bool MediaDrmCredentialManager::RegisterMediaDrmCredentialManager(JNIEnv* env) { 123 bool MediaDrmCredentialManager::RegisterMediaDrmCredentialManager(JNIEnv* env) {
114 return RegisterNativesImpl(env); 124 return RegisterNativesImpl(env);
115 } 125 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698