| 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.view.ViewGroup; | 8 import android.view.ViewGroup; |
| 9 | 9 |
| 10 import org.chromium.base.ObserverList; | 10 import org.chromium.base.ObserverList; |
| 11 import org.chromium.base.VisibleForTesting; | 11 import org.chromium.base.VisibleForTesting; |
| 12 import org.chromium.chrome.browser.compositor.TitleCache; | 12 import org.chromium.chrome.browser.compositor.TitleCache; |
| 13 import org.chromium.chrome.browser.compositor.layouts.components.LayoutTab; | 13 import org.chromium.chrome.browser.compositor.layouts.components.LayoutTab; |
| 14 import org.chromium.chrome.browser.compositor.layouts.components.VirtualView; | 14 import org.chromium.chrome.browser.compositor.layouts.components.VirtualView; |
| 15 import org.chromium.chrome.browser.compositor.layouts.content.TabContentManager; | 15 import org.chromium.chrome.browser.compositor.layouts.content.TabContentManager; |
| 16 import org.chromium.chrome.browser.compositor.layouts.eventfilter.BlackHoleEvent
Filter; |
| 16 import org.chromium.chrome.browser.compositor.layouts.eventfilter.EdgeSwipeHandl
er; | 17 import org.chromium.chrome.browser.compositor.layouts.eventfilter.EdgeSwipeHandl
er; |
| 18 import org.chromium.chrome.browser.compositor.layouts.eventfilter.EventFilter; |
| 19 import org.chromium.chrome.browser.compositor.layouts.eventfilter.GestureEventFi
lter; |
| 17 import org.chromium.chrome.browser.compositor.layouts.eventfilter.ScrollDirectio
n; | 20 import org.chromium.chrome.browser.compositor.layouts.eventfilter.ScrollDirectio
n; |
| 18 import org.chromium.chrome.browser.compositor.layouts.phone.StackLayout; | 21 import org.chromium.chrome.browser.compositor.layouts.phone.StackLayout; |
| 19 import org.chromium.chrome.browser.compositor.overlays.SceneOverlay; | 22 import org.chromium.chrome.browser.compositor.overlays.SceneOverlay; |
| 20 import org.chromium.chrome.browser.compositor.overlays.strip.StripLayoutHelperMa
nager; | 23 import org.chromium.chrome.browser.compositor.overlays.strip.StripLayoutHelperMa
nager; |
| 21 import org.chromium.chrome.browser.contextualsearch.ContextualSearchManagementDe
legate; | 24 import org.chromium.chrome.browser.contextualsearch.ContextualSearchManagementDe
legate; |
| 22 import org.chromium.chrome.browser.device.DeviceClassManager; | 25 import org.chromium.chrome.browser.device.DeviceClassManager; |
| 23 import org.chromium.chrome.browser.dom_distiller.ReaderModeManagerDelegate; | 26 import org.chromium.chrome.browser.dom_distiller.ReaderModeManagerDelegate; |
| 24 import org.chromium.chrome.browser.fullscreen.FullscreenManager; | 27 import org.chromium.chrome.browser.fullscreen.FullscreenManager; |
| 25 import org.chromium.chrome.browser.tab.Tab; | 28 import org.chromium.chrome.browser.tab.Tab; |
| 26 import org.chromium.chrome.browser.tabmodel.EmptyTabModelObserver; | 29 import org.chromium.chrome.browser.tabmodel.EmptyTabModelObserver; |
| (...skipping 21 matching lines...) Expand all Loading... |
| 48 public class LayoutManagerChrome | 51 public class LayoutManagerChrome |
| 49 extends LayoutManagerDocument implements OverviewModeBehavior, CloseAllT
absDelegate { | 52 extends LayoutManagerDocument implements OverviewModeBehavior, CloseAllT
absDelegate { |
| 50 // Layouts | 53 // Layouts |
| 51 /** An {@link Layout} that should be used as the accessibility tab switcher.
*/ | 54 /** An {@link Layout} that should be used as the accessibility tab switcher.
*/ |
| 52 protected OverviewListLayout mOverviewListLayout; | 55 protected OverviewListLayout mOverviewListLayout; |
| 53 /** A {@link Layout} that should be used when the user is swiping sideways o
n the toolbar. */ | 56 /** A {@link Layout} that should be used when the user is swiping sideways o
n the toolbar. */ |
| 54 protected ToolbarSwipeLayout mToolbarSwipeLayout; | 57 protected ToolbarSwipeLayout mToolbarSwipeLayout; |
| 55 /** A {@link Layout} that should be used when the user is in the tab switche
r. */ | 58 /** A {@link Layout} that should be used when the user is in the tab switche
r. */ |
| 56 protected Layout mOverviewLayout; | 59 protected Layout mOverviewLayout; |
| 57 | 60 |
| 61 // Event Filters |
| 62 /** A {@link EventFilter} that consumes all touch events. */ |
| 63 protected EventFilter mBlackHoleEventFilter; |
| 64 private final GestureEventFilter mGestureEventFilter; |
| 65 |
| 58 // Event Filter Handlers | 66 // Event Filter Handlers |
| 59 private final EdgeSwipeHandler mToolbarSwipeHandler; | 67 private final EdgeSwipeHandler mToolbarSwipeHandler; |
| 60 | 68 |
| 61 // Internal State | 69 // Internal State |
| 62 /** A {@link TitleCache} instance that stores all title/favicon bitmaps as C
C resources. */ | 70 /** A {@link TitleCache} instance that stores all title/favicon bitmaps as C
C resources. */ |
| 63 protected TitleCache mTitleCache; | 71 protected TitleCache mTitleCache; |
| 64 | 72 |
| 65 /** Whether or not animations are enabled. This can disable certain layouts
or effects. */ | 73 /** Whether or not animations are enabled. This can disable certain layouts
or effects. */ |
| 66 private boolean mEnableAnimations = true; | 74 private boolean mEnableAnimations = true; |
| 67 private boolean mCreatingNtp; | 75 private boolean mCreatingNtp; |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 151 public LayoutManagerChrome(LayoutManagerHost host, boolean createOverviewLay
out) { | 159 public LayoutManagerChrome(LayoutManagerHost host, boolean createOverviewLay
out) { |
| 152 super(host); | 160 super(host); |
| 153 Context context = host.getContext(); | 161 Context context = host.getContext(); |
| 154 LayoutRenderHost renderHost = host.getLayoutRenderHost(); | 162 LayoutRenderHost renderHost = host.getLayoutRenderHost(); |
| 155 | 163 |
| 156 mOverviewModeObservers = new ObserverList<OverviewModeObserver>(); | 164 mOverviewModeObservers = new ObserverList<OverviewModeObserver>(); |
| 157 | 165 |
| 158 // Build Event Filter Handlers | 166 // Build Event Filter Handlers |
| 159 mToolbarSwipeHandler = createToolbarSwipeHandler(this); | 167 mToolbarSwipeHandler = createToolbarSwipeHandler(this); |
| 160 | 168 |
| 169 // Build Event Filters |
| 170 mBlackHoleEventFilter = new BlackHoleEventFilter(context); |
| 171 mGestureEventFilter = new GestureEventFilter(context, mGestureHandler); |
| 172 |
| 161 // Build Layouts | 173 // Build Layouts |
| 162 mOverviewListLayout = new OverviewListLayout(context, this, renderHost); | 174 mOverviewListLayout = |
| 163 mToolbarSwipeLayout = new ToolbarSwipeLayout(context, this, renderHost); | 175 new OverviewListLayout(context, this, renderHost, mBlackHoleEven
tFilter); |
| 176 mToolbarSwipeLayout = |
| 177 new ToolbarSwipeLayout(context, this, renderHost, mBlackHoleEven
tFilter); |
| 164 if (createOverviewLayout) { | 178 if (createOverviewLayout) { |
| 165 mOverviewLayout = new StackLayout(context, this, renderHost); | 179 mOverviewLayout = new StackLayout(context, this, renderHost, mGestur
eEventFilter); |
| 166 } | 180 } |
| 167 } | 181 } |
| 168 | 182 |
| 169 /** | 183 /** |
| 170 * @return The {@link TabModelObserver} instance this class should be using. | 184 * @return The {@link TabModelObserver} instance this class should be using. |
| 171 */ | 185 */ |
| 172 protected LayoutManagerTabModelObserver createTabModelObserver() { | 186 protected LayoutManagerTabModelObserver createTabModelObserver() { |
| 173 return new LayoutManagerTabModelObserver(); | 187 return new LayoutManagerTabModelObserver(); |
| 174 } | 188 } |
| 175 | 189 |
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 295 | 309 |
| 296 /** | 310 /** |
| 297 * Simulates a click on the view at the specified pixel offset | 311 * Simulates a click on the view at the specified pixel offset |
| 298 * from the top left of the view. | 312 * from the top left of the view. |
| 299 * This is used by UI tests. | 313 * This is used by UI tests. |
| 300 * @param x Coordinate of the click in dp. | 314 * @param x Coordinate of the click in dp. |
| 301 * @param y Coordinate of the click in dp. | 315 * @param y Coordinate of the click in dp. |
| 302 */ | 316 */ |
| 303 @VisibleForTesting | 317 @VisibleForTesting |
| 304 public void simulateClick(float x, float y) { | 318 public void simulateClick(float x, float y) { |
| 305 if (getActiveLayout() instanceof StackLayout) { | 319 if (getActiveLayout() != null) getActiveLayout().click(time(), x, y); |
| 306 ((StackLayout) getActiveLayout()).simulateClick(x, y); | |
| 307 } | |
| 308 } | 320 } |
| 309 | 321 |
| 310 /** | 322 /** |
| 311 * Simulates a drag and issues Up-event to commit the drag. | 323 * Simulates a drag and issues Up-event to commit the drag. |
| 312 * @param x Coordinate to start the Drag from in dp. | 324 * @param x Coordinate to start the Drag from in dp. |
| 313 * @param y Coordinate to start the Drag from in dp. | 325 * @param y Coordinate to start the Drag from in dp. |
| 314 * @param dX Amount of drag in X direction in dp. | 326 * @param dX Amount of drag in X direction in dp. |
| 315 * @param dY Amount of drag in Y direction in dp. | 327 * @param dY Amount of drag in Y direction in dp. |
| 316 */ | 328 */ |
| 317 @VisibleForTesting | 329 @VisibleForTesting |
| 318 public void simulateDrag(float x, float y, float dX, float dY) { | 330 public void simulateDrag(float x, float y, float dX, float dY) { |
| 319 if (getActiveLayout() instanceof StackLayout) { | 331 if (getActiveLayout() != null) { |
| 320 ((StackLayout) getActiveLayout()).simulateDrag(x, y, dX, dY); | 332 getActiveLayout().onDown(0, x, y); |
| 333 getActiveLayout().drag(0, x, y, dX, dY); |
| 334 getActiveLayout().onUpOrCancel(time()); |
| 321 } | 335 } |
| 322 } | 336 } |
| 323 | 337 |
| 324 private boolean isOverviewLayout(Layout layout) { | 338 private boolean isOverviewLayout(Layout layout) { |
| 325 return layout != null && (layout == mOverviewLayout || layout == mOvervi
ewListLayout); | 339 return layout != null && (layout == mOverviewLayout || layout == mOvervi
ewListLayout); |
| 326 } | 340 } |
| 327 | 341 |
| 328 @Override | 342 @Override |
| 329 protected void startShowing(Layout layout, boolean animate) { | 343 protected void startShowing(Layout layout, boolean animate) { |
| 330 mCreatingNtp = false; | 344 mCreatingNtp = false; |
| (...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 667 | 681 |
| 668 /** | 682 /** |
| 669 * @param id The id of the {@link Tab} to search for. | 683 * @param id The id of the {@link Tab} to search for. |
| 670 * @return A {@link Tab} instance or {@code null} if it could be found. | 684 * @return A {@link Tab} instance or {@code null} if it could be found. |
| 671 */ | 685 */ |
| 672 protected Tab getTabById(int id) { | 686 protected Tab getTabById(int id) { |
| 673 TabModelSelector selector = getTabModelSelector(); | 687 TabModelSelector selector = getTabModelSelector(); |
| 674 return selector == null ? null : selector.getTabById(id); | 688 return selector == null ? null : selector.getTabById(id); |
| 675 } | 689 } |
| 676 } | 690 } |
| OLD | NEW |