Bug 1416319 - 6. Remove DynamicToolbarAnimator from LayerView; r?rbarker draft
authorJim Chen <nchen@mozilla.com>
Wed, 22 Nov 2017 14:12:23 -0500
changeset 702129 81e834ef25038fd735281def9d7780c517595cea
parent 702128 af5a55d7398c896d74e0f361cbcfac43e095799d
child 702130 5d94c5608a7c6cd5e96799ade2a29b1bcc6b998d
push id90386
push userbmo:nchen@mozilla.com
push dateWed, 22 Nov 2017 19:12:37 +0000
reviewersrbarker
bugs1416319
milestone59.0a1
Bug 1416319 - 6. Remove DynamicToolbarAnimator from LayerView; r?rbarker Remove all DynamicToolbarAnimator-related code from LayerView now that they are in LayerSession. MozReview-Commit-ID: 56AO79T3NoK
mobile/android/geckoview/src/main/java/org/mozilla/gecko/gfx/LayerView.java
--- a/mobile/android/geckoview/src/main/java/org/mozilla/gecko/gfx/LayerView.java
+++ b/mobile/android/geckoview/src/main/java/org/mozilla/gecko/gfx/LayerView.java
@@ -45,116 +45,39 @@ import java.util.List;
  * A view rendered by the layer compositor.
  */
 public class LayerView extends FrameLayout {
     private static final String LOGTAG = "GeckoLayerView";
 
     private static AccessibilityManager sAccessibilityManager;
 
     private PanZoomController mPanZoomController;
-    private DynamicToolbarAnimator mToolbarAnimator;
     private FullScreenState mFullScreenState;
 
-    // Accessed on UI thread.
-    private ImmutableViewportMetrics mViewportMetrics;
-
     /* This should only be modified on the Java UI thread. */
     private final Overscroll mOverscroll;
 
     private int mDefaultClearColor = Color.WHITE;
     /* package */ GetPixelsResult mGetPixelsResult;
     private final List<DrawListener> mDrawListeners;
 
-    //
-    // NOTE: These values are also defined in gfx/layers/ipc/UiCompositorControllerMessageTypes.h
-    //       and must be kept in sync. Any new AnimatorMessageType added here must also be added there.
-    //
-    /* package */ final static int STATIC_TOOLBAR_NEEDS_UPDATE      = 0;  // Sent from compositor when the static toolbar wants to hide.
-    /* package */ final static int STATIC_TOOLBAR_READY             = 1;  // Sent from compositor when the static toolbar image has been updated and is ready to animate.
-    /* package */ final static int TOOLBAR_HIDDEN                   = 2;  // Sent to compositor when the real toolbar has been hidden.
-    /* package */ final static int TOOLBAR_VISIBLE                  = 3;  // Sent to compositor when the real toolbar is visible.
-    /* package */ final static int TOOLBAR_SHOW                     = 4;  // Sent from compositor when the static toolbar has been made visible so the real toolbar should be shown.
-    /* package */ final static int FIRST_PAINT                      = 5;  // Sent from compositor after first paint
-    /* package */ final static int REQUEST_SHOW_TOOLBAR_IMMEDIATELY = 6;  // Sent to compositor requesting toolbar be shown immediately
-    /* package */ final static int REQUEST_SHOW_TOOLBAR_ANIMATED    = 7;  // Sent to compositor requesting toolbar be shown animated
-    /* package */ final static int REQUEST_HIDE_TOOLBAR_IMMEDIATELY = 8;  // Sent to compositor requesting toolbar be hidden immediately
-    /* package */ final static int REQUEST_HIDE_TOOLBAR_ANIMATED    = 9;  // Sent to compositor requesting toolbar be hidden animated
-    /* package */ final static int LAYERS_UPDATED                   = 10; // Sent from compositor when a layer has been updated
-    /* package */ final static int TOOLBAR_SNAPSHOT_FAILED          = 11; // Sent to compositor when the toolbar snapshot fails.
-    /* package */ final static int COMPOSITOR_CONTROLLER_OPEN       = 20; // Special message sent from UiCompositorControllerChild once it is open
-
     private void postCompositorMessage(final int message) {
         ThreadUtils.postToUiThread(new Runnable() {
             @Override
             public void run() {
                 mCompositor.sendToolbarAnimatorMessage(message);
             }
         });
     }
 
     /* package */ boolean isCompositorReady() {
         ThreadUtils.assertOnUiThread();
         return mCompositor != null && mCompositor.isReady();
     }
 
-    /* package */ void handleToolbarAnimatorMessage(int message) {
-        switch (message) {
-            case STATIC_TOOLBAR_NEEDS_UPDATE:
-                // Send updated toolbar image to compositor.
-                Bitmap bm = mToolbarAnimator.getBitmapOfToolbarChrome();
-                if (bm == null) {
-                    postCompositorMessage(TOOLBAR_SNAPSHOT_FAILED);
-                    break;
-                }
-                final int width = bm.getWidth();
-                final int height = bm.getHeight();
-                int[] pixels = new int[bm.getByteCount() / 4];
-                try {
-                    bm.getPixels(pixels, /* offset */ 0, /* stride */ width, /* x */ 0, /* y */ 0, width, height);
-                    mCompositor.sendToolbarPixelsToCompositor(width, height, pixels);
-                } catch (Exception e) {
-                    Log.e(LOGTAG, "Caught exception while getting toolbar pixels from Bitmap: " + e.toString());
-                }
-                break;
-            case STATIC_TOOLBAR_READY:
-                // Hide toolbar and send TOOLBAR_HIDDEN message to compositor
-                mToolbarAnimator.onToggleChrome(false);
-                adjustViewportSize();
-                postCompositorMessage(TOOLBAR_HIDDEN);
-                break;
-            case TOOLBAR_SHOW:
-                // Show toolbar.
-                mToolbarAnimator.onToggleChrome(true);
-                adjustViewportSize();
-                postCompositorMessage(TOOLBAR_VISIBLE);
-                break;
-            case FIRST_PAINT:
-                setSurfaceBackgroundColor(Color.TRANSPARENT);
-                break;
-            case LAYERS_UPDATED:
-                for (DrawListener listener : mDrawListeners) {
-                    listener.drawFinished();
-                }
-                break;
-            case COMPOSITOR_CONTROLLER_OPEN:
-                ThreadUtils.postToUiThread(new Runnable() {
-                    @Override
-                    public void run() {
-                        mCompositor.setDefaultClearColor(mDefaultClearColor);
-                        mCompositor.enableLayerUpdateNotifications(!mDrawListeners.isEmpty());
-                        mToolbarAnimator.updateCompositor();
-                    }
-                });
-                break;
-            default:
-                Log.e(LOGTAG, "Unhandled Toolbar Animator Message: " + message);
-                break;
-        }
-    }
-
     /* package */ void onCompositorReady() {
         mCompositor.setDefaultClearColor(mDefaultClearColor);
         mCompositor.enableLayerUpdateNotifications(!mDrawListeners.isEmpty());
     }
 
     /* protected */ LayerSession mSession;
     private LayerSession.Compositor mCompositor;
 
@@ -167,24 +90,20 @@ public class LayerView extends FrameLayo
         mDrawListeners = new ArrayList<DrawListener>();
     }
 
     public LayerView(Context context) {
         this(context, null);
     }
 
     public void initializeView() {
-        mToolbarAnimator = new DynamicToolbarAnimator(this);
         mPanZoomController = PanZoomController.Factory.create(this);
         if (mOverscroll != null) {
             mPanZoomController.setOverscrollHandler(mOverscroll);
         }
-
-        mViewportMetrics = new ImmutableViewportMetrics()
-                .setViewportSize(getWidth(), getHeight());
     }
 
     /**
      * MotionEventHelper dragAsync() robocop tests can instruct
      * PanZoomController not to generate longpress events.
      * This call comes in from a thread other than the UI thread.
      * So dispatch to UI thread first to prevent assert in nsWindow.
      */
