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

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

Issue 950813005: Change initDataType and sessionType to be enums (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: remove constants Created 5 years, 10 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/modules/encryptedmedia/MediaKeySession.cpp
diff --git a/Source/modules/encryptedmedia/MediaKeySession.cpp b/Source/modules/encryptedmedia/MediaKeySession.cpp
index 5de27abb2f4f5ff42145938c1d630965abb8f7aa..9985dca712ba062541b8c8cc6fe4db7c199f588a 100644
--- a/Source/modules/encryptedmedia/MediaKeySession.cpp
+++ b/Source/modules/encryptedmedia/MediaKeySession.cpp
@@ -55,11 +55,6 @@
namespace {
-// The list of possible values for |sessionType|.
-const char kTemporary[] = "temporary";
-const char kPersistentLicense[] = "persistent-license";
-const char kPersistentReleaseMessage[] = "persistent-release-message";
-
// The list of possible values for |messageType|.
ddorwin 2015/02/25 21:38:51 Unrelated to this CL, but should these move too?
jrummell 2015/02/25 21:52:38 Sure.
const char kLicenseRequest[] = "license-request";
const char kLicenseRenewal[] = "license-renewal";
@@ -93,13 +88,6 @@ static bool isValidSessionId(const String& sessionId)
return true;
}
-// Checks that |initDataType| is a registered Initialization Data Type.
-static bool isRegisteredInitDataType(const String& initDataType)
-{
- // List from https://w3c.github.io/encrypted-media/initdata-format-registry.html
- return initDataType == "cenc" || initDataType == "keyids" || initDataType == "webm";
-}
-
static String ConvertKeyStatusToString(const WebEncryptedMediaKeyInformation::KeyStatus status)
{
switch (status) {
@@ -153,10 +141,10 @@ public:
return m_data;
}
- const String& initDataType() const
+ WebEncryptedMediaInitDataType initDataType() const
{
ASSERT(m_type == GenerateRequest);
- return m_stringData;
+ return m_initDataType;
}
const String& sessionId() const
@@ -165,36 +153,36 @@ public:
return m_stringData;
}
- static PendingAction* CreatePendingGenerateRequest(ContentDecryptionModuleResult* result, const String& initDataType, PassRefPtr<DOMArrayBuffer> initData)
+ static PendingAction* CreatePendingGenerateRequest(ContentDecryptionModuleResult* result, WebEncryptedMediaInitDataType initDataType, PassRefPtr<DOMArrayBuffer> initData)
{
ASSERT(result);
ASSERT(initData);
- return new PendingAction(GenerateRequest, result, initDataType, initData);
+ return new PendingAction(GenerateRequest, result, initDataType, initData, String());
}
static PendingAction* CreatePendingLoadRequest(ContentDecryptionModuleResult* result, const String& sessionId)
{
ASSERT(result);
- return new PendingAction(Load, result, sessionId, PassRefPtr<DOMArrayBuffer>());
+ return new PendingAction(Load, result, WebEncryptedMediaInitDataType::Unknown, PassRefPtr<DOMArrayBuffer>(), sessionId);
}
static PendingAction* CreatePendingUpdate(ContentDecryptionModuleResult* result, PassRefPtr<DOMArrayBuffer> data)
{
ASSERT(result);
ASSERT(data);
- return new PendingAction(Update, result, String(), data);
+ return new PendingAction(Update, result, WebEncryptedMediaInitDataType::Unknown, data, String());
}
static PendingAction* CreatePendingClose(ContentDecryptionModuleResult* result)
{
ASSERT(result);
- return new PendingAction(Close, result, String(), PassRefPtr<DOMArrayBuffer>());
+ return new PendingAction(Close, result, WebEncryptedMediaInitDataType::Unknown, PassRefPtr<DOMArrayBuffer>(), String());
}
static PendingAction* CreatePendingRemove(ContentDecryptionModuleResult* result)
{
ASSERT(result);
- return new PendingAction(Remove, result, String(), PassRefPtr<DOMArrayBuffer>());
+ return new PendingAction(Remove, result, WebEncryptedMediaInitDataType::Unknown, PassRefPtr<DOMArrayBuffer>(), String());
}
~PendingAction()
@@ -207,18 +195,20 @@ public:
}
private:
- PendingAction(Type type, ContentDecryptionModuleResult* result, const String& stringData, PassRefPtr<DOMArrayBuffer> data)
+ PendingAction(Type type, ContentDecryptionModuleResult* result, WebEncryptedMediaInitDataType initDataType, PassRefPtr<DOMArrayBuffer> data, const String& stringData)
: m_type(type)
, m_result(result)
- , m_stringData(stringData)
+ , m_initDataType(initDataType)
, m_data(data)
+ , m_stringData(stringData)
{
}
const Type m_type;
const Member<ContentDecryptionModuleResult> m_result;
- const String m_stringData;
+ const WebEncryptedMediaInitDataType m_initDataType;
const RefPtr<DOMArrayBuffer> m_data;
+ const String m_stringData;
};
// This class wraps the promise resolver used when initializing a new session
@@ -310,20 +300,40 @@ private:
Member<MediaKeySession> m_session;
};
-MediaKeySession* MediaKeySession::create(ScriptState* scriptState, MediaKeys* mediaKeys, const String& sessionType)
+MediaKeySession* MediaKeySession::create(ScriptState* scriptState, MediaKeys* mediaKeys, WebEncryptedMediaSessionType sessionType)
{
- ASSERT(isValidSessionType(sessionType));
RefPtrWillBeRawPtr<MediaKeySession> session = new MediaKeySession(scriptState, mediaKeys, sessionType);
session->suspendIfNeeded();
return session.get();
}
-bool MediaKeySession::isValidSessionType(const String& sessionType)
+WebEncryptedMediaInitDataType MediaKeySession::convertInitDataType(const String& initDataType)
{
- return (sessionType == kTemporary || sessionType == kPersistentLicense || sessionType == kPersistentReleaseMessage);
+ if (initDataType == "cenc")
+ return WebEncryptedMediaInitDataType::Cenc;
+ if (initDataType == "keyids")
+ return WebEncryptedMediaInitDataType::Keyids;
+ if (initDataType == "webm")
+ return WebEncryptedMediaInitDataType::Webm;
+
+ // |initDataType| is not restricted in the idl, so anything is possible.
+ return WebEncryptedMediaInitDataType::Unknown;
+}
+
+WebEncryptedMediaSessionType MediaKeySession::convertSessionType(const String& sessionType)
+{
+ if (sessionType == "temporary")
+ return WebEncryptedMediaSessionType::Temporary;
+ if (sessionType == "persistent-license")
+ return WebEncryptedMediaSessionType::PersistentLicense;
+ if (sessionType == "persistent-release-message")
+ return WebEncryptedMediaSessionType::PersistentReleaseMessage;
+
+ ASSERT_NOT_REACHED();
+ return WebEncryptedMediaSessionType::Unknown;
}
-MediaKeySession::MediaKeySession(ScriptState* scriptState, MediaKeys* mediaKeys, const String& sessionType)
+MediaKeySession::MediaKeySession(ScriptState* scriptState, MediaKeys* mediaKeys, WebEncryptedMediaSessionType sessionType)
: ActiveDOMObject(scriptState->executionContext())
, m_keySystem(mediaKeys->keySystem())
, m_asyncEventQueue(GenericEventQueue::create(this))
@@ -361,7 +371,7 @@ MediaKeySession::MediaKeySession(ScriptState* scriptState, MediaKeys* mediaKeys,
ASSERT(m_keyStatusesMap->size() == 0);
// 3.5 Let the session type be sessionType.
- ASSERT(isValidSessionType(m_sessionType));
+ ASSERT(m_sessionType != WebEncryptedMediaSessionType::Unknown);
// 3.6 Let uninitialized be true.
ASSERT(m_isUninitialized);
@@ -404,9 +414,9 @@ MediaKeyStatusMap* MediaKeySession::keyStatuses()
return m_keyStatusesMap;
}
-ScriptPromise MediaKeySession::generateRequest(ScriptState* scriptState, const String& initDataType, const DOMArrayPiece& initData)
+ScriptPromise MediaKeySession::generateRequest(ScriptState* scriptState, const String& initDataTypeString, const DOMArrayPiece& initData)
{
- WTF_LOG(Media, "MediaKeySession(%p)::generateRequest %s", this, initDataType.ascii().data());
+ WTF_LOG(Media, "MediaKeySession(%p)::generateRequest %s", this, initDataTypeString.ascii().data());
// From https://w3c.github.io/encrypted-media/#generateRequest:
// Generates a request based on the initData. When this method is invoked,
@@ -422,7 +432,7 @@ ScriptPromise MediaKeySession::generateRequest(ScriptState* scriptState, const S
// 3. If initDataType is an empty string, return a promise rejected with a
// new DOMException whose name is "InvalidAccessError".
- if (initDataType.isEmpty()) {
+ if (initDataTypeString.isEmpty()) {
return ScriptPromise::rejectWithDOMException(
scriptState, DOMException::create(InvalidAccessError, "The initDataType parameter is empty."));
}
@@ -442,9 +452,10 @@ ScriptPromise MediaKeySession::generateRequest(ScriptState* scriptState, const S
// (blink side doesn't know what the CDM supports, so the proper check
// will be done on the Chromium side. However, we can verify that
// |initDataType| is one of the registered values.)
- if (!isRegisteredInitDataType(initDataType)) {
+ WebEncryptedMediaInitDataType initDataType = convertInitDataType(initDataTypeString);
+ if (initDataType == WebEncryptedMediaInitDataType::Unknown) {
return ScriptPromise::rejectWithDOMException(
- scriptState, DOMException::create(NotSupportedError, "The initialization data type '" + initDataType + "' is not a registered Initialization Data Type."));
+ scriptState, DOMException::create(NotSupportedError, "The initialization data type '" + initDataTypeString + "' is not supported."));
}
// 6. Let init data be a copy of the contents of the initData parameter.
@@ -493,7 +504,7 @@ ScriptPromise MediaKeySession::load(ScriptState* scriptState, const String& sess
// 4. If this object's session type is not "persistent-license" or
// "persistent-release-message", return a promise rejected with a
// new DOMException whose name is InvalidAccessError.
- if (m_sessionType != kPersistentLicense && m_sessionType != kPersistentReleaseMessage) {
+ if (m_sessionType != WebEncryptedMediaSessionType::PersistentLicense && m_sessionType != WebEncryptedMediaSessionType::PersistentReleaseMessage) {
return ScriptPromise::rejectWithDOMException(
scriptState, DOMException::create(InvalidAccessError, "The session type is not persistent."));
}
@@ -608,7 +619,7 @@ ScriptPromise MediaKeySession::remove(ScriptState* scriptState)
// 2. If this object's session type is not "persistent-license" or
// "persistent-release-message", return a promise rejected with a
// new DOMException whose name is InvalidAccessError.
- if (m_sessionType != kPersistentLicense && m_sessionType != kPersistentReleaseMessage) {
+ if (m_sessionType != WebEncryptedMediaSessionType::PersistentLicense && m_sessionType != WebEncryptedMediaSessionType::PersistentReleaseMessage) {
return ScriptPromise::rejectWithDOMException(
scriptState, DOMException::create(InvalidAccessError, "The session type is not persistent."));
}
« no previous file with comments | « Source/modules/encryptedmedia/MediaKeySession.h ('k') | Source/modules/encryptedmedia/MediaKeySystemAccess.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698