diff --git a/mobile/android/base/gfx/ViewportMetrics.java b/mobile/android/base/gfx/ViewportMetrics.java index e50e160d504f..a9a48ab20b10 100644 --- a/mobile/android/base/gfx/ViewportMetrics.java +++ b/mobile/android/base/gfx/ViewportMetrics.java @@ -236,17 +236,17 @@ public class ViewportMetrics { public String toJSON() { try { - return new JSONStringer().object() - .key("x").value(mViewportRect.left) - .key("y").value(mViewportRect.top) - .key("width").value(mViewportRect.width()) - .key("height").value(mViewportRect.height()) - .key("pageWidth").value(mPageSize.width) - .key("pageHeight").value(mPageSize.height) - .key("offsetX").value(mViewportOffset.x) - .key("offsetY").value(mViewportOffset.y) - .key("zoom").value(mZoomFactor) - .endObject().toString(); + JSONStringer object = new JSONStringer().object(); + object.key("zoom").value(mZoomFactor); + object.key("offsetY").value(mViewportOffset.y); + object.key("offsetX").value(mViewportOffset.x); + object.key("pageHeight").value(mPageSize.height); + object.key("pageWidth").value(mPageSize.width); + object.key("height").value(mViewportRect.height()); + object.key("width").value(mViewportRect.width()); + object.key("y").value(mViewportRect.top); + object.key("x").value(mViewportRect.left); + return object.endObject().toString(); } catch (JSONException je) { Log.e(LOGTAG, "Error serializing viewportmetrics", je); return ""; diff --git a/mobile/android/chrome/content/browser.js b/mobile/android/chrome/content/browser.js index 351c5e7be160..2884e3502268 100644 --- a/mobile/android/chrome/content/browser.js +++ b/mobile/android/chrome/content/browser.js @@ -1160,10 +1160,10 @@ Tab.prototype = { get viewport() { // Update the viewport to current dimensions - this._viewport.x = this.browser.contentWindow.scrollX + - this.viewportExcess.x; - this._viewport.y = this.browser.contentWindow.scrollY + - this.viewportExcess.y; + this._viewport.x = (this.browser.contentWindow.scrollX + + this.viewportExcess.x) || 0; + this._viewport.y = (this.browser.contentWindow.scrollY + + this.viewportExcess.y) || 0; // Transform coordinates based on zoom this._viewport.x = Math.round(this._viewport.x * this._viewport.zoom); @@ -1192,8 +1192,8 @@ Tab.prototype = { updateViewport: function(aReset) { let win = this.browser.contentWindow; let zoom = (aReset ? this.getDefaultZoomLevel() : this._viewport.zoom); - let xpos = (aReset ? win.scrollX * zoom : this._viewport.x); - let ypos = (aReset ? win.scrollY * zoom : this._viewport.y); + let xpos = ((aReset && win) ? win.scrollX * zoom : this._viewport.x); + let ypos = ((aReset && win) ? win.scrollY * zoom : this._viewport.y); this.viewportExcess = { x: 0, y: 0 }; this.viewport = { x: xpos, y: ypos,