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

Unified Diff: Source/modules/encryptedmedia/MediaKeySession.cpp

Issue 687533004: Simplify use of ContentDecryptionModuleResult with promises (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 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
Index: Source/modules/encryptedmedia/MediaKeySession.cpp
diff --git a/Source/modules/encryptedmedia/MediaKeySession.cpp b/Source/modules/encryptedmedia/MediaKeySession.cpp
index 54417cea2cccef7a985df4030b40b4afee349a95..d185c8a162425b117df179a13b5c4ca9d462523e 100644
--- a/Source/modules/encryptedmedia/MediaKeySession.cpp
+++ b/Source/modules/encryptedmedia/MediaKeySession.cpp
@@ -36,9 +36,10 @@
#include "core/events/Event.h"
#include "core/events/GenericEventQueue.h"
#include "core/html/MediaKeyError.h"
+#include "modules/encryptedmedia/ContentDecryptionModuleResultPromise.h"
#include "modules/encryptedmedia/MediaKeyMessageEvent.h"
#include "modules/encryptedmedia/MediaKeys.h"
-#include "modules/encryptedmedia/SimpleContentDecryptionModuleResult.h"
+#include "modules/encryptedmedia/SimpleContentDecryptionModuleResultPromise.h"
#include "platform/ContentDecryptionModuleResult.h"
#include "platform/ContentType.h"
#include "platform/Logging.h"
@@ -201,62 +202,37 @@ private:
// completeWithSession() will resolve the promise with void, while
// completeWithError() will reject the promise with an exception. complete()
// is not expected to be called, and will reject the promise.
-class NewSessionResult : public ContentDecryptionModuleResult {
+class NewSessionResult : public ContentDecryptionModuleResultPromise {
ddorwin 2014/11/11 22:44:09 nit: If the base and Simple* are "...ResultPromise
jrummell 2014/11/11 23:30:11 Done.
public:
NewSessionResult(ScriptState* scriptState, MediaKeySession* session)
- : m_resolver(ScriptPromiseResolver::create(scriptState))
+ : ContentDecryptionModuleResultPromise(scriptState)
, m_session(session)
{
- WTF_LOG(Media, "NewSessionResult(%p)", this);
}
virtual ~NewSessionResult()
{
- WTF_LOG(Media, "~NewSessionResult(%p)", this);
}
// ContentDecryptionModuleResult implementation.
- virtual void complete() override
- {
- ASSERT_NOT_REACHED();
- completeWithDOMException(InvalidStateError, "Unexpected completion.");
- }
-
virtual void completeWithSession(WebContentDecryptionModuleResult::SessionStatus status) override
{
if (status != WebContentDecryptionModuleResult::NewSession) {
ASSERT_NOT_REACHED();
- completeWithDOMException(InvalidStateError, "Unexpected completion.");
+ reject(InvalidStateError, "Unexpected completion.");
}
m_session->finishGenerateRequest();
- m_resolver->resolve();
- m_resolver.clear();
- }
-
- virtual void completeWithError(WebContentDecryptionModuleException exceptionCode, unsigned long systemCode, const WebString& errorMessage) override
- {
- completeWithDOMException(WebCdmExceptionToExceptionCode(exceptionCode), errorMessage);
+ resolve();
}
- // It is only valid to call this before completion.
- ScriptPromise promise() { return m_resolver->promise(); }
-
void trace(Visitor* visitor)
{
visitor->trace(m_session);
- ContentDecryptionModuleResult::trace(visitor);
+ ContentDecryptionModuleResultPromise::trace(visitor);
}
private:
- // Reject the promise with a DOMException.
- void completeWithDOMException(ExceptionCode code, const String& errorMessage)
- {
- m_resolver->reject(DOMException::create(code, errorMessage));
- m_resolver.clear();
- }
-
- RefPtr<ScriptPromiseResolver> m_resolver;
Member<MediaKeySession> m_session;
};
@@ -265,27 +241,19 @@ private:
// completeWithSession() will resolve the promise with true/false, while
// completeWithError() will reject the promise with an exception. complete()
// is not expected to be called, and will reject the promise.
-class LoadSessionResult : public ContentDecryptionModuleResult {
+class LoadSessionResult : public ContentDecryptionModuleResultPromise {
public:
LoadSessionResult(ScriptState* scriptState, MediaKeySession* session)
- : m_resolver(ScriptPromiseResolver::create(scriptState))
+ : ContentDecryptionModuleResultPromise(scriptState)
, m_session(session)
{
- WTF_LOG(Media, "LoadSessionResult(%p)", this);
}
virtual ~LoadSessionResult()
{
- WTF_LOG(Media, "~LoadSessionResult(%p)", this);
}
// ContentDecryptionModuleResult implementation.
- virtual void complete() override
- {
- ASSERT_NOT_REACHED();
- completeWithDOMException(InvalidStateError, "Unexpected completion.");
- }
-
virtual void completeWithSession(WebContentDecryptionModuleResult::SessionStatus status) override
{
bool result = false;
@@ -300,38 +268,21 @@ public:
case WebContentDecryptionModuleResult::SessionAlreadyExists:
ASSERT_NOT_REACHED();
- completeWithDOMException(InvalidStateError, "Unexpected completion.");
+ reject(InvalidStateError, "Unexpected completion.");
return;
}
m_session->finishLoad();
- m_resolver->resolve(result);
- m_resolver.clear();
- }
-
- virtual void completeWithError(WebContentDecryptionModuleException exceptionCode, unsigned long systemCode, const WebString& errorMessage) override
- {
- completeWithDOMException(WebCdmExceptionToExceptionCode(exceptionCode), errorMessage);
+ resolve(result);
}
- // It is only valid to call this before completion.
- ScriptPromise promise() { return m_resolver->promise(); }
-
void trace(Visitor* visitor)
{
visitor->trace(m_session);
- ContentDecryptionModuleResult::trace(visitor);
+ ContentDecryptionModuleResultPromise::trace(visitor);
}
private:
- // Reject the promise with a DOMException.
- void completeWithDOMException(ExceptionCode code, const String& errorMessage)
- {
- m_resolver->reject(DOMException::create(code, errorMessage));
- m_resolver.clear();
- }
-
- RefPtr<ScriptPromiseResolver> m_resolver;
Member<MediaKeySession> m_session;
};
@@ -582,7 +533,7 @@ ScriptPromise MediaKeySession::updateInternal(ScriptState* scriptState, PassRefP
// (Copied in the caller.)
// 3. Let promise be a new promise.
- SimpleContentDecryptionModuleResult* result = new SimpleContentDecryptionModuleResult(scriptState);
+ SimpleContentDecryptionModuleResultPromise* result = new SimpleContentDecryptionModuleResultPromise(scriptState);
ScriptPromise promise = result->promise();
// 4. Run the following steps asynchronously (documented in
@@ -619,7 +570,7 @@ ScriptPromise MediaKeySession::close(ScriptState* scriptState)
return ScriptPromise::cast(scriptState, ScriptValue());
// 3. Let promise be a new promise.
- SimpleContentDecryptionModuleResult* result = new SimpleContentDecryptionModuleResult(scriptState);
+ SimpleContentDecryptionModuleResultPromise* result = new SimpleContentDecryptionModuleResultPromise(scriptState);
ScriptPromise promise = result->promise();
// 4. Run the following steps asynchronously (documented in
@@ -663,7 +614,7 @@ ScriptPromise MediaKeySession::remove(ScriptState* scriptState)
}
// 4. Let promise be a new promise.
- SimpleContentDecryptionModuleResult* result = new SimpleContentDecryptionModuleResult(scriptState);
+ SimpleContentDecryptionModuleResultPromise* result = new SimpleContentDecryptionModuleResultPromise(scriptState);
ScriptPromise promise = result->promise();
// 5. Run the following steps asynchronously (documented in

Powered by Google App Engine
This is Rietveld 408576698