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); |
} |