From 446bfddcd39f5d984cb69aa2b0674b01befa41c2 Mon Sep 17 00:00:00 2001 From: Benjamin Stover Date: Fri, 27 Aug 2010 16:25:53 -0700 Subject: [PATCH] support for zoom (disabled) --- mobile/chrome/content/BrowserView.js | 34 ++--------- mobile/chrome/content/bindings/browser.js | 9 +-- mobile/chrome/content/bindings/browser.xml | 12 +++- mobile/chrome/content/browser.js | 71 +++++++++++++++++++--- 4 files changed, 83 insertions(+), 43 deletions(-) diff --git a/mobile/chrome/content/BrowserView.js b/mobile/chrome/content/BrowserView.js index 389874920746..91091add2755 100644 --- a/mobile/chrome/content/BrowserView.js +++ b/mobile/chrome/content/BrowserView.js @@ -41,6 +41,10 @@ let Ci = Components.interfaces; +const kBrowserFormZoomLevelMin = 1.0; +const kBrowserFormZoomLevelMax = 2.0; +const kBrowserViewZoomLevelPrecision = 10000; + function BrowserView(container, visibleRectFactory) { Util.bindAll(this); this.init(container, visibleRectFactory); @@ -74,7 +78,6 @@ BrowserView.prototype = { init: function init(container, visibleRectFactory) { this._container = container; this._browser = null; - this._browserViewportState = null; this._visibleRectFactory = visibleRectFactory; messageManager.addMessageListener("Browser:MozScrolledAreaChanged", this); }, @@ -82,34 +85,6 @@ BrowserView.prototype = { uninit: function uninit() { }, - getVisibleRect: function getVisibleRect() { - return this._visibleRectFactory(); - }, - - getCriticalRect: function getCriticalRect() { - let bvs = this._browserViewportState; - let vr = this.getVisibleRect(); - return BrowserView.Util.visibleRectToCriticalRect(vr, bvs); - }, - - clampZoomLevel: function clampZoomLevel(zl) { - let bounded = Math.min(Math.max(ZoomManager.MIN, zl), ZoomManager.MAX); - - let bvs = this._browserViewportState; - if (bvs) { - let md = bvs.metaData; - if (md && md.minZoom) - bounded = Math.max(bounded, md.minZoom); - if (md && md.maxZoom) - bounded = Math.min(bounded, md.maxZoom); - - bounded = Math.max(bounded, this.getPageZoomLevel()); - } - - let rounded = Math.round(bounded * kBrowserViewZoomLevelPrecision) / kBrowserViewZoomLevelPrecision; - return rounded || 1.0; - }, - /** * Swap out the current browser and browser viewport state with a new pair. */ @@ -124,7 +99,6 @@ BrowserView.prototype = { } this._browser = browser; - this._browserViewportState = browserViewportState; if (browser) { browser.setAttribute("type", "content-primary"); diff --git a/mobile/chrome/content/bindings/browser.js b/mobile/chrome/content/bindings/browser.js index b6ec46a83c6f..5c6a8c65496d 100644 --- a/mobile/chrome/content/bindings/browser.js +++ b/mobile/chrome/content/bindings/browser.js @@ -61,6 +61,7 @@ let WebProgressListener = { }; sendAsyncMessage("WebProgress:LocationChange", json); + let cwu = Util.getWindowUtils(content); let scrollOffset = Util.getScrollOffset(content); cwu.setDisplayport(scrollOffset.x - 200, scrollOffset.y - 400, content.innerWidth + 400, content.innerHeight + 800); @@ -379,10 +380,9 @@ let ContentScroll = { let json = aMessage.json; switch (aMessage.name) { case "Content:ScrollTo": - content.scrollTo(json.x, json.y); +// content.scrollTo(json.x, json.y); let cwu = Util.getWindowUtils(content); - let scrollOffset = Util.getScrollOffset(content); - cwu.setDisplayport(scrollOffset.x - 200, scrollOffset.y - 400, + cwu.setDisplayport(json.x - 200, json.y - 400, content.innerWidth + 400, content.innerHeight + 800); break; @@ -391,7 +391,8 @@ let ContentScroll = { break; case "Content:ZoomLevel": - // XXX not working yet + content.document.body.style.MozTransformOrigin = "top left"; + content.document.body.style.MozTransform = "scale(" + json.zoomLevel + ")"; break; case "Content:FastScrollTo": { diff --git a/mobile/chrome/content/bindings/browser.xml b/mobile/chrome/content/bindings/browser.xml index 5355d2903ba9..9f1c646d95f8 100644 --- a/mobile/chrome/content/bindings/browser.xml +++ b/mobile/chrome/content/bindings/browser.xml @@ -398,6 +398,14 @@ 0 0 + + + + @@ -418,8 +426,9 @@ @@ -431,6 +440,7 @@