Chromium Code Reviews| Index: third_party/WebKit/LayoutTests/http/tests/serviceworker/chromium/resources/get_interface_names.js |
| diff --git a/third_party/WebKit/LayoutTests/http/tests/serviceworker/chromium/resources/get_interface_names.js b/third_party/WebKit/LayoutTests/http/tests/serviceworker/chromium/resources/get_interface_names.js |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..a3cf937845194063b5629b5800e1a14e10682b2c |
| --- /dev/null |
| +++ b/third_party/WebKit/LayoutTests/http/tests/serviceworker/chromium/resources/get_interface_names.js |
| @@ -0,0 +1,35 @@ |
| +function get_interface_names(global_object, interface_names) { |
| + var result = []; |
| + function collect_property_info(object, property_name, output) { |
| + var descriptor = Object.getOwnPropertyDescriptor(object, property_name); |
| + if ('value' in descriptor) { |
| + if (typeof descriptor.value === 'function') { |
| + output.push(' method ' + property_name); |
| + } else { |
| + output.push(' attribute ' + property_name); |
| + } |
| + } else { |
| + if (descriptor.get) |
| + output.push(' getter ' + property_name); |
| + if (descriptor.set) |
| + output.push(' setter ' + property_name); |
|
falken
2017/01/13 03:43:42
nit: use braces here if the others have it
horo
2017/01/13 08:41:33
Done.
|
| + } |
| + } |
| + interface_names.sort(); |
| + interface_names.forEach(function(interface_name) { |
| + if (this[interface_name] === undefined) { |
| + return; |
| + } |
| + result.push('interface ' + interface_name); |
| + var property_names = |
| + Object.getOwnPropertyNames(this[interface_name].prototype); |
| + var property_strings = []; |
| + property_names.forEach(function(property_name) { |
| + collect_property_info(this[interface_name].prototype, |
| + property_name, |
| + property_strings); |
| + }); |
| + result.push.apply(result, property_strings.sort()); |
| + }); |
| + return result.join("\n");; |
| +} |