Chrome Extension開発を勉強してみる (14) - file:// へのアクセスに関して -

2012-08-08T00:00:00+00:00 Chrome Extension JavaScript

permissionsに設定すればfile://なスキームアクセスも可能なのだけど

{
  "name": "test",
  "version": "0.1",
  "manifest_version": 2,
  "browser_action": {
    "default_title": "test",
    "default_icon": "icon.png"
  },
  "background": {
    "scripts": ["background.js"]
  },
  "permissions": ["<all_urls>"]
}

というように<all_urls>というようなパーミッションを付与する事でも可能な模様。あんまり望ましくは無いとは思うのですがこれやると

というようにfile://なスキームアクセスを許可を設定したりも出来る。で問題はそれが有効なのかどうかに関して。それはchrome.extension.isAllowedFileSchemeAccessで取得出来る。なのでfile://スキームにアクセス出来るか否かはそれでチェックすれば良い。ソースにすると

(function(undefined) {
  chrome.browserAction.onClicked.addListener(function() {
    chrome.extension.isAllowedFileSchemeAccess(function(allowed) {
      if (allowed) {
        var xhr = new XMLHttpRequest();
        xhr.open("GET", "file:///home/kinjouj/.vimrc");

        xhr.onload = function() {
          alert(xhr.responseText);
        };

        xhr.send(null);
      } else {
        alert("ERROR: cannot access denied file:// url");
      }
    });
  });
})();

てな感じで引数にはコールバックを取る。でその引数にこのfile://スキームへのアクセスが認可されてるかを取得出来る模様

あんまり用途的なのが思いつかないけど、そういう事も一応出来る的な感じで

Chrome Extension開発を勉強してみる (15) - chrome.storageを使う - "manifest_version: 2"とContent-Security-Policy