Am trying to migrate a toggle to manifest V3, this toggles between web
and mobile
view.
With new declarativeNetRequest
am able to modify the header, but it does not reload page. Ideally after applying new mobile user agent, It supposed to reload and load page in mobile view.
I have declared dynamic rule in declarativeNetRequest
as below:
const rules = {
addRules: [
{
id: 36,
priority: 2,
action: {
type: 'modifyHeaders' as chrome.declarativeNetRequest.RuleActionType,
requestHeaders: [
{
header: 'user-agent',
operation: 'set' as chrome.declarativeNetRequest.HeaderOperation,
value: `mobileUserAgent`,
},
],
},
condition: {
urlFilter: 'example.com',
resourceTypes: [
'main_frame' as chrome.declarativeNetRequest.ResourceType,
'xmlhttprequest' as chrome.declarativeNetRequest.ResourceType,
],
},
},
],
}
chrome.declarativeNetRequest.updateDynamicRules(rules, () => {
if (chrome.runtime.lastError) {
console.error(chrome.runtime.lastError)
} else {
chrome.declarativeNetRequest.getDynamicRules(rules => console.log(rules))
}
})
It does update the value when checking in chrome dev tool, but it does not refresh the page and does not load mobile view with new user agent.
FYI this is old way of doing this and it works fine, but it does not support in manifest V3 This is old way of modifying headers.
chrome.webRequest.onBeforeSendHeaders.addListener(
function (details) {
for (var i = 0; i < details.requestHeaders.length; ++i) {
if (details.requestHeaders[i].name === 'User-Agent') {
details.requestHeaders[i].value = details.requestHeaders[i].value + ' OurUAToken/1.0';
break;
}
}
return { requestHeaders: details.requestHeaders };
},
{ urls: ['<all_urls>'] },
['blocking', 'requestHeaders']
);
what would be equivalent of chrome.webRequest.onBeforeSendHeaders.addListener
in manifest V3?