これらのイベントで選択したプロキシを適用する場合は、Manifest V3 のサービスワーカーの最上位で onStartup と onInstalled を同期的に登録します。意図的に 1 つのルートに固定した拡張機能の場合は次のとおりです。

function applyProxy() {
  chrome.proxy.settings.set({
    value: {
      mode: 'fixed_servers',
      rules: {
        singleProxy: {
          scheme: 'http',
          host: 'proxy.example',
          port: 8080,
        },
      },
    },
    scope: 'regular',
  }, () => {
    if (chrome.runtime.lastError) {
      console.error(chrome.runtime.lastError.message);
    }
  });
}

chrome.runtime.onStartup.addListener(applyProxy);
chrome.runtime.onInstalled.addListener(applyProxy);

manifest ではプロキシ権限を宣言し、このバックグラウンドワーカーに名前を付ける必要があります。プロキシ認証のない許可された一般ブラウジング用ルートでは、エンドポイントを HTTP プロキシ一覧 の候補に置き換え、ポートは整数のままにします。

onStartup は拡張機能がインストールされた状態でのプロファイル起動です。onInstalled には更新も含まれ、展開済み拡張機能の再読み込みも更新として扱われます。ウィンドウ作成イベントは各ウィンドウを表し、1 つのセッションで何度も発生することがあります。

保存されたプロファイルやオフスイッチがある拡張機能では、更新のたびにハードコードされた既定値へ戻すのではなく、ハンドラーがその選択を読み込んで適用するようにします。リスナーの登録は最上位のままにし、非同期処理は Chrome がハンドラーを呼び出したときに開始できます。

開発中はインストールとプロファイル起動を別々に試し、それぞれの構成結果を確認してください。これらは 2 つの初期化経路であり、別のウィンドウを開いて得られる証拠ではありません。

関連記事