const urls = [ "*://*.tile.openstreetmap.org/*" ] var tileserver_url = ""; function log(msg) { console.log("custom-openstreetmap-tile-server: " + msg) } function setTileserver(storage) { tileserver_url = storage.tileserver; log("set tileserver_url to " + tileserver_url); } function onError(error) { log(`Error: ${error}`); } function updateTileserverUrl() { var getting = browser.storage.local.get("tileserver"); getting.then(setTileserver, onError); } function replaceTileserver(request) { updateTileserverUrl(); if (tileserver_url == "") { log(request.url + " -> no tileserver_url"); return {} } var url = request.url.replace("tile.openstreetmap.org", tileserver_url); log(request.url + " -> " + url); return {redirectUrl: url}; } chrome.webRequest.onBeforeRequest.addListener(replaceTileserver, {urls: urls}, ["blocking"]);