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

Unified Diff: content/browser/media/cdm/browser_cdm_manager.cc

Issue 1341883003: Prepare MediaDrmBridge to work with MediaCodecPlayer (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@bug526755
Patch Set: Removed lock from player_tracker_impl Created 5 years, 3 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 side-by-side diff with in-line comments
Download patch
Index: content/browser/media/cdm/browser_cdm_manager.cc
diff --git a/content/browser/media/cdm/browser_cdm_manager.cc b/content/browser/media/cdm/browser_cdm_manager.cc
index eefceba28b97d1a73cd31834fb3b34d231a554ae..54b00a756def9e48c7bde86ae23db44cdafc5f56 100644
--- a/content/browser/media/cdm/browser_cdm_manager.cc
+++ b/content/browser/media/cdm/browser_cdm_manager.cc
@@ -26,11 +26,24 @@
#if defined(OS_ANDROID)
#include "content/public/common/renderer_preferences.h"
+
+#define POST_ON_UI_THREAD(method, ...) \
qinmin 2015/09/16 18:09:40 nit: maybe RUN_ON_UI_THREAD is more appropriate si
+ do { \
+ if (BrowserThread::CurrentlyOn(BrowserThread::UI)) { \
+ if (manager_) \
+ manager_->method(__VA_ARGS__); \
+ } else { \
+ BrowserThread::PostTask( \
+ BrowserThread::UI, FROM_HERE, \
+ base::Bind(&BrowserCdmManager::method, manager_, ##__VA_ARGS__)); \
+ } \
+ } while (0)
#endif
namespace content {
using media::BrowserCdm;
+using media::BrowserCdmPtr;
using media::MediaKeys;
namespace {
@@ -76,10 +89,15 @@ class CdmPromiseInternal : public media::CdmPromiseTemplate<T...> {
uint32_t system_code,
const std::string& error_message) final {
MarkPromiseSettled();
+#if defined(OS_ANDROID)
+ POST_ON_UI_THREAD(RejectPromise, render_frame_id_, cdm_id_, promise_id_,
+ exception, system_code, error_message);
+#else
if (manager_) {
manager_->RejectPromise(render_frame_id_, cdm_id_, promise_id_, exception,
system_code, error_message);
}
+#endif
}
private:
@@ -94,17 +112,26 @@ class CdmPromiseInternal : public media::CdmPromiseTemplate<T...> {
template <>
void CdmPromiseInternal<>::resolve() {
MarkPromiseSettled();
+#if defined(OS_ANDROID)
+ POST_ON_UI_THREAD(ResolvePromise, render_frame_id_, cdm_id_, promise_id_);
+#else
if (manager_)
manager_->ResolvePromise(render_frame_id_, cdm_id_, promise_id_);
+#endif
}
template <>
void CdmPromiseInternal<std::string>::resolve(const std::string& session_id) {
MarkPromiseSettled();
+#if defined(OS_ANDROID)
+ POST_ON_UI_THREAD(ResolvePromiseWithSession, render_frame_id_, cdm_id_,
+ promise_id_, session_id);
+#else
if (manager_) {
manager_->ResolvePromiseWithSession(render_frame_id_, cdm_id_, promise_id_,
session_id);
}
+#endif
}
typedef CdmPromiseInternal<> SimplePromise;
@@ -541,7 +568,7 @@ void BrowserCdmManager::AddCdm(int render_frame_id,
scoped_ptr<SimplePromise> promise(new SimplePromise(
weak_ptr_factory_.GetWeakPtr(), render_frame_id, cdm_id, promise_id));
- scoped_ptr<BrowserCdm> cdm(media::CreateBrowserCdm(
+ BrowserCdmPtr cdm(media::CreateBrowserCdm(
key_system, use_hw_secure_codecs,
BROWSER_CDM_MANAGER_CB(OnSessionMessage),
BROWSER_CDM_MANAGER_CB(OnSessionClosed),

Powered by Google App Engine
This is Rietveld 408576698