summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLeon Scroggins <scroggo@google.com>2009-06-05 13:49:26 -0400
committerLeon Scroggins <scroggo@google.com>2009-06-08 10:14:32 -0400
commit1c7f8c56c858bef24533da344788c688ef6ed404 (patch)
treebacef94ef723e2615d2836f71202b284f4ead641
parent7699318ecd1e31b9ee4ead4acdb430f3aaa36ff1 (diff)
downloadframeworks_base-1c7f8c56c858bef24533da344788c688ef6ed404.zip
frameworks_base-1c7f8c56c858bef24533da344788c688ef6ed404.tar.gz
frameworks_base-1c7f8c56c858bef24533da344788c688ef6ed404.tar.bz2
Update the language from "focus".
Previously, many methods, variables, etc referred to the focus. Now, they have been changed to refer to the cursor when appropriate. Some references were changed to the focusCandidate, since they may apply to either the focus or the cursor, which is a candidate for focus. Also removed unneeded method unblockFocus. WebView will not work without a corresponding change in external/webkit.
-rw-r--r--core/java/android/webkit/WebView.java144
-rw-r--r--core/java/android/webkit/WebViewCore.java37
2 files changed, 86 insertions, 95 deletions
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java
index 2940983..ef2d4e8 100644
--- a/core/java/android/webkit/WebView.java
+++ b/core/java/android/webkit/WebView.java
@@ -1407,7 +1407,7 @@ public class WebView extends AbsoluteLayout
if (mNativeClass == 0) {
return false;
}
- nativeClearFocus(-1, -1);
+ nativeClearCursor(-1, -1);
if (top) {
// go to the top of the document
return pinScrollTo(mScrollX, 0, true, 0);
@@ -1434,7 +1434,7 @@ public class WebView extends AbsoluteLayout
if (mNativeClass == 0) {
return false;
}
- nativeClearFocus(-1, -1);
+ nativeClearCursor(-1, -1);
if (bottom) {
return pinScrollTo(mScrollX, mContentHeight, true, 0);
}
@@ -1530,7 +1530,7 @@ public class WebView extends AbsoluteLayout
}
/**
- * Return a HitTestResult based on the current focus node. If a HTML::a tag
+ * Return a HitTestResult based on the current cursor node. If a HTML::a tag
* is found and the anchor has a non-javascript url, the HitTestResult type
* is set to SRC_ANCHOR_TYPE and the url is set in the "extra" field. If the
* anchor does not have a url or if it is a javascript url, the type will
@@ -1602,15 +1602,15 @@ public class WebView extends AbsoluteLayout
* request as the data member with "url" as key. The result can
* be null.
*/
+ // FIXME: API change required to change the name of this function. We now
+ // look at the cursor node, and not the focus node. Also, what is
+ // getFocusNodePath?
public void requestFocusNodeHref(Message hrefMsg) {
if (hrefMsg == null || mNativeClass == 0) {
return;
}
if (nativeCursorIsAnchor()) {
- // NOTE: We may already have the url of the anchor stored in
- // node.mText but it may be out of date or the caller may want
- // to know about javascript urls.
- mWebViewCore.sendMessage(EventHub.REQUEST_FOCUS_HREF,
+ mWebViewCore.sendMessage(EventHub.REQUEST_CURSOR_HREF,
nativeCursorFramePointer(), nativeCursorNodePointer(),
hrefMsg);
}
@@ -2405,7 +2405,7 @@ public class WebView extends AbsoluteLayout
// to the screen, they are in the correct state.
// Tell the native side if user is a) touching the screen,
// b) pressing the trackball down, or c) pressing the enter key
- // If the focus is a button, we need to draw it in the pressed
+ // If the cursor is on a button, we need to draw it in the pressed
// state.
// If mNativeClass is 0, we should not reach here, so we do not
// need to check it again.
@@ -2439,7 +2439,7 @@ public class WebView extends AbsoluteLayout
}
private void drawCoreAndCursorRing(Canvas canvas, int color,
- boolean drawFocus) {
+ boolean drawCursorRing) {
if (mDrawHistory) {
canvas.scale(mActualScale, mActualScale);
canvas.drawPicture(mHistoryPicture);
@@ -2497,7 +2497,7 @@ public class WebView extends AbsoluteLayout
nativeDrawSelection(canvas, mSelectX, mSelectY,
mExtendSelection);
}
- } else if (drawFocus) {
+ } else if (drawCursorRing) {
if (mTouchMode == TOUCH_SHORTPRESS_START_MODE) {
mTouchMode = TOUCH_SHORTPRESS_MODE;
HitTestResult hitTest = getHitTestResult();
@@ -2955,12 +2955,12 @@ public class WebView extends AbsoluteLayout
}
/*
- * This method checks the current focus and potentially rebuilds
+ * This method checks the current focus and cursor and potentially rebuilds
* mWebTextView to have the appropriate properties, such as password,
* multiline, and what text it contains. It also removes it if necessary.
*/
private void rebuildWebTextView() {
- // If we do not have focus, do nothing until we gain focus.
+ // If the WebView does not have focus, do nothing until it gains focus.
if (!hasFocus() && (null == mWebTextView || !mWebTextView.hasFocus())
|| (mTouchMode >= FIRST_SCROLL_ZOOM
&& mTouchMode <= LAST_SCROLL_ZOOM)) {
@@ -2970,8 +2970,7 @@ public class WebView extends AbsoluteLayout
boolean alreadyThere = inEditingMode();
// inEditingMode can only return true if mWebTextView is non-null,
// so we can safely call remove() if (alreadyThere)
- if (0 == mNativeClass || (!nativeFocusIsTextInput()
- && !nativeCursorIsTextInput())) {
+ if (0 == mNativeClass || !nativeFocusCandidateIsTextInput()) {
if (alreadyThere) {
mWebTextView.remove();
}
@@ -2984,17 +2983,17 @@ public class WebView extends AbsoluteLayout
// Initialize our generation number.
mTextGeneration = 0;
}
- mWebTextView.setTextSize(contentToView(nativeFocusTextSize()));
+ mWebTextView.setTextSize(contentToView(nativeFocusCandidateTextSize()));
Rect visibleRect = sendOurVisibleRect();
// Note that sendOurVisibleRect calls viewToContent, so the coordinates
// should be in content coordinates.
- Rect bounds = nativeFocusNodeBounds();
+ Rect bounds = nativeFocusCandidateNodeBounds();
if (!Rect.intersects(bounds, visibleRect)) {
// Node is not on screen, so do not bother.
return;
}
- String text = nativeFocusText();
- int nodePointer = nativeFocusNodePointer();
+ String text = nativeFocusCandidateText();
+ int nodePointer = nativeFocusCandidatePointer();
if (alreadyThere && mWebTextView.isSameTextField(nodePointer)) {
// It is possible that we have the same textfield, but it has moved,
// i.e. In the case of opening/closing the screen.
@@ -3018,16 +3017,16 @@ public class WebView extends AbsoluteLayout
Rect vBox = contentToView(bounds);
mWebTextView.setRect(vBox.left, vBox.top, vBox.width(),
vBox.height());
- mWebTextView.setGravity(nativeFocusIsRtlText() ? Gravity.RIGHT :
- Gravity.NO_GRAVITY);
+ mWebTextView.setGravity(nativeFocusCandidateIsRtlText() ?
+ Gravity.RIGHT : Gravity.NO_GRAVITY);
// this needs to be called before update adapter thread starts to
// ensure the mWebTextView has the same node pointer
mWebTextView.setNodePointer(nodePointer);
int maxLength = -1;
- boolean isTextField = nativeFocusIsTextField();
+ boolean isTextField = nativeFocusCandidateIsTextField();
if (isTextField) {
- maxLength = nativeFocusMaxLength();
- String name = nativeFocusName();
+ maxLength = nativeFocusCandidateMaxLength();
+ String name = nativeFocusCandidateName();
if (mWebViewCore.getSettings().getSaveFormData()
&& name != null) {
HashMap data = new HashMap();
@@ -3044,7 +3043,7 @@ public class WebView extends AbsoluteLayout
AutoCompleteAdapter adapter = null;
mWebTextView.setAdapterCustom(adapter);
mWebTextView.setSingleLine(isTextField);
- mWebTextView.setInPassword(nativeFocusIsPassword());
+ mWebTextView.setInPassword(nativeFocusCandidateIsPassword());
if (null == text) {
mWebTextView.setText("", 0, 0);
} else {
@@ -3145,7 +3144,7 @@ public class WebView extends AbsoluteLayout
}
int contentX = viewToContent((int) mLastTouchX + mScrollX);
int contentY = viewToContent((int) mLastTouchY + mScrollY);
- nativeClearFocus(contentX, contentY);
+ nativeClearCursor(contentX, contentY);
}
if (keyCode >= KeyEvent.KEYCODE_DPAD_UP
@@ -3235,7 +3234,7 @@ public class WebView extends AbsoluteLayout
return false;
}
- // special CALL handling when focus node's href is "tel:XXX"
+ // special CALL handling when cursor node's href is "tel:XXX"
if (keyCode == KeyEvent.KEYCODE_CALL && nativeHasCursorNode()) {
String text = nativeCursorText();
if (!nativeCursorIsTextInput() && text != null
@@ -3321,7 +3320,7 @@ public class WebView extends AbsoluteLayout
mShiftIsPressed = true;
int contentX = viewToContent((int) mLastTouchX + mScrollX);
int contentY = viewToContent((int) mLastTouchY + mScrollY);
- nativeClearFocus(contentX, contentY);
+ nativeClearCursor(contentX, contentY);
}
private boolean commitCopy() {
@@ -3696,7 +3695,7 @@ public class WebView extends AbsoluteLayout
WebViewCore.pauseUpdate(mWebViewCore);
int contentX = viewToContent((int) x + mScrollX);
int contentY = viewToContent((int) y + mScrollY);
- nativeClearFocus(contentX, contentY);
+ nativeClearCursor(contentX, contentY);
// remove the zoom anchor if there is any
if (mZoomScale != 0) {
mWebViewCore
@@ -3873,7 +3872,7 @@ public class WebView extends AbsoluteLayout
mTouchMode = TOUCH_DONE_MODE;
int contentX = viewToContent((int) mLastTouchX + mScrollX);
int contentY = viewToContent((int) mLastTouchY + mScrollY);
- nativeClearFocus(contentX, contentY);
+ nativeClearCursor(contentX, contentY);
break;
}
}
@@ -3901,8 +3900,8 @@ public class WebView extends AbsoluteLayout
private boolean mShiftIsPressed = false;
private boolean mTrackballDown = false;
private long mTrackballUpTime = 0;
- private long mLastFocusTime = 0;
- private Rect mLastFocusBounds;
+ private long mLastCursorTime = 0;
+ private Rect mLastCursorBounds;
// Set by default; BrowserActivity clears to interpret trackball data
// directly for movement. Currently, the framework only passes
@@ -3931,14 +3930,14 @@ public class WebView extends AbsoluteLayout
if (mNativeClass != 0) {
nativeRecordButtons(hasFocus() && hasWindowFocus(), true, true);
}
- if (time - mLastFocusTime <= TRACKBALL_TIMEOUT
- && !mLastFocusBounds.equals(nativeGetCursorRingBounds())) {
- nativeSelectBestAt(mLastFocusBounds);
+ if (time - mLastCursorTime <= TRACKBALL_TIMEOUT
+ && !mLastCursorBounds.equals(nativeGetCursorRingBounds())) {
+ nativeSelectBestAt(mLastCursorBounds);
}
if (DebugFlags.WEB_VIEW) {
Log.v(LOGTAG, "onTrackballEvent down ev=" + ev
+ " time=" + time
- + " mLastFocusTime=" + mLastFocusTime);
+ + " mLastCursorTime=" + mLastCursorTime);
}
if (isInTouchMode()) requestFocusFromTouch();
return false; // let common code in onKeyDown at it
@@ -4170,7 +4169,6 @@ public class WebView extends AbsoluteLayout
}
mUserScroll = true;
}
- mWebViewCore.sendMessage(EventHub.UNBLOCK_FOCUS);
}
public void flingScroll(int vx, int vy) {
@@ -4714,12 +4712,6 @@ public class WebView extends AbsoluteLayout
if (mNativeClass == 0) {
break;
}
-// Do not reset the focus or clear the text; the user may have already
-// navigated or entered text at this point. The focus should have gotten
-// reset, if need be, when the focus cache was built. Similarly, the text
-// view should already be torn down and rebuilt if needed.
-// nativeResetFocus();
-// clearTextEntry();
HashMap scaleLimit = (HashMap) msg.obj;
int minScale = (Integer) scaleLimit.get("minScale");
if (minScale == 0) {
@@ -5165,45 +5157,51 @@ public class WebView extends AbsoluteLayout
if (mNativeClass == 0) {
return false;
}
- mLastFocusTime = time;
- mLastFocusBounds = nativeGetCursorRingBounds();
- boolean keyHandled = nativeMoveFocus(keyCode, count, noScroll) == false;
+ mLastCursorTime = time;
+ mLastCursorBounds = nativeGetCursorRingBounds();
+ boolean keyHandled
+ = nativeMoveCursor(keyCode, count, noScroll) == false;
if (DebugFlags.WEB_VIEW) {
- Log.v(LOGTAG, "navHandledKey mLastFocusBounds=" + mLastFocusBounds
- + " mLastFocusTime=" + mLastFocusTime
+ Log.v(LOGTAG, "navHandledKey mLastCursorBounds=" + mLastCursorBounds
+ + " mLastCursorTime=" + mLastCursorTime
+ " handled=" + keyHandled);
}
if (keyHandled == false || mHeightCanMeasure == false) {
return keyHandled;
}
- Rect contentFocus = nativeGetCursorRingBounds();
- if (contentFocus.isEmpty()) return keyHandled;
- Rect viewFocus = contentToView(contentFocus);
+ Rect contentCursorRingBounds = nativeGetCursorRingBounds();
+ if (contentCursorRingBounds.isEmpty()) return keyHandled;
+ Rect viewCursorRingBounds = contentToView(contentCursorRingBounds);
Rect visRect = new Rect();
calcOurVisibleRect(visRect);
Rect outset = new Rect(visRect);
int maxXScroll = visRect.width() / 2;
int maxYScroll = visRect.height() / 2;
outset.inset(-maxXScroll, -maxYScroll);
- if (Rect.intersects(outset, viewFocus) == false) {
+ if (Rect.intersects(outset, viewCursorRingBounds) == false) {
return keyHandled;
}
// FIXME: Necessary because ScrollView/ListView do not scroll left/right
- int maxH = Math.min(viewFocus.right - visRect.right, maxXScroll);
+ int maxH = Math.min(viewCursorRingBounds.right - visRect.right,
+ maxXScroll);
if (maxH > 0) {
pinScrollBy(maxH, 0, true, 0);
} else {
- maxH = Math.max(viewFocus.left - visRect.left, -maxXScroll);
+ maxH = Math.max(viewCursorRingBounds.left - visRect.left,
+ -maxXScroll);
if (maxH < 0) {
pinScrollBy(maxH, 0, true, 0);
}
}
- if (mLastFocusBounds.isEmpty()) return keyHandled;
- if (mLastFocusBounds.equals(contentFocus)) return keyHandled;
+ if (mLastCursorBounds.isEmpty()) return keyHandled;
+ if (mLastCursorBounds.equals(contentCursorRingBounds)) {
+ return keyHandled;
+ }
if (DebugFlags.WEB_VIEW) {
- Log.v(LOGTAG, "navHandledKey contentFocus=" + contentFocus);
+ Log.v(LOGTAG, "navHandledKey contentCursorRingBounds="
+ + contentCursorRingBounds);
}
- requestRectangleOnScreen(viewFocus);
+ requestRectangleOnScreen(viewCursorRingBounds);
mUserScroll = true;
return keyHandled;
}
@@ -5233,7 +5231,7 @@ public class WebView extends AbsoluteLayout
nativeUpdateCachedTextfield(updatedText, mTextGeneration);
}
- private native void nativeClearFocus(int x, int y);
+ private native void nativeClearCursor(int x, int y);
private native void nativeCreate(int ptr);
private native int nativeCursorFramePointer();
private native Rect nativeCursorNodeBounds();
@@ -5243,6 +5241,10 @@ public class WebView extends AbsoluteLayout
private native boolean nativeCursorIsAnchor();
private native boolean nativeCursorIsTextInput();
private native String nativeCursorText();
+ /**
+ * Returns true if the native cursor node says it wants to handle key events
+ * (ala plugins). This can only be called if mNativeClass is non-zero!
+ */
private native boolean nativeCursorWantsKeyEvents();
private native void nativeDebugDump();
private native void nativeDestroy();
@@ -5254,20 +5256,16 @@ public class WebView extends AbsoluteLayout
private native void nativeDumpDisplayTree(String urlOrNull);
private native int nativeFindAll(String findLower, String findUpper);
private native void nativeFindNext(boolean forward);
- private native boolean nativeFocusIsPassword();
- private native boolean nativeFocusIsRtlText();
- private native boolean nativeFocusIsTextField();
- private native boolean nativeFocusIsTextInput();
- private native int nativeFocusMaxLength();
- private native String nativeFocusName();
- private native Rect nativeFocusNodeBounds();
- /* package */ native int nativeFocusNodePointer();
- private native String nativeFocusText();
- private native int nativeFocusTextSize();
- /**
- * Returns true if the native focus nodes says it wants to handle key events
- * (ala plugins). This can only be called if mNativeClass is non-zero!
- */
+ private native boolean nativeFocusCandidateIsPassword();
+ private native boolean nativeFocusCandidateIsRtlText();
+ private native boolean nativeFocusCandidateIsTextField();
+ private native boolean nativeFocusCandidateIsTextInput();
+ private native int nativeFocusCandidateMaxLength();
+ private native String nativeFocusCandidateName();
+ private native Rect nativeFocusCandidateNodeBounds();
+ /* package */ native int nativeFocusCandidatePointer();
+ private native String nativeFocusCandidateText();
+ private native int nativeFocusCandidateTextSize();
private native Rect nativeGetCursorRingBounds();
private native Region nativeGetSelection();
private native boolean nativeHasCursorNode();
@@ -5278,7 +5276,7 @@ public class WebView extends AbsoluteLayout
// return true if the page has been scrolled
private native boolean nativeMotionUp(int x, int y, int slop);
// returns false if it handled the key
- private native boolean nativeMoveFocus(int keyCode, int count,
+ private native boolean nativeMoveCursor(int keyCode, int count,
boolean noScroll);
private native int nativeMoveGeneration();
private native void nativeMoveSelection(int x, int y,
diff --git a/core/java/android/webkit/WebViewCore.java b/core/java/android/webkit/WebViewCore.java
index f4b99b9..b0c626f 100644
--- a/core/java/android/webkit/WebViewCore.java
+++ b/core/java/android/webkit/WebViewCore.java
@@ -395,8 +395,6 @@ final class WebViewCore {
private native boolean nativeHandleTouchEvent(int action, int x, int y);
- private native void nativeUnblockFocus();
-
private native void nativeUpdateFrameCache();
private native void nativeSetSnapAnchor(int x, int y);
@@ -574,7 +572,7 @@ final class WebViewCore {
"SINGLE_LISTBOX_CHOICE", // = 124;
"MESSAGE_RELAY", // = 125;
"SET_BACKGROUND_COLOR", // = 126;
- "UNBLOCK_FOCUS", // = 127;
+ "127", // = 127;
"SAVE_DOCUMENT_STATE", // = 128;
"GET_SELECTION", // = 129;
"WEBKIT_DRAW", // = 130;
@@ -584,7 +582,7 @@ final class WebViewCore {
"CLEAR_CONTENT", // = 134;
"SET_MOVE_MOUSE", // = 135;
"SET_MOVE_MOUSE_IF_LATEST", // = 136;
- "REQUEST_FOCUS_HREF", // = 137;
+ "REQUEST_CURSOR_HREF", // = 137;
"ADD_JS_INTERFACE", // = 138;
"LOAD_DATA", // = 139;
"TOUCH_UP", // = 140;
@@ -623,7 +621,6 @@ final class WebViewCore {
static final int SINGLE_LISTBOX_CHOICE = 124;
static final int MESSAGE_RELAY = 125;
static final int SET_BACKGROUND_COLOR = 126;
- static final int UNBLOCK_FOCUS = 127;
static final int SAVE_DOCUMENT_STATE = 128;
static final int GET_SELECTION = 129;
static final int WEBKIT_DRAW = 130;
@@ -635,7 +632,7 @@ final class WebViewCore {
// UI nav messages
static final int SET_MOVE_MOUSE = 135;
static final int SET_MOVE_MOUSE_IF_LATEST = 136;
- static final int REQUEST_FOCUS_HREF = 137;
+ static final int REQUEST_CURSOR_HREF = 137;
static final int ADD_JS_INTERFACE = 138;
static final int LOAD_DATA = 139;
@@ -900,8 +897,8 @@ final class WebViewCore {
}
case SAVE_DOCUMENT_STATE: {
- CursorData fDat = (CursorData) msg.obj;
- nativeSaveDocumentState(fDat.mFrame);
+ CursorData cDat = (CursorData) msg.obj;
+ nativeSaveDocumentState(cDat.mFrame);
break;
}
@@ -951,25 +948,21 @@ final class WebViewCore {
break;
case SET_MOVE_MOUSE:
- CursorData finalData = (CursorData) msg.obj;
- nativeMoveMouse(finalData.mFrame,
- finalData.mNode, finalData.mX,
- finalData.mY);
- break;
-
- case UNBLOCK_FOCUS:
- nativeUnblockFocus();
+ CursorData cursorData = (CursorData) msg.obj;
+ nativeMoveMouse(cursorData.mFrame,
+ cursorData.mNode, cursorData.mX,
+ cursorData.mY);
break;
case SET_MOVE_MOUSE_IF_LATEST:
- CursorData focusData = (CursorData) msg.obj;
- nativeMoveMouseIfLatest(focusData.mMoveGeneration,
- focusData.mFrame, focusData.mNode,
- focusData.mX, focusData.mY,
- focusData.mIgnoreNullFocus);
+ CursorData cData = (CursorData) msg.obj;
+ nativeMoveMouseIfLatest(cData.mMoveGeneration,
+ cData.mFrame, cData.mNode,
+ cData.mX, cData.mY,
+ cData.mIgnoreNullFocus);
break;
- case REQUEST_FOCUS_HREF: {
+ case REQUEST_CURSOR_HREF: {
Message hrefMsg = (Message) msg.obj;
String res = nativeRetrieveHref(msg.arg1, msg.arg2);
hrefMsg.getData().putString("url", res);