mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-11-09 04:39:03 +02:00
--HG-- rename : testing/web-platform/meta/websockets/interfaces/WebSocket/close/006.html.ini => testing/web-platform/meta/websockets/interfaces/WebSocket/close/close-connecting.html.ini rename : testing/web-platform/meta/websockets/interfaces/WebSocket/events/002.html.ini => testing/web-platform/meta/websockets/interfaces/WebSocket/constants/004.html.ini rename : testing/web-platform/meta/html/infrastructure/urls/dynamic-changes-to-base-urls/dynamic-urls.sub.xhtml.ini => testing/web-platform/meta/websockets/interfaces/WebSocket/events/015.html.ini rename : testing/web-platform/tests/html/editing/dnd/target-origin/003.html => testing/web-platform/tests/html/editing/dnd/target-origin/003-manual.html rename : testing/web-platform/tests/html/editing/dnd/target-origin/004.html => testing/web-platform/tests/html/editing/dnd/target-origin/004-manual.html rename : testing/web-platform/tests/html/editing/dnd/target-origin/005.html => testing/web-platform/tests/html/editing/dnd/target-origin/005-manual.html rename : testing/web-platform/tests/html/editing/dnd/target-origin/006.html => testing/web-platform/tests/html/editing/dnd/target-origin/006-manual.html rename : testing/web-platform/tests/html/editing/dnd/target-origin/007.html => testing/web-platform/tests/html/editing/dnd/target-origin/007-manual.html rename : testing/web-platform/tests/html/editing/dnd/target-origin/008.html => testing/web-platform/tests/html/editing/dnd/target-origin/008-manual.html rename : testing/web-platform/tests/html/editing/dnd/target-origin/009.html => testing/web-platform/tests/html/editing/dnd/target-origin/009-manual.html rename : testing/web-platform/tests/html/editing/dnd/target-origin/010.html => testing/web-platform/tests/html/editing/dnd/target-origin/010-manual.html rename : testing/web-platform/tests/html/editing/dnd/target-origin/011.html => testing/web-platform/tests/html/editing/dnd/target-origin/011-manual.html rename : testing/web-platform/tests/html/editing/dnd/target-origin/012.html => testing/web-platform/tests/html/editing/dnd/target-origin/012-manual.html rename : testing/web-platform/tests/html/editing/dnd/target-origin/013.html => testing/web-platform/tests/html/editing/dnd/target-origin/013-manual.html rename : testing/web-platform/tests/html/editing/dnd/target-origin/102.html => testing/web-platform/tests/html/editing/dnd/target-origin/102-manual.html rename : testing/web-platform/tests/html/editing/dnd/target-origin/103.html => testing/web-platform/tests/html/editing/dnd/target-origin/103-manual.html rename : testing/web-platform/tests/html/editing/dnd/target-origin/104.html => testing/web-platform/tests/html/editing/dnd/target-origin/104-manual.html rename : testing/web-platform/tests/html/editing/dnd/target-origin/105.html => testing/web-platform/tests/html/editing/dnd/target-origin/105-manual.html rename : testing/web-platform/tests/html/editing/dnd/target-origin/106.html => testing/web-platform/tests/html/editing/dnd/target-origin/106-manual.html rename : testing/web-platform/tests/html/editing/dnd/target-origin/107.html => testing/web-platform/tests/html/editing/dnd/target-origin/107-manual.html rename : testing/web-platform/tests/html/editing/dnd/target-origin/108.html => testing/web-platform/tests/html/editing/dnd/target-origin/108-manual.html rename : testing/web-platform/tests/html/editing/dnd/target-origin/109.html => testing/web-platform/tests/html/editing/dnd/target-origin/109-manual.html rename : testing/web-platform/tests/html/editing/dnd/target-origin/110.html => testing/web-platform/tests/html/editing/dnd/target-origin/110-manual.html rename : testing/web-platform/tests/html/editing/dnd/target-origin/111.html => testing/web-platform/tests/html/editing/dnd/target-origin/111-manual.html rename : testing/web-platform/tests/html/editing/dnd/target-origin/112.html => testing/web-platform/tests/html/editing/dnd/target-origin/112-manual.html rename : testing/web-platform/tests/html/editing/dnd/target-origin/113.html => testing/web-platform/tests/html/editing/dnd/target-origin/113-manual.html rename : testing/web-platform/tests/html/editing/dnd/target-origin/114.html => testing/web-platform/tests/html/editing/dnd/target-origin/114-manual.html rename : testing/web-platform/tests/html/editing/dnd/target-origin/115.html => testing/web-platform/tests/html/editing/dnd/target-origin/115-manual.html rename : testing/web-platform/tests/html/editing/dnd/target-origin/116.html => testing/web-platform/tests/html/editing/dnd/target-origin/116-manual.html rename : testing/web-platform/tests/html/editing/dnd/target-origin/117.html => testing/web-platform/tests/html/editing/dnd/target-origin/117-manual.html rename : testing/web-platform/tests/html/editing/dnd/target-origin/118.html => testing/web-platform/tests/html/editing/dnd/target-origin/118-manual.html rename : testing/web-platform/tests/html/editing/dnd/target-origin/201.html => testing/web-platform/tests/html/editing/dnd/target-origin/201-manual.html rename : testing/web-platform/tests/html/semantics/interfaces.html => testing/web-platform/tests/html/semantics/interfaces.js rename : testing/web-platform/tests/pointerevents/pointerevent_pointerout_after_pointerup_nohover.html => testing/web-platform/tests/pointerevents/pointerevent_pointerleave_after_pointerup_nohover.html rename : testing/web-platform/tests/websockets/interfaces/CloseEvent/004.html => testing/web-platform/tests/websockets/interfaces/CloseEvent/clean-close.html rename : testing/web-platform/tests/websockets/interfaces/WebSocket/bufferedAmount/008.html => testing/web-platform/tests/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-arraybuffer.html rename : testing/web-platform/tests/websockets/interfaces/WebSocket/bufferedAmount/007.html => testing/web-platform/tests/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-blob.html rename : testing/web-platform/tests/websockets/interfaces/WebSocket/bufferedAmount/005.html => testing/web-platform/tests/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-defineProperty-getter.html rename : testing/web-platform/tests/websockets/interfaces/WebSocket/bufferedAmount/006.html => testing/web-platform/tests/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-defineProperty-setter.html rename : testing/web-platform/tests/websockets/interfaces/WebSocket/bufferedAmount/004.html => testing/web-platform/tests/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-deleting.html rename : testing/web-platform/tests/websockets/interfaces/WebSocket/bufferedAmount/003.html => testing/web-platform/tests/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-getting.html rename : testing/web-platform/tests/websockets/interfaces/WebSocket/bufferedAmount/001.html => testing/web-platform/tests/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-initial.html rename : testing/web-platform/tests/websockets/interfaces/WebSocket/bufferedAmount/009.html => testing/web-platform/tests/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-large.html rename : testing/web-platform/tests/websockets/interfaces/WebSocket/bufferedAmount/002.html => testing/web-platform/tests/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-readonly.html rename : testing/web-platform/tests/websockets/interfaces/WebSocket/bufferedAmount/010.html => testing/web-platform/tests/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-unicode.html rename : testing/web-platform/tests/websockets/interfaces/WebSocket/close/005.html => testing/web-platform/tests/websockets/interfaces/WebSocket/close/close-basic.html rename : testing/web-platform/tests/websockets/interfaces/WebSocket/close/006.html => testing/web-platform/tests/websockets/interfaces/WebSocket/close/close-connecting.html rename : testing/web-platform/tests/websockets/interfaces/WebSocket/close/003.html => testing/web-platform/tests/websockets/interfaces/WebSocket/close/close-multiple.html rename : testing/web-platform/tests/websockets/interfaces/WebSocket/close/005.html => testing/web-platform/tests/websockets/interfaces/WebSocket/close/close-nested.html rename : testing/web-platform/tests/websockets/interfaces/WebSocket/close/002.html => testing/web-platform/tests/websockets/interfaces/WebSocket/close/close-replace.html rename : testing/web-platform/tests/websockets/interfaces/WebSocket/close/004.html => testing/web-platform/tests/websockets/interfaces/WebSocket/close/close-return.html extra : rebase_source : 200f5fafb760e3c985a5ae3e8682c0e3cc99920f
115 lines
5.1 KiB
JavaScript
115 lines
5.1 KiB
JavaScript
/* Use this script when you want to test APIs that use vendor prefixes
|
|
and define which objects need to be checked for prefixed versions, à la
|
|
<script src="vendor-prefix.js"
|
|
data-prefixed-objects='[{"ancestors":["navigator"], "name":"getUserMedia"}]'
|
|
data-prefixed-prototypes='[{"ancestors":["HTMLMediaElement"],"name":"srcObject"}]'></script>
|
|
data-prefixed-objects lets prefix objects in the global space
|
|
data-prefixed-prototypes adds prefixes to interfaces, for objects that
|
|
get created during the tests
|
|
|
|
NB: vendor prefixes are expected to go away in favor of putting
|
|
new features behind flag, so hopefully there will be only limited
|
|
need to use this
|
|
*/
|
|
|
|
(function () {
|
|
var aliases = {};
|
|
var documentingPrefixUsage = document.createElement('div');
|
|
var vendorPrefixes = ["moz", "ms", "o", "webkit", "Moz", "MS", "O", "WebKit", "op"];
|
|
|
|
function getParentObject(ancestors) {
|
|
var parent = window;
|
|
var currentName = "";
|
|
ancestors.forEach(function (p) {
|
|
currentName = currentName ? currentName + "." + p : p;
|
|
if (parent[p] === undefined) {
|
|
throw currentName + " is undefined, cannot set prefix alias on child object";
|
|
}
|
|
parent = parent[p];
|
|
});
|
|
return parent;
|
|
}
|
|
|
|
function prependPrefix(prefix, name) {
|
|
var newName = name[0].toUpperCase() + name.substr(1, name.length);
|
|
return prefix + newName;
|
|
}
|
|
|
|
function setPrototypeAlias(obj) {
|
|
var parent = getParentObject(obj.ancestors);
|
|
if (!parent.prototype.hasOwnProperty(obj.name)) {
|
|
vendorPrefixes.forEach(function (prefix) {
|
|
if (parent.prototype.hasOwnProperty(prependPrefix(prefix, obj.name))) {
|
|
Object.defineProperty(parent.prototype, obj.name,
|
|
{get: function() {return this[prependPrefix(prefix, obj.name)];},
|
|
set: function(v) {this[prependPrefix(prefix, obj.name)] = v;}
|
|
});
|
|
aliases[obj.ancestors.join(".") + ".prototype." + obj.name] = obj.ancestors.join(".") + ".prototype." + prependPrefix(prefix, obj.name);
|
|
return;
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
function setAlias(obj) {
|
|
var parent = getParentObject(obj.ancestors);
|
|
if (parent[obj.name] === undefined) {
|
|
vendorPrefixes.forEach(function (prefix) {
|
|
if (parent[prependPrefix(prefix, obj.name)] !== undefined) {
|
|
parent[obj.name] = parent[prependPrefix(prefix, obj.name)];
|
|
aliases[obj.ancestors.join(".") + "." + obj.name] = obj.ancestors.join(".") + "." + prependPrefix(prefix, obj.name);
|
|
return;
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
if (location.search.indexOf('usePrefixes=1') !== -1) {
|
|
if (document.querySelector("script[data-prefixed-objects]")) {
|
|
var prefixObjectsData = document.querySelector("script[data-prefixed-objects]").dataset["prefixedObjects"];
|
|
try {
|
|
var prefixedObjects = JSON.parse(prefixObjectsData);
|
|
} catch (e) {
|
|
throw "couldn't parse data-prefixed-objects as JSON:" + e;
|
|
}
|
|
prefixedObjects.forEach(setAlias);
|
|
}
|
|
if (document.querySelector("script[data-prefixed-prototypes]")) {
|
|
var prefixProtoData = document.querySelector("script[data-prefixed-prototypes]").dataset["prefixedPrototypes"];
|
|
try {
|
|
var prefixedPrototypes = JSON.parse(prefixProtoData);
|
|
} catch (e) {
|
|
throw "couldn't parse data-prefixed-prototypes as JSON:" + e;
|
|
}
|
|
prefixedPrototypes.forEach(setPrototypeAlias);
|
|
}
|
|
var ul = document.createElement("ul");
|
|
Object.keys(aliases).forEach(function (alias) {
|
|
var li = document.createElement("li");
|
|
li.appendChild(document.createTextNode(alias + " has been set to be an alias of vendor-prefixed " + aliases[alias]));
|
|
ul.appendChild(li);
|
|
});
|
|
documentingPrefixUsage.appendChild(ul);
|
|
} else {
|
|
// Document that the test can be run with prefixes enabled
|
|
|
|
var a = document.createElement('a');
|
|
var link = "";
|
|
if (location.search) {
|
|
link = location.search + "&usePrefixes=1";
|
|
} else {
|
|
link = "?usePrefixes=1";
|
|
}
|
|
a.setAttribute("href", link);
|
|
a.appendChild(document.createTextNode("with vendor prefixes enabled"));
|
|
documentingPrefixUsage.appendChild(document.createTextNode("The feature(s) tested here are known to have been made available via vendor prefixes; you can run this test "));
|
|
documentingPrefixUsage.appendChild(a);
|
|
documentingPrefixUsage.appendChild(document.createTextNode("."));
|
|
}
|
|
var log = document.getElementById('log');
|
|
if (log) {
|
|
log.parentNode.insertBefore(documentingPrefixUsage, log);
|
|
} else {
|
|
document.body.appendChild(documentingPrefixUsage);
|
|
}
|
|
})();
|