0

I'm developing a web extension for Microsoft Edge; my browser is using EdgeHTML 14.14393.

I'm trying to change the User-Agent string in the following code:

function useDifferentUserAgent() {

  var obsh = browser.webRequest.onBeforeSendHeaders;

  // attach my listener with filter and extraInfoSpec
  obsh.addListener(
    rewriteUserAgentHeader, 
    { tabId: tab.id, urls: ["*://*.someurl.com/*"] }, 
    ['requestHeaders', 'blocking']
  );

  // now that the listener is attached, this should trigger the event, right?
  browser.tabs.update(tab.id, { url: 'http://someurl.com/foo/bar' });

    if (obsh.hasListener(rewriteUserAgentHeader)) {
        obsh.removeListener(rewriteUserAgentHeader);
    }
}

function rewriteUserAgentHeader(details) {

    var headers = details.requestHeaders;
    var blockingResponse = {};

    for (var i = 0, l = headers.length; i < l; ++i) {
        if (headers[i].name.toLowerCase() == 'user-agent') {
            headers[i].value = "some other user agent string";
            break;
        }
    }

    blockingResponse.requestHeaders = headers;
    return blockingResponse;
};

The browser.tabs.update() call opens the new URL as expected, but when I put a breakpoint on the first line of rewriteUserAgentHeader function, it never hits. I can only assume that:

  1. I'm doing it wrong (most likely) or
  2. the update call doesn't trigger onBeforeSendHeaders.

Update

I found that I was missing the host permission from my manifest.json file - here is my updated permissions section:

"permissions": [
  "tabs",
  "activeTab",
  "webRequest",
  "webRequestBlocking",
  "*://*.someurl.com/*"
]

... but still, there is no joy in MudVille; my quest for illumination continues. My breakpoint in the event handler never hits. Any assistance, as always, is greatly appreciated.

Scott Baker
  • 10,013
  • 17
  • 56
  • 102

1 Answers1

0

The call to browser.tabs.update() is an asynchronous call; it doesn't stop and wait for that call to be completed before moving on to the removeListener() method.

TL;DR - by the time the browser had triggered the message I had already detached the event.

Scott Baker
  • 10,013
  • 17
  • 56
  • 102