Index: third_party/WebKit/LayoutTests/http/tests/serviceworker/webexposed/resources/global-interface-listing-worker.js |
diff --git a/third_party/WebKit/LayoutTests/http/tests/serviceworker/webexposed/resources/global-interface-listing-worker.js b/third_party/WebKit/LayoutTests/http/tests/serviceworker/webexposed/resources/global-interface-listing-worker.js |
index 08743cc9857fac4cc32eb0329c8e095b3e4f1ff7..2a06adfaa1cba7eb751627f56cd517b84aa16894 100644 |
--- a/third_party/WebKit/LayoutTests/http/tests/serviceworker/webexposed/resources/global-interface-listing-worker.js |
+++ b/third_party/WebKit/LayoutTests/http/tests/serviceworker/webexposed/resources/global-interface-listing-worker.js |
@@ -1,139 +1,19 @@ |
-/* Adopted from LayoutTests/webexposed/resources/global-interface-listing.js */ |
- |
-// Run all the code in a local scope. |
+// Avoid polluting the global scope. |
(function(global_object) { |
-var globals = []; |
+ // Save the list of property names of the global object before loading other scripts. |
+ var global_property_names = Object.getOwnPropertyNames(global_object); |
-// List of builtin JS constructors; Blink is not controlling what properties these |
-// objects have, so exercising them in a Blink test doesn't make sense. |
-// |
-// This list should be kept in sync with the one at LayoutTests/webexposed/resources/global-interface-listing.js |
-var js_builtins = new Set([ |
- 'Array', |
- 'ArrayBuffer', |
- 'Boolean', |
- 'Date', |
- 'Error', |
- 'EvalError', |
- 'Float32Array', |
- 'Float64Array', |
- 'Function', |
- 'Infinity', |
- 'Int16Array', |
- 'Int32Array', |
- 'Int8Array', |
- 'Intl', |
- 'JSON', |
- 'Map', |
- 'Math', |
- 'NaN', |
- 'Number', |
- 'Object', |
- 'Promise', |
- 'Proxy', |
- 'RangeError', |
- 'ReferenceError', |
- 'Reflect', |
- 'RegExp', |
- 'Set', |
- 'String', |
- 'Symbol', |
- 'SyntaxError', |
- 'TypeError', |
- 'URIError', |
- 'Uint16Array', |
- 'Uint32Array', |
- 'Uint8Array', |
- 'Uint8ClampedArray', |
- 'WeakMap', |
- 'WeakSet', |
- 'WebAssembly', |
- 'decodeURI', |
- 'decodeURIComponent', |
- 'encodeURI', |
- 'encodeURIComponent', |
- 'escape', |
- 'eval', |
- 'isFinite', |
- 'isNaN', |
- 'parseFloat', |
- 'parseInt', |
- 'undefined', |
- 'unescape', |
-]); |
+ importScripts('/js-test-resources/global-interface-listing.js'); |
-function is_web_idl_constructor(property_name) { |
- if (js_builtins.has(property_name)) |
- return false; |
- var descriptor = Object.getOwnPropertyDescriptor(this, property_name); |
- if (descriptor.value === undefined || |
- descriptor.value.prototype === undefined) { |
- return false; |
- } |
- return descriptor.writable && !descriptor.enumerable && |
- descriptor.configurable; |
-} |
+ var globals = []; |
-function collect_property_info(object, property_name, output) { |
- var keywords = ('prototype' in object) ? 'static ' : ''; |
- var descriptor = Object.getOwnPropertyDescriptor(object, property_name); |
- if ('value' in descriptor) { |
- var type; |
- if (typeof descriptor.value === 'function') { |
- type = 'method'; |
- } else { |
- type = 'attribute'; |
- } |
- output.push(' ' + keywords + type + ' ' + property_name); |
- } else { |
- if (descriptor.get) |
- output.push(' ' + keywords + 'getter ' + property_name); |
- if (descriptor.set) |
- output.push(' ' + keywords + 'setter ' + property_name); |
- } |
-} |
+ globalInterfaceListing(global_object, |
+ global_property_names, |
+ string => globals.push(string)); |
-var interface_names = Object.getOwnPropertyNames(global_object).filter(is_web_idl_constructor); |
-interface_names.sort(); |
-interface_names.forEach(function(interface_name) { |
- var inherits_from = this[interface_name].__proto__.name; |
- if (inherits_from) |
- globals.push('interface ' + interface_name + ' : ' + inherits_from); |
- else |
- globals.push('interface ' + interface_name); |
- // List static properties then prototype properties. |
- [this[interface_name], this[interface_name].prototype].forEach(function(object) { |
- if ('prototype' in object) { |
- // Skip properties that aren't static (e.g. consts), or are inherited. |
- var proto_properties = new Set(Object.keys(object.prototype).concat( |
- Object.keys(object.__proto__))); |
- var property_names = Object.keys(object).filter(function(name) { |
- return !proto_properties.has(name); |
- }); |
- } else { |
- var property_names = Object.getOwnPropertyNames(object); |
- } |
- var property_strings = []; |
- property_names.forEach(function(property_name) { |
- collect_property_info(object, property_name, property_strings); |
- }); |
- globals.push.apply(globals, property_strings.sort()); |
+ self.addEventListener('message', function(event) { |
+ event.ports[0].postMessage({ result: globals }); |
}); |
-}); |
- |
-globals.push('global object'); |
-var property_strings = []; |
-var member_names = Object.getOwnPropertyNames(global_object).filter(function(property_name) { |
- return !js_builtins.has(property_name) && !is_web_idl_constructor(property_name); |
-}); |
-member_names.forEach(function(property_name) { |
- collect_property_info(global_object, property_name, property_strings); |
-}); |
-globals.push.apply(globals, property_strings.sort()); |
- |
-self.addEventListener('message', function(event) { |
- event.ports[0].postMessage({ result: globals }); |
-}); |
-})(this); // Run all the code in a local scope. |
+})(this); |