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

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

Issue 397463005: Change EME WebIDL to use ArrayBuffer/ArrayBufferView. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: rebase 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
« no previous file with comments | « Source/modules/encryptedmedia/MediaKeys.h ('k') | Source/modules/encryptedmedia/MediaKeys.idl » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/modules/encryptedmedia/MediaKeys.cpp
diff --git a/Source/modules/encryptedmedia/MediaKeys.cpp b/Source/modules/encryptedmedia/MediaKeys.cpp
index 1ffe133cafd67cb3afaaf4cf217e212fe7f7d5e3..f8fb73c65f03fe3dc71916a79dc89d29b988a946 100644
--- a/Source/modules/encryptedmedia/MediaKeys.cpp
+++ b/Source/modules/encryptedmedia/MediaKeys.cpp
@@ -42,8 +42,9 @@
#include "platform/UUID.h"
#include "public/platform/Platform.h"
#include "public/platform/WebContentDecryptionModule.h"
+#include "wtf/ArrayBuffer.h"
+#include "wtf/ArrayBufferView.h"
#include "wtf/RefPtr.h"
-#include "wtf/Uint8Array.h"
#if ENABLE(ASSERT)
namespace {
@@ -197,9 +198,21 @@ MediaKeys::~MediaKeys()
WTF_LOG(Media, "MediaKeys(%p)::~MediaKeys", this);
}
-ScriptPromise MediaKeys::createSession(ScriptState* scriptState, const String& initDataType, Uint8Array* initData, const String& sessionType)
+ScriptPromise MediaKeys::createSession(ScriptState* scriptState, const String& initDataType, ArrayBuffer* initData, const String& sessionType)
{
- WTF_LOG(Media, "MediaKeys(%p)::createSession(%s, %d)", this, initDataType.ascii().data(), initData->length());
+ RefPtr<ArrayBuffer> initDataCopy = ArrayBuffer::create(initData->data(), initData->byteLength());
+ return createSessionInternal(scriptState, initDataType, initDataCopy.release(), sessionType);
+}
+
+ScriptPromise MediaKeys::createSession(ScriptState* scriptState, const String& initDataType, ArrayBufferView* initData, const String& sessionType)
+{
+ RefPtr<ArrayBuffer> initDataCopy = ArrayBuffer::create(initData->baseAddress(), initData->byteLength());
+ return createSessionInternal(scriptState, initDataType, initDataCopy.release(), sessionType);
+}
+
+ScriptPromise MediaKeys::createSessionInternal(ScriptState* scriptState, const String& initDataType, PassRefPtr<ArrayBuffer> initData, const String& sessionType)
+{
+ WTF_LOG(Media, "MediaKeys(%p)::createSession(%s, %d)", this, initDataType.ascii().data(), initData->byteLength());
// From <http://dvcs.w3.org/hg/html-media/raw-file/default/encrypted-media/encrypted-media.html#dom-createsession>:
// The createSession(initDataType, initData, sessionType) method creates a
@@ -213,7 +226,7 @@ ScriptPromise MediaKeys::createSession(ScriptState* scriptState, const String& i
// 2. If initData is an empty array, return a promise rejected with a new
// DOMException whose name is"InvalidAccessError".
- if (!initData->length()) {
+ if (!initData->byteLength()) {
return createRejectedPromise(scriptState, InvalidAccessError, "The initData parameter is empty.");
}
@@ -233,12 +246,11 @@ ScriptPromise MediaKeys::createSession(ScriptState* scriptState, const String& i
ASSERT(sessionType == kTemporary || sessionType == kPersistent);
// 5. Let init data be a copy of the contents of the initData parameter.
- RefPtr<Uint8Array> initDataCopy = Uint8Array::create(initData->data(), initData->length());
-
+ // (Copied in the caller.)
// 6. Let promise be a new promise.
// 7. Asynchronously create and initialize the session.
// 8. Return promise.
- return MediaKeySession::create(scriptState, this, initDataType, initDataCopy.release(), sessionType);
+ return MediaKeySession::create(scriptState, this, initDataType, initData, sessionType);
}
bool MediaKeys::isTypeSupported(const String& keySystem, const String& contentType)
« no previous file with comments | « Source/modules/encryptedmedia/MediaKeys.h ('k') | Source/modules/encryptedmedia/MediaKeys.idl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698