{ if (chrome.runtime.lastError) { sendResponse({ success: false, error: chrome.runtime.lastError.message }); } else { sendResponse({ success: true }); } } ); break; case "setVolume": // Transmet la commande de réglage du volume au programme natif if (typeof message.volume !== "number" || message.volume < 0 || message.volume > 100) { sendResponse({ status: "error", "> { if (chrome.runtime.lastError) { sendResponse({ success: false, error: chrome.runtime.lastError.message }); } else { sendResponse({ success: true }); } } ); break; case "setVolume": // Transmet la commande de réglage du volume au programme natif if (typeof message.volume !== "number" || message.volume < 0 || message.volume > 100) { sendResponse({ status: "error", "> { if (chrome.runtime.lastError) { sendResponse({ success: false, error: chrome.runtime.lastError.message }); } else { sendResponse({ success: true }); } } ); break; case "setVolume": // Transmet la commande de réglage du volume au programme natif if (typeof message.volume !== "number" || message.volume < 0 || message.volume > 100) { sendResponse({ status: "error", ">
// Stockage des paramètres utilisateur
let settings = {
tolerance: 5, // Tolérance par défaut en dB
frequency: 0.5, // Fréquence par défaut en secondes
};
// Écouteur pour les messages provenant des scripts de l'extension
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
switch (message.action) {
case "runInstaller":
// Lancer l'installeur avec Native Messaging
chrome.runtime.sendNativeMessage(
"com.volumeregulator",
{ action: "runInstaller" },
(response) => {
if (chrome.runtime.lastError) {
sendResponse({ success: false, error: chrome.runtime.lastError.message });
} else {
sendResponse({ success: true });
}
}
);
break;
case "setVolume":
// Transmet la commande de réglage du volume au programme natif
if (typeof message.volume !== "number" || message.volume < 0 || message.volume > 100) {
sendResponse({ status: "error", message: "Volume invalide" });
return true;
}
chrome.runtime.sendNativeMessage(
"com.volumeregulator",
{ action: "setVolume", volume: message.volume },
(response) => {
sendResponse(response || { status: "error", message: "Aucune réponse de l'application native" });
}
);
break;
case "updateSettings":
// Met à jour les paramètres de tolérance et de fréquence
if (typeof message.tolerance !== "number" || typeof message.frequency !== "number") {
sendResponse({ status: "error", message: "Paramètres invalides" });
return true;
}
settings.tolerance = message.tolerance;
settings.frequency = message.frequency;
chrome.runtime.sendNativeMessage(
"com.volumeregulator",
{
action: "updateSettings",
tolerance: settings.tolerance,
frequency: settings.frequency,
},
(response) => {
sendResponse(response || { status: "error", message: "Échec de la mise à jour des paramètres" });
}
);
break;
case "getCurrentVolume":
// Demande au programme natif de renvoyer le volume actuel
chrome.runtime.sendNativeMessage(
"com.volumeregulator",
{ action: "getCurrentVolume" },
(response) => {
sendResponse(response || { currentVolume: 0 });
}
);
break;
default:
// Action inconnue
console.warn("Action inconnue reçue :", message.action);
sendResponse({ status: "error", message: "Action inconnue" });
}
// Retourne "true" pour indiquer que la réponse est asynchrone
return true;
});
// Gestion des erreurs et des connexions avec l'application native
chrome.runtime.onConnect.addListener((port) => {
console.log("Port connecté :", port.name);
port.onDisconnect.addListener(() => {
console.error("Port déconnecté :", port.name);
});
port.onMessage.addListener((msg) => {
console.log("Message reçu :", msg);
});
});