Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(320)

Side by Side Diff: chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java

Issue 2784463002: Revert of chrome/android: Push EventFilters into the Layout implementations. (Closed)
Patch Set: Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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.overlays.strip; 5 package org.chromium.chrome.browser.compositor.overlays.strip;
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 10
11 import org.chromium.base.VisibleForTesting; 11 import org.chromium.base.VisibleForTesting;
12 import org.chromium.chrome.R; 12 import org.chromium.chrome.R;
13 import org.chromium.chrome.browser.compositor.LayerTitleCache; 13 import org.chromium.chrome.browser.compositor.LayerTitleCache;
14 import org.chromium.chrome.browser.compositor.layouts.LayoutManager;
15 import org.chromium.chrome.browser.compositor.layouts.LayoutRenderHost; 14 import org.chromium.chrome.browser.compositor.layouts.LayoutRenderHost;
16 import org.chromium.chrome.browser.compositor.layouts.LayoutUpdateHost; 15 import org.chromium.chrome.browser.compositor.layouts.LayoutUpdateHost;
17 import org.chromium.chrome.browser.compositor.layouts.components.CompositorButto n; 16 import org.chromium.chrome.browser.compositor.layouts.components.CompositorButto n;
18 import org.chromium.chrome.browser.compositor.layouts.components.CompositorButto n.CompositorOnClickHandler; 17 import org.chromium.chrome.browser.compositor.layouts.components.CompositorButto n.CompositorOnClickHandler;
19 import org.chromium.chrome.browser.compositor.layouts.components.VirtualView; 18 import org.chromium.chrome.browser.compositor.layouts.components.VirtualView;
20 import org.chromium.chrome.browser.compositor.layouts.eventfilter.AreaGestureEve ntFilter; 19 import org.chromium.chrome.browser.compositor.layouts.eventfilter.AreaGestureEve ntFilter;
21 import org.chromium.chrome.browser.compositor.layouts.eventfilter.EventFilter; 20 import org.chromium.chrome.browser.compositor.layouts.eventfilter.EventFilter;
22 import org.chromium.chrome.browser.compositor.layouts.eventfilter.GestureHandler ;
23 import org.chromium.chrome.browser.compositor.overlays.SceneOverlay; 21 import org.chromium.chrome.browser.compositor.overlays.SceneOverlay;
24 import org.chromium.chrome.browser.compositor.scene_layer.SceneOverlayLayer; 22 import org.chromium.chrome.browser.compositor.scene_layer.SceneOverlayLayer;
25 import org.chromium.chrome.browser.compositor.scene_layer.TabStripSceneLayer; 23 import org.chromium.chrome.browser.compositor.scene_layer.TabStripSceneLayer;
26 import org.chromium.chrome.browser.tab.Tab; 24 import org.chromium.chrome.browser.tab.Tab;
27 import org.chromium.chrome.browser.tabmodel.TabCreatorManager; 25 import org.chromium.chrome.browser.tabmodel.TabCreatorManager;
28 import org.chromium.chrome.browser.tabmodel.TabModel; 26 import org.chromium.chrome.browser.tabmodel.TabModel;
29 import org.chromium.chrome.browser.tabmodel.TabModelSelector; 27 import org.chromium.chrome.browser.tabmodel.TabModelSelector;
30 import org.chromium.ui.base.LocalizationUtils; 28 import org.chromium.ui.base.LocalizationUtils;
31 import org.chromium.ui.resources.ResourceManager; 29 import org.chromium.ui.resources.ResourceManager;
32 30
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 private final StripLayoutHelper mIncognitoHelper; 62 private final StripLayoutHelper mIncognitoHelper;
65 63
66 // UI State 64 // UI State
67 private float mWidth; // in dp units 65 private float mWidth; // in dp units
68 private final float mHeight; // in dp units 66 private final float mHeight; // in dp units
69 private int mOrientation; 67 private int mOrientation;
70 private final CompositorButton mModelSelectorButton; 68 private final CompositorButton mModelSelectorButton;
71 69
72 private TabStripSceneLayer mTabStripTreeProvider; 70 private TabStripSceneLayer mTabStripTreeProvider;
73 71
74 private TabStripEventHandler mTabStripEventHandler;
75
76 private class TabStripEventHandler implements GestureHandler {
77 @Override
78 public void onDown(float x, float y, boolean fromMouse, int buttons) {
79 if (mModelSelectorButton.onDown(x, y)) return;
80 getActiveStripLayoutHelper().onDown(time(), x, y, fromMouse, buttons );
81 }
82
83 @Override
84 public void onUpOrCancel() {
85 if (mModelSelectorButton.onUpOrCancel() && mTabModelSelector != null ) {
86 getActiveStripLayoutHelper().finishAnimation();
87 if (!mModelSelectorButton.isVisible()) return;
88 mTabModelSelector.selectModel(!mTabModelSelector.isIncognitoSele cted());
89 return;
90 }
91 getActiveStripLayoutHelper().onUpOrCancel(time());
92 }
93
94 @Override
95 public void drag(float x, float y, float dx, float dy, float tx, float t y) {
96 mModelSelectorButton.drag(x, y);
97 getActiveStripLayoutHelper().drag(time(), x, y, dx, dy, tx, ty);
98 }
99
100 @Override
101 public void click(float x, float y, boolean fromMouse, int buttons) {
102 long time = time();
103 if (mModelSelectorButton.click(x, y)) {
104 mModelSelectorButton.handleClick(time);
105 return;
106 }
107 getActiveStripLayoutHelper().click(time(), x, y, fromMouse, buttons) ;
108 }
109
110 @Override
111 public void fling(float x, float y, float velocityX, float velocityY) {
112 getActiveStripLayoutHelper().fling(time(), x, y, velocityX, velocity Y);
113 }
114
115 @Override
116 public void onLongPress(float x, float y) {
117 getActiveStripLayoutHelper().onLongPress(time(), x, y);
118 }
119
120 @Override
121 public void onPinch(float x0, float y0, float x1, float y1, boolean firs tEvent) {
122 // Not implemented.
123 }
124
125 private long time() {
126 return LayoutManager.time();
127 }
128 }
129
130 /** 72 /**
131 * Creates an instance of the {@link StripLayoutHelperManager}. 73 * Creates an instance of the {@link StripLayoutHelperManager}.
132 * @param context The current Android {@link Context}. 74 * @param context The current Android {@link Context}.
133 * @param updateHost The parent {@link LayoutUpdateHost}. 75 * @param updateHost The parent {@link LayoutUpdateHost}.
134 * @param renderHost The {@link LayoutRenderHost}. 76 * @param renderHost The {@link LayoutRenderHost}.
135 */ 77 */
136 public StripLayoutHelperManager( 78 public StripLayoutHelperManager(Context context, LayoutUpdateHost updateHost ,
137 Context context, LayoutUpdateHost updateHost, LayoutRenderHost rende rHost) { 79 LayoutRenderHost renderHost, AreaGestureEventFilter eventFilter) {
138 mUpdateHost = updateHost; 80 mUpdateHost = updateHost;
139 mTabStripTreeProvider = new TabStripSceneLayer(context); 81 mTabStripTreeProvider = new TabStripSceneLayer(context);
140 mTabStripEventHandler = new TabStripEventHandler(); 82
141 mEventFilter = new AreaGestureEventFilter(context, mTabStripEventHandler , null); 83 mEventFilter = eventFilter;
142 84
143 mNormalHelper = new StripLayoutHelper(context, updateHost, renderHost, f alse); 85 mNormalHelper = new StripLayoutHelper(context, updateHost, renderHost, f alse);
144 mIncognitoHelper = new StripLayoutHelper(context, updateHost, renderHost , true); 86 mIncognitoHelper = new StripLayoutHelper(context, updateHost, renderHost , true);
145 87
146 CompositorOnClickHandler selectorClickHandler = new CompositorOnClickHan dler() { 88 CompositorOnClickHandler selectorClickHandler = new CompositorOnClickHan dler() {
147 @Override 89 @Override
148 public void onClick(long time) { 90 public void onClick(long time) {
149 handleModelSelectorButtonClick(); 91 handleModelSelectorButtonClick();
150 } 92 }
151 }; 93 };
(...skipping 19 matching lines...) Expand all
171 /** 113 /**
172 * Cleans up internal state. 114 * Cleans up internal state.
173 */ 115 */
174 public void destroy() { 116 public void destroy() {
175 mTabStripTreeProvider.destroy(); 117 mTabStripTreeProvider.destroy();
176 mTabStripTreeProvider = null; 118 mTabStripTreeProvider = null;
177 mIncognitoHelper.destroy(); 119 mIncognitoHelper.destroy();
178 mNormalHelper.destroy(); 120 mNormalHelper.destroy();
179 } 121 }
180 122
181 private void handleModelSelectorButtonClick() {
182 if (mTabModelSelector == null) return;
183 getActiveStripLayoutHelper().finishAnimation();
184 if (!mModelSelectorButton.isVisible()) return;
185 mTabModelSelector.selectModel(!mTabModelSelector.isIncognitoSelected());
186 }
187
188 @VisibleForTesting
189 public void simulateClick(float x, float y, boolean fromMouse, int buttons) {
190 mTabStripEventHandler.click(x, y, fromMouse, buttons);
191 }
192
193 @VisibleForTesting
194 public void simulateLongPress(float x, float y) {
195 mTabStripEventHandler.onLongPress(x, y);
196 }
197
198 @Override 123 @Override
199 public SceneOverlayLayer getUpdatedSceneOverlayTree(RectF viewport, RectF vi sibleViewport, 124 public SceneOverlayLayer getUpdatedSceneOverlayTree(RectF viewport, RectF vi sibleViewport,
200 LayerTitleCache layerTitleCache, ResourceManager resourceManager, fl oat yOffset) { 125 LayerTitleCache layerTitleCache, ResourceManager resourceManager, fl oat yOffset) {
201 assert mTabStripTreeProvider != null; 126 assert mTabStripTreeProvider != null;
202 127
203 Tab selectedTab = mTabModelSelector.getCurrentModel().getTabAt( 128 Tab selectedTab = mTabModelSelector.getCurrentModel().getTabAt(
204 mTabModelSelector.getCurrentModel().index()); 129 mTabModelSelector.getCurrentModel().index());
205 int selectedTabId = selectedTab == null ? TabModel.INVALID_TAB_INDEX : s electedTab.getId(); 130 int selectedTabId = selectedTab == null ? TabModel.INVALID_TAB_INDEX : s electedTab.getId();
206 mTabStripTreeProvider.pushAndUpdateStrip(this, layerTitleCache, resource Manager, 131 mTabStripTreeProvider.pushAndUpdateStrip(this, layerTitleCache, resource Manager,
207 getActiveStripLayoutHelper().getStripLayoutTabsToRender(), yOffs et, 132 getActiveStripLayoutHelper().getStripLayoutTabsToRender(), yOffs et,
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after
429 public void tabLoadStarted(int id, boolean incognito) { 354 public void tabLoadStarted(int id, boolean incognito) {
430 getStripLayoutHelper(incognito).tabLoadStarted(id); 355 getStripLayoutHelper(incognito).tabLoadStarted(id);
431 } 356 }
432 357
433 @Override 358 @Override
434 public void tabLoadFinished(int id, boolean incognito) { 359 public void tabLoadFinished(int id, boolean incognito) {
435 getStripLayoutHelper(incognito).tabLoadFinished(id); 360 getStripLayoutHelper(incognito).tabLoadFinished(id);
436 } 361 }
437 362
438 /** 363 /**
364 * Called on touch drag event.
365 * @param time The current time of the app in ms.
366 * @param x The y coordinate of the end of the drag event.
367 * @param y The y coordinate of the end of the drag event.
368 * @param deltaX The number of pixels dragged in the x direction.
369 * @param deltaY The number of pixels dragged in the y direction.
370 * @param totalX The total delta x since the drag started.
371 * @param totalY The total delta y since the drag started.
372 */
373 public void drag(
374 long time, float x, float y, float deltaX, float deltaY, float total X, float totalY) {
375 mModelSelectorButton.drag(x, y);
376 getActiveStripLayoutHelper().drag(time, x, y, deltaX, deltaY, totalX, to talY);
377 }
378
379 /**
380 * Called on touch fling event. This is called before the onUpOrCancel event .
381 * @param time The current time of the app in ms.
382 * @param x The y coordinate of the start of the fling event.
383 * @param y The y coordinate of the start of the fling event.
384 * @param velocityX The amount of velocity in the x direction.
385 * @param velocityY The amount of velocity in the y direction.
386 */
387 public void fling(long time, float x, float y, float velocityX, float veloci tyY) {
388 getActiveStripLayoutHelper().fling(time, x, y, velocityX, velocityY);
389 }
390
391 /**
392 * Called on onDown event.
393 * @param time The time stamp in millisecond of the event.
394 * @param x The x position of the event.
395 * @param y The y position of the event.
396 * @param fromMouse Whether the event originates from a mouse.
397 * @param buttons State of all buttons that are pressed.
398 */
399 public void onDown(long time, float x, float y, boolean fromMouse, int butto ns) {
400 if (mModelSelectorButton.onDown(x, y)) return;
401 getActiveStripLayoutHelper().onDown(time, x, y, fromMouse, buttons);
402 }
403
404 /**
405 * Called on long press touch event.
406 * @param time The current time of the app in ms.
407 * @param x The x coordinate of the position of the press event.
408 * @param y The y coordinate of the position of the press event.
409 */
410 public void onLongPress(long time, float x, float y) {
411 getActiveStripLayoutHelper().onLongPress(time, x, y);
412 }
413
414 private void handleModelSelectorButtonClick() {
415 if (mTabModelSelector == null) return;
416 getActiveStripLayoutHelper().finishAnimation();
417 if (!mModelSelectorButton.isVisible()) return;
418 mTabModelSelector.selectModel(!mTabModelSelector.isIncognitoSelected());
419 }
420
421 /**
422 * Called on click. This is called before the onUpOrCancel event.
423 * @param time The current time of the app in ms.
424 * @param x The x coordinate of the position of the click.
425 * @param y The y coordinate of the position of the click.
426 * @param fromMouse Whether the event originates from a mouse.
427 * @param buttons State of all buttons that were pressed when onDown was i nvoked.
428 */
429 public void click(long time, float x, float y, boolean fromMouse, int button s) {
430 if (mModelSelectorButton.click(x, y)) {
431 mModelSelectorButton.handleClick(time);
432 return;
433 }
434 getActiveStripLayoutHelper().click(time, x, y, fromMouse, buttons);
435 }
436
437 /**
438 * Called on up or cancel touch events. This is called after the click and f ling event if any.
439 * @param time The current time of the app in ms.
440 */
441 public void onUpOrCancel(long time) {
442 if (mModelSelectorButton.onUpOrCancel() && mTabModelSelector != null) {
443 getActiveStripLayoutHelper().finishAnimation();
444 if (!mModelSelectorButton.isVisible()) return;
445 mTabModelSelector.selectModel(!mTabModelSelector.isIncognitoSelected ());
446 return;
447 }
448 getActiveStripLayoutHelper().onUpOrCancel(time);
449 }
450
451 /**
439 * @param incognito Whether or not you want the incognito StripLayoutHelper 452 * @param incognito Whether or not you want the incognito StripLayoutHelper
440 * @return The requested StripLayoutHelper. 453 * @return The requested StripLayoutHelper.
441 */ 454 */
442 @VisibleForTesting 455 @VisibleForTesting
443 public StripLayoutHelper getStripLayoutHelper(boolean incognito) { 456 public StripLayoutHelper getStripLayoutHelper(boolean incognito) {
444 return incognito ? mIncognitoHelper : mNormalHelper; 457 return incognito ? mIncognitoHelper : mNormalHelper;
445 } 458 }
446 459
447 /** 460 /**
448 * @return The currently visible strip layout helper. 461 * @return The currently visible strip layout helper.
449 */ 462 */
450 @VisibleForTesting 463 @VisibleForTesting
451 public StripLayoutHelper getActiveStripLayoutHelper() { 464 public StripLayoutHelper getActiveStripLayoutHelper() {
452 return getStripLayoutHelper(mIsIncognito); 465 return getStripLayoutHelper(mIsIncognito);
453 } 466 }
454 467
455 private StripLayoutHelper getInactiveStripLayoutHelper() { 468 private StripLayoutHelper getInactiveStripLayoutHelper() {
456 return mIsIncognito ? mNormalHelper : mIncognitoHelper; 469 return mIsIncognito ? mNormalHelper : mIncognitoHelper;
457 } 470 }
458 } 471 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698