2022-07-16 (土)
* Oculus QuestのブラウザをGoから操作する
Oculus Browserでbookmarkletやアドレスバーからスクリプト実行できなくなってしまったのでADB経由で操作する.PCのChromeから操作できるけど,開いているタブを監視して,URLがマッチしたら自動的にスクリプトを実行するようにしたい.
Chromeのリモートデバッグで操作可能なのはわかっているので,Chrome DevTools Protocolで通信して操作することにする.Android上ではchrome_devtools_remoteというドメインソケットで待ち受けているらしいので,ADBでforwardする必要がある.
adb forward tcp:9222 localabstract:chrome_devtools_remote
あとは ws://localhost:9222/devtools/browser に繋げば色々出来る.
http://localhost:9222/json にアクセスすればタブの一覧が見れたりする.
Chromeは直接ADB上で何かしてるように見えるけど,ほとんどのDevTools Protocolを扱うライブラリはTCP(というかWebSocket)で接続するっぽい.
今回はとりあえず, https://github.com/chromedp/chromedp というGoのライブラリを使う.
困ったのは,Contextがcancelされると問答無用でタブを閉じてしまう?仕方ないので, 切断前にchromedp.Context.TargetIDを空にして回避.
あとは,ADBをネットワーク越しに使うために,Questを再起動すると adb tcpip しなおさないといけないのをどうにかしたい...