Re: Firefox14に追加された、ディスプレイをスリープさせないようにするAPI「mozPower」のメモ
気になったので調べてみた。
まず、エラー内容が
引数が足りないやつも、それらしい引数を指定すると同じく「Error: The operation is insecure.」となった。
なので、セキュリティ的にまずいと認識されているであろうということ。
最初は、Chrome特権を有するコード、つまり、アドオンなどFirefox内部のコードからでないと実行できないのではないか、と思った。
が、しかし、それであるならば、コンテンツ側のJavaScriptからアクセスできる、navigationオブジェクト配下に存在する理由がない。何か方法があるはずだ、と思いなおした。
ということで、コード検索!
- まずは "mozPowser" で検索 http://mxr.mozilla.org/mozilla-central/search?string=mozPower
- テストコード発見! http://mxr.mozilla.org/mozilla-central/source/dom/power/test/browser_bug697132.js
- 5行目で
let kPrefNode = "dom.power.whitelist";
があり、何か about:config の preference のキー値っぽい感じ - 234行目の test 関数内で setCharPref して、kPrefNode に対して perference に値を設定してる。やはり、これが重要だと思われる。
- ただし、テストコードは data URL でやっているため、少し特殊だ。通常のhttpのURL場合はどうすれば良いか...
- 今度は "dom.power.whitelist" で検索 http://mxr.mozilla.org/mozilla-central/search?string=dom.power.whitelist
- http://mxr.mozilla.org/mozilla-central/source/dom/power/PowerManager.cpp の 74行目で使用してる
nsContentUtils::URIIsChromeOrInPref(uri, "dom.power.whitelist")
メソッドは何ぞ?- http://mxr.mozilla.org/mozilla-central/source/content/base/src/nsContentUtils.cpp#642
- 5行目で
ということで、
- about:config を開く
- たぶん、存在しないので、"dom.power.whitelist" を新規作成し、使用したい値を "," 区切りで設定
- 無事、実行できた