Merge change 2713
* changes: in the browser, make the trackball more like a mouse
This commit is contained in:
@@ -121,6 +121,10 @@ import java.util.ArrayList;
|
||||
if (isPopupShowing()) {
|
||||
return super.dispatchKeyEvent(event);
|
||||
}
|
||||
if (!mWebView.nativeCursorMatchesFocus()) {
|
||||
return down ? mWebView.onKeyDown(keyCode, event) : mWebView
|
||||
.onKeyUp(keyCode, event);
|
||||
}
|
||||
// Center key should be passed to a potential onClick
|
||||
if (!down) {
|
||||
mWebView.shortPressOnTextField();
|
||||
@@ -128,6 +132,20 @@ import java.util.ArrayList;
|
||||
// Pass to super to handle longpress.
|
||||
return super.dispatchKeyEvent(event);
|
||||
}
|
||||
boolean isArrowKey = false;
|
||||
switch(keyCode) {
|
||||
case KeyEvent.KEYCODE_DPAD_LEFT:
|
||||
case KeyEvent.KEYCODE_DPAD_RIGHT:
|
||||
case KeyEvent.KEYCODE_DPAD_UP:
|
||||
case KeyEvent.KEYCODE_DPAD_DOWN:
|
||||
if (!mWebView.nativeCursorMatchesFocus()) {
|
||||
return down ? mWebView.onKeyDown(keyCode, event) : mWebView
|
||||
.onKeyUp(keyCode, event);
|
||||
|
||||
}
|
||||
isArrowKey = true;
|
||||
break;
|
||||
}
|
||||
|
||||
// Ensure there is a layout so arrow keys are handled properly.
|
||||
if (getLayout() == null) {
|
||||
@@ -157,22 +175,11 @@ import java.util.ArrayList;
|
||||
// so do not pass down to javascript, and instead
|
||||
// return true. If it is an arrow key or a delete key, we can go
|
||||
// ahead and pass it down.
|
||||
boolean isArrowKey;
|
||||
switch(keyCode) {
|
||||
case KeyEvent.KEYCODE_DPAD_LEFT:
|
||||
case KeyEvent.KEYCODE_DPAD_RIGHT:
|
||||
case KeyEvent.KEYCODE_DPAD_UP:
|
||||
case KeyEvent.KEYCODE_DPAD_DOWN:
|
||||
isArrowKey = true;
|
||||
break;
|
||||
case KeyEvent.KEYCODE_ENTER:
|
||||
// For multi-line text boxes, newlines will
|
||||
// trigger onTextChanged for key down (which will send both
|
||||
// key up and key down) but not key up.
|
||||
mGotEnterDown = true;
|
||||
default:
|
||||
isArrowKey = false;
|
||||
break;
|
||||
if (KeyEvent.KEYCODE_ENTER == keyCode) {
|
||||
// For multi-line text boxes, newlines will
|
||||
// trigger onTextChanged for key down (which will send both
|
||||
// key up and key down) but not key up.
|
||||
mGotEnterDown = true;
|
||||
}
|
||||
if (maxedOut && !isArrowKey && keyCode != KeyEvent.KEYCODE_DEL) {
|
||||
if (oldEnd == oldStart) {
|
||||
@@ -216,10 +223,7 @@ import java.util.ArrayList;
|
||||
return true;
|
||||
}
|
||||
// if it is a navigation key, pass it to WebView
|
||||
if (keyCode == KeyEvent.KEYCODE_DPAD_LEFT
|
||||
|| keyCode == KeyEvent.KEYCODE_DPAD_RIGHT
|
||||
|| keyCode == KeyEvent.KEYCODE_DPAD_UP
|
||||
|| keyCode == KeyEvent.KEYCODE_DPAD_DOWN) {
|
||||
if (isArrowKey) {
|
||||
// WebView check the trackballtime in onKeyDown to avoid calling
|
||||
// native from both trackball and key handling. As this is called
|
||||
// from TextDialog, we always want WebView to check with native.
|
||||
@@ -333,6 +337,11 @@ import java.util.ArrayList;
|
||||
if (event.getAction() != MotionEvent.ACTION_MOVE) {
|
||||
return false;
|
||||
}
|
||||
// If the Cursor is not on the text input, webview should handle the
|
||||
// trackball
|
||||
if (!mWebView.nativeCursorMatchesFocus()) {
|
||||
return mWebView.onTrackballEvent(event);
|
||||
}
|
||||
Spannable text = (Spannable) getText();
|
||||
MovementMethod move = getMovementMethod();
|
||||
if (move != null && getLayout() != null &&
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -96,7 +96,7 @@ final class WebViewCore {
|
||||
private int mViewportMaximumScale = 0;
|
||||
|
||||
private boolean mViewportUserScalable = true;
|
||||
|
||||
|
||||
private int mRestoredScale = 100;
|
||||
private int mRestoredX = 0;
|
||||
private int mRestoredY = 0;
|
||||
@@ -308,15 +308,15 @@ final class WebViewCore {
|
||||
* Empty the picture set.
|
||||
*/
|
||||
private native void nativeClearContent();
|
||||
|
||||
|
||||
/**
|
||||
* Create a flat picture from the set of pictures.
|
||||
*/
|
||||
private native void nativeCopyContentToPicture(Picture picture);
|
||||
|
||||
|
||||
/**
|
||||
* Draw the picture set with a background color. Returns true
|
||||
* if some individual picture took too long to draw and can be
|
||||
* if some individual picture took too long to draw and can be
|
||||
* split into parts. Called from the UI thread.
|
||||
*/
|
||||
private native boolean nativeDrawContent(Canvas canvas, int color);
|
||||
@@ -325,13 +325,13 @@ final class WebViewCore {
|
||||
* check to see if picture is blank and in progress
|
||||
*/
|
||||
private native boolean nativePictureReady();
|
||||
|
||||
|
||||
/**
|
||||
* Redraw a portion of the picture set. The Point wh returns the
|
||||
* width and height of the overall picture.
|
||||
*/
|
||||
private native boolean nativeRecordContent(Region invalRegion, Point wh);
|
||||
|
||||
|
||||
/**
|
||||
* Splits slow parts of the picture set. Called from the webkit
|
||||
* thread after nativeDrawContent returns true.
|
||||
@@ -359,10 +359,10 @@ final class WebViewCore {
|
||||
float scale, int realScreenWidth, int screenHeight);
|
||||
|
||||
private native int nativeGetContentMinPrefWidth();
|
||||
|
||||
|
||||
// Start: functions that deal with text editing
|
||||
private native void nativeReplaceTextfieldText(int frame, int node, int x,
|
||||
int y, int oldStart, int oldEnd, String replace, int newStart,
|
||||
private native void nativeReplaceTextfieldText(int frame, int node, int x,
|
||||
int y, int oldStart, int oldEnd, String replace, int newStart,
|
||||
int newEnd);
|
||||
|
||||
private native void passToJs(int frame, int node, int x, int y, int gen,
|
||||
@@ -373,31 +373,31 @@ final class WebViewCore {
|
||||
|
||||
private native void nativeSaveDocumentState(int frame);
|
||||
|
||||
private native void nativeSetFinalFocus(int framePtr, int nodePtr, int x,
|
||||
int y, boolean block);
|
||||
private native void nativeMoveMouse(int framePtr, int nodePtr, int x,
|
||||
int y);
|
||||
|
||||
private native void nativeSetKitFocus(int moveGeneration,
|
||||
int buildGeneration, int framePtr, int nodePtr, int x, int y,
|
||||
private native void nativeMoveMouseIfLatest(int moveGeneration,
|
||||
int framePtr, int nodePtr, int x, int y,
|
||||
boolean ignoreNullFocus);
|
||||
|
||||
private native String nativeRetrieveHref(int framePtr, int nodePtr);
|
||||
|
||||
private native void nativeTouchUp(int touchGeneration,
|
||||
int buildGeneration, int framePtr, int nodePtr, int x, int y,
|
||||
int size, boolean retry);
|
||||
|
||||
private native void nativeTouchUp(int touchGeneration,
|
||||
int framePtr, int nodePtr, int x, int y,
|
||||
int size);
|
||||
|
||||
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);
|
||||
|
||||
|
||||
private native void nativeSnapToAnchor();
|
||||
|
||||
|
||||
private native void nativeSetBackgroundColor(int color);
|
||||
|
||||
|
||||
private native void nativeDumpDomTree(boolean useFile);
|
||||
|
||||
private native void nativeDumpRenderTree(boolean useFile);
|
||||
@@ -406,7 +406,7 @@ final class WebViewCore {
|
||||
|
||||
/**
|
||||
* Delete text from start to end in the focused textfield. If there is no
|
||||
* focus, or if start == end, silently fail. If start and end are out of
|
||||
* focus, or if start == end, silently fail. If start and end are out of
|
||||
* order, swap them.
|
||||
* @param start Beginning of selection to delete.
|
||||
* @param end End of selection to delete.
|
||||
@@ -424,7 +424,7 @@ final class WebViewCore {
|
||||
int start, int end);
|
||||
|
||||
private native String nativeGetSelection(Region sel);
|
||||
|
||||
|
||||
// Register a scheme to be treated as local scheme so that it can access
|
||||
// local asset files for resources
|
||||
private native void nativeRegisterURLSchemeAsLocal(String scheme);
|
||||
@@ -485,7 +485,7 @@ final class WebViewCore {
|
||||
CacheManager.endCacheTransaction();
|
||||
CacheManager.startCacheTransaction();
|
||||
sendMessageDelayed(
|
||||
obtainMessage(CACHE_TICKER),
|
||||
obtainMessage(CACHE_TICKER),
|
||||
CACHE_TICKER_INTERVAL);
|
||||
}
|
||||
break;
|
||||
@@ -510,19 +510,15 @@ final class WebViewCore {
|
||||
}
|
||||
}
|
||||
|
||||
static class FocusData {
|
||||
FocusData() {}
|
||||
FocusData(FocusData d) {
|
||||
mMoveGeneration = d.mMoveGeneration;
|
||||
mBuildGeneration = d.mBuildGeneration;
|
||||
mFrame = d.mFrame;
|
||||
mNode = d.mNode;
|
||||
mX = d.mX;
|
||||
mY = d.mY;
|
||||
mIgnoreNullFocus = d.mIgnoreNullFocus;
|
||||
static class CursorData {
|
||||
CursorData() {}
|
||||
CursorData(int frame, int node, int x, int y) {
|
||||
mFrame = frame;
|
||||
mNode = node;
|
||||
mX = x;
|
||||
mY = y;
|
||||
}
|
||||
int mMoveGeneration;
|
||||
int mBuildGeneration;
|
||||
int mFrame;
|
||||
int mNode;
|
||||
int mX;
|
||||
@@ -532,13 +528,11 @@ final class WebViewCore {
|
||||
|
||||
static class TouchUpData {
|
||||
int mMoveGeneration;
|
||||
int mBuildGeneration;
|
||||
int mFrame;
|
||||
int mNode;
|
||||
int mX;
|
||||
int mY;
|
||||
int mSize;
|
||||
boolean mRetry;
|
||||
}
|
||||
|
||||
static class TouchEventData {
|
||||
@@ -583,8 +577,8 @@ final class WebViewCore {
|
||||
"POST_URL", // = 132;
|
||||
"SPLIT_PICTURE_SET", // = 133;
|
||||
"CLEAR_CONTENT", // = 134;
|
||||
"SET_FINAL_FOCUS", // = 135;
|
||||
"SET_KIT_FOCUS", // = 136;
|
||||
"SET_MOVE_MOUSE", // = 135;
|
||||
"SET_MOVE_MOUSE_IF_LATEST", // = 136;
|
||||
"REQUEST_FOCUS_HREF", // = 137;
|
||||
"ADD_JS_INTERFACE", // = 138;
|
||||
"LOAD_DATA", // = 139;
|
||||
@@ -632,10 +626,10 @@ final class WebViewCore {
|
||||
static final int POST_URL = 132;
|
||||
static final int SPLIT_PICTURE_SET = 133;
|
||||
static final int CLEAR_CONTENT = 134;
|
||||
|
||||
|
||||
// UI nav messages
|
||||
static final int SET_FINAL_FOCUS = 135;
|
||||
static final int SET_KIT_FOCUS = 136;
|
||||
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 ADD_JS_INTERFACE = 138;
|
||||
static final int LOAD_DATA = 139;
|
||||
@@ -668,7 +662,7 @@ final class WebViewCore {
|
||||
|
||||
// private message ids
|
||||
private static final int DESTROY = 200;
|
||||
|
||||
|
||||
// flag values passed to message SET_FINAL_FOCUS
|
||||
static final int NO_FOCUS_CHANGE_BLOCK = 0;
|
||||
static final int BLOCK_FOCUS_CHANGE_UNTIL_KEY_UP = 1;
|
||||
@@ -701,7 +695,7 @@ final class WebViewCore {
|
||||
@Override
|
||||
public void handleMessage(Message msg) {
|
||||
if (LOGV_ENABLED) {
|
||||
Log.v(LOGTAG, msg.what < LOAD_URL || msg.what
|
||||
Log.v(LOGTAG, msg.what < LOAD_URL || msg.what
|
||||
> SET_ACTIVE ? Integer.toString(msg.what)
|
||||
: HandlerDebugString[msg.what - LOAD_URL]);
|
||||
}
|
||||
@@ -744,7 +738,7 @@ final class WebViewCore {
|
||||
* we automatically add the scheme of the
|
||||
* baseUrl for local access as long as it is
|
||||
* not http(s)/ftp(s)/about/javascript
|
||||
*/
|
||||
*/
|
||||
String scheme = baseUrl.substring(0, i);
|
||||
if (!scheme.startsWith("http") &&
|
||||
!scheme.startsWith("ftp") &&
|
||||
@@ -762,9 +756,9 @@ final class WebViewCore {
|
||||
break;
|
||||
|
||||
case STOP_LOADING:
|
||||
// If the WebCore has committed the load, but not
|
||||
// finished the first layout yet, we need to set
|
||||
// first layout done to trigger the interpreted side sync
|
||||
// If the WebCore has committed the load, but not
|
||||
// finished the first layout yet, we need to set
|
||||
// first layout done to trigger the interpreted side sync
|
||||
// up with native side
|
||||
if (mBrowserFrame.committed()
|
||||
&& !mBrowserFrame.firstLayoutDone()) {
|
||||
@@ -800,7 +794,7 @@ final class WebViewCore {
|
||||
// (inv-zoom)
|
||||
nativeSetScrollOffset(msg.arg1, msg.arg2);
|
||||
break;
|
||||
|
||||
|
||||
case SET_GLOBAL_BOUNDS:
|
||||
Rect r = (Rect) msg.obj;
|
||||
nativeSetGlobalBounds(r.left, r.top, r.width(),
|
||||
@@ -811,7 +805,7 @@ final class WebViewCore {
|
||||
// If it is a standard load and the load is not
|
||||
// committed yet, we interpret BACK as RELOAD
|
||||
if (!mBrowserFrame.committed() && msg.arg1 == -1 &&
|
||||
(mBrowserFrame.loadType() ==
|
||||
(mBrowserFrame.loadType() ==
|
||||
BrowserFrame.FRAME_LOADTYPE_STANDARD)) {
|
||||
mBrowserFrame.reload(true);
|
||||
} else {
|
||||
@@ -877,13 +871,13 @@ final class WebViewCore {
|
||||
close(mBrowserFrame.mNativeFrame);
|
||||
break;
|
||||
|
||||
case REPLACE_TEXT:
|
||||
case REPLACE_TEXT:
|
||||
HashMap jMap = (HashMap) msg.obj;
|
||||
FocusData fData = (FocusData) jMap.get("focusData");
|
||||
CursorData fData = (CursorData) jMap.get("focusData");
|
||||
String replace = (String) jMap.get("replace");
|
||||
int newStart =
|
||||
int newStart =
|
||||
((Integer) jMap.get("start")).intValue();
|
||||
int newEnd =
|
||||
int newEnd =
|
||||
((Integer) jMap.get("end")).intValue();
|
||||
nativeReplaceTextfieldText(fData.mFrame,
|
||||
fData.mNode, fData.mX, fData.mY, msg.arg1,
|
||||
@@ -892,7 +886,7 @@ final class WebViewCore {
|
||||
|
||||
case PASS_TO_JS: {
|
||||
HashMap jsMap = (HashMap) msg.obj;
|
||||
FocusData fDat = (FocusData) jsMap.get("focusData");
|
||||
CursorData fDat = (CursorData) jsMap.get("focusData");
|
||||
KeyEvent evt = (KeyEvent) jsMap.get("event");
|
||||
int keyCode = evt.getKeyCode();
|
||||
int keyValue = evt.getUnicodeChar();
|
||||
@@ -909,7 +903,7 @@ final class WebViewCore {
|
||||
}
|
||||
|
||||
case SAVE_DOCUMENT_STATE: {
|
||||
FocusData fDat = (FocusData) msg.obj;
|
||||
CursorData fDat = (CursorData) msg.obj;
|
||||
nativeSaveDocumentState(fDat.mFrame);
|
||||
break;
|
||||
}
|
||||
@@ -922,11 +916,9 @@ final class WebViewCore {
|
||||
case TOUCH_UP:
|
||||
TouchUpData touchUpData = (TouchUpData) msg.obj;
|
||||
nativeTouchUp(touchUpData.mMoveGeneration,
|
||||
touchUpData.mBuildGeneration,
|
||||
touchUpData.mFrame, touchUpData.mNode,
|
||||
touchUpData.mX, touchUpData.mY,
|
||||
touchUpData.mSize,
|
||||
touchUpData.mRetry);
|
||||
touchUpData.mX, touchUpData.mY,
|
||||
touchUpData.mSize);
|
||||
break;
|
||||
|
||||
case TOUCH_EVENT: {
|
||||
@@ -961,22 +953,20 @@ final class WebViewCore {
|
||||
mBrowserFrame.documentAsText((Message) msg.obj);
|
||||
break;
|
||||
|
||||
case SET_FINAL_FOCUS:
|
||||
FocusData finalData = (FocusData) msg.obj;
|
||||
nativeSetFinalFocus(finalData.mFrame,
|
||||
finalData.mNode, finalData.mX,
|
||||
finalData.mY, msg.arg1
|
||||
!= EventHub.NO_FOCUS_CHANGE_BLOCK);
|
||||
case SET_MOVE_MOUSE:
|
||||
CursorData finalData = (CursorData) msg.obj;
|
||||
nativeMoveMouse(finalData.mFrame,
|
||||
finalData.mNode, finalData.mX,
|
||||
finalData.mY);
|
||||
break;
|
||||
|
||||
case UNBLOCK_FOCUS:
|
||||
nativeUnblockFocus();
|
||||
break;
|
||||
|
||||
case SET_KIT_FOCUS:
|
||||
FocusData focusData = (FocusData) msg.obj;
|
||||
nativeSetKitFocus(focusData.mMoveGeneration,
|
||||
focusData.mBuildGeneration,
|
||||
case SET_MOVE_MOUSE_IF_LATEST:
|
||||
CursorData focusData = (CursorData) msg.obj;
|
||||
nativeMoveMouseIfLatest(focusData.mMoveGeneration,
|
||||
focusData.mFrame, focusData.mNode,
|
||||
focusData.mX, focusData.mY,
|
||||
focusData.mIgnoreNullFocus);
|
||||
@@ -989,7 +979,7 @@ final class WebViewCore {
|
||||
hrefMsg.sendToTarget();
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
case UPDATE_CACHE_AND_TEXT_ENTRY:
|
||||
nativeUpdateFrameCache();
|
||||
// FIXME: this should provide a minimal rectangle
|
||||
@@ -1009,21 +999,21 @@ final class WebViewCore {
|
||||
case SET_SNAP_ANCHOR:
|
||||
nativeSetSnapAnchor(msg.arg1, msg.arg2);
|
||||
break;
|
||||
|
||||
|
||||
case DELETE_SELECTION:
|
||||
FocusData delData = (FocusData) msg.obj;
|
||||
CursorData delData = (CursorData) msg.obj;
|
||||
nativeDeleteSelection(delData.mFrame,
|
||||
delData.mNode, delData.mX,
|
||||
delData.mNode, delData.mX,
|
||||
delData.mY, msg.arg1, msg.arg2);
|
||||
break;
|
||||
|
||||
case SET_SELECTION:
|
||||
FocusData selData = (FocusData) msg.obj;
|
||||
CursorData selData = (CursorData) msg.obj;
|
||||
nativeSetSelection(selData.mFrame,
|
||||
selData.mNode, selData.mX,
|
||||
selData.mNode, selData.mX,
|
||||
selData.mY, msg.arg1, msg.arg2);
|
||||
break;
|
||||
|
||||
|
||||
case LISTBOX_CHOICES:
|
||||
SparseBooleanArray choices = (SparseBooleanArray)
|
||||
msg.obj;
|
||||
@@ -1032,18 +1022,18 @@ final class WebViewCore {
|
||||
for (int c = 0; c < choicesSize; c++) {
|
||||
choicesArray[c] = choices.get(c);
|
||||
}
|
||||
nativeSendListBoxChoices(choicesArray,
|
||||
nativeSendListBoxChoices(choicesArray,
|
||||
choicesSize);
|
||||
break;
|
||||
|
||||
case SINGLE_LISTBOX_CHOICE:
|
||||
nativeSendListBoxChoice(msg.arg1);
|
||||
break;
|
||||
|
||||
|
||||
case SET_BACKGROUND_COLOR:
|
||||
nativeSetBackgroundColor(msg.arg1);
|
||||
break;
|
||||
|
||||
|
||||
case GET_SELECTION:
|
||||
String str = nativeGetSelection((Region) msg.obj);
|
||||
Message.obtain(mWebView.mPrivateHandler
|
||||
@@ -1072,7 +1062,7 @@ final class WebViewCore {
|
||||
nativeSplitContent();
|
||||
mSplitPictureIsScheduled = false;
|
||||
break;
|
||||
|
||||
|
||||
case CLEAR_CONTENT:
|
||||
// Clear the view so that onDraw() will draw nothing
|
||||
// but white background
|
||||
@@ -1282,7 +1272,7 @@ final class WebViewCore {
|
||||
&& (w < mViewportWidth || mViewportWidth == -1)) {
|
||||
int width = mViewportWidth;
|
||||
if (mViewportWidth == -1) {
|
||||
if (mSettings.getLayoutAlgorithm() ==
|
||||
if (mSettings.getLayoutAlgorithm() ==
|
||||
WebSettings.LayoutAlgorithm.NORMAL) {
|
||||
width = WebView.ZOOM_OUT_WIDTH;
|
||||
} else {
|
||||
@@ -1329,7 +1319,7 @@ final class WebViewCore {
|
||||
|
||||
// Used to avoid posting more than one draw message.
|
||||
private boolean mDrawIsScheduled;
|
||||
|
||||
|
||||
// Used to avoid posting more than one split picture message.
|
||||
private boolean mSplitPictureIsScheduled;
|
||||
|
||||
@@ -1338,7 +1328,7 @@ final class WebViewCore {
|
||||
|
||||
// Used to end scale+scroll mode, accessed by both threads
|
||||
boolean mEndScaleZoom = false;
|
||||
|
||||
|
||||
public class DrawData {
|
||||
public DrawData() {
|
||||
mInvalRegion = new Region();
|
||||
@@ -1348,12 +1338,12 @@ final class WebViewCore {
|
||||
public Point mViewPoint;
|
||||
public Point mWidthHeight;
|
||||
}
|
||||
|
||||
|
||||
private void webkitDraw() {
|
||||
mDrawIsScheduled = false;
|
||||
DrawData draw = new DrawData();
|
||||
if (LOGV_ENABLED) Log.v(LOGTAG, "webkitDraw start");
|
||||
if (nativeRecordContent(draw.mInvalRegion, draw.mWidthHeight)
|
||||
if (nativeRecordContent(draw.mInvalRegion, draw.mWidthHeight)
|
||||
== false) {
|
||||
if (LOGV_ENABLED) Log.v(LOGTAG, "webkitDraw abort");
|
||||
return;
|
||||
@@ -1427,9 +1417,9 @@ final class WebViewCore {
|
||||
sWebCoreHandler.sendMessageAtFrontOfQueue(sWebCoreHandler
|
||||
.obtainMessage(WebCoreThread.REDUCE_PRIORITY));
|
||||
// Note: there is one possible failure mode. If pauseUpdate() is called
|
||||
// from UI thread while in webcore thread WEBKIT_DRAW is just pulled out
|
||||
// of the queue and about to be executed. mDrawIsScheduled may be set to
|
||||
// false in webkitDraw(). So update won't be blocked. But at least the
|
||||
// from UI thread while in webcore thread WEBKIT_DRAW is just pulled out
|
||||
// of the queue and about to be executed. mDrawIsScheduled may be set to
|
||||
// false in webkitDraw(). So update won't be blocked. But at least the
|
||||
// webcore thread priority is still lowered.
|
||||
if (core != null) {
|
||||
synchronized (core) {
|
||||
@@ -1498,7 +1488,7 @@ final class WebViewCore {
|
||||
mEventHub.sendMessage(Message.obtain(null, EventHub.WEBKIT_DRAW));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// called by JNI
|
||||
private void contentScrollBy(int dx, int dy, boolean animate) {
|
||||
if (!mBrowserFrame.firstLayoutDone()) {
|
||||
@@ -1573,14 +1563,6 @@ final class WebViewCore {
|
||||
}
|
||||
}
|
||||
|
||||
// called by JNI
|
||||
private void sendNotifyFocusSet() {
|
||||
if (mWebView != null) {
|
||||
Message.obtain(mWebView.mPrivateHandler,
|
||||
WebView.NOTIFY_FOCUS_SET_MSG_ID).sendToTarget();
|
||||
}
|
||||
}
|
||||
|
||||
// called by JNI
|
||||
private void sendNotifyProgressFinished() {
|
||||
sendUpdateTextEntry();
|
||||
@@ -1617,12 +1599,12 @@ final class WebViewCore {
|
||||
}
|
||||
|
||||
private native void setViewportSettingsFromNative();
|
||||
|
||||
|
||||
// called by JNI
|
||||
private void didFirstLayout(boolean standardLoad) {
|
||||
// Trick to ensure that the Picture has the exact height for the content
|
||||
// by forcing to layout with 0 height after the page is ready, which is
|
||||
// indicated by didFirstLayout. This is essential to get rid of the
|
||||
// indicated by didFirstLayout. This is essential to get rid of the
|
||||
// white space in the GMail which uses WebView for message view.
|
||||
if (mWebView != null && mWebView.mHeightCanMeasure) {
|
||||
mWebView.mLastHeightSent = 0;
|
||||
@@ -1667,7 +1649,7 @@ final class WebViewCore {
|
||||
mViewportMaximumScale = mViewportInitialScale;
|
||||
} else if (mViewportInitialScale == 0) {
|
||||
mViewportInitialScale = mViewportMaximumScale;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (mViewportWidth < 0 && mViewportInitialScale == 100) {
|
||||
mViewportWidth = 0;
|
||||
@@ -1737,7 +1719,7 @@ final class WebViewCore {
|
||||
String text, int textGeneration) {
|
||||
if (mWebView != null) {
|
||||
Message msg = Message.obtain(mWebView.mPrivateHandler,
|
||||
WebView.UPDATE_TEXTFIELD_TEXT_MSG_ID, ptr,
|
||||
WebView.UPDATE_TEXTFIELD_TEXT_MSG_ID, ptr,
|
||||
textGeneration, text);
|
||||
msg.getData().putBoolean("password", changeToPassword);
|
||||
msg.sendToTarget();
|
||||
@@ -1763,7 +1745,7 @@ final class WebViewCore {
|
||||
if (mWebView != null) {
|
||||
mWebView.requestListBox(array, enabledArray, selection);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
private native void nativePause();
|
||||
|
||||
@@ -503,12 +503,11 @@ android.webkit.WebSyncManager
|
||||
android.webkit.WebSyncManager$SyncHandler
|
||||
android.webkit.WebView
|
||||
android.webkit.WebView$ExtendedZoomControls
|
||||
android.webkit.WebView$FocusNode
|
||||
android.webkit.WebView$PrivateHandler
|
||||
android.webkit.WebViewCore
|
||||
android.webkit.WebViewCore$CursorData
|
||||
android.webkit.WebViewCore$EventHub
|
||||
android.webkit.WebViewCore$EventHub$1
|
||||
android.webkit.WebViewCore$FocusData
|
||||
android.webkit.WebViewCore$WebCoreThread
|
||||
android.webkit.WebViewCore$WebCoreThread$1
|
||||
android.webkit.WebViewDatabase
|
||||
|
||||
Reference in New Issue
Block a user