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

Side by Side Diff: ui/android/java/src/org/chromium/ui/base/CursorAnchorInfoBuilder.java

Issue 699333003: Support InputMethodManager#updateCursorAnchorInfo for Android 5.0 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase and handle FocusedNodeChanged for performance optimization Created 5 years, 11 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 2014 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.ui.base;
6
7 import android.graphics.Matrix;
8 import android.os.Build;
9 import android.view.inputmethod.CursorAnchorInfo;
10
11 import org.chromium.base.CalledByNative;
12 import org.chromium.base.JNINamespace;
13
14 import java.lang.CharSequence;
15
16 /**
17 * A simple class to allow native code to call instance methods of {@link Cursor AnchorInfo.Builder}.
18 * This class itself is designed to be stateless. All the methods are thread-saf e.
19 */
20 @JNINamespace("ui")
21 public final class CursorAnchorInfoBuilder {
22
23 private static final Matrix sMatrix = new Matrix();
24 private static final float[] sMatrixValues = new float[9];
25
26 @CalledByNative
27 public static CursorAnchorInfo.Builder create() {
28 if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
29 return null;
30 }
31 return new CursorAnchorInfo.Builder();
32 }
33
34 @CalledByNative
35 public static void reset(CursorAnchorInfo.Builder builder) {
36 if (builder == null) {
37 return;
38 }
39 builder.reset();
40 }
41
42 @CalledByNative
43 public static void setSelectionRange(CursorAnchorInfo.Builder builder, int n ewStart,
44 int newEnd) {
45 if (builder == null) {
jdduke (slow) 2015/01/14 17:17:09 Hmm, when will the builder be null? Can we avoid m
yukawa 2015/01/14 22:21:58 Basically |builder| shouldn't be null. Removed ac
46 return;
47 }
48 builder.setSelectionRange(newStart, newEnd);
49 }
50
51 @CalledByNative
52 public static void setComposingText(CursorAnchorInfo.Builder builder, int co mposingTextStart,
53 CharSequence composingText) {
54 if (builder == null) {
55 return;
56 }
57 builder.setComposingText(composingTextStart, composingText);
58 }
59
60 @CalledByNative
61 public static void setInsertionMarkerLocation(CursorAnchorInfo.Builder build er,
62 float horizontalPosition, float lineTop, float lineBaseline, float l ineBottom,
63 int flags) {
64 if (builder == null) {
65 return;
66 }
67 builder.setInsertionMarkerLocation(horizontalPosition, lineTop, lineBase line, lineBottom,
68 flags);
69 }
70
71 @CalledByNative
72 public static void addCharacterBounds(CursorAnchorInfo.Builder builder, int index, float left,
73 float top, float right, float bottom, int flags) {
74 if (builder == null) {
75 return;
76 }
77 builder.addCharacterBounds(index, left, top, right, bottom, flags);
78 }
79
80 @CalledByNative
81 public static void setMatrix(CursorAnchorInfo.Builder builder, float m00, fl oat m01, float m02,
jdduke (slow) 2015/01/14 17:17:09 Would it be simpler to instead just pass the scale
yukawa 2015/01/14 22:21:59 Done.
82 float m10, float m11, float m12, float m20, float m21, float m22) {
83 if (builder == null) {
84 return;
85 }
86 synchronized (sMatrix) {
87 sMatrixValues[0] = m00;
88 sMatrixValues[1] = m01;
89 sMatrixValues[2] = m02;
90 sMatrixValues[3] = m10;
91 sMatrixValues[4] = m11;
92 sMatrixValues[5] = m12;
93 sMatrixValues[6] = m20;
94 sMatrixValues[7] = m21;
95 sMatrixValues[8] = m22;
96 sMatrix.setValues(sMatrixValues);
97 builder.setMatrix(sMatrix);
98 }
99 }
100
101 @CalledByNative
102 public static CursorAnchorInfo build(CursorAnchorInfo.Builder builder) {
103 if (builder == null) {
104 return null;
105 }
106 return builder.build();
107 }
108 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698