WebKitデバッグAPIスキーマのブラウズ


先月Chromiumでデバッグ用APIが公開されたという記事が話題に登ったようですが,そのなかでデバッグ用のプロトコルのスキーマが紹介されています.記事では,みなさんの便利のために,ドキュメントを生成したと書かれています.

一昨日あたりから,このデバッグAPIにはまっているのですが,ただでさえ,いろんなページを開かなくてはならない,ウェブアプリの開発でAPIドキュメントのためにまたページが避かれるのは嫌だなと思って,こんなものを作ってみました.

すべての情報は inspector という JS の変数がもつオブジェクトに含まれているので,console で表示させるとこんな感じになります.ここでは,”Runtime” ドメインで利用可能なコマンドのうち,evaluateOn を眺めています.この機能が二つの引数として expression と objectId を取ることが分ります.

Web Inspector のなかで ”inspector” と叩くだけで API のスキーマをブラウズすることができます.元々の JSON スキーマで使われていた配列をコツコツとオブジェクトに変換する20行のコードのおかげで,扱いが簡単になりました.

以下のような感じです.

var inspector_schema = /*
 ここに http://trac.webkit.org/browser/trunk/Source/WebCore/inspector/Inspector.json の内容を埋める.
*/
;

var inspector = {};
inspector_schema.forEach(function (schema) {
    // array -> object
    var a2o = function (a, id) {
      var o = {};
      a.forEach(function (x) { o[x[id]] = x; });
      return o;
    };

    if (schema.types) schema.types = a2o(schema.types, 'id');
    if (schema.events) schema.events = a2o(schema.events, 'name');

    if (schema.commands) {
      schema.commands.forEach(function (c) {
          if (c.parameters) c.parameters = a2o(c.parameters, 'name');
          if (c.returns) c.returns = a2o(c.returns, 'name');
        });
      schema.commands = a2o(schema.commands, 'name');
    }

    inspector[schema.domain] = schema;
  });
inspector_schema = undefined;