Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(82)

Unified Diff: third_party/WebKit/LayoutTests/http/tests/serviceworker/webexposed/resources/global-interface-listing-worker.js

Issue 2889423003: Unify webexposed/global-interface-listing scripts (Closed)
Patch Set: Rebased Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);

Powered by Google App Engine
This is Rietveld 408576698