@@ -276,21 +195,16 @@ public class LayerView extends FrameLayo
         }
         if (mPanZoomController != null && mPanZoomController.onMotionEvent(event)) {
             return true;
         }
         return false;
     }
 
     public PanZoomController getPanZoomController() { return mPanZoomController; }
-    public DynamicToolbarAnimator getDynamicToolbarAnimator() { return mToolbarAnimator; }
-
-    public ImmutableViewportMetrics getViewportMetrics() {
-        return mViewportMetrics;
-    }
 
     public void setSurfaceBackgroundColor(int newColor) {
     }
 
     public interface GetPixelsResult {
         public void onPixelsResult(int width, int height, IntBuffer pixels);
     }
 
@@ -321,61 +235,38 @@ public class LayerView extends FrameLayo
         }
     }
 
     protected void attachCompositor(final LayerSession session) {
         mSession = session;
         mCompositor = session.mCompositor;
         mCompositor.layerView = this;
 
-        mToolbarAnimator.notifyCompositorCreated(mCompositor);
-
         final NativePanZoomController npzc = (NativePanZoomController) mPanZoomController;
 
         if (GeckoThread.isStateAtLeast(GeckoThread.State.PROFILE_READY)) {
             mCompositor.attachToJava(npzc);
         } else {
             GeckoThread.queueNativeCallUntil(GeckoThread.State.PROFILE_READY,
                     mCompositor, "attachToJava",
                     NativePanZoomController.class, npzc);
         }
     }
 
     @WrapForJNI(calledFrom = "ui")
     private Object getCompositor() {
         return isCompositorReady() ? mCompositor : null;
     }
 
