| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 package org.chromium.chrome.browser.compositor.layouts; | 5 package org.chromium.chrome.browser.compositor.layouts; |
| 6 | 6 |
| 7 import android.content.Context; | 7 import android.content.Context; |
| 8 import android.content.res.Resources; | 8 import android.content.res.Resources; |
| 9 import android.graphics.RectF; | 9 import android.graphics.RectF; |
| 10 import android.view.animation.DecelerateInterpolator; | 10 import android.view.animation.DecelerateInterpolator; |
| 11 import android.view.animation.Interpolator; | 11 import android.view.animation.Interpolator; |
| 12 | 12 |
| 13 import org.chromium.base.metrics.RecordUserAction; | 13 import org.chromium.base.metrics.RecordUserAction; |
| 14 import org.chromium.chrome.R; | 14 import org.chromium.chrome.R; |
| 15 import org.chromium.chrome.browser.compositor.LayerTitleCache; | 15 import org.chromium.chrome.browser.compositor.LayerTitleCache; |
| 16 import org.chromium.chrome.browser.compositor.layouts.ChromeAnimation.Animatable
; | 16 import org.chromium.chrome.browser.compositor.layouts.ChromeAnimation.Animatable
; |
| 17 import org.chromium.chrome.browser.compositor.layouts.components.LayoutTab; | 17 import org.chromium.chrome.browser.compositor.layouts.components.LayoutTab; |
| 18 import org.chromium.chrome.browser.compositor.layouts.content.TabContentManager; | 18 import org.chromium.chrome.browser.compositor.layouts.content.TabContentManager; |
| 19 import org.chromium.chrome.browser.compositor.layouts.eventfilter.BlackHoleEvent
Filter; |
| 19 import org.chromium.chrome.browser.compositor.layouts.eventfilter.EventFilter; | 20 import org.chromium.chrome.browser.compositor.layouts.eventfilter.EventFilter; |
| 20 import org.chromium.chrome.browser.compositor.layouts.eventfilter.ScrollDirectio
n; | 21 import org.chromium.chrome.browser.compositor.layouts.eventfilter.ScrollDirectio
n; |
| 21 import org.chromium.chrome.browser.compositor.scene_layer.SceneLayer; | 22 import org.chromium.chrome.browser.compositor.scene_layer.SceneLayer; |
| 22 import org.chromium.chrome.browser.compositor.scene_layer.TabListSceneLayer; | 23 import org.chromium.chrome.browser.compositor.scene_layer.TabListSceneLayer; |
| 23 import org.chromium.chrome.browser.fullscreen.ChromeFullscreenManager; | 24 import org.chromium.chrome.browser.fullscreen.ChromeFullscreenManager; |
| 24 import org.chromium.chrome.browser.tab.Tab; | 25 import org.chromium.chrome.browser.tab.Tab; |
| 25 import org.chromium.chrome.browser.tabmodel.TabModel; | 26 import org.chromium.chrome.browser.tabmodel.TabModel; |
| 26 import org.chromium.chrome.browser.util.MathUtils; | 27 import org.chromium.chrome.browser.util.MathUtils; |
| 27 import org.chromium.ui.base.LocalizationUtils; | 28 import org.chromium.ui.base.LocalizationUtils; |
| 28 import org.chromium.ui.resources.ResourceManager; | 29 import org.chromium.ui.resources.ResourceManager; |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 62 | 63 |
| 63 // Offsets are in pixels [0, width]. | 64 // Offsets are in pixels [0, width]. |
| 64 private float mOffsetStart; | 65 private float mOffsetStart; |
| 65 private float mOffset; | 66 private float mOffset; |
| 66 private float mOffsetTarget; | 67 private float mOffsetTarget; |
| 67 | 68 |
| 68 // These will be set from dimens.xml | 69 // These will be set from dimens.xml |
| 69 private final float mSpaceBetweenTabs; | 70 private final float mSpaceBetweenTabs; |
| 70 private final float mCommitDistanceFromEdge; | 71 private final float mCommitDistanceFromEdge; |
| 71 | 72 |
| 73 private final BlackHoleEventFilter mBlackHoleEventFilter; |
| 72 private final TabListSceneLayer mSceneLayer; | 74 private final TabListSceneLayer mSceneLayer; |
| 73 | 75 |
| 74 private final Interpolator mEdgeInterpolator = new DecelerateInterpolator(); | 76 private final Interpolator mEdgeInterpolator = new DecelerateInterpolator(); |
| 75 | 77 |
| 76 /** | 78 /** |
| 77 * @param context The current Android's context. | 79 * @param context The current Android's context. |
| 78 * @param updateHost The {@link LayoutUpdateHost} view for this lay
out. | 80 * @param updateHost The {@link LayoutUpdateHost} view for this lay
out. |
| 79 * @param renderHost The {@link LayoutRenderHost} view for this lay
out. | 81 * @param renderHost The {@link LayoutRenderHost} view for this lay
out. |
| 80 * @param eventFilter The {@link EventFilter} that is needed for thi
s view. | 82 * @param eventFilter The {@link EventFilter} that is needed for thi
s view. |
| 81 */ | 83 */ |
| 82 public ToolbarSwipeLayout(Context context, LayoutUpdateHost updateHost, | 84 public ToolbarSwipeLayout( |
| 83 LayoutRenderHost renderHost, EventFilter eventFilter) { | 85 Context context, LayoutUpdateHost updateHost, LayoutRenderHost rende
rHost) { |
| 84 super(context, updateHost, renderHost, eventFilter); | 86 super(context, updateHost, renderHost); |
| 87 mBlackHoleEventFilter = new BlackHoleEventFilter(context); |
| 85 Resources res = context.getResources(); | 88 Resources res = context.getResources(); |
| 86 final float pxToDp = 1.0f / res.getDisplayMetrics().density; | 89 final float pxToDp = 1.0f / res.getDisplayMetrics().density; |
| 87 mCommitDistanceFromEdge = res.getDimension(R.dimen.toolbar_swipe_commit_
distance) * pxToDp; | 90 mCommitDistanceFromEdge = res.getDimension(R.dimen.toolbar_swipe_commit_
distance) * pxToDp; |
| 88 mSpaceBetweenTabs = res.getDimension(R.dimen.toolbar_swipe_space_between
_tabs) * pxToDp; | 91 mSpaceBetweenTabs = res.getDimension(R.dimen.toolbar_swipe_space_between
_tabs) * pxToDp; |
| 89 mSceneLayer = new TabListSceneLayer(); | 92 mSceneLayer = new TabListSceneLayer(); |
| 90 } | 93 } |
| 91 | 94 |
| 92 /** | 95 /** |
| 93 * @param moveToolbar Whether or not swiping this layout should also move th
e toolbar as well as | 96 * @param moveToolbar Whether or not swiping this layout should also move th
e toolbar as well as |
| 94 * the content. | 97 * the content. |
| (...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 348 if (prop == Property.OFFSET) { | 351 if (prop == Property.OFFSET) { |
| 349 mOffset = value; | 352 mOffset = value; |
| 350 mOffsetTarget = mOffset; | 353 mOffsetTarget = mOffset; |
| 351 } | 354 } |
| 352 } | 355 } |
| 353 | 356 |
| 354 @Override | 357 @Override |
| 355 public void onPropertyAnimationFinished(Property prop) {} | 358 public void onPropertyAnimationFinished(Property prop) {} |
| 356 | 359 |
| 357 @Override | 360 @Override |
| 361 protected EventFilter getEventFilter() { |
| 362 return mBlackHoleEventFilter; |
| 363 } |
| 364 |
| 365 @Override |
| 358 protected SceneLayer getSceneLayer() { | 366 protected SceneLayer getSceneLayer() { |
| 359 return mSceneLayer; | 367 return mSceneLayer; |
| 360 } | 368 } |
| 361 | 369 |
| 362 @Override | 370 @Override |
| 363 protected void updateSceneLayer(RectF viewport, RectF contentViewport, | 371 protected void updateSceneLayer(RectF viewport, RectF contentViewport, |
| 364 LayerTitleCache layerTitleCache, TabContentManager tabContentManager
, | 372 LayerTitleCache layerTitleCache, TabContentManager tabContentManager
, |
| 365 ResourceManager resourceManager, ChromeFullscreenManager fullscreenM
anager) { | 373 ResourceManager resourceManager, ChromeFullscreenManager fullscreenM
anager) { |
| 366 super.updateSceneLayer(viewport, contentViewport, layerTitleCache, tabCo
ntentManager, | 374 super.updateSceneLayer(viewport, contentViewport, layerTitleCache, tabCo
ntentManager, |
| 367 resourceManager, fullscreenManager); | 375 resourceManager, fullscreenManager); |
| 368 assert mSceneLayer != null; | 376 assert mSceneLayer != null; |
| 369 // contentViewport is intentionally passed for both parameters below. | 377 // contentViewport is intentionally passed for both parameters below. |
| 370 mSceneLayer.pushLayers(getContext(), contentViewport, contentViewport, t
his, | 378 mSceneLayer.pushLayers(getContext(), contentViewport, contentViewport, t
his, |
| 371 layerTitleCache, tabContentManager, resourceManager, fullscreenM
anager); | 379 layerTitleCache, tabContentManager, resourceManager, fullscreenM
anager); |
| 372 } | 380 } |
| 373 } | 381 } |
| OLD | NEW |