Implement hiding of interface members via Pref annotations.

This commit is contained in:
Josh Matthews 2016-03-23 22:46:49 -04:00
parent 88059acd7e
commit cb5bad63dc
8 changed files with 225 additions and 26 deletions

View file

@ -6406,6 +6406,12 @@
"url": "/_mozilla/mozilla/innerHTML.html"
}
],
"mozilla/interface_member_exposed.html": [
{
"path": "mozilla/interface_member_exposed.html",
"url": "/_mozilla/mozilla/interface_member_exposed.html"
}
],
"mozilla/interfaces.html": [
{
"path": "mozilla/interfaces.html",

View file

@ -0,0 +1,4 @@
[interface_member_exposed.html]
type: testharness
prefs: [dom.testbinding.enabled:true,
dom.testbinding.prefcontrolled2.enabled:true]

View file

@ -0,0 +1,41 @@
<!doctype html>
<meta charset="utf-8">
<title></title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
function test_member(name, enabled, target) {
var status = enabled ? "Enabled" : "Disabled";
var verb = enabled ? "shows" : "hides";
test(function() {
var interface = target(window.TestBinding);
var descriptor = Object.getOwnPropertyDescriptor(interface, name);
if (enabled) {
assert_not_equals(descriptor, undefined);
} else {
assert_equals(descriptor, undefined);
}
}, status + " preference " + verb + " member controlled by that preference: " + name);
}
var members = [
'prefControlledAttribute',
'prefControlledMethod'
];
var staticMembers = [
'prefControlledStaticAttribute',
'prefControlledStaticMethod',
'prefControlledConst'
];
for (var i = 0; i < members.length; i++) {
var name = members[i];
test_member(name + 'Enabled', true, function(o) { return Object.getPrototypeOf(new o()) });
test_member(name + 'Disabled', false, function(o) { return Object.getPrototypeOf(new o()) });
}
for (var i = 0; i < staticMembers.length; i++) {
var name = staticMembers[i];
test_member(name + 'Enabled', true, function(o) { return o; });
test_member(name + 'Disabled', false, function(o) { return o; });
}
</script>