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

Unified Diff: media/base/android/android_cdm_factory.cc

Issue 1408793009: media: Remove BrowserCdmFactory inferface. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add comment for DEPS change. 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/base/android/android_cdm_factory.h ('k') | media/base/android/browser_cdm_factory_android.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/base/android/android_cdm_factory.cc
diff --git a/media/base/android/android_cdm_factory.cc b/media/base/android/android_cdm_factory.cc
new file mode 100644
index 0000000000000000000000000000000000000000..45bfad543c7675480e3655a351c739178ea2a4c3
--- /dev/null
+++ b/media/base/android/android_cdm_factory.cc
@@ -0,0 +1,85 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "media/base/android/android_cdm_factory.h"
+
+#include "base/strings/string_number_conversions.h"
+#include "media/base/android/media_drm_bridge.h"
+#include "media/base/bind_to_current_loop.h"
+#include "media/base/cdm_config.h"
+#include "media/base/key_systems.h"
+#include "third_party/widevine/cdm/widevine_cdm_common.h"
+#include "url/gurl.h"
+
+namespace media {
+
+AndroidCdmFactory::AndroidCdmFactory() {}
+
+AndroidCdmFactory::~AndroidCdmFactory() {}
+
+void AndroidCdmFactory::Create(
+ const std::string& key_system,
+ const GURL& security_origin,
+ const CdmConfig& cdm_config,
+ const SessionMessageCB& session_message_cb,
+ const SessionClosedCB& session_closed_cb,
+ const LegacySessionErrorCB& legacy_session_error_cb,
+ const SessionKeysChangeCB& session_keys_change_cb,
+ const SessionExpirationUpdateCB& session_expiration_update_cb,
+ const CdmCreatedCB& cdm_created_cb) {
+ // Bound |cdm_created_cb| so we always fire it asynchronously.
+ CdmCreatedCB bound_cdm_created_cb = BindToCurrentLoop(cdm_created_cb);
+
+ if (!security_origin.is_valid()) {
+ bound_cdm_created_cb.Run(nullptr, "Invalid origin.");
+ return;
+ }
+
+ std::string error_message;
+
+ if (!MediaDrmBridge::IsKeySystemSupported(key_system)) {
+ error_message = "Key system not supported unexpectedly: " + key_system;
+ NOTREACHED() << error_message;
+ bound_cdm_created_cb.Run(nullptr, error_message);
+ return;
+ }
+
+ scoped_refptr<MediaDrmBridge> cdm(
+ MediaDrmBridge::Create(key_system, session_message_cb, session_closed_cb,
+ legacy_session_error_cb, session_keys_change_cb,
+ session_expiration_update_cb));
+ if (!cdm) {
+ error_message = "MediaDrmBridge cannot be created for " + key_system;
+ NOTREACHED() << error_message;
+ bound_cdm_created_cb.Run(nullptr, error_message);
+ return;
+ }
+
+ if (key_system == kWidevineKeySystem) {
+ MediaDrmBridge::SecurityLevel security_level =
+ cdm_config.use_hw_secure_codecs ? MediaDrmBridge::SECURITY_LEVEL_1
+ : MediaDrmBridge::SECURITY_LEVEL_3;
+ if (!cdm->SetSecurityLevel(security_level)) {
+ error_message =
+ "failed to set security level " + base::IntToString(security_level);
+ DVLOG(1) << error_message;
+ bound_cdm_created_cb.Run(nullptr, error_message);
+ return;
+ }
+ } else if (!cdm_config.use_hw_secure_codecs) {
+ // Assume other key systems require hardware-secure codecs and thus do not
+ // support full compositing.
+ error_message =
+ key_system +
+ " may require use_video_overlay_for_embedded_encrypted_video";
+ NOTREACHED() << error_message;
+ bound_cdm_created_cb.Run(nullptr, error_message);
+ return;
+ }
+
+ // Success!
+ bound_cdm_created_cb.Run(cdm, "");
+}
+
+} // namespace media
« no previous file with comments | « media/base/android/android_cdm_factory.h ('k') | media/base/android/browser_cdm_factory_android.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698