haikuwebkit/LayoutTests/media/encrypted-media/mock-MediaKeySystemAccess.html

109 lines
3.4 KiB
HTML
Raw Permalink Normal View History

Add support for MediaKeySystemAccess.createMediaKeys() https://bugs.webkit.org/show_bug.cgi?id=166749 Reviewed by Eric Carlson. Source/WebCore: Test: media/encrypted-media/mock-MediaKeySystemAccess.html Implement MediaKeySystemAccess::createMediaKeys(). This requires some additions to CDM, CDMPrivate, and a new interface CDMInstance to support eventual platform adoption and to implement mock support for testing. * Modules/encryptedmedia/CDM.cpp: (WebCore::CDM::loadAndInitialize): (WebCore::CDM::createInstance): * Modules/encryptedmedia/CDM.h: * Modules/encryptedmedia/CDMInstance.h: (WebCore::CDMInstance::~CDMInstance): * Modules/encryptedmedia/CDMPrivate.h: * Modules/encryptedmedia/MediaKeySystemAccess.cpp: (WebCore::MediaKeySystemAccess::createMediaKeys): * Modules/encryptedmedia/MediaKeySystemAccess.h: * Modules/encryptedmedia/MediaKeys.cpp: (WebCore::MediaKeys::MediaKeys): * Modules/encryptedmedia/MediaKeys.h: (WebCore::MediaKeys::create): * Modules/encryptedmedia/MediaKeys.idl: * Modules/encryptedmedia/NavigatorEME.cpp: (WebCore::tryNextSupportedConfiguration): * WebCore.xcodeproj/project.pbxproj: * testing/MockCDMFactory.cpp: (WebCore::MockCDM::MockCDM): (WebCore::MockCDM::createInstance): (WebCore::MockCDM::loadAndInitialize): (WebCore::MockCDMInstance::MockCDMInstance): (WebCore::MockCDMInstance::initializeWithConfiguration): (WebCore::MockCDMInstance::setDistinctiveIdentifiersAllowed): (WebCore::MockCDMInstance::setPersistentStateAllowed): * testing/MockCDMFactory.h: (WebCore::MockCDMFactory::canCreateInstances): (WebCore::MockCDMFactory::setCanCreateInstances): (WebCore::MockCDM::factory): * testing/MockCDMFactory.idl: LayoutTests: * media/encrypted-media/mock-MediaKeySystemAccess-expected.txt: Added. * media/encrypted-media/mock-MediaKeySystemAccess.html: Added. * platform/mac/TestExpectations: Canonical link: https://commits.webkit.org/183902@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210445 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-01-06 18:48:29 +00:00
<!DOCTYPE html>
<html>
<head>
<script src=../video-test.js></script>
<script type="text/javascript">
var mock;
var promise;
var mediaKeySystemAccess;
var capabilities = {};
function doTest()
{
if (!window.internals) {
// failTest("Internals is required for this test.")
// return;
}
run('internals.initializeMockMediaSource()');
run('mock = internals.registerMockCDM()');
run('mock.supportedDataTypes = ["mock"]');
next();
}
function next() {
if (!tests.length) {
mock.unregister();
endTest()
return;
}
var nextTest = tests.shift();
consoleWrite('');
nextTest();
}
function gotMediaKeySystemAccess(result) {
mediaKeySystemAccess = result;
next();
}
tests = [
function() {
run('capabilities.initDataTypes = ["mock"]');
run(`capabilities.videoCapabilities = [{ contentType: 'video/mock; codecs="mock"' }] `);
run('promise = navigator.requestMediaKeySystemAccess("org.webkit.mock", [capabilities])');
Add support for MediaKeys.generateRequest(). https://bugs.webkit.org/show_bug.cgi?id=166880 Reviewed by Xabier Rodriguez-Calvar. Source/WebCore: Test: media/encrypted-media/mock-MediaKeySession-generateRequest.html Implement MediaKeySession::generateRequest(). This requires some additions to CDM, CDMPrivate, and CDMInstance to support platform adoption and to implement mock support for testing. Additionally, add an InitDataRegistry object which can sanitize and extract key data from various initData types. (At the moment, only the "keyids" initData type is implemented.) Drive-by fixes: Change all instances of initDataType from String -> AtomicString. Add "const" flags to all CDMPrivate methods that might be called from a const reference. * CMakeLists.txt: * Modules/encryptedmedia/CDM.cpp: (WebCore::CDM::supportsInitDataType): (WebCore::CDM::sanitizeInitData): (WebCore::CDM::supportsInitData): * Modules/encryptedmedia/CDM.h: * Modules/encryptedmedia/CDMInstance.h: * Modules/encryptedmedia/CDMPrivate.h: * Modules/encryptedmedia/InitDataRegistry.cpp: Added. (WebCore::extractKeyIDsKeyids): (WebCore::sanitizeKeyids): (WebCore::sanitizeCenc): (WebCore::extractKeyIDsCenc): (WebCore::sanitizeWebM): (WebCore::extractKeyIDsWebM): (WebCore::InitDataRegistry::shared): (WebCore::InitDataRegistry::InitDataRegistry): (WebCore::InitDataRegistry::sanitizeInitData): (WebCore::InitDataRegistry::extractKeyIDs): (WebCore::InitDataRegistry::registerInitDataType): * Modules/encryptedmedia/InitDataRegistry.h: * Modules/encryptedmedia/MediaKeySession.cpp: (WebCore::messageEventName): (WebCore::MediaKeySession::MediaKeySession): (WebCore::MediaKeySession::generateRequest): (WebCore::MediaKeySession::enqueueMessage): * Modules/encryptedmedia/MediaKeySession.h: * Modules/encryptedmedia/MediaKeys.cpp: (WebCore::MediaKeys::setServerCertificate): * WebCore.xcodeproj/project.pbxproj: * testing/MockCDMFactory.cpp: (WebCore::MockCDMFactory::addKeysToSessionWithID): (WebCore::MockCDMFactory::setSupportedDataTypes): (WebCore::MockCDM::supportsInitDataType): (WebCore::MockCDM::supportsConfiguration): (WebCore::MockCDM::supportsConfigurationWithRestrictions): (WebCore::MockCDM::supportsSessionTypeWithConfiguration): (WebCore::MockCDM::supportsRobustness): (WebCore::MockCDM::distinctiveIdentifiersRequirement): (WebCore::MockCDM::persistentStateRequirement): (WebCore::MockCDM::distinctiveIdentifiersAreUniquePerOriginAndClearable): (WebCore::MockCDM::supportsInitData): (WebCore::MockCDMInstance::setServerCertificate): (WebCore::MockCDMInstance::requestLicense): * testing/MockCDMFactory.h: (WebCore::MockCDMFactory::supportedDataTypes): (WebCore::MockCDMFactory::hasSessionWithID): (WebCore::MockCDMFactory::removeSessionWithID): (WebCore::MockCDMFactory::setSupportedDataTypes): Deleted. LayoutTests: Add shouldResolve() and shouldReject() to video-test.js and update existing tests to use these new functions. * media/encrypted-media/mock-MediaKeys-createSession-expected.txt: Added. * media/encrypted-media/mock-MediaKeys-createSession.html: Added. * media/encrypted-media/mock-MediaKeys-setServerCertificate.html: * media/encrypted-media/mock-MediaKeySession-generateRequest.html: * media/encrypted-media/mock-MediaKeySystemAccess.html: * media/encrypted-media/mock-navigator-requestMediaKeySystemAccess.html: * media/video-test.js: (shouldResolve): (shouldReject): * platform/mac/TestExpectations: Canonical link: https://commits.webkit.org/184000@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210555 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-01-10 20:09:21 +00:00
shouldResolve(promise).then(gotMediaKeySystemAccess, failTest);
Add support for MediaKeySystemAccess.createMediaKeys() https://bugs.webkit.org/show_bug.cgi?id=166749 Reviewed by Eric Carlson. Source/WebCore: Test: media/encrypted-media/mock-MediaKeySystemAccess.html Implement MediaKeySystemAccess::createMediaKeys(). This requires some additions to CDM, CDMPrivate, and a new interface CDMInstance to support eventual platform adoption and to implement mock support for testing. * Modules/encryptedmedia/CDM.cpp: (WebCore::CDM::loadAndInitialize): (WebCore::CDM::createInstance): * Modules/encryptedmedia/CDM.h: * Modules/encryptedmedia/CDMInstance.h: (WebCore::CDMInstance::~CDMInstance): * Modules/encryptedmedia/CDMPrivate.h: * Modules/encryptedmedia/MediaKeySystemAccess.cpp: (WebCore::MediaKeySystemAccess::createMediaKeys): * Modules/encryptedmedia/MediaKeySystemAccess.h: * Modules/encryptedmedia/MediaKeys.cpp: (WebCore::MediaKeys::MediaKeys): * Modules/encryptedmedia/MediaKeys.h: (WebCore::MediaKeys::create): * Modules/encryptedmedia/MediaKeys.idl: * Modules/encryptedmedia/NavigatorEME.cpp: (WebCore::tryNextSupportedConfiguration): * WebCore.xcodeproj/project.pbxproj: * testing/MockCDMFactory.cpp: (WebCore::MockCDM::MockCDM): (WebCore::MockCDM::createInstance): (WebCore::MockCDM::loadAndInitialize): (WebCore::MockCDMInstance::MockCDMInstance): (WebCore::MockCDMInstance::initializeWithConfiguration): (WebCore::MockCDMInstance::setDistinctiveIdentifiersAllowed): (WebCore::MockCDMInstance::setPersistentStateAllowed): * testing/MockCDMFactory.h: (WebCore::MockCDMFactory::canCreateInstances): (WebCore::MockCDMFactory::setCanCreateInstances): (WebCore::MockCDM::factory): * testing/MockCDMFactory.idl: LayoutTests: * media/encrypted-media/mock-MediaKeySystemAccess-expected.txt: Added. * media/encrypted-media/mock-MediaKeySystemAccess.html: Added. * platform/mac/TestExpectations: Canonical link: https://commits.webkit.org/183902@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210445 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-01-06 18:48:29 +00:00
},
function() {
run('promise = mediaKeySystemAccess.createMediaKeys()');
Add support for MediaKeys.generateRequest(). https://bugs.webkit.org/show_bug.cgi?id=166880 Reviewed by Xabier Rodriguez-Calvar. Source/WebCore: Test: media/encrypted-media/mock-MediaKeySession-generateRequest.html Implement MediaKeySession::generateRequest(). This requires some additions to CDM, CDMPrivate, and CDMInstance to support platform adoption and to implement mock support for testing. Additionally, add an InitDataRegistry object which can sanitize and extract key data from various initData types. (At the moment, only the "keyids" initData type is implemented.) Drive-by fixes: Change all instances of initDataType from String -> AtomicString. Add "const" flags to all CDMPrivate methods that might be called from a const reference. * CMakeLists.txt: * Modules/encryptedmedia/CDM.cpp: (WebCore::CDM::supportsInitDataType): (WebCore::CDM::sanitizeInitData): (WebCore::CDM::supportsInitData): * Modules/encryptedmedia/CDM.h: * Modules/encryptedmedia/CDMInstance.h: * Modules/encryptedmedia/CDMPrivate.h: * Modules/encryptedmedia/InitDataRegistry.cpp: Added. (WebCore::extractKeyIDsKeyids): (WebCore::sanitizeKeyids): (WebCore::sanitizeCenc): (WebCore::extractKeyIDsCenc): (WebCore::sanitizeWebM): (WebCore::extractKeyIDsWebM): (WebCore::InitDataRegistry::shared): (WebCore::InitDataRegistry::InitDataRegistry): (WebCore::InitDataRegistry::sanitizeInitData): (WebCore::InitDataRegistry::extractKeyIDs): (WebCore::InitDataRegistry::registerInitDataType): * Modules/encryptedmedia/InitDataRegistry.h: * Modules/encryptedmedia/MediaKeySession.cpp: (WebCore::messageEventName): (WebCore::MediaKeySession::MediaKeySession): (WebCore::MediaKeySession::generateRequest): (WebCore::MediaKeySession::enqueueMessage): * Modules/encryptedmedia/MediaKeySession.h: * Modules/encryptedmedia/MediaKeys.cpp: (WebCore::MediaKeys::setServerCertificate): * WebCore.xcodeproj/project.pbxproj: * testing/MockCDMFactory.cpp: (WebCore::MockCDMFactory::addKeysToSessionWithID): (WebCore::MockCDMFactory::setSupportedDataTypes): (WebCore::MockCDM::supportsInitDataType): (WebCore::MockCDM::supportsConfiguration): (WebCore::MockCDM::supportsConfigurationWithRestrictions): (WebCore::MockCDM::supportsSessionTypeWithConfiguration): (WebCore::MockCDM::supportsRobustness): (WebCore::MockCDM::distinctiveIdentifiersRequirement): (WebCore::MockCDM::persistentStateRequirement): (WebCore::MockCDM::distinctiveIdentifiersAreUniquePerOriginAndClearable): (WebCore::MockCDM::supportsInitData): (WebCore::MockCDMInstance::setServerCertificate): (WebCore::MockCDMInstance::requestLicense): * testing/MockCDMFactory.h: (WebCore::MockCDMFactory::supportedDataTypes): (WebCore::MockCDMFactory::hasSessionWithID): (WebCore::MockCDMFactory::removeSessionWithID): (WebCore::MockCDMFactory::setSupportedDataTypes): Deleted. LayoutTests: Add shouldResolve() and shouldReject() to video-test.js and update existing tests to use these new functions. * media/encrypted-media/mock-MediaKeys-createSession-expected.txt: Added. * media/encrypted-media/mock-MediaKeys-createSession.html: Added. * media/encrypted-media/mock-MediaKeys-setServerCertificate.html: * media/encrypted-media/mock-MediaKeySession-generateRequest.html: * media/encrypted-media/mock-MediaKeySystemAccess.html: * media/encrypted-media/mock-navigator-requestMediaKeySystemAccess.html: * media/video-test.js: (shouldResolve): (shouldReject): * platform/mac/TestExpectations: Canonical link: https://commits.webkit.org/184000@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210555 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-01-10 20:09:21 +00:00
shouldResolve(promise).then(next, next);
Add support for MediaKeySystemAccess.createMediaKeys() https://bugs.webkit.org/show_bug.cgi?id=166749 Reviewed by Eric Carlson. Source/WebCore: Test: media/encrypted-media/mock-MediaKeySystemAccess.html Implement MediaKeySystemAccess::createMediaKeys(). This requires some additions to CDM, CDMPrivate, and a new interface CDMInstance to support eventual platform adoption and to implement mock support for testing. * Modules/encryptedmedia/CDM.cpp: (WebCore::CDM::loadAndInitialize): (WebCore::CDM::createInstance): * Modules/encryptedmedia/CDM.h: * Modules/encryptedmedia/CDMInstance.h: (WebCore::CDMInstance::~CDMInstance): * Modules/encryptedmedia/CDMPrivate.h: * Modules/encryptedmedia/MediaKeySystemAccess.cpp: (WebCore::MediaKeySystemAccess::createMediaKeys): * Modules/encryptedmedia/MediaKeySystemAccess.h: * Modules/encryptedmedia/MediaKeys.cpp: (WebCore::MediaKeys::MediaKeys): * Modules/encryptedmedia/MediaKeys.h: (WebCore::MediaKeys::create): * Modules/encryptedmedia/MediaKeys.idl: * Modules/encryptedmedia/NavigatorEME.cpp: (WebCore::tryNextSupportedConfiguration): * WebCore.xcodeproj/project.pbxproj: * testing/MockCDMFactory.cpp: (WebCore::MockCDM::MockCDM): (WebCore::MockCDM::createInstance): (WebCore::MockCDM::loadAndInitialize): (WebCore::MockCDMInstance::MockCDMInstance): (WebCore::MockCDMInstance::initializeWithConfiguration): (WebCore::MockCDMInstance::setDistinctiveIdentifiersAllowed): (WebCore::MockCDMInstance::setPersistentStateAllowed): * testing/MockCDMFactory.h: (WebCore::MockCDMFactory::canCreateInstances): (WebCore::MockCDMFactory::setCanCreateInstances): (WebCore::MockCDM::factory): * testing/MockCDMFactory.idl: LayoutTests: * media/encrypted-media/mock-MediaKeySystemAccess-expected.txt: Added. * media/encrypted-media/mock-MediaKeySystemAccess.html: Added. * platform/mac/TestExpectations: Canonical link: https://commits.webkit.org/183902@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210445 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-01-06 18:48:29 +00:00
},
function() {
run('mock.canCreateInstances = false');
run('promise = mediaKeySystemAccess.createMediaKeys()');
Add support for MediaKeys.generateRequest(). https://bugs.webkit.org/show_bug.cgi?id=166880 Reviewed by Xabier Rodriguez-Calvar. Source/WebCore: Test: media/encrypted-media/mock-MediaKeySession-generateRequest.html Implement MediaKeySession::generateRequest(). This requires some additions to CDM, CDMPrivate, and CDMInstance to support platform adoption and to implement mock support for testing. Additionally, add an InitDataRegistry object which can sanitize and extract key data from various initData types. (At the moment, only the "keyids" initData type is implemented.) Drive-by fixes: Change all instances of initDataType from String -> AtomicString. Add "const" flags to all CDMPrivate methods that might be called from a const reference. * CMakeLists.txt: * Modules/encryptedmedia/CDM.cpp: (WebCore::CDM::supportsInitDataType): (WebCore::CDM::sanitizeInitData): (WebCore::CDM::supportsInitData): * Modules/encryptedmedia/CDM.h: * Modules/encryptedmedia/CDMInstance.h: * Modules/encryptedmedia/CDMPrivate.h: * Modules/encryptedmedia/InitDataRegistry.cpp: Added. (WebCore::extractKeyIDsKeyids): (WebCore::sanitizeKeyids): (WebCore::sanitizeCenc): (WebCore::extractKeyIDsCenc): (WebCore::sanitizeWebM): (WebCore::extractKeyIDsWebM): (WebCore::InitDataRegistry::shared): (WebCore::InitDataRegistry::InitDataRegistry): (WebCore::InitDataRegistry::sanitizeInitData): (WebCore::InitDataRegistry::extractKeyIDs): (WebCore::InitDataRegistry::registerInitDataType): * Modules/encryptedmedia/InitDataRegistry.h: * Modules/encryptedmedia/MediaKeySession.cpp: (WebCore::messageEventName): (WebCore::MediaKeySession::MediaKeySession): (WebCore::MediaKeySession::generateRequest): (WebCore::MediaKeySession::enqueueMessage): * Modules/encryptedmedia/MediaKeySession.h: * Modules/encryptedmedia/MediaKeys.cpp: (WebCore::MediaKeys::setServerCertificate): * WebCore.xcodeproj/project.pbxproj: * testing/MockCDMFactory.cpp: (WebCore::MockCDMFactory::addKeysToSessionWithID): (WebCore::MockCDMFactory::setSupportedDataTypes): (WebCore::MockCDM::supportsInitDataType): (WebCore::MockCDM::supportsConfiguration): (WebCore::MockCDM::supportsConfigurationWithRestrictions): (WebCore::MockCDM::supportsSessionTypeWithConfiguration): (WebCore::MockCDM::supportsRobustness): (WebCore::MockCDM::distinctiveIdentifiersRequirement): (WebCore::MockCDM::persistentStateRequirement): (WebCore::MockCDM::distinctiveIdentifiersAreUniquePerOriginAndClearable): (WebCore::MockCDM::supportsInitData): (WebCore::MockCDMInstance::setServerCertificate): (WebCore::MockCDMInstance::requestLicense): * testing/MockCDMFactory.h: (WebCore::MockCDMFactory::supportedDataTypes): (WebCore::MockCDMFactory::hasSessionWithID): (WebCore::MockCDMFactory::removeSessionWithID): (WebCore::MockCDMFactory::setSupportedDataTypes): Deleted. LayoutTests: Add shouldResolve() and shouldReject() to video-test.js and update existing tests to use these new functions. * media/encrypted-media/mock-MediaKeys-createSession-expected.txt: Added. * media/encrypted-media/mock-MediaKeys-createSession.html: Added. * media/encrypted-media/mock-MediaKeys-setServerCertificate.html: * media/encrypted-media/mock-MediaKeySession-generateRequest.html: * media/encrypted-media/mock-MediaKeySystemAccess.html: * media/encrypted-media/mock-navigator-requestMediaKeySystemAccess.html: * media/video-test.js: (shouldResolve): (shouldReject): * platform/mac/TestExpectations: Canonical link: https://commits.webkit.org/184000@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210555 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-01-10 20:09:21 +00:00
shouldReject(promise).then(next, next);
Add support for MediaKeySystemAccess.createMediaKeys() https://bugs.webkit.org/show_bug.cgi?id=166749 Reviewed by Eric Carlson. Source/WebCore: Test: media/encrypted-media/mock-MediaKeySystemAccess.html Implement MediaKeySystemAccess::createMediaKeys(). This requires some additions to CDM, CDMPrivate, and a new interface CDMInstance to support eventual platform adoption and to implement mock support for testing. * Modules/encryptedmedia/CDM.cpp: (WebCore::CDM::loadAndInitialize): (WebCore::CDM::createInstance): * Modules/encryptedmedia/CDM.h: * Modules/encryptedmedia/CDMInstance.h: (WebCore::CDMInstance::~CDMInstance): * Modules/encryptedmedia/CDMPrivate.h: * Modules/encryptedmedia/MediaKeySystemAccess.cpp: (WebCore::MediaKeySystemAccess::createMediaKeys): * Modules/encryptedmedia/MediaKeySystemAccess.h: * Modules/encryptedmedia/MediaKeys.cpp: (WebCore::MediaKeys::MediaKeys): * Modules/encryptedmedia/MediaKeys.h: (WebCore::MediaKeys::create): * Modules/encryptedmedia/MediaKeys.idl: * Modules/encryptedmedia/NavigatorEME.cpp: (WebCore::tryNextSupportedConfiguration): * WebCore.xcodeproj/project.pbxproj: * testing/MockCDMFactory.cpp: (WebCore::MockCDM::MockCDM): (WebCore::MockCDM::createInstance): (WebCore::MockCDM::loadAndInitialize): (WebCore::MockCDMInstance::MockCDMInstance): (WebCore::MockCDMInstance::initializeWithConfiguration): (WebCore::MockCDMInstance::setDistinctiveIdentifiersAllowed): (WebCore::MockCDMInstance::setPersistentStateAllowed): * testing/MockCDMFactory.h: (WebCore::MockCDMFactory::canCreateInstances): (WebCore::MockCDMFactory::setCanCreateInstances): (WebCore::MockCDM::factory): * testing/MockCDMFactory.idl: LayoutTests: * media/encrypted-media/mock-MediaKeySystemAccess-expected.txt: Added. * media/encrypted-media/mock-MediaKeySystemAccess.html: Added. * platform/mac/TestExpectations: Canonical link: https://commits.webkit.org/183902@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210445 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-01-06 18:48:29 +00:00
},
function() {
run('mock.canCreateInstances = true');
run('capabilities.distinctiveIdentifier = "not-allowed"');
run('promise = navigator.requestMediaKeySystemAccess("org.webkit.mock", [capabilities])');
Add support for MediaKeys.generateRequest(). https://bugs.webkit.org/show_bug.cgi?id=166880 Reviewed by Xabier Rodriguez-Calvar. Source/WebCore: Test: media/encrypted-media/mock-MediaKeySession-generateRequest.html Implement MediaKeySession::generateRequest(). This requires some additions to CDM, CDMPrivate, and CDMInstance to support platform adoption and to implement mock support for testing. Additionally, add an InitDataRegistry object which can sanitize and extract key data from various initData types. (At the moment, only the "keyids" initData type is implemented.) Drive-by fixes: Change all instances of initDataType from String -> AtomicString. Add "const" flags to all CDMPrivate methods that might be called from a const reference. * CMakeLists.txt: * Modules/encryptedmedia/CDM.cpp: (WebCore::CDM::supportsInitDataType): (WebCore::CDM::sanitizeInitData): (WebCore::CDM::supportsInitData): * Modules/encryptedmedia/CDM.h: * Modules/encryptedmedia/CDMInstance.h: * Modules/encryptedmedia/CDMPrivate.h: * Modules/encryptedmedia/InitDataRegistry.cpp: Added. (WebCore::extractKeyIDsKeyids): (WebCore::sanitizeKeyids): (WebCore::sanitizeCenc): (WebCore::extractKeyIDsCenc): (WebCore::sanitizeWebM): (WebCore::extractKeyIDsWebM): (WebCore::InitDataRegistry::shared): (WebCore::InitDataRegistry::InitDataRegistry): (WebCore::InitDataRegistry::sanitizeInitData): (WebCore::InitDataRegistry::extractKeyIDs): (WebCore::InitDataRegistry::registerInitDataType): * Modules/encryptedmedia/InitDataRegistry.h: * Modules/encryptedmedia/MediaKeySession.cpp: (WebCore::messageEventName): (WebCore::MediaKeySession::MediaKeySession): (WebCore::MediaKeySession::generateRequest): (WebCore::MediaKeySession::enqueueMessage): * Modules/encryptedmedia/MediaKeySession.h: * Modules/encryptedmedia/MediaKeys.cpp: (WebCore::MediaKeys::setServerCertificate): * WebCore.xcodeproj/project.pbxproj: * testing/MockCDMFactory.cpp: (WebCore::MockCDMFactory::addKeysToSessionWithID): (WebCore::MockCDMFactory::setSupportedDataTypes): (WebCore::MockCDM::supportsInitDataType): (WebCore::MockCDM::supportsConfiguration): (WebCore::MockCDM::supportsConfigurationWithRestrictions): (WebCore::MockCDM::supportsSessionTypeWithConfiguration): (WebCore::MockCDM::supportsRobustness): (WebCore::MockCDM::distinctiveIdentifiersRequirement): (WebCore::MockCDM::persistentStateRequirement): (WebCore::MockCDM::distinctiveIdentifiersAreUniquePerOriginAndClearable): (WebCore::MockCDM::supportsInitData): (WebCore::MockCDMInstance::setServerCertificate): (WebCore::MockCDMInstance::requestLicense): * testing/MockCDMFactory.h: (WebCore::MockCDMFactory::supportedDataTypes): (WebCore::MockCDMFactory::hasSessionWithID): (WebCore::MockCDMFactory::removeSessionWithID): (WebCore::MockCDMFactory::setSupportedDataTypes): Deleted. LayoutTests: Add shouldResolve() and shouldReject() to video-test.js and update existing tests to use these new functions. * media/encrypted-media/mock-MediaKeys-createSession-expected.txt: Added. * media/encrypted-media/mock-MediaKeys-createSession.html: Added. * media/encrypted-media/mock-MediaKeys-setServerCertificate.html: * media/encrypted-media/mock-MediaKeySession-generateRequest.html: * media/encrypted-media/mock-MediaKeySystemAccess.html: * media/encrypted-media/mock-navigator-requestMediaKeySystemAccess.html: * media/video-test.js: (shouldResolve): (shouldReject): * platform/mac/TestExpectations: Canonical link: https://commits.webkit.org/184000@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210555 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-01-10 20:09:21 +00:00
shouldResolve(promise).then(gotMediaKeySystemAccess, failTest);
Add support for MediaKeySystemAccess.createMediaKeys() https://bugs.webkit.org/show_bug.cgi?id=166749 Reviewed by Eric Carlson. Source/WebCore: Test: media/encrypted-media/mock-MediaKeySystemAccess.html Implement MediaKeySystemAccess::createMediaKeys(). This requires some additions to CDM, CDMPrivate, and a new interface CDMInstance to support eventual platform adoption and to implement mock support for testing. * Modules/encryptedmedia/CDM.cpp: (WebCore::CDM::loadAndInitialize): (WebCore::CDM::createInstance): * Modules/encryptedmedia/CDM.h: * Modules/encryptedmedia/CDMInstance.h: (WebCore::CDMInstance::~CDMInstance): * Modules/encryptedmedia/CDMPrivate.h: * Modules/encryptedmedia/MediaKeySystemAccess.cpp: (WebCore::MediaKeySystemAccess::createMediaKeys): * Modules/encryptedmedia/MediaKeySystemAccess.h: * Modules/encryptedmedia/MediaKeys.cpp: (WebCore::MediaKeys::MediaKeys): * Modules/encryptedmedia/MediaKeys.h: (WebCore::MediaKeys::create): * Modules/encryptedmedia/MediaKeys.idl: * Modules/encryptedmedia/NavigatorEME.cpp: (WebCore::tryNextSupportedConfiguration): * WebCore.xcodeproj/project.pbxproj: * testing/MockCDMFactory.cpp: (WebCore::MockCDM::MockCDM): (WebCore::MockCDM::createInstance): (WebCore::MockCDM::loadAndInitialize): (WebCore::MockCDMInstance::MockCDMInstance): (WebCore::MockCDMInstance::initializeWithConfiguration): (WebCore::MockCDMInstance::setDistinctiveIdentifiersAllowed): (WebCore::MockCDMInstance::setPersistentStateAllowed): * testing/MockCDMFactory.h: (WebCore::MockCDMFactory::canCreateInstances): (WebCore::MockCDMFactory::setCanCreateInstances): (WebCore::MockCDM::factory): * testing/MockCDMFactory.idl: LayoutTests: * media/encrypted-media/mock-MediaKeySystemAccess-expected.txt: Added. * media/encrypted-media/mock-MediaKeySystemAccess.html: Added. * platform/mac/TestExpectations: Canonical link: https://commits.webkit.org/183902@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210445 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-01-06 18:48:29 +00:00
},
function() {
run('promise = mediaKeySystemAccess.createMediaKeys()');
Add support for MediaKeys.generateRequest(). https://bugs.webkit.org/show_bug.cgi?id=166880 Reviewed by Xabier Rodriguez-Calvar. Source/WebCore: Test: media/encrypted-media/mock-MediaKeySession-generateRequest.html Implement MediaKeySession::generateRequest(). This requires some additions to CDM, CDMPrivate, and CDMInstance to support platform adoption and to implement mock support for testing. Additionally, add an InitDataRegistry object which can sanitize and extract key data from various initData types. (At the moment, only the "keyids" initData type is implemented.) Drive-by fixes: Change all instances of initDataType from String -> AtomicString. Add "const" flags to all CDMPrivate methods that might be called from a const reference. * CMakeLists.txt: * Modules/encryptedmedia/CDM.cpp: (WebCore::CDM::supportsInitDataType): (WebCore::CDM::sanitizeInitData): (WebCore::CDM::supportsInitData): * Modules/encryptedmedia/CDM.h: * Modules/encryptedmedia/CDMInstance.h: * Modules/encryptedmedia/CDMPrivate.h: * Modules/encryptedmedia/InitDataRegistry.cpp: Added. (WebCore::extractKeyIDsKeyids): (WebCore::sanitizeKeyids): (WebCore::sanitizeCenc): (WebCore::extractKeyIDsCenc): (WebCore::sanitizeWebM): (WebCore::extractKeyIDsWebM): (WebCore::InitDataRegistry::shared): (WebCore::InitDataRegistry::InitDataRegistry): (WebCore::InitDataRegistry::sanitizeInitData): (WebCore::InitDataRegistry::extractKeyIDs): (WebCore::InitDataRegistry::registerInitDataType): * Modules/encryptedmedia/InitDataRegistry.h: * Modules/encryptedmedia/MediaKeySession.cpp: (WebCore::messageEventName): (WebCore::MediaKeySession::MediaKeySession): (WebCore::MediaKeySession::generateRequest): (WebCore::MediaKeySession::enqueueMessage): * Modules/encryptedmedia/MediaKeySession.h: * Modules/encryptedmedia/MediaKeys.cpp: (WebCore::MediaKeys::setServerCertificate): * WebCore.xcodeproj/project.pbxproj: * testing/MockCDMFactory.cpp: (WebCore::MockCDMFactory::addKeysToSessionWithID): (WebCore::MockCDMFactory::setSupportedDataTypes): (WebCore::MockCDM::supportsInitDataType): (WebCore::MockCDM::supportsConfiguration): (WebCore::MockCDM::supportsConfigurationWithRestrictions): (WebCore::MockCDM::supportsSessionTypeWithConfiguration): (WebCore::MockCDM::supportsRobustness): (WebCore::MockCDM::distinctiveIdentifiersRequirement): (WebCore::MockCDM::persistentStateRequirement): (WebCore::MockCDM::distinctiveIdentifiersAreUniquePerOriginAndClearable): (WebCore::MockCDM::supportsInitData): (WebCore::MockCDMInstance::setServerCertificate): (WebCore::MockCDMInstance::requestLicense): * testing/MockCDMFactory.h: (WebCore::MockCDMFactory::supportedDataTypes): (WebCore::MockCDMFactory::hasSessionWithID): (WebCore::MockCDMFactory::removeSessionWithID): (WebCore::MockCDMFactory::setSupportedDataTypes): Deleted. LayoutTests: Add shouldResolve() and shouldReject() to video-test.js and update existing tests to use these new functions. * media/encrypted-media/mock-MediaKeys-createSession-expected.txt: Added. * media/encrypted-media/mock-MediaKeys-createSession.html: Added. * media/encrypted-media/mock-MediaKeys-setServerCertificate.html: * media/encrypted-media/mock-MediaKeySession-generateRequest.html: * media/encrypted-media/mock-MediaKeySystemAccess.html: * media/encrypted-media/mock-navigator-requestMediaKeySystemAccess.html: * media/video-test.js: (shouldResolve): (shouldReject): * platform/mac/TestExpectations: Canonical link: https://commits.webkit.org/184000@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210555 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-01-10 20:09:21 +00:00
shouldResolve(promise).then(next, next);
Add support for MediaKeySystemAccess.createMediaKeys() https://bugs.webkit.org/show_bug.cgi?id=166749 Reviewed by Eric Carlson. Source/WebCore: Test: media/encrypted-media/mock-MediaKeySystemAccess.html Implement MediaKeySystemAccess::createMediaKeys(). This requires some additions to CDM, CDMPrivate, and a new interface CDMInstance to support eventual platform adoption and to implement mock support for testing. * Modules/encryptedmedia/CDM.cpp: (WebCore::CDM::loadAndInitialize): (WebCore::CDM::createInstance): * Modules/encryptedmedia/CDM.h: * Modules/encryptedmedia/CDMInstance.h: (WebCore::CDMInstance::~CDMInstance): * Modules/encryptedmedia/CDMPrivate.h: * Modules/encryptedmedia/MediaKeySystemAccess.cpp: (WebCore::MediaKeySystemAccess::createMediaKeys): * Modules/encryptedmedia/MediaKeySystemAccess.h: * Modules/encryptedmedia/MediaKeys.cpp: (WebCore::MediaKeys::MediaKeys): * Modules/encryptedmedia/MediaKeys.h: (WebCore::MediaKeys::create): * Modules/encryptedmedia/MediaKeys.idl: * Modules/encryptedmedia/NavigatorEME.cpp: (WebCore::tryNextSupportedConfiguration): * WebCore.xcodeproj/project.pbxproj: * testing/MockCDMFactory.cpp: (WebCore::MockCDM::MockCDM): (WebCore::MockCDM::createInstance): (WebCore::MockCDM::loadAndInitialize): (WebCore::MockCDMInstance::MockCDMInstance): (WebCore::MockCDMInstance::initializeWithConfiguration): (WebCore::MockCDMInstance::setDistinctiveIdentifiersAllowed): (WebCore::MockCDMInstance::setPersistentStateAllowed): * testing/MockCDMFactory.h: (WebCore::MockCDMFactory::canCreateInstances): (WebCore::MockCDMFactory::setCanCreateInstances): (WebCore::MockCDM::factory): * testing/MockCDMFactory.idl: LayoutTests: * media/encrypted-media/mock-MediaKeySystemAccess-expected.txt: Added. * media/encrypted-media/mock-MediaKeySystemAccess.html: Added. * platform/mac/TestExpectations: Canonical link: https://commits.webkit.org/183902@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210445 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-01-06 18:48:29 +00:00
},
function() {
run('mock.distinctiveIdentifiersRequirement = "required"');
run('promise = mediaKeySystemAccess.createMediaKeys()');
Add support for MediaKeys.generateRequest(). https://bugs.webkit.org/show_bug.cgi?id=166880 Reviewed by Xabier Rodriguez-Calvar. Source/WebCore: Test: media/encrypted-media/mock-MediaKeySession-generateRequest.html Implement MediaKeySession::generateRequest(). This requires some additions to CDM, CDMPrivate, and CDMInstance to support platform adoption and to implement mock support for testing. Additionally, add an InitDataRegistry object which can sanitize and extract key data from various initData types. (At the moment, only the "keyids" initData type is implemented.) Drive-by fixes: Change all instances of initDataType from String -> AtomicString. Add "const" flags to all CDMPrivate methods that might be called from a const reference. * CMakeLists.txt: * Modules/encryptedmedia/CDM.cpp: (WebCore::CDM::supportsInitDataType): (WebCore::CDM::sanitizeInitData): (WebCore::CDM::supportsInitData): * Modules/encryptedmedia/CDM.h: * Modules/encryptedmedia/CDMInstance.h: * Modules/encryptedmedia/CDMPrivate.h: * Modules/encryptedmedia/InitDataRegistry.cpp: Added. (WebCore::extractKeyIDsKeyids): (WebCore::sanitizeKeyids): (WebCore::sanitizeCenc): (WebCore::extractKeyIDsCenc): (WebCore::sanitizeWebM): (WebCore::extractKeyIDsWebM): (WebCore::InitDataRegistry::shared): (WebCore::InitDataRegistry::InitDataRegistry): (WebCore::InitDataRegistry::sanitizeInitData): (WebCore::InitDataRegistry::extractKeyIDs): (WebCore::InitDataRegistry::registerInitDataType): * Modules/encryptedmedia/InitDataRegistry.h: * Modules/encryptedmedia/MediaKeySession.cpp: (WebCore::messageEventName): (WebCore::MediaKeySession::MediaKeySession): (WebCore::MediaKeySession::generateRequest): (WebCore::MediaKeySession::enqueueMessage): * Modules/encryptedmedia/MediaKeySession.h: * Modules/encryptedmedia/MediaKeys.cpp: (WebCore::MediaKeys::setServerCertificate): * WebCore.xcodeproj/project.pbxproj: * testing/MockCDMFactory.cpp: (WebCore::MockCDMFactory::addKeysToSessionWithID): (WebCore::MockCDMFactory::setSupportedDataTypes): (WebCore::MockCDM::supportsInitDataType): (WebCore::MockCDM::supportsConfiguration): (WebCore::MockCDM::supportsConfigurationWithRestrictions): (WebCore::MockCDM::supportsSessionTypeWithConfiguration): (WebCore::MockCDM::supportsRobustness): (WebCore::MockCDM::distinctiveIdentifiersRequirement): (WebCore::MockCDM::persistentStateRequirement): (WebCore::MockCDM::distinctiveIdentifiersAreUniquePerOriginAndClearable): (WebCore::MockCDM::supportsInitData): (WebCore::MockCDMInstance::setServerCertificate): (WebCore::MockCDMInstance::requestLicense): * testing/MockCDMFactory.h: (WebCore::MockCDMFactory::supportedDataTypes): (WebCore::MockCDMFactory::hasSessionWithID): (WebCore::MockCDMFactory::removeSessionWithID): (WebCore::MockCDMFactory::setSupportedDataTypes): Deleted. LayoutTests: Add shouldResolve() and shouldReject() to video-test.js and update existing tests to use these new functions. * media/encrypted-media/mock-MediaKeys-createSession-expected.txt: Added. * media/encrypted-media/mock-MediaKeys-createSession.html: Added. * media/encrypted-media/mock-MediaKeys-setServerCertificate.html: * media/encrypted-media/mock-MediaKeySession-generateRequest.html: * media/encrypted-media/mock-MediaKeySystemAccess.html: * media/encrypted-media/mock-navigator-requestMediaKeySystemAccess.html: * media/video-test.js: (shouldResolve): (shouldReject): * platform/mac/TestExpectations: Canonical link: https://commits.webkit.org/184000@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210555 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-01-10 20:09:21 +00:00
shouldReject(promise).then(next, next);
Add support for MediaKeySystemAccess.createMediaKeys() https://bugs.webkit.org/show_bug.cgi?id=166749 Reviewed by Eric Carlson. Source/WebCore: Test: media/encrypted-media/mock-MediaKeySystemAccess.html Implement MediaKeySystemAccess::createMediaKeys(). This requires some additions to CDM, CDMPrivate, and a new interface CDMInstance to support eventual platform adoption and to implement mock support for testing. * Modules/encryptedmedia/CDM.cpp: (WebCore::CDM::loadAndInitialize): (WebCore::CDM::createInstance): * Modules/encryptedmedia/CDM.h: * Modules/encryptedmedia/CDMInstance.h: (WebCore::CDMInstance::~CDMInstance): * Modules/encryptedmedia/CDMPrivate.h: * Modules/encryptedmedia/MediaKeySystemAccess.cpp: (WebCore::MediaKeySystemAccess::createMediaKeys): * Modules/encryptedmedia/MediaKeySystemAccess.h: * Modules/encryptedmedia/MediaKeys.cpp: (WebCore::MediaKeys::MediaKeys): * Modules/encryptedmedia/MediaKeys.h: (WebCore::MediaKeys::create): * Modules/encryptedmedia/MediaKeys.idl: * Modules/encryptedmedia/NavigatorEME.cpp: (WebCore::tryNextSupportedConfiguration): * WebCore.xcodeproj/project.pbxproj: * testing/MockCDMFactory.cpp: (WebCore::MockCDM::MockCDM): (WebCore::MockCDM::createInstance): (WebCore::MockCDM::loadAndInitialize): (WebCore::MockCDMInstance::MockCDMInstance): (WebCore::MockCDMInstance::initializeWithConfiguration): (WebCore::MockCDMInstance::setDistinctiveIdentifiersAllowed): (WebCore::MockCDMInstance::setPersistentStateAllowed): * testing/MockCDMFactory.h: (WebCore::MockCDMFactory::canCreateInstances): (WebCore::MockCDMFactory::setCanCreateInstances): (WebCore::MockCDM::factory): * testing/MockCDMFactory.idl: LayoutTests: * media/encrypted-media/mock-MediaKeySystemAccess-expected.txt: Added. * media/encrypted-media/mock-MediaKeySystemAccess.html: Added. * platform/mac/TestExpectations: Canonical link: https://commits.webkit.org/183902@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210445 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-01-06 18:48:29 +00:00
},
function() {
run('mock.distinctiveIdentifiersRequirement = "optional"');
run('capabilities.persistentState = "not-allowed"');
run('promise = navigator.requestMediaKeySystemAccess("org.webkit.mock", [capabilities])');
Add support for MediaKeys.generateRequest(). https://bugs.webkit.org/show_bug.cgi?id=166880 Reviewed by Xabier Rodriguez-Calvar. Source/WebCore: Test: media/encrypted-media/mock-MediaKeySession-generateRequest.html Implement MediaKeySession::generateRequest(). This requires some additions to CDM, CDMPrivate, and CDMInstance to support platform adoption and to implement mock support for testing. Additionally, add an InitDataRegistry object which can sanitize and extract key data from various initData types. (At the moment, only the "keyids" initData type is implemented.) Drive-by fixes: Change all instances of initDataType from String -> AtomicString. Add "const" flags to all CDMPrivate methods that might be called from a const reference. * CMakeLists.txt: * Modules/encryptedmedia/CDM.cpp: (WebCore::CDM::supportsInitDataType): (WebCore::CDM::sanitizeInitData): (WebCore::CDM::supportsInitData): * Modules/encryptedmedia/CDM.h: * Modules/encryptedmedia/CDMInstance.h: * Modules/encryptedmedia/CDMPrivate.h: * Modules/encryptedmedia/InitDataRegistry.cpp: Added. (WebCore::extractKeyIDsKeyids): (WebCore::sanitizeKeyids): (WebCore::sanitizeCenc): (WebCore::extractKeyIDsCenc): (WebCore::sanitizeWebM): (WebCore::extractKeyIDsWebM): (WebCore::InitDataRegistry::shared): (WebCore::InitDataRegistry::InitDataRegistry): (WebCore::InitDataRegistry::sanitizeInitData): (WebCore::InitDataRegistry::extractKeyIDs): (WebCore::InitDataRegistry::registerInitDataType): * Modules/encryptedmedia/InitDataRegistry.h: * Modules/encryptedmedia/MediaKeySession.cpp: (WebCore::messageEventName): (WebCore::MediaKeySession::MediaKeySession): (WebCore::MediaKeySession::generateRequest): (WebCore::MediaKeySession::enqueueMessage): * Modules/encryptedmedia/MediaKeySession.h: * Modules/encryptedmedia/MediaKeys.cpp: (WebCore::MediaKeys::setServerCertificate): * WebCore.xcodeproj/project.pbxproj: * testing/MockCDMFactory.cpp: (WebCore::MockCDMFactory::addKeysToSessionWithID): (WebCore::MockCDMFactory::setSupportedDataTypes): (WebCore::MockCDM::supportsInitDataType): (WebCore::MockCDM::supportsConfiguration): (WebCore::MockCDM::supportsConfigurationWithRestrictions): (WebCore::MockCDM::supportsSessionTypeWithConfiguration): (WebCore::MockCDM::supportsRobustness): (WebCore::MockCDM::distinctiveIdentifiersRequirement): (WebCore::MockCDM::persistentStateRequirement): (WebCore::MockCDM::distinctiveIdentifiersAreUniquePerOriginAndClearable): (WebCore::MockCDM::supportsInitData): (WebCore::MockCDMInstance::setServerCertificate): (WebCore::MockCDMInstance::requestLicense): * testing/MockCDMFactory.h: (WebCore::MockCDMFactory::supportedDataTypes): (WebCore::MockCDMFactory::hasSessionWithID): (WebCore::MockCDMFactory::removeSessionWithID): (WebCore::MockCDMFactory::setSupportedDataTypes): Deleted. LayoutTests: Add shouldResolve() and shouldReject() to video-test.js and update existing tests to use these new functions. * media/encrypted-media/mock-MediaKeys-createSession-expected.txt: Added. * media/encrypted-media/mock-MediaKeys-createSession.html: Added. * media/encrypted-media/mock-MediaKeys-setServerCertificate.html: * media/encrypted-media/mock-MediaKeySession-generateRequest.html: * media/encrypted-media/mock-MediaKeySystemAccess.html: * media/encrypted-media/mock-navigator-requestMediaKeySystemAccess.html: * media/video-test.js: (shouldResolve): (shouldReject): * platform/mac/TestExpectations: Canonical link: https://commits.webkit.org/184000@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210555 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-01-10 20:09:21 +00:00
shouldResolve(promise).then(gotMediaKeySystemAccess, failTest);
Add support for MediaKeySystemAccess.createMediaKeys() https://bugs.webkit.org/show_bug.cgi?id=166749 Reviewed by Eric Carlson. Source/WebCore: Test: media/encrypted-media/mock-MediaKeySystemAccess.html Implement MediaKeySystemAccess::createMediaKeys(). This requires some additions to CDM, CDMPrivate, and a new interface CDMInstance to support eventual platform adoption and to implement mock support for testing. * Modules/encryptedmedia/CDM.cpp: (WebCore::CDM::loadAndInitialize): (WebCore::CDM::createInstance): * Modules/encryptedmedia/CDM.h: * Modules/encryptedmedia/CDMInstance.h: (WebCore::CDMInstance::~CDMInstance): * Modules/encryptedmedia/CDMPrivate.h: * Modules/encryptedmedia/MediaKeySystemAccess.cpp: (WebCore::MediaKeySystemAccess::createMediaKeys): * Modules/encryptedmedia/MediaKeySystemAccess.h: * Modules/encryptedmedia/MediaKeys.cpp: (WebCore::MediaKeys::MediaKeys): * Modules/encryptedmedia/MediaKeys.h: (WebCore::MediaKeys::create): * Modules/encryptedmedia/MediaKeys.idl: * Modules/encryptedmedia/NavigatorEME.cpp: (WebCore::tryNextSupportedConfiguration): * WebCore.xcodeproj/project.pbxproj: * testing/MockCDMFactory.cpp: (WebCore::MockCDM::MockCDM): (WebCore::MockCDM::createInstance): (WebCore::MockCDM::loadAndInitialize): (WebCore::MockCDMInstance::MockCDMInstance): (WebCore::MockCDMInstance::initializeWithConfiguration): (WebCore::MockCDMInstance::setDistinctiveIdentifiersAllowed): (WebCore::MockCDMInstance::setPersistentStateAllowed): * testing/MockCDMFactory.h: (WebCore::MockCDMFactory::canCreateInstances): (WebCore::MockCDMFactory::setCanCreateInstances): (WebCore::MockCDM::factory): * testing/MockCDMFactory.idl: LayoutTests: * media/encrypted-media/mock-MediaKeySystemAccess-expected.txt: Added. * media/encrypted-media/mock-MediaKeySystemAccess.html: Added. * platform/mac/TestExpectations: Canonical link: https://commits.webkit.org/183902@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210445 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-01-06 18:48:29 +00:00
},
function() {
Permission request API for MediaKeySystem access support https://bugs.webkit.org/show_bug.cgi?id=221187 Reviewed by Jer Noble. Source/WebCore: Support for user permission requesting when access to an EME MediaKeySystem is being requested by the page. This is similar to the mediaDevices access guards. Existing test media/encrypted-media/mock-MediaKeySystemAccess.html was updated to cover this new code path and WPE/GTK API tests as well. * CMakeLists.txt: * Headers.cmake: * Modules/encryptedmedia/MediaKeySystemClient.h: Added. * Modules/encryptedmedia/MediaKeySystemController.cpp: Added. (WebCore::MediaKeySystemController::supplementName): (WebCore::MediaKeySystemController::MediaKeySystemController): (WebCore::MediaKeySystemController::~MediaKeySystemController): (WebCore::provideMediaKeySystemTo): (WebCore::MediaKeySystemController::logRequestMediaKeySystemDenial): * Modules/encryptedmedia/MediaKeySystemController.h: Added. (WebCore::MediaKeySystemController::client const): (WebCore::MediaKeySystemController::from): (WebCore::MediaKeySystemController::requestMediaKeySystem): (WebCore::MediaKeySystemController::cancelMediaKeySystemRequest): * Modules/encryptedmedia/MediaKeySystemRequest.cpp: Added. (WebCore::MediaKeySystemRequest::create): (WebCore::MediaKeySystemRequest::MediaKeySystemRequest): (WebCore::MediaKeySystemRequest::~MediaKeySystemRequest): (WebCore::MediaKeySystemRequest::topLevelDocumentOrigin const): (WebCore::MediaKeySystemRequest::start): (WebCore::MediaKeySystemRequest::allow): (WebCore::MediaKeySystemRequest::deny): (WebCore::MediaKeySystemRequest::stop): (WebCore::MediaKeySystemRequest::activeDOMObjectName const): (WebCore::MediaKeySystemRequest::document const): * Modules/encryptedmedia/MediaKeySystemRequest.h: Added. (WebCore::MediaKeySystemRequest::setAllowCallback): (WebCore::MediaKeySystemRequest::identifier const): (WebCore::MediaKeySystemRequest::keySystem const): * Modules/encryptedmedia/NavigatorEME.cpp: (WebCore::NavigatorEME::requestMediaKeySystemAccess): Source/WebKit: Add new IPC and C API exposing MediaKeySystem access permissions to the UIProcess. At least GTK/WPE would like to have API for asking permission to the user when EME's MediaKeyAccess is being requested by a page. On Apple platforms the permission is granted by default until a decision is made about supporting this in their APIUIClient. * CMakeLists.txt: * Headers.cmake: * Platform/Logging.h: * Shared/API/APIObject.h: * Shared/API/c/WKBase.h: * Sources.txt: * UIProcess/API/APIUIClient.h: (API::UIClient::decidePolicyForMediaKeySystemPermissionRequest): * UIProcess/API/C/WKAPICast.h: * UIProcess/API/C/WKMediaKeySystemPermissionCallback.cpp: Added. (WKMediaKeySystemPermissionCallbackGetTypeID): (WKMediaKeySystemPermissionCallbackComplete): * UIProcess/API/C/WKMediaKeySystemPermissionCallback.h: Added. * UIProcess/API/C/WKPage.cpp: (WKPageSetPageUIClient): * UIProcess/API/C/WKPageUIClient.h: * UIProcess/MediaKeySystemPermissionRequest.h: Added. (WebKit::MediaKeySystemPermissionRequest::create): (WebKit::MediaKeySystemPermissionRequest::complete): (WebKit::MediaKeySystemPermissionRequest::keySystem const): (WebKit::MediaKeySystemPermissionRequest::MediaKeySystemPermissionRequest): (WebKit::MediaKeySystemPermissionCallback::create): (WebKit::MediaKeySystemPermissionCallback::complete): (WebKit::MediaKeySystemPermissionCallback::MediaKeySystemPermissionCallback): * UIProcess/MediaKeySystemPermissionRequestManagerProxy.cpp: Added. (WebKit::MediaKeySystemPermissionRequestManagerProxy::MediaKeySystemPermissionRequestManagerProxy): (WebKit::MediaKeySystemPermissionRequestManagerProxy::~MediaKeySystemPermissionRequestManagerProxy): (WebKit::MediaKeySystemPermissionRequestManagerProxy::invalidatePendingRequests): (WebKit::MediaKeySystemPermissionRequestManagerProxy::denyRequest): (WebKit::MediaKeySystemPermissionRequestManagerProxy::grantRequest): (WebKit::MediaKeySystemPermissionRequestManagerProxy::createRequestForFrame): (WebKit::MediaKeySystemPermissionRequestManagerProxy::logChannel const): (WebKit::MediaKeySystemPermissionRequestManagerProxy::logger const): * UIProcess/MediaKeySystemPermissionRequestManagerProxy.h: Added. (WebKit::MediaKeySystemPermissionRequestManagerProxy::page const): (WebKit::MediaKeySystemPermissionRequestManagerProxy::denyRequest): * UIProcess/MediaKeySystemPermissionRequestProxy.cpp: Added. (WebKit::MediaKeySystemPermissionRequestProxy::MediaKeySystemPermissionRequestProxy): (WebKit::MediaKeySystemPermissionRequestProxy::allow): (WebKit::MediaKeySystemPermissionRequestProxy::deny): (WebKit::MediaKeySystemPermissionRequestProxy::invalidate): (WebKit::MediaKeySystemPermissionRequestProxy::doDefaultAction): * UIProcess/MediaKeySystemPermissionRequestProxy.h: Added. (WebKit::MediaKeySystemPermissionRequestProxy::create): (WebKit::MediaKeySystemPermissionRequestProxy::isPending const): (WebKit::MediaKeySystemPermissionRequestProxy::mediaKeySystemID const): (WebKit::MediaKeySystemPermissionRequestProxy::mainFrameID const): (WebKit::MediaKeySystemPermissionRequestProxy::frameID const): (WebKit::MediaKeySystemPermissionRequestProxy::topLevelDocumentSecurityOrigin): (WebKit::MediaKeySystemPermissionRequestProxy::topLevelDocumentSecurityOrigin const): (WebKit::MediaKeySystemPermissionRequestProxy::keySystem const): * UIProcess/SpeechRecognitionRemoteRealtimeMediaSource.h: * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::requestMediaKeySystemPermissionForFrame): (WebKit::WebPageProxy::mediaKeySystemPermissionRequestManager): (WebKit::WebPageProxy::requestMediaKeySystemPermissionByDefaultAction): * UIProcess/WebPageProxy.h: * UIProcess/WebPageProxy.messages.in: * WebProcess/EncryptedMedia/MediaKeySystemPermissionRequestManager.cpp: Added. (WebKit::MediaKeySystemPermissionRequestManager::MediaKeySystemPermissionRequestManager): (WebKit::MediaKeySystemPermissionRequestManager::startMediaKeySystemRequest): (WebKit::MediaKeySystemPermissionRequestManager::sendMediaKeySystemRequest): (WebKit::MediaKeySystemPermissionRequestManager::cancelMediaKeySystemRequest): (WebKit::MediaKeySystemPermissionRequestManager::mediaKeySystemWasGranted): (WebKit::MediaKeySystemPermissionRequestManager::mediaKeySystemWasDenied): * WebProcess/EncryptedMedia/MediaKeySystemPermissionRequestManager.h: Added. * WebProcess/WebCoreSupport/WebMediaKeySystemClient.cpp: Added. (WebKit::WebMediaKeySystemClient::WebMediaKeySystemClient): (WebKit::WebMediaKeySystemClient::pageDestroyed): (WebKit::WebMediaKeySystemClient::requestMediaKeySystem): (WebKit::WebMediaKeySystemClient::cancelMediaKeySystemRequest): * WebProcess/WebCoreSupport/WebMediaKeySystemClient.h: Added. (WebKit::WebMediaKeySystemClient::~WebMediaKeySystemClient): * WebProcess/WebPage/WebPage.cpp: (WebKit::m_limitsNavigationsToAppBoundDomains): (WebKit::WebPage::mediaKeySystemWasGranted): (WebKit::WebPage::mediaKeySystemWasDenied): * WebProcess/WebPage/WebPage.h: (WebKit::WebPage::mediaKeySystemPermissionRequestManager): * WebProcess/WebPage/WebPage.messages.in: Tools: Add support for setting the permission request response from the TestRunner, for usage within layout tests. * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl: * WebKitTestRunner/InjectedBundle/TestRunner.cpp: (WTR::TestRunner::setIsMediaKeySystemPermissionGranted): * WebKitTestRunner/InjectedBundle/TestRunner.h: * WebKitTestRunner/TestController.cpp: (WTR::decidePolicyForMediaKeySystemPermissionRequest): (WTR::TestController::completeMediaKeySystemPermissionCheck): (WTR::TestController::setIsMediaKeySystemPermissionGranted): (WTR::TestController::createWebViewWithOptions): * WebKitTestRunner/TestController.h: * WebKitTestRunner/TestInvocation.cpp: (WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle): LayoutTests: Add basic coverage support for overriding the MediaKeySystem permission answer and thus have the promise rejection tested in this case. * media/encrypted-media/mock-MediaKeySystemAccess-expected.txt: * media/encrypted-media/mock-MediaKeySystemAccess.html: Canonical link: https://commits.webkit.org/233794@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@272480 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2021-02-08 08:37:31 +00:00
run('testRunner.setIsMediaKeySystemPermissionGranted(false)');
run('promise = navigator.requestMediaKeySystemAccess("org.webkit.mock", [capabilities])');
shouldReject(promise).then(next, next);
},
function() {
testRunner.setIsMediaKeySystemPermissionGranted(true);
Add support for MediaKeySystemAccess.createMediaKeys() https://bugs.webkit.org/show_bug.cgi?id=166749 Reviewed by Eric Carlson. Source/WebCore: Test: media/encrypted-media/mock-MediaKeySystemAccess.html Implement MediaKeySystemAccess::createMediaKeys(). This requires some additions to CDM, CDMPrivate, and a new interface CDMInstance to support eventual platform adoption and to implement mock support for testing. * Modules/encryptedmedia/CDM.cpp: (WebCore::CDM::loadAndInitialize): (WebCore::CDM::createInstance): * Modules/encryptedmedia/CDM.h: * Modules/encryptedmedia/CDMInstance.h: (WebCore::CDMInstance::~CDMInstance): * Modules/encryptedmedia/CDMPrivate.h: * Modules/encryptedmedia/MediaKeySystemAccess.cpp: (WebCore::MediaKeySystemAccess::createMediaKeys): * Modules/encryptedmedia/MediaKeySystemAccess.h: * Modules/encryptedmedia/MediaKeys.cpp: (WebCore::MediaKeys::MediaKeys): * Modules/encryptedmedia/MediaKeys.h: (WebCore::MediaKeys::create): * Modules/encryptedmedia/MediaKeys.idl: * Modules/encryptedmedia/NavigatorEME.cpp: (WebCore::tryNextSupportedConfiguration): * WebCore.xcodeproj/project.pbxproj: * testing/MockCDMFactory.cpp: (WebCore::MockCDM::MockCDM): (WebCore::MockCDM::createInstance): (WebCore::MockCDM::loadAndInitialize): (WebCore::MockCDMInstance::MockCDMInstance): (WebCore::MockCDMInstance::initializeWithConfiguration): (WebCore::MockCDMInstance::setDistinctiveIdentifiersAllowed): (WebCore::MockCDMInstance::setPersistentStateAllowed): * testing/MockCDMFactory.h: (WebCore::MockCDMFactory::canCreateInstances): (WebCore::MockCDMFactory::setCanCreateInstances): (WebCore::MockCDM::factory): * testing/MockCDMFactory.idl: LayoutTests: * media/encrypted-media/mock-MediaKeySystemAccess-expected.txt: Added. * media/encrypted-media/mock-MediaKeySystemAccess.html: Added. * platform/mac/TestExpectations: Canonical link: https://commits.webkit.org/183902@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210445 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-01-06 18:48:29 +00:00
run('promise = mediaKeySystemAccess.createMediaKeys()');
Add support for MediaKeys.generateRequest(). https://bugs.webkit.org/show_bug.cgi?id=166880 Reviewed by Xabier Rodriguez-Calvar. Source/WebCore: Test: media/encrypted-media/mock-MediaKeySession-generateRequest.html Implement MediaKeySession::generateRequest(). This requires some additions to CDM, CDMPrivate, and CDMInstance to support platform adoption and to implement mock support for testing. Additionally, add an InitDataRegistry object which can sanitize and extract key data from various initData types. (At the moment, only the "keyids" initData type is implemented.) Drive-by fixes: Change all instances of initDataType from String -> AtomicString. Add "const" flags to all CDMPrivate methods that might be called from a const reference. * CMakeLists.txt: * Modules/encryptedmedia/CDM.cpp: (WebCore::CDM::supportsInitDataType): (WebCore::CDM::sanitizeInitData): (WebCore::CDM::supportsInitData): * Modules/encryptedmedia/CDM.h: * Modules/encryptedmedia/CDMInstance.h: * Modules/encryptedmedia/CDMPrivate.h: * Modules/encryptedmedia/InitDataRegistry.cpp: Added. (WebCore::extractKeyIDsKeyids): (WebCore::sanitizeKeyids): (WebCore::sanitizeCenc): (WebCore::extractKeyIDsCenc): (WebCore::sanitizeWebM): (WebCore::extractKeyIDsWebM): (WebCore::InitDataRegistry::shared): (WebCore::InitDataRegistry::InitDataRegistry): (WebCore::InitDataRegistry::sanitizeInitData): (WebCore::InitDataRegistry::extractKeyIDs): (WebCore::InitDataRegistry::registerInitDataType): * Modules/encryptedmedia/InitDataRegistry.h: * Modules/encryptedmedia/MediaKeySession.cpp: (WebCore::messageEventName): (WebCore::MediaKeySession::MediaKeySession): (WebCore::MediaKeySession::generateRequest): (WebCore::MediaKeySession::enqueueMessage): * Modules/encryptedmedia/MediaKeySession.h: * Modules/encryptedmedia/MediaKeys.cpp: (WebCore::MediaKeys::setServerCertificate): * WebCore.xcodeproj/project.pbxproj: * testing/MockCDMFactory.cpp: (WebCore::MockCDMFactory::addKeysToSessionWithID): (WebCore::MockCDMFactory::setSupportedDataTypes): (WebCore::MockCDM::supportsInitDataType): (WebCore::MockCDM::supportsConfiguration): (WebCore::MockCDM::supportsConfigurationWithRestrictions): (WebCore::MockCDM::supportsSessionTypeWithConfiguration): (WebCore::MockCDM::supportsRobustness): (WebCore::MockCDM::distinctiveIdentifiersRequirement): (WebCore::MockCDM::persistentStateRequirement): (WebCore::MockCDM::distinctiveIdentifiersAreUniquePerOriginAndClearable): (WebCore::MockCDM::supportsInitData): (WebCore::MockCDMInstance::setServerCertificate): (WebCore::MockCDMInstance::requestLicense): * testing/MockCDMFactory.h: (WebCore::MockCDMFactory::supportedDataTypes): (WebCore::MockCDMFactory::hasSessionWithID): (WebCore::MockCDMFactory::removeSessionWithID): (WebCore::MockCDMFactory::setSupportedDataTypes): Deleted. LayoutTests: Add shouldResolve() and shouldReject() to video-test.js and update existing tests to use these new functions. * media/encrypted-media/mock-MediaKeys-createSession-expected.txt: Added. * media/encrypted-media/mock-MediaKeys-createSession.html: Added. * media/encrypted-media/mock-MediaKeys-setServerCertificate.html: * media/encrypted-media/mock-MediaKeySession-generateRequest.html: * media/encrypted-media/mock-MediaKeySystemAccess.html: * media/encrypted-media/mock-navigator-requestMediaKeySystemAccess.html: * media/video-test.js: (shouldResolve): (shouldReject): * platform/mac/TestExpectations: Canonical link: https://commits.webkit.org/184000@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210555 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-01-10 20:09:21 +00:00
shouldResolve(promise).then(next, next);
Add support for MediaKeySystemAccess.createMediaKeys() https://bugs.webkit.org/show_bug.cgi?id=166749 Reviewed by Eric Carlson. Source/WebCore: Test: media/encrypted-media/mock-MediaKeySystemAccess.html Implement MediaKeySystemAccess::createMediaKeys(). This requires some additions to CDM, CDMPrivate, and a new interface CDMInstance to support eventual platform adoption and to implement mock support for testing. * Modules/encryptedmedia/CDM.cpp: (WebCore::CDM::loadAndInitialize): (WebCore::CDM::createInstance): * Modules/encryptedmedia/CDM.h: * Modules/encryptedmedia/CDMInstance.h: (WebCore::CDMInstance::~CDMInstance): * Modules/encryptedmedia/CDMPrivate.h: * Modules/encryptedmedia/MediaKeySystemAccess.cpp: (WebCore::MediaKeySystemAccess::createMediaKeys): * Modules/encryptedmedia/MediaKeySystemAccess.h: * Modules/encryptedmedia/MediaKeys.cpp: (WebCore::MediaKeys::MediaKeys): * Modules/encryptedmedia/MediaKeys.h: (WebCore::MediaKeys::create): * Modules/encryptedmedia/MediaKeys.idl: * Modules/encryptedmedia/NavigatorEME.cpp: (WebCore::tryNextSupportedConfiguration): * WebCore.xcodeproj/project.pbxproj: * testing/MockCDMFactory.cpp: (WebCore::MockCDM::MockCDM): (WebCore::MockCDM::createInstance): (WebCore::MockCDM::loadAndInitialize): (WebCore::MockCDMInstance::MockCDMInstance): (WebCore::MockCDMInstance::initializeWithConfiguration): (WebCore::MockCDMInstance::setDistinctiveIdentifiersAllowed): (WebCore::MockCDMInstance::setPersistentStateAllowed): * testing/MockCDMFactory.h: (WebCore::MockCDMFactory::canCreateInstances): (WebCore::MockCDMFactory::setCanCreateInstances): (WebCore::MockCDM::factory): * testing/MockCDMFactory.idl: LayoutTests: * media/encrypted-media/mock-MediaKeySystemAccess-expected.txt: Added. * media/encrypted-media/mock-MediaKeySystemAccess.html: Added. * platform/mac/TestExpectations: Canonical link: https://commits.webkit.org/183902@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210445 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-01-06 18:48:29 +00:00
},
function() {
run('mock.persistentStateRequirement = "required"');
run('promise = mediaKeySystemAccess.createMediaKeys()');
Add support for MediaKeys.generateRequest(). https://bugs.webkit.org/show_bug.cgi?id=166880 Reviewed by Xabier Rodriguez-Calvar. Source/WebCore: Test: media/encrypted-media/mock-MediaKeySession-generateRequest.html Implement MediaKeySession::generateRequest(). This requires some additions to CDM, CDMPrivate, and CDMInstance to support platform adoption and to implement mock support for testing. Additionally, add an InitDataRegistry object which can sanitize and extract key data from various initData types. (At the moment, only the "keyids" initData type is implemented.) Drive-by fixes: Change all instances of initDataType from String -> AtomicString. Add "const" flags to all CDMPrivate methods that might be called from a const reference. * CMakeLists.txt: * Modules/encryptedmedia/CDM.cpp: (WebCore::CDM::supportsInitDataType): (WebCore::CDM::sanitizeInitData): (WebCore::CDM::supportsInitData): * Modules/encryptedmedia/CDM.h: * Modules/encryptedmedia/CDMInstance.h: * Modules/encryptedmedia/CDMPrivate.h: * Modules/encryptedmedia/InitDataRegistry.cpp: Added. (WebCore::extractKeyIDsKeyids): (WebCore::sanitizeKeyids): (WebCore::sanitizeCenc): (WebCore::extractKeyIDsCenc): (WebCore::sanitizeWebM): (WebCore::extractKeyIDsWebM): (WebCore::InitDataRegistry::shared): (WebCore::InitDataRegistry::InitDataRegistry): (WebCore::InitDataRegistry::sanitizeInitData): (WebCore::InitDataRegistry::extractKeyIDs): (WebCore::InitDataRegistry::registerInitDataType): * Modules/encryptedmedia/InitDataRegistry.h: * Modules/encryptedmedia/MediaKeySession.cpp: (WebCore::messageEventName): (WebCore::MediaKeySession::MediaKeySession): (WebCore::MediaKeySession::generateRequest): (WebCore::MediaKeySession::enqueueMessage): * Modules/encryptedmedia/MediaKeySession.h: * Modules/encryptedmedia/MediaKeys.cpp: (WebCore::MediaKeys::setServerCertificate): * WebCore.xcodeproj/project.pbxproj: * testing/MockCDMFactory.cpp: (WebCore::MockCDMFactory::addKeysToSessionWithID): (WebCore::MockCDMFactory::setSupportedDataTypes): (WebCore::MockCDM::supportsInitDataType): (WebCore::MockCDM::supportsConfiguration): (WebCore::MockCDM::supportsConfigurationWithRestrictions): (WebCore::MockCDM::supportsSessionTypeWithConfiguration): (WebCore::MockCDM::supportsRobustness): (WebCore::MockCDM::distinctiveIdentifiersRequirement): (WebCore::MockCDM::persistentStateRequirement): (WebCore::MockCDM::distinctiveIdentifiersAreUniquePerOriginAndClearable): (WebCore::MockCDM::supportsInitData): (WebCore::MockCDMInstance::setServerCertificate): (WebCore::MockCDMInstance::requestLicense): * testing/MockCDMFactory.h: (WebCore::MockCDMFactory::supportedDataTypes): (WebCore::MockCDMFactory::hasSessionWithID): (WebCore::MockCDMFactory::removeSessionWithID): (WebCore::MockCDMFactory::setSupportedDataTypes): Deleted. LayoutTests: Add shouldResolve() and shouldReject() to video-test.js and update existing tests to use these new functions. * media/encrypted-media/mock-MediaKeys-createSession-expected.txt: Added. * media/encrypted-media/mock-MediaKeys-createSession.html: Added. * media/encrypted-media/mock-MediaKeys-setServerCertificate.html: * media/encrypted-media/mock-MediaKeySession-generateRequest.html: * media/encrypted-media/mock-MediaKeySystemAccess.html: * media/encrypted-media/mock-navigator-requestMediaKeySystemAccess.html: * media/video-test.js: (shouldResolve): (shouldReject): * platform/mac/TestExpectations: Canonical link: https://commits.webkit.org/184000@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210555 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-01-10 20:09:21 +00:00
shouldReject(promise).then(next, next);
Add support for MediaKeySystemAccess.createMediaKeys() https://bugs.webkit.org/show_bug.cgi?id=166749 Reviewed by Eric Carlson. Source/WebCore: Test: media/encrypted-media/mock-MediaKeySystemAccess.html Implement MediaKeySystemAccess::createMediaKeys(). This requires some additions to CDM, CDMPrivate, and a new interface CDMInstance to support eventual platform adoption and to implement mock support for testing. * Modules/encryptedmedia/CDM.cpp: (WebCore::CDM::loadAndInitialize): (WebCore::CDM::createInstance): * Modules/encryptedmedia/CDM.h: * Modules/encryptedmedia/CDMInstance.h: (WebCore::CDMInstance::~CDMInstance): * Modules/encryptedmedia/CDMPrivate.h: * Modules/encryptedmedia/MediaKeySystemAccess.cpp: (WebCore::MediaKeySystemAccess::createMediaKeys): * Modules/encryptedmedia/MediaKeySystemAccess.h: * Modules/encryptedmedia/MediaKeys.cpp: (WebCore::MediaKeys::MediaKeys): * Modules/encryptedmedia/MediaKeys.h: (WebCore::MediaKeys::create): * Modules/encryptedmedia/MediaKeys.idl: * Modules/encryptedmedia/NavigatorEME.cpp: (WebCore::tryNextSupportedConfiguration): * WebCore.xcodeproj/project.pbxproj: * testing/MockCDMFactory.cpp: (WebCore::MockCDM::MockCDM): (WebCore::MockCDM::createInstance): (WebCore::MockCDM::loadAndInitialize): (WebCore::MockCDMInstance::MockCDMInstance): (WebCore::MockCDMInstance::initializeWithConfiguration): (WebCore::MockCDMInstance::setDistinctiveIdentifiersAllowed): (WebCore::MockCDMInstance::setPersistentStateAllowed): * testing/MockCDMFactory.h: (WebCore::MockCDMFactory::canCreateInstances): (WebCore::MockCDMFactory::setCanCreateInstances): (WebCore::MockCDM::factory): * testing/MockCDMFactory.idl: LayoutTests: * media/encrypted-media/mock-MediaKeySystemAccess-expected.txt: Added. * media/encrypted-media/mock-MediaKeySystemAccess.html: Added. * platform/mac/TestExpectations: Canonical link: https://commits.webkit.org/183902@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210445 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-01-06 18:48:29 +00:00
},
];
</script>
</head>
<body onload="doTest()">
</body>
</html>