-    private void adjustViewportSize() {
-        final IntSize viewportSize = mToolbarAnimator.getViewportSize();
-
-        if (mViewportMetrics.viewportRectWidth == viewportSize.width &&
-            mViewportMetrics.viewportRectHeight == viewportSize.height) {
-            return;
-        }
-
-        mViewportMetrics = mViewportMetrics.setViewportSize(viewportSize.width,
-                                                            viewportSize.height);
-    }
-
     /* package */ void onSizeChanged(int width, int height) {
-        adjustViewportSize();
-
         if (mOverscroll != null) {
             mOverscroll.setSize(width, height);
         }
     }
 
-    /* package */ void onMetricsChanged(final float scrollX, final float scrollY,
-                                        final float zoom) {
-        mViewportMetrics = mViewportMetrics.setViewportOrigin(scrollX, scrollY)
-                                           .setZoomFactor(zoom);
-        mToolbarAnimator.onMetricsChanged(mViewportMetrics);
-    }
-
     @RobocopTarget
     public void addDrawListener(final DrawListener listener) {
         if (!ThreadUtils.isOnUiThread()) {
             ThreadUtils.postToUiThread(new Runnable() {
                 @Override
                 public void run() {
                     addDrawListener(listener);
                 }
@@ -419,36 +310,24 @@ public class LayerView extends FrameLayo
         }
     }
 
     @RobocopTarget
     public static interface DrawListener {
         public void drawFinished();
     }
 
-    public float getZoomFactor() {
-        return getViewportMetrics().zoomFactor;
-    }
-
     public void setFullScreenState(FullScreenState state) {
         mFullScreenState = state;
     }
 
     public boolean isFullScreen() {
         return mFullScreenState != FullScreenState.NONE;
     }
 
-    public void setMaxToolbarHeight(int maxHeight) {
-        mToolbarAnimator.setMaxToolbarHeight(maxHeight);
-    }
-
-    public int getCurrentToolbarHeight() {
-        return mToolbarAnimator.getCurrentToolbarHeight();
-    }
-
     public void setClearColor(final int color) {
         if (!ThreadUtils.isOnUiThread()) {
             ThreadUtils.postToUiThread(new Runnable() {
                 @Override
                 public void run() {
                     setClearColor(color);
                 }
             });