ChromeExtensionでブックマーク一覧を走査する

最近,ChromeExtensionの開発に手を出し始めたきたけーです.
素振りがてらブックマーク一覧の走査してみました.console.logするためにpopupに記述しましたが,ブックマーク情報の取得はbackgroundなどでも可能です.

  chrome.bookmarks.getTree(function (trees) {
    for (var i=0; i < trees.length; i++) {
      scanNode(trees[i], 0);
    }
  });

  function scanNode(node, level) {
    if (isPage(node)) {
      console.log(makePadding(level)+"Page:"+node.title);
    } else {
      if (isRoot(node)) {
        console.log(makePadding(level)+"Root:");
      } else {
        console.log(makePadding(level)+"Folder:"+node.title);
      }
      var children = node.children;
      for (var i=0; i < children.length; i++) {
        scanNode(children[i], level+1);
      }
    }
  }

  function isRoot(node) {
    return node.id === "0";
  }

  function isPage(node) {
    return !node.hasOwnProperty("children");
  }

  function makePadding(size) {
    return (new Array(size+1)).join(" ");
  }

実行結果はこんなかんじ

f:id:kitak:20130427230522p:plain

書いて思ったこと

  • chrome.bookmarks.getTreeのコールバックでブックマークの木構造を取得できるんだけど,なぜかこれが配列になってて不思議(普通に考えてひとつだと思うんだけど)
  • ルートのidが0と決めつけたんだけどこれはどうなんだ