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

Side by Side Diff: chrome/android/java/src/org/chromium/chrome/browser/contextualsearch/action/SearchAction.java

Issue 2211353002: [TTS] Gather surrounding text on Tap before any UX. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Changed passing the text sample to java -- now it's by Java request only (currently unused). Created 4 years, 3 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 2016 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.contextualsearch.action;
6
7 import org.chromium.base.annotations.CalledByNative;
8 import org.chromium.chrome.browser.contextualsearch.gesture.SearchGestureHost;
9 import org.chromium.content_public.browser.WebContents;
10
11 /**
12 * Represents an abstract action to do a Contextual Search, and supports native C++ functionality.
13 * Subclasses will exist for a Resolved search action that determines the search based on page text,
14 * and Verbatim search action that just searches for the literal selection witho ut providing
15 * context.
16 * This is part of the 2016-refactoring (crbug.com/624609, go/cs-refactoring-201 6).
17 */
18 public abstract class SearchAction {
19 private long mNativePointer;
20
21 protected final SearchActionListener mListener;
22 protected final SearchGestureHost mHost;
23
24 private long mRequestSurroundingTextStartTime;
25
26 // ========================================================================= ===================
27 // Constructor
28 // ========================================================================= ===================
29
30 public SearchAction(SearchActionListener listener, SearchGestureHost host) {
31 mHost = host;
32 mNativePointer = nativeInit();
33
34 mListener = listener;
35 }
36
37 // ========================================================================= ===================
38 // Abstract
39 // ========================================================================= ===================
40
41 public abstract void extractContext();
42
43 // ========================================================================= ===================
44 //
45 // ========================================================================= ===================
46
47 public void dismissAction() {
48 mHost.dismissGesture();
49 }
50
51 public void destroyAction() {
52 onActionEnded();
53
54 if (mNativePointer != 0L) {
55 nativeDestroy(mNativePointer);
56 }
57 }
58
59 public String getFocusedWord() {
60 if (mNativePointer == 0L) return null;
61
62 return nativeGetFocusedWord(mNativePointer);
63 }
64
65 public String getSampleText(int sampleLength) {
66 if (mNativePointer == 0L) return null;
67
68 return nativeGetSampleText(mNativePointer, sampleLength);
69 }
70
71 // ========================================================================= ===================
72 // Suppression
73 // ========================================================================= ===================
74
75 protected boolean shouldSuppressAction() {
76 return false;
77 }
78
79 // ========================================================================= ===================
80 // State notification
81 // ========================================================================= ===================
82
83 protected void notifyContextReady() {
84 onContextReady();
85 }
86
87 // ========================================================================= ===================
88 // Surrounding Text
89 // ========================================================================= ===================
90
91 protected void requestSurroundingText() {
Theresa 2016/08/26 16:39:07 Under what scenarios do we want the surrounding te
Donn Denman 2016/08/26 19:25:02 That's a good question -- we don't yet have usage
92 mRequestSurroundingTextStartTime = System.nanoTime();
93 WebContents webContents = mHost.getTabWebContents();
94 if (webContents != null) {
95 nativeRequestSurroundingText(mNativePointer, webContents);
96 } else {
97 notifyContextReady();
98 }
99 }
100
101 @CalledByNative
102 protected void onSurroundingTextResponse() {
103 long duration = (System.nanoTime() - mRequestSurroundingTextStartTime) / 1000000;
104 // TODO(donnd) consider logging the duration to UMA or removing this dur ation completely.
105 System.out.println("ctxs --- onSurroundingTextResponse duration " + dura tion + "ms");
106 }
107
108 // ========================================================================= ===================
109 // SearchAction states
110 // ========================================================================= ===================
111
112 private void onContextReady() {
113 mListener.onContextReady(this);
114
115 if (shouldSuppressAction()) {
116 onActionSuppressed();
117 } else {
118 onActionAccepted();
119 }
120 }
121
122 private void onActionAccepted() {
123 mListener.onActionAccepted(this);
124 }
125
126 private void onActionSuppressed() {
127 mListener.onActionSuppressed(this);
128
129 dismissAction();
130 }
131
132 private void onActionEnded() {
133 mListener.onActionEnded(this);
134 }
135
136 // ========================================================================= ===================
137 // Internals
138 // ========================================================================= ===================
139
140 @CalledByNative
141 private void clearNativePointer() {
142 assert mNativePointer != 0;
143 mNativePointer = 0;
144 }
145
146 // ========================================================================= ===================
147 // Native methods.
148 // ========================================================================= ===================
149
150 // Native calls.
151 private native long nativeInit();
152 private native void nativeDestroy(long nativeSearchAction);
153
154 private native void nativeRequestSurroundingText(
155 long nativeSearchAction, WebContents webContents);
156 private native String nativeGetFocusedWord(long nativeSearchAction);
157 private native String nativeGetSampleText(long nativeSearchAction, int sampl eLength);
158 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698