Move parseFontFaceDescriptor to CSSPropertyParser.cpp
[chromium-blink-merge.git] / third_party / WebKit / LayoutTests / webexposed / resources / global-interface-listing.js
blobbd7da4fa2356648fa7f41edfc4fc936d17182e17
1 if (self.importScripts) {
2     importScripts('../../resources/js-test.js');
4     if (!self.postMessage) {
5         // Shared worker.  Make postMessage send to the newest client, which in
6         // our tests is the only client.
8         // Store messages for sending until we have somewhere to send them.
9         self.postMessage = function(message) {
10             if (typeof self.pendingMessages === "undefined")
11                 self.pendingMessages = [];
12             self.pendingMessages.push(message);
13         };
14         self.onconnect = function(event) {
15             self.postMessage = function(message) {
16                 event.ports[0].postMessage(message);
17             };
18             // Offload any stored messages now that someone has connected to us.
19             if (typeof self.pendingMessages === "undefined")
20                 return;
21             while (self.pendingMessages.length)
22                 event.ports[0].postMessage(self.pendingMessages.shift());
23         };
24     }
27 // List of builtin JS constructors; Blink is not controlling what properties these
28 // objects have, so exercising them in a Blink test doesn't make sense.
30 // If new builtins are added, please update this list along with the one in
31 // LayoutTests/http/tests/serviceworker/webexposed/resources/global-interface-listing-worker.js
32 var jsBuiltins = new Set([
33     'Array',
34     'ArrayBuffer',
35     'Boolean',
36     'Date',
37     'Error',
38     'EvalError',
39     'Float32Array',
40     'Float64Array',
41     'Function',
42     'Int16Array',
43     'Int32Array',
44     'Int8Array',
45     'Map',
46     'Number',
47     'Object',
48     'Promise',
49     'RangeError',
50     'ReferenceError',
51     'RegExp',
52     'Set',
53     'String',
54     'Symbol',
55     'SyntaxError',
56     'TypeError',
57     'Uint16Array',
58     'Uint32Array',
59     'Uint8Array',
60     'Uint8ClampedArray',
61     'URIError',
62     'WeakMap',
63     'WeakSet',
64 ]);
66 function isWebIDLConstructor(propertyName) {
67     if (jsBuiltins.has(propertyName))
68         return false;
69     var descriptor = Object.getOwnPropertyDescriptor(this, propertyName);
70     if (descriptor.value == undefined || descriptor.value.prototype == undefined)
71         return false;
72     return descriptor.writable && !descriptor.enumerable && descriptor.configurable;
75 // FIXME: List interfaces with NoInterfaceObject specified in their IDL file.
76 debug('[INTERFACES]')
77 var interfaceNames = Object.getOwnPropertyNames(this).filter(isWebIDLConstructor);
78 interfaceNames.sort();
79 interfaceNames.forEach(function(interfaceName) {
80     debug('interface ' + interfaceName);
81     var propertyStrings = [];
82     var prototype = this[interfaceName].prototype;
83     Object.getOwnPropertyNames(prototype).forEach(function(propertyName) {
84         var descriptor = Object.getOwnPropertyDescriptor(prototype, propertyName);
85         if ('value' in descriptor) {
86             var type = typeof descriptor.value === 'function' ? 'method' : 'attribute';
87             propertyStrings.push('    ' + type + ' ' + propertyName);
88         } else {
89             if (descriptor.get)
90                 propertyStrings.push('    getter ' + propertyName);
91             if (descriptor.set)
92                 propertyStrings.push('    setter ' + propertyName);
93         }
94     });
95     propertyStrings.sort().forEach(debug);
96 });
98 if (isWorker())
99     finishJSTest();