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

Side by Side Diff: chrome/android/java_staging/src/org/chromium/chrome/browser/dom_distiller/ReaderModeStaticEventFilter.java

Issue 1141283003: Upstream oodles of Chrome for Android code into Chromium. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: final patch? Created 5 years, 7 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
(Empty)
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
3 // found in the LICENSE file.
4
5 package org.chromium.chrome.browser.dom_distiller;
6
7 import android.content.Context;
8 import android.view.MotionEvent;
9
10 import org.chromium.chrome.browser.compositor.layouts.eventfilter.EdgeSwipeHandl er;
11 import org.chromium.chrome.browser.compositor.layouts.eventfilter.EventFilter;
12 import org.chromium.chrome.browser.compositor.layouts.eventfilter.EventFilterHos t;
13 import org.chromium.chrome.browser.contextualsearch.SwipeRecognizer;
14
15 /**
16 * A {@link EventFilter} used to filter events in the Reader Mode Bar, when disp layed
17 * in the StaticLayout.
18 */
19 public class ReaderModeStaticEventFilter extends EventFilter {
20 /**
21 * The @{link ReaderModePanelSelector} that gives access to a panel controll ing Reader Mode UI.
22 */
23 private final ReaderModePanelSelector mReaderModePanelSelector;
24
25 /**
26 * The @{link SwipeRecognizer} that recognizes directional swipe gestures.
27 */
28 private final SwipeRecognizer mSwipeRecognizer;
29
30 private final ReaderModeTapHandler mTapHandler;
31
32 /**
33 * Interface to handle taps on the reader mode bar.
34 */
35 public interface ReaderModeTapHandler {
36 /**
37 * Handle a tap event on the reader mode bar.
38 * @param time The time of the tap event.
39 * @param x The x position of the tap event.
40 * @param y The y position of the tap event.
41 */
42 void handleTapReaderModeBar(long time, float x, float y);
43 }
44
45 /**
46 * Interface to get the currently active Reader Mode Panel if any.
47 */
48 public interface ReaderModePanelSelector {
49 /**
50 * @return Currently active reader mode panel, or null.
51 */
52 ReaderModePanel getActiveReaderModePanel();
53 }
54
55 /**
56 * Constructs a {@link ReaderModeStaticEventFilter}.
57 *
58 * @param context The current Android {@link Context}.
59 * @param host The @{link EventFilterHost} associated to this filter.
60 * @param readerModePanelSelector The @{link ReaderModePanelSelector} to acc ess an active panel.
61 * @param swipeHandler The @{link EdgeSwipeHandler} for Reader Mode events.
62 */
63 public ReaderModeStaticEventFilter(Context context, EventFilterHost host,
64 ReaderModePanelSelector readerModePanelSelector, EdgeSwipeHandler sw ipeHandler,
65 ReaderModeTapHandler tapHandler) {
66 super(context, host);
67
68 mReaderModePanelSelector = readerModePanelSelector;
69 mSwipeRecognizer = new SwipeRecognizerImpl(context);
70 mSwipeRecognizer.setSwipeHandler(swipeHandler);
71 mTapHandler = tapHandler;
72 }
73
74 @Override
75 protected boolean onInterceptTouchEventInternal(MotionEvent event, boolean i sKeyboardShowing) {
76 ReaderModePanel readerModePanel = mReaderModePanelSelector.getActiveRead erModePanel();
77 return readerModePanel != null && readerModePanel.isShowing()
78 && readerModePanel.isYCoordinateInsideReaderModePanel(
79 readerModePanel.getFullscreenY(event.getY()) * mPxToDp);
80 }
81
82 @Override
83 protected boolean onTouchEventInternal(MotionEvent event) {
84 mSwipeRecognizer.onTouchEvent(event);
85 return true;
86 }
87
88 private class SwipeRecognizerImpl extends SwipeRecognizer {
89 public SwipeRecognizerImpl(Context context) {
90 super(context);
91 }
92
93 @Override
94 public boolean onSingleTapUp(MotionEvent event) {
95 if (mTapHandler == null) return true;
96 ReaderModePanel readerModePanel = mReaderModePanelSelector.getActive ReaderModePanel();
97 if (readerModePanel == null) return true;
98
99 mTapHandler.handleTapReaderModeBar(event.getEventTime(),
100 event.getX() * mPxToDp,
101 readerModePanel.getFullscreenY(event.getY()) * mPxToDp);
102 return true;
103 }
104 }
105 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698