clngn / vtuber-comment-extension

みんなよう見とる
MIT License
37 stars 6 forks source link

update chrome extension manifest v3 #21

Open clngn opened 2 years ago

clngn commented 2 years ago

https://developer.chrome.com/docs/extensions/mv3/mv2-sunset/

pirocot commented 2 years ago

@clngn もしかしたら作業が被っちゃったかもしれませんが、学習を兼ねて対応してみたので例を一応。

https://github.com/pirocot/vtuber-comment-extension/commit/79b0d2859615cac0d521cbee8776e0c8cad0941b

  1. CDN経由のjsロードの不許可に伴い、material.min.jsをローカルに取り込んだ。
  2. options.htmlにApache Licence 2.0の表記を追加した。
  3. eslintからmaterial.min.jsを除外した。

Material Design Liteのライセンスについては、Chromeストアの説明文にもThis software includes the work that is distributed in the Apache License 2.0と表記すればまずは良いと思います。

pirocot commented 2 years ago

その後いろんなコメントで動作確認していましたが、同じコメントでも以下のようなエラーになるときとならないときがあるようです。まずはご一報をば。

image

オーナーのアイコンやコメント者のアイコン画像で出ています。今のところ原因はわかっていません。

clngn commented 2 years ago

@pirocot ありがとうございます、参考にさせていただきますー!:pray:

pirocot commented 2 years ago

@clngn

結論から言うと前回の内容でChrome 99がリリースされれば動くようになります。とりあえずPR出すので、あとのご判断はお任せします!

スタックトレース

extensions::imageUtil:25 Fetch API cannot load blob:https://www.youtube.com/bd00c3a0-161b-4cd7-b29a-e9d9fc6756a8. URL scheme "blob" is not supported.
loadImageDataForServiceWorker @ extensions::imageUtil:25

エラー発生箇所

メッセージ通り、fetch()がpathとして受け入れるスキームのサポート不足だったようです。

extensions::imageUtil:25

function loadImageDataForServiceWorker(imageSpec, callbacks) {
  var path = imageSpec.path;
  let fetchPromise = fetch(path);  ★エラー

Chrome バージョンごとの動作確認結果

エラー

バージョン: 98.0.4758.82(Official Build) (64 ビット)

正常動作(Chrome Betaチャネル)

バージョン: 99.0.4844.27(Official Build)beta (64 ビット)

番外:もしChrome 98で動かすなら

https://github.com/pirocot/vtuber-comment-extension/commit/e5a1e95fab679e824d66c136f53006eda97b13ff

一応こういう風に、画像URLからblobにせずスルーすれば動きます。 ただfetch()のblobスキームサポートなんてChrome 48で解決していた問題ですし、拡張側でケアする必要もないのかなと思いました。