| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- WebKit/android/jni/WebViewCore.cpp
- WebKit/android/jni/WebViewCore.h
Add validNodeAndBounds() to determine if the clicked cached
node is good. First check to see if the pointer
to the frame and node still exist in the DOM. If
they do, see if the hit test bounds they point
to is the same as when the cache was recorded.
- WebKit/android/nav/CacheBuilder.cpp
- WebKit/android/nav/CachedNode.h
Record the original absolute bounds for later
comparison.
- WebKit/android/nav/CacheBuilder.h
Make getAreaRect() public so it can be called by
validation.
- WebKit/android/nav/WebView.cpp
Enhance motionUp() with additional validation:
use pointInNavCache() to see if there's a cached node;
wait for message from webkit to see if bounds is unchanged;
then use motionUp() to pass the original or altered click.
This is a two-part change with frameworks/base.
Fixes http://b/2249425
|
| |
|
|
|
|
|
|
| |
Directly move the focus rather than passing a click.
Fixes http://b/issue?id=2292683
Requires a change to frameworks/base
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Help to fix http://b/issue?id=1890360 and http://b/issue?id=2150538
CacheBuilder.cpp:
Explicitly set isTextField to false for textareas.
CachedRoot:
Remove the code which checks to see if the textfield is a search,
since if it is, we can avoid this path altogether.
WebView:
Return a single integer which tells what type the current text
input field is.
Requires a change to frameworks/base.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Something about rebuildTextView() invalidates the current cached
frame -- reading the last obtained frame after calling it may
crash. Why, I don't know. Until I figure that out, read the
cached state first.
Also remove some tests for null frame and node since the null
case has already been handled earlierin motionUp().
fixes http://b/2307964
|
| |
|
|
|
|
|
| |
SEARCH <input>
Fixes http://b/issue?id=2299660 and http://b/issue?id=2299650
Also remove isPassword, which is redundant.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Some of the fields in CachedNode are relevant only to input
fields and text areas. Move these into their own vector
so that we can add more data without making all CacheNodes
bigger.
Remove CacheNode entries that are no longer used, or can
be consolidated into the node type. Alphabetize some interfaces
and implementations. Update the debugging output.
part of http://b/2299660
|
| |
|
|
| |
Function is not needed. Requires a change to frameworks/base
|
| |
|
|
|
|
| |
companion fix is in framework/base
fixes bug http://b/issue?id=2264941
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
These files have not yet been upstreamed to webkit.org.
WebKit requires either a BSD-style or LGPL 2.1 license for all code.
We use a BSD-style 2-clause license for Android-specific files that will be upstreamed to webkit.org.
This change adds licenses where absent or simply fixes the names of copyright holders in the license
text to 'THE COPYRIGHT OWNER' and cleans up formatting.
Files in stl/ currently use licenses other than BSD-style and will require more careful treatment.
Change-Id: I67ad4b8932e432d3eaaeecdfeb0d09418496228d
|
| |
|
|
|
|
|
|
|
|
|
| |
Remove some code that simulates a mouse click at the beginning of
a textarea and the end of a textfield. The original goal was to
make the click change the selection to be at the beginning or end
of the field, respectively. However, we actually make another call
which prevents this click from the selection. Further, the
selection actually gets changed elsewhere.
Fixes http://b/issue?id=2219233
|
| |
|
|
|
|
|
|
|
| |
Most of the time, the simulated mouse position can be
computed from the current cursor. But when the cursor
is changed, the current cursor info could be out of
date and generate a bus error.
fixes http://b/issue?id=2061211
|
| |
|
|
|
|
|
|
| |
Fixes http://b/issue?id=1650395 Lets touches change the selection
while ignoring changes from trackball events. When a touch puts
a textfield in focus, tell the WebTextView to set mOkayForFocusNotToMatch.
Requires a change in frameworks/base.
|
| |
|
|
|
|
|
|
|
|
| |
Previously we were keeping our own state in the UI thread to
determine when to send events to the plugin. This change removes
that logic and uses the document focus to determine when events
are to be sent. This also fixes problems with the plugins
occasionally not receiving lose focus events.
see bug http://b/2033843
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
webkit changed the behavior of hitTestResultAtPoint; it used
to return the innermost node hit, but does so no longer.
Work around this by searching the returned node for a text
node.
Start the text detection one pixel lower. This fixes picking up
the first line of a link on m.msn.com.
Simplify the selection drawing. Share code between the arrow and
the i-beam. Center the i-beam on the arrow. Use relative path
construction to simplify the i-beam.
Add debugging.
Requires a companion change in frameworks/base
partially fixes http://b/issue?id=1667690
|
| |
|
|
|
| |
Required for a change to frameworks/base
(https://android-git.corp.google.com/g/30939 )
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
| |
Separate nodes that are hidden from nodes that disable
drawing the focus ring. If a node draws its own focus state,
other than not drawing the ring, it should be indistinguishable
from other focusable nodes.
Fix the nav cache dump to be in line with the latest webkit.
fixes http://b/issue?id=2201049
|
| |
|
|
|
|
|
| |
Partial fix for http://b/issue?id=2159869. Add a field to CachedNode
for readonly. In WebView.cpp, only call displaySoftKeyboard if the
node is not readonly. Also call displaySoftKeyboard in nativeTextMotionUp
to replace a call being removed in WebView.touchUpOnTextField(java).
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This fix should be considered for passion mr1, but
does not affect sholes -- this is a trackball only bug.
The selection caret and arrow now take the scale factor and
the height of the title bar into account when preparing the
canvas for drawing.
Also, simply call to CopyPaste::findClosest, and remove
logic to attempt to pin the arrow to the current cursor.
Requires a companion fix in framework/base
Fixes http://b/issue?id=2187591
|
| |
|
|
|
|
|
|
|
| |
Attempts to get the plugin to scroll when the ime
appears. Add debugging strings to help track events
to show plugin object. Add focusCandidate interfaces.
Tweak rectangles from plugin so they don't disappear.
Prefer found matches in nav cache that are later in
the document.
|
| |
|
|
|
|
|
| |
removed, there is a slight chance that getRealObject()
for WebView's JavaObject be null.
Fix http://b/issue?id=2159815
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Requires a corresponding change to frameworks/base. We were previously
letting WebTextView handle clicks, determine the change in selection,
and pass that down to webkit. This sometimes resulted in a different
placement of the caret if the WebTextView and the webkit-rendered
textfield did not line up exactly. Now, we pass the click directly
to webkit, which determines the new selection and passes that info
back to the WebTextView. This also has the benefit of letting
the WebTextView reflect changes in the selection that originated from
webkit. Also remove some unused parameters.
|
| |
|
|
|
|
|
|
|
|
|
| |
Fix for http://b/issue?id=2021424. When trying to draw the matches,
if we find that the page needs to be scrolled to put the match on
screen, we request a scroll, do a viewInvalidate and stop, so that
the matches will be drawn after the invalidate. Unfortunately, for
some values, we do not end up scrolling, because contentToView turns
the scroll into a no op. So we forever request scrolls, and never
draw the matches. Fix this by getting a return value from scrollBy,
and if it returned false, go ahead and draw the matches.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
While the page is loading, the nav cache is not rebuilt.
Double-click zooms out the web page by using the nav cache to
find the left edge of the column -- but fails to work during
page load. This change rebuilds the nav cache (if the page is
loading) each time a mouse click is sent to webkit.
This doesn't fix the bug where the first double click doesn't
align the column correctly, but helps with subsequent clicks.
Also, pass scale information to getBlockLeftEdge so it can
restrict its search to the area that will be zoomed to. Default
to the point clicked if no alignment info can be found.
|
| |
|
|
|
|
|
|
| |
In CachedFrame, add methods to find the next textfield and to
determine which ImeAction should be associated with a given textfield.
In WebView, uses these apis to determine the ImeAction and jump
to the next textfield and scroll it on screen. Requires a change to
frameworks/base.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add api to get the left edge of the block from the current (x,y). The code
was copied from Cary's change.
Todo:
1.need some tuning as we can see from nytimes.com that some times the left
edge is not correct.
2.currently nav cache is not up to date while loading. This means the left
edge may not be correct during loading.
3.if (x,y) is over an edit text box, or image, it should return the left
edge of it. Currently it is not working as expected.
Added the code to store the extra scale factor, so that back/forward history
works correctly.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
We already cleared it in the above case, when the
user clicks on empty space. If the user clicks
on a node, and it is not a text input, clear it.
This fixes a bug on the Google home page, where
the user has typed into the textfield, but then
clicks on "more" and is then unable to click on
Gmail, which is covered by the (invisible)
WebTextView.
|
| |
|
|
|
|
|
|
|
| |
The cursor position is preserved, so additional trackball
navigation will start from where the cursor ring was drawn
last. Hiding the cursor gets rid of confusion where the
cursor ring stays visible when clicking on a link that
does not go to a new page, or when the new page has a
link at the same physical location as the old page.
|
| |
|
|
|
|
|
|
| |
This fixes a bug where the DOM has moved the focus, but the WebTextView
is still sending keys to the old focus. Requires a change in
frameworks/base. This part of the change just gives WebView a way
to get a pointer to the currently focused node (regardless of the
cursor).
|
| |
|
|
| |
user events)
|
| |
|
|
|
|
| |
This helps superpudu recompute the cursor ring more
frequently when the floating bar moves. It also helps
update the nav cache when navigating during a page load.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Longpressing on a WebView while the WebTextView is up calls
WebTextView::performLongPress(). This used to be fine, but now
we may still leave the WebTextView up while the user is longpressing
on something else. Check to ensure that the focus is the same
as the cursor before calling WebTextView's version. Also,
send a click if the user longpresses on a different WebTextView,
so it will now behave appropriately. Requires a change in
frameworks/base.
Provide a setter on CachedHistory to set the mousebounds, and
set it in selectBestAt, so that getSimulatedMousePosition
uses the correct information. Also edit some comments to refer
to the cursor rather than the focus. In WebView.cpp, use
the delete TypingCommand, making deleting and cutting work
once again.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Consolidate key handling. Simplify interface between android
and webkit so multiple clients can use common code to pass keys.
Add helper to return if cached node is plugin.
Use WebView::m_clickedOnPlugin to remember active plugins.
Add WebView.MOVE_CURSOR to replay key events the plugin
doesn't want.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Create a new function that sets the cursor data to the WebViewCore,
and call it each time we change the cursor. Prior to this change,
by touching on a non-cursored, non-focused textfield, you could
set the cursor on the current CachedRoot without setting the data
on the WebViewCore. Then, when we get a new frame cache, we
check the data on the WebViewCore (which is out of date). Since
it does not think there was a cursor (or it thinks it was somewhere
else), we do not restore the cursor on the new cache. This change
fixes that by ensuring that the cursor information is up to date.
|
| |
|
|
|
|
| |
In drawCursorRing, we potentially use a different value than bounds
for the cursor ring. If we use that other value, also use it for
the invalidation to clear it later.
|
| |
|
|
|
|
|
|
| |
Add clicking, key debug statements in WebViewCore.cpp.
Fix dumping nav tree to use NamedNodeMap.
Set click point to be start of text field, end of text area, middle
of others.
Make CachedRoot::getSimulatedMousePosition, callers const
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
When the WebViewCore picture set is recomputed, check
to see if the trackball has moved since the last time.
If so, rebuild the nav cache even if dom version checking
is disabled.
If there's no focus node ready to receive a key event,
check to see if the cursor is hovering over a plugin, and
give it the event instead.
Update all cursor state in both places it could change.
|
| |
|
|
|
|
|
|
|
| |
Generate mouse move event after sending scroll event
Move cursor update in nav cache to UI thread
Remove updating nav cache on mouse move
Remove node parameter from mouse move
Remove plugin focus hack from mouse move
Add interface to get native cursor position
|
| |
|
|
| |
also, set hasCursorBounds only if cursor ring is visible
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Make the blinking caret active when the user actually starts editing
text. In WebView.cpp, determine whether to disable the blinking
caret and pass that info up to the Java call. Requires a matching
change in frameworks/base. Also add some comments for clarification,
and remove duplicate calling points for functions. Also change
glue for nativeSetFocusControllerActive to reflect its new name/
function.
This change also reflects a behavioral change. If the WebView or
its window lose focus, we do not restore the blinking caret when
focus returns.
|
| |
|
|
|
|
|
|
|
|
|
| |
Everytime the picture set is rebuilt, the nav cache
is also built if the dom changes. This doesn't catch
javascript that changes locations of objects without
updating the dom. To handle these cases, do a hit-test
on the cursor location and see if it finds the same
node used to build the cursor cache.
This helps track the gmail message floating tool bar.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
WebViewCore.cpp:
Add parameter to CachedRoot::findAt to suppress check for
hidden nodes. This helps find a best match for newly built
nav caches.
Require that the new cursor node closely match the bounds
of the prior cursor node. This may need tuning.
CacheBuilder.cpp:
Remove isInput flag on cached nodes (no longer used)
CachedFrame.cpp:
Add hideCursor to complement clearCursor. Hide prevents
the cursor from drawing but does not move it. Clear removes
it altogether so that the next movement starts from the viewPort
edge.
CachedHistory.cpp:
Don't special case text fields when doing history navigation.
This special casing in part allowed setting the focus to
the homepage input, but since focus is no longer set by nav,
it is not required.
CachedNode.cpp:
Add hideCursor; clean up debugging
CachedRoot.cpp:
Use navBounds from history instead of cursor bounds to
determine next move. Clean up some obsolete code.
WebView.cpp:
Add hideCursor; call it when appropriate.
|
| |
|
|
|
|
|
| |
Since we have a way to bring up the soft keyboard manually
(holding down the menu key), and trying to bring it up
using our existing call results in a crash, only bring it
up when the click is on a textfield/textarea.
|
| |
|
|
|
|
|
|
|
|
|
| |
In the old navigation model, we set focus to a node, and checked to see
if that node was still valid (could have changed since we built the
navigation cache). Then we sent a message back to the UI thread to
tell it to draw the ring differently. In the new model, we are essentially
moving a mouse, so we do not concern ourselves with whether the node is
valid. Here I have removed function and jni to call sendMarkNodeInvalid,
the notion of an invalid node in WebView.cpp, and the INVALID flavor
of CursorRing. Needs a change in frameworks/base to work properly.
|
| |
|
|
|
|
| |
Remove obsolete recomputeFocus, old moveCursor code
Make sure focus is !null before using it.
|
| |
|
|
|
|
|
|
|
|
| |
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. Will not work without a corresponding
change in frameworks/base.
|
| | |
|