forked from mirrors/gecko-dev
MozReview-Commit-ID: KjIquC2PKKI --HG-- rename : testing/web-platform/tests/WebCryptoAPI/derive_bits_keys/test_ecdh_bits.html => testing/web-platform/tests/WebCryptoAPI/derive_bits_keys/test_ecdh_bits.https.html rename : testing/web-platform/tests/WebCryptoAPI/derive_bits_keys/test_ecdh_keys.html => testing/web-platform/tests/WebCryptoAPI/derive_bits_keys/test_ecdh_keys.https.html rename : testing/web-platform/tests/WebCryptoAPI/derive_bits_keys/test_hkdf.html => testing/web-platform/tests/WebCryptoAPI/derive_bits_keys/test_hkdf.https.html rename : testing/web-platform/tests/WebCryptoAPI/digest/test_digest.html => testing/web-platform/tests/WebCryptoAPI/digest/test_digest.https.html rename : testing/web-platform/tests/WebCryptoAPI/encrypt_decrypt/test_aes_cbc.html => testing/web-platform/tests/WebCryptoAPI/encrypt_decrypt/test_aes_cbc.https.html rename : testing/web-platform/tests/WebCryptoAPI/encrypt_decrypt/test_aes_ctr.html => testing/web-platform/tests/WebCryptoAPI/encrypt_decrypt/test_aes_ctr.https.html rename : testing/web-platform/tests/WebCryptoAPI/encrypt_decrypt/test_aes_gcm.html => testing/web-platform/tests/WebCryptoAPI/encrypt_decrypt/test_aes_gcm.https.html rename : testing/web-platform/tests/WebCryptoAPI/encrypt_decrypt/test_rsa_oaep.html => testing/web-platform/tests/WebCryptoAPI/encrypt_decrypt/test_rsa_oaep.https.html rename : testing/web-platform/tests/WebCryptoAPI/generateKey/test_aes-cbc.html => testing/web-platform/tests/WebCryptoAPI/generateKey/test_aes-cbc.https.html rename : testing/web-platform/tests/WebCryptoAPI/generateKey/test_aes-ctr.html => testing/web-platform/tests/WebCryptoAPI/generateKey/test_aes-ctr.https.html rename : testing/web-platform/tests/WebCryptoAPI/generateKey/test_failures.html => testing/web-platform/tests/WebCryptoAPI/generateKey/test_failures.https.html rename : testing/web-platform/tests/WebCryptoAPI/generateKey/test_failures_AES-CBC.html => testing/web-platform/tests/WebCryptoAPI/generateKey/test_failures_AES-CBC.https.html rename : testing/web-platform/tests/WebCryptoAPI/generateKey/test_failures_AES-CTR.html => testing/web-platform/tests/WebCryptoAPI/generateKey/test_failures_AES-CTR.https.html rename : testing/web-platform/tests/WebCryptoAPI/generateKey/test_failures_AES-GCM.html => testing/web-platform/tests/WebCryptoAPI/generateKey/test_failures_AES-GCM.https.html rename : testing/web-platform/tests/WebCryptoAPI/generateKey/test_failures_AES-KW.html => testing/web-platform/tests/WebCryptoAPI/generateKey/test_failures_AES-KW.https.html rename : testing/web-platform/tests/WebCryptoAPI/generateKey/test_failures_ECDH.html => testing/web-platform/tests/WebCryptoAPI/generateKey/test_failures_ECDH.https.html rename : testing/web-platform/tests/WebCryptoAPI/generateKey/test_failures_ECDSA.html => testing/web-platform/tests/WebCryptoAPI/generateKey/test_failures_ECDSA.https.html rename : testing/web-platform/tests/WebCryptoAPI/generateKey/test_failures_HMAC.html => testing/web-platform/tests/WebCryptoAPI/generateKey/test_failures_HMAC.https.html rename : testing/web-platform/tests/WebCryptoAPI/generateKey/test_failures_RSA-OAEP.html => testing/web-platform/tests/WebCryptoAPI/generateKey/test_failures_RSA-OAEP.https.html rename : testing/web-platform/tests/WebCryptoAPI/generateKey/test_failures_RSA-PSS.html => testing/web-platform/tests/WebCryptoAPI/generateKey/test_failures_RSA-PSS.https.html rename : testing/web-platform/tests/WebCryptoAPI/generateKey/test_failures_RSASSA-PKCS1-v1_5.html => testing/web-platform/tests/WebCryptoAPI/generateKey/test_failures_RSASSA-PKCS1-v1_5.https.html rename : testing/web-platform/tests/WebCryptoAPI/generateKey/test_successes_AES-CBC.html => testing/web-platform/tests/WebCryptoAPI/generateKey/test_successes_AES-CBC.https.html rename : testing/web-platform/tests/WebCryptoAPI/generateKey/test_successes_AES-CTR.html => testing/web-platform/tests/WebCryptoAPI/generateKey/test_successes_AES-CTR.https.html rename : testing/web-platform/tests/WebCryptoAPI/generateKey/test_successes_AES-GCM.html => testing/web-platform/tests/WebCryptoAPI/generateKey/test_successes_AES-GCM.https.html rename : testing/web-platform/tests/WebCryptoAPI/generateKey/test_successes_AES-KW.html => testing/web-platform/tests/WebCryptoAPI/generateKey/test_successes_AES-KW.https.html rename : testing/web-platform/tests/WebCryptoAPI/generateKey/test_successes_ECDH.html => testing/web-platform/tests/WebCryptoAPI/generateKey/test_successes_ECDH.https.html rename : testing/web-platform/tests/WebCryptoAPI/generateKey/test_successes_ECDSA.html => testing/web-platform/tests/WebCryptoAPI/generateKey/test_successes_ECDSA.https.html rename : testing/web-platform/tests/WebCryptoAPI/generateKey/test_successes_HMAC.html => testing/web-platform/tests/WebCryptoAPI/generateKey/test_successes_HMAC.https.html rename : testing/web-platform/tests/WebCryptoAPI/generateKey/test_successes_RSA-PSS.html => testing/web-platform/tests/WebCryptoAPI/generateKey/test_successes_RSA-PSS.https.html rename : testing/web-platform/tests/WebCryptoAPI/generateKey/test_successes_RSASSA-PKCS1-v1_5.html => testing/web-platform/tests/WebCryptoAPI/generateKey/test_successes_RSASSA-PKCS1-v1_5.https.html rename : testing/web-platform/tests/WebCryptoAPI/import_export/test_ec_importKey.html => testing/web-platform/tests/WebCryptoAPI/import_export/test_ec_importKey.https.html rename : testing/web-platform/tests/WebCryptoAPI/import_export/test_rsa_importKey.html => testing/web-platform/tests/WebCryptoAPI/import_export/test_rsa_importKey.https.html rename : testing/web-platform/tests/WebCryptoAPI/import_export/test_symmetric_importKey.html => testing/web-platform/tests/WebCryptoAPI/import_export/test_symmetric_importKey.https.html rename : testing/web-platform/tests/WebCryptoAPI/sign_verify/test_ecdsa.html => testing/web-platform/tests/WebCryptoAPI/sign_verify/test_ecdsa.https.html rename : testing/web-platform/tests/WebCryptoAPI/sign_verify/test_hmac.html => testing/web-platform/tests/WebCryptoAPI/sign_verify/test_hmac.https.html rename : testing/web-platform/tests/WebCryptoAPI/sign_verify/test_rsa_pkcs.html => testing/web-platform/tests/WebCryptoAPI/sign_verify/test_rsa_pkcs.https.html rename : testing/web-platform/tests/WebCryptoAPI/sign_verify/test_rsa_pss.html => testing/web-platform/tests/WebCryptoAPI/sign_verify/test_rsa_pss.https.html rename : testing/web-platform/tests/WebCryptoAPI/wrapKey_unwrapKey/test_wrapKey_unwrapKey.html => testing/web-platform/tests/WebCryptoAPI/wrapKey_unwrapKey/test_wrapKey_unwrapKey.https.html rename : testing/web-platform/tests/html/browsers/windows/browsing-context-names/browsing-context-_blank.html => testing/web-platform/tests/html/browsers/windows/browsing-context-names/choose-_blank-001.html rename : testing/web-platform/tests/html/browsers/windows/browsing-context-names/resources/parent-iframe-3.html => testing/web-platform/tests/html/browsers/windows/browsing-context-names/resources/choose-_parent-003-iframe.html rename : testing/web-platform/tests/html/browsers/windows/browsing-context-names/resources/parent-iframe-2.html => testing/web-platform/tests/html/browsers/windows/browsing-context-names/resources/open-in-_parent.html rename : testing/web-platform/tests/presentation-api/receiving-ua/support/idlharness_receiving-ua.https.html => testing/web-platform/tests/presentation-api/receiving-ua/support/idlharness_receiving-ua.html rename : testing/web-platform/tests/tools/LICENSE => testing/web-platform/tests/tools/wptrunner/LICENSE rename : testing/web-platform/tests/auxclick/auxclick_event-manual.html => testing/web-platform/tests/uievents/auxclick/auxclick_event-manual.html rename : testing/web-platform/tests/webrtc/rtcpeerconnection/rtcconfiguration-icecandidatepoolsize.html => testing/web-platform/tests/webrtc/RTCConfiguration-iceCandidatePoolSize.html rename : testing/web-platform/tests/webrtc/rtcpeerconnection/rtcpeerconnection-constructor.html => testing/web-platform/tests/webrtc/RTCPeerConnection-constructor.html rename : testing/web-platform/tests/webrtc/rtcpeerconnection/iceGatheringState.html => testing/web-platform/tests/webrtc/RTCPeerConnection-iceGatheringState.html rename : testing/web-platform/tests/webrtc/rtcpeerconnection/rtcpeerconnection-idl.html => testing/web-platform/tests/webrtc/RTCPeerConnection-idl.html
100 lines
3.8 KiB
JavaScript
100 lines
3.8 KiB
JavaScript
/**
|
|
* Supports pseudo-"namespacing" for window-posted messages for a given test
|
|
* by generating and using a unique prefix that gets wrapped into message
|
|
* objects. This makes it more feasible to have multiple tests that use
|
|
* `window.postMessage` in a single test file. Basically, make it possible
|
|
* for the each test to listen for only the messages that are pertinent to it.
|
|
*
|
|
* 'Prefix' not an elegant term to use here but this models itself after
|
|
* PrefixedLocalStorage.
|
|
*
|
|
* PrefixedMessageTest: Instantiate in testharness.js tests to generate
|
|
* a new unique-ish prefix that can be used by other test support files
|
|
* PrefixedMessageResource: Instantiate in supporting test resource
|
|
* files to use/share a prefix generated by a test.
|
|
*/
|
|
var PrefixedMessage = function () {
|
|
this.prefix = '';
|
|
this.param = 'prefixedMessage'; // Param to use in querystrings
|
|
};
|
|
|
|
/**
|
|
* Generate a URL that adds/replaces param with this object's prefix
|
|
* Use to link to test support files that make use of
|
|
* PrefixedMessageResource.
|
|
*/
|
|
PrefixedMessage.prototype.url = function (uri) {
|
|
function updateUrlParameter (uri, key, value) {
|
|
var i = uri.indexOf('#');
|
|
var hash = (i === -1) ? '' : uri.substr(i);
|
|
uri = (i === -1) ? uri : uri.substr(0, i);
|
|
var re = new RegExp(`([?&])${key}=.*?(&|$)`, 'i');
|
|
var separator = uri.indexOf('?') !== -1 ? '&' : '?';
|
|
uri = (uri.match(re)) ? uri.replace(re, `$1${key}=${value}$2`) :
|
|
`${uri}${separator}${key}=${value}`;
|
|
return uri + hash;
|
|
}
|
|
return updateUrlParameter(uri, this.param, this.prefix);
|
|
};
|
|
|
|
/**
|
|
* Add an eventListener on `message` but only invoke the given callback
|
|
* for messages whose object contains this object's prefix. Remove the
|
|
* event listener once the anticipated message has been received.
|
|
*/
|
|
PrefixedMessage.prototype.onMessage = function (fn) {
|
|
window.addEventListener('message', e => {
|
|
if (typeof e.data === 'object' && e.data.hasOwnProperty('prefix')) {
|
|
if (e.data.prefix === this.prefix) {
|
|
// Only invoke callback when `data` is an object containing
|
|
// a `prefix` key with this object's prefix value
|
|
// Note fn is invoked with "unwrapped" data first, then the event `e`
|
|
// (which contains the full, wrapped e.data should it be needed)
|
|
fn.call(this, e.data.data, e);
|
|
window.removeEventListener('message', fn);
|
|
}
|
|
}
|
|
});
|
|
};
|
|
|
|
/**
|
|
* Instantiate in a test file (e.g. during `setup`) to create a unique-ish
|
|
* prefix that can be shared by support files
|
|
*/
|
|
var PrefixedMessageTest = function () {
|
|
PrefixedMessage.call(this);
|
|
this.prefix = `${document.location.pathname}-${Math.random()}-${Date.now()}-`;
|
|
};
|
|
PrefixedMessageTest.prototype = Object.create(PrefixedMessage.prototype);
|
|
PrefixedMessageTest.prototype.constructor = PrefixedMessageTest;
|
|
|
|
/**
|
|
* Instantiate in a test support script to use a "prefix" generated by a
|
|
* PrefixedMessageTest in a controlling test file. It will look for
|
|
* the prefix in a URL param (see also PrefixedMessage#url)
|
|
*/
|
|
var PrefixedMessageResource = function () {
|
|
PrefixedMessage.call(this);
|
|
// Check URL querystring for prefix to use
|
|
var regex = new RegExp(`[?&]${this.param}(=([^&#]*)|&|#|$)`),
|
|
results = regex.exec(document.location.href);
|
|
if (results && results[2]) {
|
|
this.prefix = results[2];
|
|
}
|
|
};
|
|
PrefixedMessageResource.prototype = Object.create(PrefixedMessage.prototype);
|
|
PrefixedMessageResource.prototype.constructor = PrefixedMessageResource;
|
|
|
|
/**
|
|
* This is how a test resource document can "send info" to its
|
|
* opener context. It will whatever message is being sent (`data`) in
|
|
* an object that injects the prefix.
|
|
*/
|
|
PrefixedMessageResource.prototype.postToOpener = function (data) {
|
|
if (window.opener) {
|
|
window.opener.postMessage({
|
|
prefix: this.prefix,
|
|
data: data
|
|
}, '*');
|
|
}
|
|
};
|