רשמו את onStartup ואת onInstalled באופן סינכרוני ברמה העליונה של service worker מסוג Manifest V3 כאשר האירועים האלה אמורים להחיל את הפרוקסי הנבחר. עבור תוסף שנקבע בכוונה לנתיב אחד:

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 חייב להצהיר על הרשאת הפרוקסי ולציין את ה-worker ברקע הזה. עבור נתיב גלישה ציבורי מותר בלי אימות פרוקסי, החליפו את נקודת הקצה במועמד מתוך רשימת פרוקסי HTTP, והשאירו את הפורט כמספר שלם.

onStartup הוא אתחול פרופיל כשהתוסף מותקן. onInstalled כולל גם עדכונים, לרבות טעינה מחדש של תוסף לא ארוז שנחשבת לעדכון. אירוע יצירת חלון מתאר כל חלון ויכול להתרחש שוב ושוב באותו מושב.

אם לתוסף יש פרופילים שמורים או מתג כיבוי, תנו למטפל לטעון ולהחיל את הבחירה הזו במקום לאפס ברירת מחדל מקודדת בכל עדכון. רישום המאזינים נשאר ברמה העליונה; עבודה אסינכרונית יכולה להתחיל כאשר Chrome קורא למטפל.

בדקו התקנה ואתחול פרופיל בנפרד במהלך הפיתוח, תוך בדיקת תוצאת התצורה בכל אחד מהם. אלה שני נתיבי אתחול, לא הוכחה שמתקבלת מפתיחת חלון אחר.

מאמרים קשורים