From 8a73a093d97e8f7a5c60defdbcee428fb63546b0 Mon Sep 17 00:00:00 2001 From: gorhill Date: Tue, 2 Jun 2015 18:12:28 -0400 Subject: [PATCH] this fix #282 --- platform/firefox/vapi-background.js | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/platform/firefox/vapi-background.js b/platform/firefox/vapi-background.js index fff81bdf9..325a9181c 100644 --- a/platform/firefox/vapi-background.js +++ b/platform/firefox/vapi-background.js @@ -742,9 +742,12 @@ var tabWatcher = (function() { if ( tabbrowser === browser ) { return 0; } - return vAPI.fennec ? - tabbrowser.tabs.indexOf(browser) : - tabbrowser.browsers.indexOf(browser); + // Fennec + // https://developer.mozilla.org/en-US/Add-ons/Firefox_for_Android/API/BrowserApp + if ( vAPI.fennec ) { + return tabbrowser.tabs.indexOf(tabbrowser.getTabForBrowser(browser)); + } + return tabbrowser.browsers.indexOf(browser); }; var indexFromTarget = function(target) { @@ -975,7 +978,7 @@ var tabWatcher = (function() { return { start: start, browserFromTarget: browserFromTarget, - tabs: function() { return browserToTabIdMap.keys(); }, + browsers: function() { return browserToTabIdMap.keys(); }, tabIdFromTarget: tabIdFromTarget, browserFromTabId: browserFromTabId, indexFromTarget: indexFromTarget, @@ -1573,8 +1576,8 @@ vAPI.net.registerListeners = function() { // Popup candidate if ( details.openerURL ) { - for ( var tab of tabWatcher.tabs() ) { - var URI = tab.currentURI; + for ( var browser of tabWatcher.browsers() ) { + var URI = browser.currentURI; // Probably isn't the best method to identify the source tab. // Apparently URI can be undefined under some circumstances: I @@ -1585,7 +1588,7 @@ vAPI.net.registerListeners = function() { continue; } - sourceTabId = tabWatcher.tabIdFromTarget(tab); + sourceTabId = tabWatcher.tabIdFromTarget(browser); if ( sourceTabId === tabId ) { sourceTabId = null; @@ -2230,11 +2233,11 @@ vAPI.lastError = function() { vAPI.onLoadAllCompleted = function() { var µb = µBlock; var tabId; - for ( var tab of tabWatcher.tabs() ) { - tabId = tabWatcher.tabIdFromTarget(tab); - µb.tabContextManager.commit(tabId, tab.currentURI.asciiSpec); + for ( var browser of tabWatcher.browsers() ) { + tabId = tabWatcher.tabIdFromTarget(browser); + µb.tabContextManager.commit(tabId, browser.currentURI.asciiSpec); µb.bindTabToPageStats(tabId); - tab.messageManager.sendAsyncMessage( + browser.messageManager.sendAsyncMessage( location.host + '-load-completed' ); }