Skip to content

Optimiser la recherche de l’en-tête Accept-Language sur le chemin critique onBeforeSendHeaders#53

Merged
ormidales merged 3 commits into1.0.2from
copilot/optimize-accept-language-header
Feb 16, 2026
Merged

Optimiser la recherche de l’en-tête Accept-Language sur le chemin critique onBeforeSendHeaders#53
ormidales merged 3 commits into1.0.2from
copilot/optimize-accept-language-header

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Feb 16, 2026

Le traitement de Accept-Language sur onBeforeSendHeaders faisait une recherche via find + callback et copiait le tableau des headers à chaque requête main_frame. Sur un chemin exécuté très fréquemment, cela ajoute un coût évitable.

  • Changement principal — recherche indexée

    • Remplacement de requestHeaders.find(...) par une boucle for indexée.
    • On récupère directement acceptLanguageHeaderIndex puis on met à jour en place si trouvé.
  • Changement principal — mutation directe

    • Suppression de la copie const requestHeaders = [...details.requestHeaders].
    • Utilisation directe de details.requestHeaders pour éviter allocation/copie superflues.
  • Comportement conservé

    • Si Accept-Language existe : sa valeur est remplacée par la langue spoofée.
    • Sinon : l’en-tête est ajouté avec la même valeur calculée qu’avant.
const requestHeaders = details.requestHeaders;
const spoofedLanguage = buildAcceptLanguage(host);

let acceptLanguageHeaderIndex = -1;
for (let i = 0; i < requestHeaders.length; i++) {
  const header = requestHeaders[i];
  if (header && typeof header.name === "string" && header.name.toLowerCase() === "accept-language") {
    acceptLanguageHeaderIndex = i;
    break;
  }
}

if (acceptLanguageHeaderIndex !== -1) {
  requestHeaders[acceptLanguageHeaderIndex].value = spoofedLanguage;
} else {
  requestHeaders.push({ name: "Accept-Language", value: spoofedLanguage });
}
Original prompt

This section details on the original issue you should resolve

<issue_title>Optimisation de la recherche de l'en-tête Accept-Language</issue_title>
<issue_description>## Contexte
Le script intercepte onBeforeSendHeaders pour falsifier l'en-tête linguistique.

Problème

La recherche se fait via la méthode de tableau find sur un champ transformé en .toLowerCase(). Bien que fonctionnelle, cette opération est exécutée sur chaque ressource de la frame principale pour chaque requête, constituant un chemin critique pour les performances.

Scénario de Reproduction

  1. Charger une page lourde générant plusieurs navigations de frames principales ou de requêtes successives.
  2. Profiler les performances de l'extension.

Comportement Attendu

Le code doit identifier l'index de l'en-tête le plus rapidement possible pour minimiser la latence réseau induite par le blocage.

Pistes Techniques

Remplacer la boucle find par une boucle for classique en utilisant findIndex. Si un index est trouvé, le modifier. Sinon, l'ajouter. Cela permet de muter directement le tableau sans maintenir de références d'objets superflues en mémoire.

Environnement

Toutes plateformes.</issue_description>

Comments on the Issue (you are @copilot in this section)


💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.

Copilot AI and others added 2 commits February 16, 2026 21:21
Co-authored-by: ormidales <46538211+ormidales@users.noreply.github.com>
Co-authored-by: ormidales <46538211+ormidales@users.noreply.github.com>
Copilot AI changed the title [WIP] Optimize search for Accept-Language header Optimiser la recherche de l’en-tête Accept-Language sur le chemin critique onBeforeSendHeaders Feb 16, 2026
Copilot AI requested a review from ormidales February 16, 2026 21:23
@ormidales ormidales added this to the v1.0.2 milestone Feb 16, 2026
@ormidales ormidales linked an issue Feb 16, 2026 that may be closed by this pull request
@ormidales ormidales marked this pull request as ready for review February 16, 2026 21:24
Copilot AI review requested due to automatic review settings February 16, 2026 21:24
@ormidales ormidales merged commit 3b4a151 into 1.0.2 Feb 16, 2026
@ormidales ormidales deleted the copilot/optimize-accept-language-header branch February 16, 2026 21:25
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR optimizes the performance-critical onBeforeSendHeaders listener by eliminating unnecessary array allocation and improving header search efficiency. The extension spoofs the Accept-Language header on every main frame request, making this code path highly performance-sensitive.

Changes:

  • Replaced .find() method with indexed for loop for faster header lookup
  • Removed array spread operation ([...details.requestHeaders]) to eliminate unnecessary copying
  • Maintained identical behavior: updates existing header or adds new one when missing

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Optimisation de la recherche de l'en-tête Accept-Language

3 participants