diff --git a/mobile/android/base/TabsTray.java b/mobile/android/base/TabsTray.java index f1bf9a317c1..e69761f2e90 100644 --- a/mobile/android/base/TabsTray.java +++ b/mobile/android/base/TabsTray.java @@ -140,6 +140,7 @@ public class TabsTray extends Activity implements GeckoApp.OnTabsChangedListener void finishActivity() { finish(); overridePendingTransition(0, R.anim.shrink_fade_out); + GeckoAppShell.sendEventToGecko(new GeckoEvent("Tab:Screenshot:Cancel","")); } // Adapter to bind tabs into a list diff --git a/mobile/android/chrome/content/browser.js b/mobile/android/chrome/content/browser.js index b26bfb658a2..2d55ee9a7e0 100644 --- a/mobile/android/chrome/content/browser.js +++ b/mobile/android/chrome/content/browser.js @@ -504,7 +504,31 @@ var BrowserApp = { this._tabs.splice(this._tabs.indexOf(aTab), 1); }, + screenshotQueue: null, + screenshotTab: function screenshotTab(aData) { + if (this.screenshotQueue == null) { + this.screenShotQueue = []; + this.doScreenshotTab(aData); + } else { + this.screenshotQueue.push(aData); + } + }, + + doNextScreenshot: function() { + if (this.screenshotQueue == null || this.screenshotQueue.length == 0) { + this.screenshotQueue = null; + return; + } + let data = this.screenshotQueue.pop(); + if (data == null) { + this.screenshotQueue = null; + return; + } + this.doScreenshotTab(data); + }, + + doScreenshotTab: function doScreenshotTab(aData) { let json = JSON.parse(aData); let tab = this.getTabForId(parseInt(json.tabID)); let width = parseInt(json.width); @@ -899,6 +923,8 @@ var BrowserApp = { this._handleTabClosed(this.getTabForId(parseInt(aData))); } else if (aTopic == "Tab:Screenshot") { this.screenshotTab(aData); + } else if (aTopic == "Tab:Screenshot:Cancel") { + this.screenshotQueue = null; } else if (aTopic == "Browser:Quit") { this.quit(); } else if (aTopic == "SaveAs:PDF") { @@ -1557,6 +1583,9 @@ Tab.prototype = { } }; sendMessageToJava(message); + Services.tm.mainThread.dispatch(function() { + BrowserApp.doNextScreenshot() + }, Ci.nsIThread.DISPATCH_NORMAL); }, updateTransform: function() {