diff --git a/platform/firefox/vapi-background.js b/platform/firefox/vapi-background.js index 0bd5c23b4..7779a48e9 100644 --- a/platform/firefox/vapi-background.js +++ b/platform/firefox/vapi-background.js @@ -295,6 +295,7 @@ var windowWatcher = { if ( tabBrowser.deck ) { // Fennec tabContainer = tabBrowser.deck; + tabContainer.addEventListener('DOMTitleChanged', tabWatcher.onFennecLocationChange); } else if ( tabBrowser.tabContainer ) { // desktop Firefox tabContainer = tabBrowser.tabContainer; @@ -375,6 +376,23 @@ var tabWatcher = { url: location.asciiSpec }); }, + + onFennecLocationChange: function({target: doc}) { + // Fennec "equivalent" to onLocationChange + // note that DOMTitleChanged is selected as it fires very early + // (before DOMContentLoaded), and it does fire even if there is no title + var win = doc.defaultView; + if ( win !== win.top ) { + return; + } + + vAPI.tabs.onNavigation({ + frameId: 0, + tabId: vAPI.tabs.getTabId(getOwnerWindow(win).BrowserApp.getTabForWindow(win)), + url: Services.io.newURI(win.location.href, null, null).asciiSpec + }); + } + }; /******************************************************************************/ @@ -452,6 +470,7 @@ vAPI.tabs.registerListeners = function() { if ( tabBrowser.deck ) { // Fennec tabContainer = tabBrowser.deck; + tabContainer.removeEventListener('DOMTitleChanged', tabWatcher.onFennecLocationChange); } else if ( tabBrowser.tabContainer ) { tabContainer = tabBrowser.tabContainer; tabBrowser.removeTabsProgressListener(tabWatcher);