Enregistrez onStartup et onInstalled de façon synchrone au niveau supérieur d'un service worker Manifest V3 lorsque ces événements doivent appliquer le proxy choisi. Pour une extension volontairement fixée à une seule route :

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);

Le manifeste doit déclarer l'autorisation proxy et nommer ce worker d'arrière-plan. Pour une route publique autorisée sans authentification proxy, remplacez le point de terminaison par un candidat de la liste de proxys HTTP, en laissant le port entier.

onStartup correspond au démarrage du profil avec l'extension installée. onInstalled couvre aussi les mises à jour, y compris le rechargement d'une extension non empaquetée, qui compte comme une mise à jour. L'événement de création de fenêtre décrit chaque fenêtre et peut se déclencher plusieurs fois dans une même session.

Si l'extension dispose de profils enregistrés ou d'un interrupteur d'arrêt, faites en sorte que le gestionnaire charge et applique ce choix au lieu de rétablir une valeur par défaut codée en dur à chaque mise à jour. L'enregistrement des écouteurs reste au niveau supérieur ; le travail asynchrone peut commencer lorsque Chrome appelle le gestionnaire.

Testez l'installation et le démarrage du profil séparément pendant le développement, en vérifiant le résultat de la configuration pour chacun. Ce sont deux chemins d'initialisation, pas une preuve obtenue en ouvrant une autre fenêtre.

Articles similaires