diff --git a/gfx/layers/ipc/CompositorParent.cpp b/gfx/layers/ipc/CompositorParent.cpp index 84d32db430be..58120ea340be 100644 --- a/gfx/layers/ipc/CompositorParent.cpp +++ b/gfx/layers/ipc/CompositorParent.cpp @@ -238,11 +238,26 @@ CompositorParent::AsyncRender() // Modify framemetrics here, just as a test. metrics.mScrollId = FrameMetrics::ROOT_SCROLL_ID; container->SetFrameMetrics(metrics); + +#ifdef MOZ_WIDGET_ANDROID + RequestViewTransform(); +#endif + ViewTransform transform; TransformShadowTree(root, transform); + Composite(); } +#ifdef MOZ_WIDGET_ANDROID +void +CompositorParent::RequestViewTransform() +{ + mozilla::AndroidBridge::Bridge()->GetViewTransform(mScrollOffset, mXScale, + mYScale); +} +#endif + void CompositorParent::ShadowLayersUpdated() { diff --git a/gfx/layers/ipc/CompositorParent.h b/gfx/layers/ipc/CompositorParent.h index 511907c38d56..22a0a32e04a2 100644 --- a/gfx/layers/ipc/CompositorParent.h +++ b/gfx/layers/ipc/CompositorParent.h @@ -112,6 +112,12 @@ private: * Gecko compositor thread. **/ void RegisterCompositorWithJava(); + + /** + * Asks Java for the viewport position and updates the world transform + * accordingly. + */ + void RequestViewTransform(); #endif nsRefPtr mLayerManager; diff --git a/mobile/android/base/Makefile.in b/mobile/android/base/Makefile.in index 94c45dee759f..89b8aaf5b8b5 100644 --- a/mobile/android/base/Makefile.in +++ b/mobile/android/base/Makefile.in @@ -133,6 +133,7 @@ FENNEC_JAVA_FILES = \ gfx/TextLayer.java \ gfx/TextureReaper.java \ gfx/TileLayer.java \ + gfx/ViewTransform.java \ gfx/ViewportMetrics.java \ gfx/VirtualLayer.java \ gfx/WidgetTileLayer.java \ diff --git a/mobile/android/base/gfx/ViewTransform.java b/mobile/android/base/gfx/ViewTransform.java new file mode 100644 index 000000000000..9f443ea52894 --- /dev/null +++ b/mobile/android/base/gfx/ViewTransform.java @@ -0,0 +1,51 @@ +/* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*- + * ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is Mozilla Android code. + * + * The Initial Developer of the Original Code is Mozilla Foundation. + * Portions created by the Initial Developer are Copyright (C) 2009-2010 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Patrick Walton + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +package org.mozilla.gecko.gfx; + +public class ViewTransform { + public float x; + public float y; + public float scale; + + public ViewTransform(float inX, float inY, float inScale) { + x = inX; + y = inY; + scale = inScale; + } +} +