0-9:
chrome.experimental.record - Google Chrome
名前からSelenium的な「ユーザの動作を記録して再生する」APIかと思ったが、「別プロセスでChromeを起動して動作記録を取る」APIのよう。
Windows、Mac、Stable、Dev共に動作しなかったので詳細不明(別プロセスのChromeの起動に失敗してるっぽい)
chrome.debugger - Google Chrome
DevToolsの内容を外部から操作できるAPIだが、「DevToolsを起動中はAPI経由での接続ができない」という制限があるためあまり実用的ではない。
(remove debugger用の通信プロトコルを叩けるようにしたAPIのようなので、元々1ページに1接続で十分な想定だったんだろう)ドキュメントには今後DevToolsを起動中でもAPI経由で接続できるようになるような記述があるので、その点が修正されれば色々と面白いことが出来そう。
(SourceのLiveEditも触れるようになっているっぽい)chrome.devtools.panels - Google Chrome
DevToolsの既存のパネル上に要素を配置できるAPI。
ただし、このAPIが呼ばれるコード内からは、上記chrome.debugger APIにアクセス出来ないのであまり実用性は高くない。
chrome.socket - Google Chrome
Windows 7環境ではsocket.accept周りがおかしい気がする。
(何回か接続、切断を繰り返すとacceptがcallbackされなくなる。acceptを取りこぼしてる感じ。Macでは正常。Stable, Dev, Canaryで再現)
まだ、socket.acceptはexperimentalなので正常版では直るのかな?chrome.socket.connectでDNSの名前引きに失敗した場合、callbackに-105が渡される。-3が渡されることもあるけど、こちらは何かわからない。
disconnect、destroyは両方呼び出さないとちゃんと切断されなかったので両方呼び出しているが、socketの使い回しとかするのであればちゃんと呼び分けたほうがいいのかもしれない。
chrome.socket.listenは同じポートで複数回呼び出すとcallbackに0以外を渡すので確認する。
chrome.socket.acceptはcallback内でエラー処理が終わったら、即同期的に再度chrome.socket.acceptを呼び出す。
callbackを待たずに再度chrome.socket.acceptを読んだ場合は-2が返る。
(-2はエラー処理ではなく無視していいと思う)
-2と0以外の値でcallbackされた場合、エラーとして処理する。chrome.socket.setNoDelayはあってもなくても動作は変わらない?Proxy作成時にブラウザと通信するsocketには有効にしてみた。
(特に変わった感じはなかった)chrome.socket.readはまずenv.data.byteLengthを見てデータが読めたかどうか確認する。それ以上データが有るかどうかは読み込んだデータ内容を見て判断する。
サーバがデータを送らないのにchrome.socket.readするとcallbackが呼ばれずに延々待たされることになるので注意(当然だけど)chrome.socket.listenの第4引数(backlog)は「クライアントが接続してきた場合、backlog数分だけ待たせておく(それ以上はエラーにする)」数。ただ、現状有効なのか若干疑問(動いてないような?。特にWindows環境)









