diff --git a/mobile/android/base/GeckoApp.java b/mobile/android/base/GeckoApp.java index fbb80e6ea06..a83c89d3e9b 100644 --- a/mobile/android/base/GeckoApp.java +++ b/mobile/android/base/GeckoApp.java @@ -1683,12 +1683,7 @@ abstract public class GeckoApp * run experience, perhaps? */ mLayerController = new LayerController(this); - View v = mLayerController.getView(); - - // Instead of flickering the checkerboard, show a white screen until Gecko paints - v.setBackgroundColor(Color.WHITE); - - mGeckoLayout.addView(v, 0); + mLayerController.setView((LayerView)findViewById(R.id.layer_view)); } mPluginContainer = (AbsoluteLayout) findViewById(R.id.plugin_container); diff --git a/mobile/android/base/GeckoViewsFactory.java b/mobile/android/base/GeckoViewsFactory.java index 2aef99fe6a1..7418a1d1fbf 100644 --- a/mobile/android/base/GeckoViewsFactory.java +++ b/mobile/android/base/GeckoViewsFactory.java @@ -10,6 +10,7 @@ import android.util.AttributeSet; import android.util.Log; import android.view.LayoutInflater; import android.view.View; +import org.mozilla.gecko.gfx.LayerView; public final class GeckoViewsFactory implements LayoutInflater.Factory { private static final String LOGTAG = "GeckoViewsFactory"; @@ -50,6 +51,10 @@ public final class GeckoViewsFactory implements LayoutInflater.Factory { return new TabsPanel(context, attrs); else if (TextUtils.equals(viewName, "TextSelectionHandle")) return new TextSelectionHandle(context, attrs); + else if (TextUtils.equals(viewName, "gfx.LayerView")) + return new LayerView(context, attrs); + else + Log.e(LOGTAG, "Error: unknown custom view: " + viewName); } return null; diff --git a/mobile/android/base/gfx/LayerController.java b/mobile/android/base/gfx/LayerController.java index f84a8a2bb2d..7ceb68c0efe 100644 --- a/mobile/android/base/gfx/LayerController.java +++ b/mobile/android/base/gfx/LayerController.java @@ -68,10 +68,14 @@ public class LayerController { mForceRedraw = true; mViewportMetrics = new ImmutableViewportMetrics(new ViewportMetrics()); mPanZoomController = new PanZoomController(this); - mView = new LayerView(context, this); mCheckerboardShouldShowChecks = true; } + public void setView(LayerView v) { + mView = v; + mView.connect(this); + } + public void setRoot(Layer layer) { mRootLayer = layer; } public void setLayerClient(GeckoLayerClient layerClient) { diff --git a/mobile/android/base/gfx/LayerView.java b/mobile/android/base/gfx/LayerView.java index aadbb574769..698e2bbf163 100644 --- a/mobile/android/base/gfx/LayerView.java +++ b/mobile/android/base/gfx/LayerView.java @@ -13,6 +13,7 @@ import android.view.KeyEvent; import android.view.MotionEvent; import android.view.inputmethod.EditorInfo; import android.view.inputmethod.InputConnection; +import android.util.AttributeSet; import android.util.Log; import android.graphics.PixelFormat; import android.view.SurfaceHolder; @@ -31,7 +32,6 @@ import java.nio.IntBuffer; public class LayerView extends SurfaceView implements SurfaceHolder.Callback { private static String LOGTAG = "GeckoLayerView"; - private Context mContext; private LayerController mController; private TouchEventHandler mTouchEventHandler; private GLController mGLController; @@ -48,18 +48,18 @@ public class LayerView extends SurfaceView implements SurfaceHolder.Callback { public static final int PAINT_BEFORE_FIRST = 1; public static final int PAINT_AFTER_FIRST = 2; - - public LayerView(Context context, LayerController controller) { - super(context); + public LayerView(Context context, AttributeSet attrs) { + super(context, attrs); SurfaceHolder holder = getHolder(); holder.addCallback(this); holder.setFormat(PixelFormat.RGB_565); - mGLController = new GLController(this); - mContext = context; + } + + void connect(LayerController controller) { mController = controller; - mTouchEventHandler = new TouchEventHandler(context, this, mController); + mTouchEventHandler = new TouchEventHandler(getContext(), this, mController); mRenderer = new LayerRenderer(this); mInputConnectionHandler = null; diff --git a/mobile/android/base/resources/layout/shared_ui_components.xml b/mobile/android/base/resources/layout/shared_ui_components.xml index 583bff911f4..51b7119c6a3 100644 --- a/mobile/android/base/resources/layout/shared_ui_components.xml +++ b/mobile/android/base/resources/layout/shared_ui_components.xml @@ -8,6 +8,11 @@ + +