Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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.ui.base; | 5 package org.chromium.ui.base; |
| 6 | 6 |
| 7 import android.annotation.TargetApi; | 7 import android.annotation.TargetApi; |
| 8 import android.content.ClipData; | 8 import android.content.ClipData; |
| 9 import android.graphics.Bitmap; | 9 import android.graphics.Bitmap; |
| 10 import android.os.Build; | 10 import android.os.Build; |
| 11 import android.view.PointerIcon; | |
| 11 import android.view.View; | 12 import android.view.View; |
| 12 import android.view.ViewGroup; | 13 import android.view.ViewGroup; |
| 13 import android.widget.FrameLayout.LayoutParams; | 14 import android.widget.FrameLayout.LayoutParams; |
| 14 import android.widget.ImageView; | 15 import android.widget.ImageView; |
| 15 | 16 |
| 16 import org.chromium.base.ApiCompatibilityUtils; | 17 import org.chromium.base.ApiCompatibilityUtils; |
| 17 import org.chromium.base.annotations.CalledByNative; | 18 import org.chromium.base.annotations.CalledByNative; |
| 18 import org.chromium.base.annotations.JNINamespace; | 19 import org.chromium.base.annotations.JNINamespace; |
| 19 | 20 |
| 20 /** | 21 /** |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 92 if (containerView == null) return false; | 93 if (containerView == null) return false; |
| 93 | 94 |
| 94 ImageView imageView = new ImageView(containerView.getContext()); | 95 ImageView imageView = new ImageView(containerView.getContext()); |
| 95 imageView.setImageBitmap(shadowImage); | 96 imageView.setImageBitmap(shadowImage); |
| 96 imageView.layout(0, 0, shadowImage.getWidth(), shadowImage.getHeight()); | 97 imageView.layout(0, 0, shadowImage.getWidth(), shadowImage.getHeight()); |
| 97 | 98 |
| 98 return containerView.startDragAndDrop(ClipData.newPlainText(null, text), | 99 return containerView.startDragAndDrop(ClipData.newPlainText(null, text), |
| 99 new View.DragShadowBuilder(imageView), null, View.DRAG_FLAG_GLOB AL); | 100 new View.DragShadowBuilder(imageView), null, View.DRAG_FLAG_GLOB AL); |
| 100 } | 101 } |
| 101 | 102 |
| 103 @CalledByNative | |
| 104 private void onCursorChangedToCustom(Bitmap customCursorBitmap, int hotspotX , int hotspotY) { | |
| 105 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { | |
| 106 getContainerView().getRootView().setPointerIcon( | |
| 107 PointerIcon.create(customCursorBitmap, hotspotX, hotspotY)); | |
| 108 } | |
| 109 } | |
| 110 | |
| 111 @CalledByNative | |
| 112 public void onCursorChanged(int cursorType) { | |
| 113 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { | |
|
aelias_OOO_until_Jul13
2017/05/17 04:47:15
"if ( < N ) return;" to reduce indentation
Jinsuk Kim
2017/05/17 04:49:50
Do early return to avoid too long if.
if (INT < N
jaebaek
2017/05/18 01:44:28
Done.
jaebaek
2017/05/18 01:44:29
Done.
| |
| 114 ViewGroup containerView = getContainerView(); | |
|
Jinsuk Kim
2017/05/17 04:49:50
Define variables for the root view and the context
jaebaek
2017/05/18 01:44:29
Done.
| |
| 115 switch (cursorType) { | |
| 116 case CursorType.NULL: | |
| 117 containerView.getRootView().setPointerIcon(PointerIcon.getSy stemIcon( | |
| 118 containerView.getContext(), PointerIcon.TYPE_NULL)); | |
|
aelias_OOO_until_Jul13
2017/05/17 04:47:15
You can avoid some boilerplate duplication here by
jaebaek
2017/05/18 01:44:29
Done.
| |
| 119 break; | |
| 120 case CursorType.ARROW: | |
| 121 containerView.getRootView().setPointerIcon(PointerIcon.getSy stemIcon( | |
| 122 containerView.getContext(), PointerIcon.TYPE_ARROW)) ; | |
| 123 break; | |
| 124 case CursorType.CONTEXT_MENU: | |
| 125 containerView.getRootView().setPointerIcon(PointerIcon.getSy stemIcon( | |
| 126 containerView.getContext(), PointerIcon.TYPE_CONTEXT _MENU)); | |
| 127 break; | |
| 128 case CursorType.HAND: | |
| 129 containerView.getRootView().setPointerIcon(PointerIcon.getSy stemIcon( | |
| 130 containerView.getContext(), PointerIcon.TYPE_HAND)); | |
| 131 break; | |
| 132 case CursorType.HELP: | |
| 133 containerView.getRootView().setPointerIcon(PointerIcon.getSy stemIcon( | |
| 134 containerView.getContext(), PointerIcon.TYPE_HELP)); | |
| 135 break; | |
| 136 case CursorType.WAIT: | |
| 137 containerView.getRootView().setPointerIcon(PointerIcon.getSy stemIcon( | |
| 138 containerView.getContext(), PointerIcon.TYPE_WAIT)); | |
| 139 break; | |
| 140 case CursorType.CELL: | |
| 141 containerView.getRootView().setPointerIcon(PointerIcon.getSy stemIcon( | |
| 142 containerView.getContext(), PointerIcon.TYPE_CELL)); | |
| 143 break; | |
| 144 case CursorType.CROSSHAIR: | |
| 145 containerView.getRootView().setPointerIcon(PointerIcon.getSy stemIcon( | |
| 146 containerView.getContext(), PointerIcon.TYPE_CROSSHA IR)); | |
| 147 break; | |
| 148 case CursorType.TEXT: | |
| 149 containerView.getRootView().setPointerIcon(PointerIcon.getSy stemIcon( | |
| 150 containerView.getContext(), PointerIcon.TYPE_TEXT)); | |
| 151 break; | |
| 152 case CursorType.VERTICAL_TEXT: | |
| 153 containerView.getRootView().setPointerIcon(PointerIcon.getSy stemIcon( | |
| 154 containerView.getContext(), PointerIcon.TYPE_VERTICA L_TEXT)); | |
| 155 break; | |
| 156 case CursorType.ALIAS: | |
| 157 containerView.getRootView().setPointerIcon(PointerIcon.getSy stemIcon( | |
| 158 containerView.getContext(), PointerIcon.TYPE_ALIAS)) ; | |
| 159 break; | |
| 160 case CursorType.COPY: | |
| 161 containerView.getRootView().setPointerIcon(PointerIcon.getSy stemIcon( | |
| 162 containerView.getContext(), PointerIcon.TYPE_COPY)); | |
| 163 break; | |
| 164 case CursorType.NO_DROP: | |
| 165 containerView.getRootView().setPointerIcon(PointerIcon.getSy stemIcon( | |
| 166 containerView.getContext(), PointerIcon.TYPE_NO_DROP )); | |
| 167 break; | |
| 168 case CursorType.ALL_SCROLL: | |
| 169 containerView.getRootView().setPointerIcon(PointerIcon.getSy stemIcon( | |
| 170 containerView.getContext(), PointerIcon.TYPE_ALL_SCR OLL)); | |
| 171 break; | |
| 172 case CursorType.HORIZONTAL_DOUBLE_ARROW: | |
| 173 containerView.getRootView().setPointerIcon(PointerIcon.getSy stemIcon( | |
| 174 containerView.getContext(), PointerIcon.TYPE_HORIZON TAL_DOUBLE_ARROW)); | |
| 175 break; | |
| 176 case CursorType.VERTICAL_DOUBLE_ARROW: | |
| 177 containerView.getRootView().setPointerIcon(PointerIcon.getSy stemIcon( | |
| 178 containerView.getContext(), PointerIcon.TYPE_VERTICA L_DOUBLE_ARROW)); | |
| 179 break; | |
| 180 case CursorType.TOP_RIGHT_DIAGONAL_DOUBLE_ARROW: | |
| 181 containerView.getRootView().setPointerIcon( | |
| 182 PointerIcon.getSystemIcon(containerView.getContext() , | |
| 183 PointerIcon.TYPE_TOP_RIGHT_DIAGONAL_DOUBLE_A RROW)); | |
| 184 break; | |
| 185 case CursorType.TOP_LEFT_DIAGONAL_DOUBLE_ARROW: | |
| 186 containerView.getRootView().setPointerIcon( | |
| 187 PointerIcon.getSystemIcon(containerView.getContext() , | |
| 188 PointerIcon.TYPE_TOP_LEFT_DIAGONAL_DOUBLE_AR ROW)); | |
| 189 break; | |
| 190 case CursorType.ZOOM_IN: | |
| 191 containerView.getRootView().setPointerIcon(PointerIcon.getSy stemIcon( | |
| 192 containerView.getContext(), PointerIcon.TYPE_ZOOM_IN )); | |
| 193 break; | |
| 194 case CursorType.ZOOM_OUT: | |
| 195 containerView.getRootView().setPointerIcon(PointerIcon.getSy stemIcon( | |
| 196 containerView.getContext(), PointerIcon.TYPE_ZOOM_OU T)); | |
| 197 break; | |
| 198 case CursorType.GRAB: | |
| 199 containerView.getRootView().setPointerIcon(PointerIcon.getSy stemIcon( | |
| 200 containerView.getContext(), PointerIcon.TYPE_GRAB)); | |
| 201 break; | |
| 202 case CursorType.GRABBING: | |
| 203 containerView.getRootView().setPointerIcon(PointerIcon.getSy stemIcon( | |
| 204 containerView.getContext(), PointerIcon.TYPE_GRABBIN G)); | |
| 205 break; | |
| 206 default: | |
|
aelias_OOO_until_Jul13
2017/05/17 04:47:15
Please exhaustively list all remaining WebCursorIn
jaebaek
2017/05/18 01:44:29
I listed all WebCursorInfo types and default for e
| |
| 207 break; | |
| 208 } | |
| 209 } | |
| 210 } | |
| 211 | |
| 102 /** | 212 /** |
| 103 * Called whenever the background color of the page changes as notified by B link. | 213 * Called whenever the background color of the page changes as notified by B link. |
| 104 * @param color The new ARGB color of the page background. | 214 * @param color The new ARGB color of the page background. |
| 105 */ | 215 */ |
| 106 @CalledByNative | 216 @CalledByNative |
| 107 public void onBackgroundColorChanged(int color) {} | 217 public void onBackgroundColorChanged(int color) {} |
| 108 | 218 |
| 109 /** | 219 /** |
| 110 * Notify the client of the position of the top controls. | 220 * Notify the client of the position of the top controls. |
| 111 * @param topControlsOffsetY The Y offset of the top controls in physical pi xels. | 221 * @param topControlsOffsetY The Y offset of the top controls in physical pi xels. |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 154 return this; | 264 return this; |
| 155 } | 265 } |
| 156 | 266 |
| 157 @Override | 267 @Override |
| 158 public ViewGroup getContainerView() { | 268 public ViewGroup getContainerView() { |
| 159 return mContainerView; | 269 return mContainerView; |
| 160 } | 270 } |
| 161 }.init(containerView); | 271 }.init(containerView); |
| 162 } | 272 } |
| 163 } | 273 } |
| OLD | NEW |