js-beautify -r ./static/js/ltsmSandbox.jsファイル中の全てのwindow.origin、window.location.origin、location.originを"chrome-extension://ophjlpahpchlmihnnnihgmmeilfjmjjc"に置き換え
{
//省略
//省略
"background": {
-- "service_worker": "background.js",
++ "scripts": ["background.js"],
"type": "module"
},
-- "sandbox": {
-- "pages": [
-- "ltsmSandbox.html",
-- "cropperSandbox.html"
-- ]
-- },
//省略
//省略
++ "content_security_policy": {
++ "extension_pages": "script-src 'self' 'wasm-unsafe-eval'; object-src 'self';"
++ },
++ "browser_specific_settings": {
++ "gecko": {
++ "id": "LINEPorted@FoxRefire"
++ }
++ },
-- "key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuOql7UFiY9pkxo4aAmuN2HHlZhNT5ws6knRdxYhOACJcm1sBfB7GIIMuBwtpYSb3B3m7jbrKqX2iDdgYLxE9ZmFjYgrD6p4D4H9/4FCz/a7h66vp0onNu2PmbZOEnpZKeCgUGMDDcXk673R8tPfkBbmuzQ0rvpc1Z8hWgHo1jLtnjpkTlH4vzu9FGRQFsCuqUzJPjoPpa2rozvTPpmiO2qfcqH3FJoGJbKwXIPZ74JI8cY//o6xFDVhugveN1VqoGZA8PsVliAa5fgBqDohfiv36xkuD88BqynKNn00hGibuXrj4L6mnR+9I68dhwAiXY01gihtI6KhbekToLfoJmwIDAQAB",
"version": "3.7.0"
}js-beautify -r ./background.js-- chrome.action.onClicked.addListener((async () => {
-- //省略
-- //省略
-- }));
++ if(chrome.windows){
++ chrome.action.onClicked.addListener(() => {
++ chrome.windows.create({
++ url: "index.html",
++ type: "popup",
++ width: 710,
++ height: 570
++ });
++ });
++ } else {
++ chrome.action.onClicked.addListener(() => {
++ chrome.tabs.create({url: "index.html"})
++ })
++ }まず、一般的なポート手順であるマニフェスト内のbackground.service_workerをbackground.scriptsに変更しbrowser_specific_settingsの追加を行ってmoz-extension://Internal-UUID/index.htmlを開いてみる。
このままではWebAssembly実行でCSPエラーが発生したため更にマニフェストにcontent_security_policyを追加して再実行。

まだ、ltsm_not_availableというエラーが発生していたが、スタックトレースからは直接の原因箇所が明らかではなかったため、大元のエラー箇所を探ることにする

デバッガーからltsmSandboxを呼び出しているsetup()のcatch内にブレークポイントを設定して、監視式にconsole.log(e)と登録してみる

コンソールにさらに上流のエラーと見られるError: sandbox_errorが記録された

更にthis.sandboxをエクスポートしてみて実際にinit()、sendMessage()を実行してみるとsendMessage内でsandbox_errorが発生していた

しかしスタックトレースから辿ったところこのエラーも根本原因のエラーではなく、jpクラス内でr(new Op(_d.SANDBOX_ERROR))というコードによってスローされていることが分かった。
更に根本的な原因を探るためjpクラスのコンストラクタ内にブレークポイントを設定し、監視式にconsole.log(t.data)を登録

根本原因とみられるエラーInvalid origin: moz-extension://Internal-UUIDが確認できた

ltsmSandbox.jsをjs-beautifyでインデントを整えてから開き、ファイル内でInvalid originと検索してみる
コードを見ると拡張機能のオリジンに応じて使用するトークンを選択しているようだ。
moz-extension://Internal-UUIDはトークンと対応していないため、エラーが発生していることが分かった。

そこで、ltsmSandbox.js内の全ての現在のオリジンを取得している部分の処理を本来のオリジン"chrome-extension://ophjlpahpchlmihnnnihgmmeilfjmjjc"に上書きしてみたところ、正しく動作するようになった。
