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

Unified Diff: Source/web/WebMediaPlayerClientImpl.cpp

Issue 423633002: Make HTMLMediaElement.setMediaKeys() asynchronous. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 5 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: Source/web/WebMediaPlayerClientImpl.cpp
diff --git a/Source/web/WebMediaPlayerClientImpl.cpp b/Source/web/WebMediaPlayerClientImpl.cpp
index 059913134535b8455caaea8df1bcf90ab41cfbb8..4c14d9297659519459081c63e17c05d2ec995cd7 100644
--- a/Source/web/WebMediaPlayerClientImpl.cpp
+++ b/Source/web/WebMediaPlayerClientImpl.cpp
@@ -13,6 +13,7 @@
#include "modules/encryptedmedia/HTMLMediaElementEncryptedMedia.h"
#include "modules/encryptedmedia/MediaKeyNeededEvent.h"
#include "modules/mediastream/MediaStreamRegistry.h"
+#include "platform/ContentDecryptionModuleResult.h"
#include "platform/audio/AudioBus.h"
#include "platform/audio/AudioSourceProviderClient.h"
#include "platform/geometry/IntSize.h"
@@ -52,6 +53,19 @@ using namespace blink;
namespace blink {
+// Represents the result used when setContentDecryptionModule() is called.
+// This happens asynchronously. Since there is no way to report an error,
ddorwin 2014/07/31 00:56:36 This is the scenario xhwang was referring to in th
jrummell 2014/08/07 01:43:02 Remove this in favor of having a synchronous metho
+// simply ignore any result.
+class IgnoreResponseContentDecryptionModuleResult FINAL : public ContentDecryptionModuleResult {
ddorwin 2014/07/31 00:56:36 We should come up with a better name, especially i
jrummell 2014/08/07 01:43:02 Gone.
+public:
+ IgnoreResponseContentDecryptionModuleResult() { }
+
+ // ContentDecryptionModuleResult implementation.
+ virtual void complete() OVERRIDE { }
+ virtual void completeWithSession(blink::WebContentDecryptionModuleResult::SessionStatus status) OVERRIDE { }
+ virtual void completeWithError(blink::WebContentDecryptionModuleException code, unsigned long systemCode, const blink::WebString& message) OVERRIDE { }
+};
+
static PassOwnPtr<WebMediaPlayer> createWebMediaPlayer(WebMediaPlayerClient* client, const WebURL& url, LocalFrame* frame)
{
WebLocalFrameImpl* webFrame = WebLocalFrameImpl::fromFrame(frame);
@@ -220,8 +234,10 @@ void WebMediaPlayerClientImpl::load(WebMediaPlayer::LoadType loadType, const WTF
m_usePaintOnAndroid = (loadType != WebMediaPlayer::LoadTypeMediaStream);
#endif
- // Tell WebMediaPlayer about any connected CDM (may be null).
- m_webMediaPlayer->setContentDecryptionModule(HTMLMediaElementEncryptedMedia::contentDecryptionModule(mediaElement()));
+ // Tell WebMediaPlayer about any connected CDM (may be null). Ignore any
+ // errors that happen while setting the CDM.
+ ContentDecryptionModuleResult* result = new IgnoreResponseContentDecryptionModuleResult();
+ m_webMediaPlayer->setContentDecryptionModule(HTMLMediaElementEncryptedMedia::contentDecryptionModule(mediaElement()), result->result());
ddorwin 2014/07/31 00:56:36 Hmm, I wonder if this needs to be synchronous due
jrummell 2014/08/07 01:43:02 Done.
m_webMediaPlayer->load(loadType, kurl, corsMode);
}

Powered by Google App Engine
This is Rietveld 408576698