How to Rewrite the webRequest API with declarative_net_request API in Chrome Extension V3

66 Views Asked by At

I am trying to migrate my extension from V2 to V3. In V3 the webRequest API has been deprecated and replaced by declarative_net_request API. I want to rewrite the below code block using declarative_net_request API, but I don't have idea on how this can be done. Below is my code.

chrome.webRequest.onBeforeSendHeaders.addListener(function (headersDetails) {
    console.log("called webRequest addListener");
    if (extSettings != undefined && (extSettings.IsFeatureAvail == 0 || extSettings.IsExtEnabled == 0 || extSettings.IsProdExp == 1 || extSettings.IsProdAct == 0 || extSettings.ChangeUID == 0 || extSettings.IsCopyPirated == 1 || extSettings.InternalErr != 0)){
       return { requestHeaders: headersDetails.requestHeaders };
    }
    
    if (null != tabsMap && tabsMap.has(headersDetails.tabId) == true)
    {
        var tabInfo = tabsMap.get(headersDetails.tabId);
        if (undefined != tabInfo || null != tabInfo) {
            
            
                
            if (tabInfo.isWhiteListUrl === false && tabInfo.isVerifyWithWhiteList === false){
                tabInfo.url = (tabInfo.url === '') ? headersDetails.url : tabInfo.url;
                tabInfo.isWhiteListUrl = checkForWhiteListUrl(tabInfo.url);
                tabInfo.isVerifyWithWhiteList = true;                           
            }
            if (tabInfo.isWhiteListUrl == true || tabInfo.isPauseTracking == true) {
                return { requestHeaders: headersDetails.requestHeaders };
            }
        }
    }
    else {
        if (checkForWhiteListUrl(headersDetails.url) == true) {
            return { requestHeaders: headersDetails.requestHeaders };
        }
    }
    
    for (var i = 0; i < headersDetails.requestHeaders.length; ++i) {
        if (headersDetails.requestHeaders[i].name === "User-Agent") {
            if (localStorage.getItem("myUA"))
            {
                headersDetails.requestHeaders[i].value = headersDetails.requestHeaders[i].value + "/" + localStorage.getItem("myUA");
            }
        }
    }
    return { requestHeaders: headersDetails.requestHeaders };
}, { urls: ["<all_urls>"] }, extraInfoSpec);

I want to rewrite the code using declarative_net_request API.

0

There are 0 best solutions below