本文整理汇总了C++中DOMArrayPiece::data方法的典型用法代码示例。如果您正苦于以下问题:C++ DOMArrayPiece::data方法的具体用法?C++ DOMArrayPiece::data怎么用?C++ DOMArrayPiece::data使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DOMArrayPiece
的用法示例。
在下文中一共展示了DOMArrayPiece::data方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: setServerCertificate
ScriptPromise MediaKeys::setServerCertificate(ScriptState* scriptState, const DOMArrayPiece& serverCertificate)
{
// From https://dvcs.w3.org/hg/html-media/raw-file/default/encrypted-media/encrypted-media.html#dom-setservercertificate:
// The setServerCertificate(serverCertificate) method provides a server
// certificate to be used to encrypt messages to the license server.
// It must run the following steps:
// 1. If serverCertificate is an empty array, return a promise rejected
// with a new DOMException whose name is "InvalidAccessError".
if (!serverCertificate.byteLength()) {
return ScriptPromise::rejectWithDOMException(
scriptState, DOMException::create(InvalidAccessError, "The serverCertificate parameter is empty."));
}
// 2. If the keySystem does not support server certificates, return a
// promise rejected with a new DOMException whose name is
// "NotSupportedError".
// (Let the CDM decide whether to support this or not.)
// 3. Let certificate be a copy of the contents of the serverCertificate
// parameter.
RefPtr<DOMArrayBuffer> serverCertificateBuffer = DOMArrayBuffer::create(serverCertificate.data(), serverCertificate.byteLength());
// 4. Let promise be a new promise.
SimpleContentDecryptionModuleResultPromise* result = new SimpleContentDecryptionModuleResultPromise(scriptState);
ScriptPromise promise = result->promise();
// 5. Run the following steps asynchronously (documented in timerFired()).
m_pendingActions.append(PendingAction::CreatePendingSetServerCertificate(result, serverCertificateBuffer.release()));
if (!m_timer.isActive())
m_timer.startOneShot(0, FROM_HERE);
// 6. Return promise.
return promise;
}
示例2: update
ScriptPromise MediaKeySession::update(ScriptState* scriptState, const DOMArrayPiece& response)
{
WTF_LOG(Media, "MediaKeySession(%p)::update", this);
ASSERT(!m_isClosed);
// From https://w3c.github.io/encrypted-media/#update:
// Provides messages, including licenses, to the CDM. When this method is
// invoked, the user agent must run the following steps:
// 1. If this object's callable value is false, return a promise rejected
// with a new DOMException whose name is InvalidStateError.
if (!m_isCallable)
return CreateRejectedPromiseNotCallable(scriptState);
// 2. If response is an empty array, return a promise rejected with a
// new DOMException whose name is InvalidAccessError.
if (!response.byteLength()) {
return ScriptPromise::rejectWithDOMException(
scriptState, DOMException::create(InvalidAccessError, "The response parameter is empty."));
}
// 3. Let response copy be a copy of the contents of the response parameter.
RefPtr<DOMArrayBuffer> responseCopy = DOMArrayBuffer::create(response.data(), response.byteLength());
// 4. Let promise be a new promise.
SimpleContentDecryptionModuleResultPromise* result = new SimpleContentDecryptionModuleResultPromise(scriptState);
ScriptPromise promise = result->promise();
// 5. Run the following steps asynchronously (documented in
// actionTimerFired())
m_pendingActions.append(PendingAction::CreatePendingUpdate(result, responseCopy.release()));
if (!m_actionTimer.isActive())
m_actionTimer.startOneShot(0, BLINK_FROM_HERE);
// 6. Return promise.
return promise;
}
示例3: generateRequest
ScriptPromise MediaKeySession::generateRequest(ScriptState* scriptState, const String& initDataTypeString, const DOMArrayPiece& initData)
{
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,
// the user agent must run the following steps:
// 1. If this object's uninitialized value is false, return a promise
// rejected with a new DOMException whose name is "InvalidStateError".
if (!m_isUninitialized)
return CreateRejectedPromiseAlreadyInitialized(scriptState);
// 2. Let this object's uninitialized be false.
m_isUninitialized = false;
// 3. If initDataType is an empty string, return a promise rejected with a
// new DOMException whose name is "InvalidAccessError".
if (initDataTypeString.isEmpty()) {
return ScriptPromise::rejectWithDOMException(
scriptState, DOMException::create(InvalidAccessError, "The initDataType parameter is empty."));
}
// 4. If initData is an empty array, return a promise rejected with a new
// DOMException whose name is"InvalidAccessError".
if (!initData.byteLength()) {
return ScriptPromise::rejectWithDOMException(
scriptState, DOMException::create(InvalidAccessError, "The initData parameter is empty."));
}
// 5. If the Key System implementation represented by this object's cdm
// implementation value does not support initDataType as an
// Initialization Data Type, return a promise rejected with a new
// DOMException whose name is NotSupportedError. String comparison
// is case-sensitive.
// (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.)
WebEncryptedMediaInitDataType initDataType = EncryptedMediaUtils::convertToInitDataType(initDataTypeString);
if (initDataType == WebEncryptedMediaInitDataType::Unknown) {
return ScriptPromise::rejectWithDOMException(
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.
RefPtr<DOMArrayBuffer> initDataBuffer = DOMArrayBuffer::create(initData.data(), initData.byteLength());
// 7. Let session type be this object's session type.
// (Done in constructor.)
// 8. Let promise be a new promise.
NewSessionResultPromise* result = new NewSessionResultPromise(scriptState, this);
ScriptPromise promise = result->promise();
// 9. Run the following steps asynchronously (documented in
// actionTimerFired())
m_pendingActions.append(PendingAction::CreatePendingGenerateRequest(result, initDataType, initDataBuffer.release()));
ASSERT(!m_actionTimer.isActive());
m_actionTimer.startOneShot(0, BLINK_FROM_HERE);
// 10. Return promise.
return promise;
}