blob: 293a5086508dd1bd1aff9bb0b51d3fb516050ffb [file] [edit]
<!DOCTYPE html>
<!--
Copyright 2017 The Chromium Authors. All rights reserved.
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file.
-->
<link rel="import" href="/tracing/value/diagnostics/diagnostic.html">
<script>
'use strict';
/* eslint-disable no-console */
function isDiagnosticSubclass(cls) {
cls = cls.__proto__;
while (cls) {
if (cls === tr.v.d.Diagnostic) return true;
cls = cls.__proto__;
}
return false;
}
function discoverDiagnostics(args) {
const discoveryMode = args.shift();
for (const arg of args) HTMLImportsLoader.loadHTML(arg);
const results = [];
if (discoveryMode === 'registry') {
for (const typeInfo of tr.v.d.Diagnostic.getAllRegisteredTypeInfos()) {
results.push(typeInfo.constructor.name);
}
} else if (discoveryMode === 'namespace') {
for (const cls of Object.values(tr.v.d)) {
if (isDiagnosticSubclass(cls)) results.push(cls.name);
}
} else {
console.log('First argument must be either "registry" or "namespace".');
return 1;
}
console.log(JSON.stringify(results));
return 0;
}
if (tr.isHeadless) {
quit(discoverDiagnostics(sys.argv.slice(1)));
}
</script>