65966ae193adfef8d40419ad9c11515b0e56f257 |
|
21-Apr-2010 |
Cary Clark <cary@android.com> |
nextTextField may walk off the end or try invalid frames Rewrote nextTextField() to check range and frame, and to more resemble other node walkers. Caller no longer passes uninitialized frame in focused case, and looks at parent frames after the target node. Change-Id: I7ea9dffb75d28bdd9d71d83921058feca6baf928 http://b/2607250
/external/webkit/WebKit/android/nav/CachedRoot.h
|
87962ce00229855c098ba12cee8d5c015a835289 |
|
23-Feb-2010 |
Cary Clark <cary@android.com> |
refactor drawing to support layers Drawing elements that appear atop or below layers need to be drawn both in the proper order and with the correct canvas to respect clipping and the matrix. Drawing the find results, text selection, or the cursor ring, interleaves with any layers that may be drawn. The main picture is treated as owned by a LayerAndroid so each component can decide when to draw. This change leave the main picture in WebViewCore.cpp, and draws everything else in WebView.cpp -- in the future, additional refactoring can put all drawing in one place. The logic of what to draw is still in WebView.java, but the actual drawing calls are now triggered inside the layer code. Android.mk - Add rule to trigger building without layers from buildspec.mk. LayerAndroid.* - Replace FindOnPage reference with abstract DrawExtra class to draw adornments in the layers' canvas context. - Add a LayerAndroid constructor to create a dummy layer with a SkPicture* and a uniqueId==-1 so that extras can detect when they are drawn by the main picture. android_graphics.* - Move cursor ring drawing out of WebView.cpp to here. - Separate cursor ring setup from actual drawing. - Get the cursor ring metrics in local coordinates. ChromeClientAndroid.cpp - Fix compiler warnings. WebViewCore.* - Move updateCursorBounds from WebView.cpp. This permits it to be called from CursorRing::setup. CachedFrame.* CachedNode.* CachedLayer.* - Add local bounds getters. CachedRoot.h - Move class FindCanvas to the android namespace. DrawExtra.h - Add an abstract class called by LayerAndroid to optionally draw extra elements in its canvas context. FindCanvas.* SelectText.* - Refactor drawing to draw in layers context. WebView.cpp - Move drawing from WebView.java. - Remove selection code to SelectText.cpp. - Use inverseScale to simplify viewPort metrics. - Simplify layer root so java doesn't need to know about it. Requires companion change in frameworks/base http://b/2457316 http://b/2454127 http://b/2454149
/external/webkit/WebKit/android/nav/CachedRoot.h
|
41ca040d7db923a179953baf91f30d539df6b055 |
|
17-Feb-2010 |
Cary Clark <cary@android.com> |
minor fixes to layer nav - get rid of the FloatPoint interface in LayerAndroid; use (x, y) instead - make CachedFrame a friend of CachedRoot and CacheBuilder a friend of CachedNode so they alone can access private fields. - assume the LayerAndroid picture can sometimes be null. If it is, use the main page's picture instead. http://b/2369549
/external/webkit/WebKit/android/nav/CachedRoot.h
|
f4cefb9302ee62602c19cdfbdb6cc1fbdf540953 |
|
27-Jan-2010 |
Cary Clark <cary@android.com> |
Add UI considerations to layers companion fix is in framework/base With fixed layers, parts of the web page are now in motion relative to the document when the page scrolls. Many routines that formerly read static coordinates need to compute locations. In some cases, new computations are cached for speed -- for instance, the current cursor position is cached when it is frequently compared. The cursor rings and other drawing elements like finding text on the page now to be drawn in the correct order so that they appear both under and over layers. There's quite a bit more work to be done. Major pieces are drawing the text selection in the correct order, and computing locations based on nest layers. With this checkin, only the position of the child- most layer is considered when computing bounds. http://b/2369549 JavaScriptCore/wtf/Platform.h - Turn compositing on. All routines that reference LayerAndroid are bracketed by this condition. WebCore/platform/graphics/android/LayerAndroid.h WebCore/platform/graphics/android/LayerAndroid.cpp - Add a unique id to each layer. The unique id is used to associate a layer created when the DOM is parsed in the webkit thread with its copy in the UI thread. - Add: draw the text found on the page, as a call out in the primary draw. The call out must follow the drawing the layers' contents to show the found text correctly. Note that this adds a new slot with identical contents in every child LayerAndroid. In a future optimization, a RootLayerAndroid could hold data common for all child layers. - Add: clipArea(), which returns an array of rectangles describing the clip for this LayerAndroid and its children. Generally, this is the part of the webpage which is covered by one or more fixed layers. - Add: find(FloatPoint) that returns the deepest layer that contains this point. This is used to match taps to the layer that is tapped on. - Add: draw all layer pictures and identify which layer is being drawn. This is used to analyze the picture contents for finding and selecting text. - Add: find the layer that matches a given id; this is used to map cached DOM node data back to the layer that contains it. - Fix up includes, delete unused interfaces WebKit/android/jni/WebViewCore.h WebKit/android/jni/WebViewCore.cpp - Remove local mRootLayer; use the one in WebView.cpp instead (which is in sync with WebView.java) WebKit/Android.mk WebKit/android/nav/CachedLayer.h WebKit/android/nav/CachedLayer.cpp - CacheLayer associates the cached node with the LayerAndroid instance. It contains the index to the node in the cached frame, the LayerAndroid's unique id, and the spacial offset of the node within the layer when the DOM information was captured. It also caches a pointer to the LayerAndroid instance. CacheLayer computes the node's location each time it is called, since the fixed layer may be constantly moving relative to the document's coordinates. WebKit/android/nav/CacheBuilder.h WebKit/android/nav/CacheBuilder.cpp - Track the active layer while building the nav cache. The 'Tracker' structs were refactored to share common code, and a new 'LayerTracker' struct identifies when the node walker is inside a layer. - Added code to dump layer information for debugging. - Note that CachedNode::cursorRingsPtr can only be called during nav data construction - The cache builder can limit or exclude nodes that are clipped out -- but until I have more understanding of layer clipping, treat contained nodes as unclipped. WebKit/android/nav/CachedDebug.h - Add a variant that can dump either to a log file or the console including the function it was dumped from. WebKit/android/nav/CachedFrame.h WebKit/android/nav/CachedFrame.cpp - Add an array of CacheLayer instances. - Protect bounds from direct access since they must always be computed. - Remove misnamed focus parameter from many routines since the cursor node can be read from the root frame. - Add: adjustBounds(), which computes the bounds as the layer moves. - Add: checkRings(), which gets the appropriate picture for the node. - Remove disabled code - Find the layer list for the matching node by using a binary search - Add: resetLayers() to reset the LayerAndroid pointer in CachedLayers when the layer world changes. WebKit/android/nav/CachedHistory.h WebKit/android/nav/CachedHistory.cpp - Update history data to have matching frame and node WebKit/android/nav/CachedNode.h WebKit/android/nav/CachedNode.cpp - Refactor functions that directly read coordinates to compute them. In some cases, pass the frame in so that the layer coordinates can be found. - Add a bit to note that the node belongs to a layer. - Remove duplicate bounds interfaces. - Add methods to get cursor ring data at runtime. - Update debugging info. WebKit/android/nav/CachedRoot.h WebKit/android/nav/CachedRoot.cpp - Isolate direct picture access so that the layer picture can be returned. - Add knowledge of how the base is covered by layers. - Add a pointer to the root LayerAndroid. - delete disabled code. - Move the cursor ring into view if it is obscured by a layer (this isn't totally working) - Before finding the next node to move to, set up 'cursor cache' data, including the visible picture. WebKit/android/nav/FindCanvas.h WebKit/android/nav/FindCanvas.cpp - Move find code here so that it can be called from layers. WebKit/android/nav/WebView.cpp - Add java interface to get viewport metrics on demand. - Pass frame with the node. - Remove the find on page code (now in FindCanvas). - Compute focus rings instead of reading them directly. - Transfer layer id when getting new nav cache. - Set up root LayerAndroid. - Add utility to track if cursor is in a layer. - Simplify drawLayers() to use common view metrics.
/external/webkit/WebKit/android/nav/CachedRoot.h
|
a2aaeda3cab40ff823fc40ebff51b828d1a9bc1c |
|
08-Feb-2010 |
Leon Scroggins <scroggo@google.com> |
Remove code which retrieves the action associated with a textfield. This code was written because we previously only had one action button on the IME for textfields. Now that textfields can always have a next button, we no longer need it.
/external/webkit/WebKit/android/nav/CachedRoot.h
|
95fa6e99128685c55e9be6f4362e67c288482a74 |
|
15-Dec-2009 |
Leon Scroggins <scroggo@google.com> |
If the DOM changes textfield focus, make the IME work properly. Fix for http://b/issue?id=2219166 Requires a change to frameworks/base Remove the old change to update the WebTextView when a key is pressed, since the IME does not generate key events. Instead, when the focus changes, and the IME is serving the WebTextView, immediately clear the cursor and update the WebTextView, so the user can continue typing. Also, allow "Next" to work on the currently focused textfield, even if it's not the cursor. Further, check for a new action if there is a focus but not a cursor.
/external/webkit/WebKit/android/nav/CachedRoot.h
|
74757b62fce144f27c25cc7744df82cd7411b2dc |
|
07-Dec-2009 |
Leon Scroggins <scroggo@google.com> |
Provide <input> type information to Java side. 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.
/external/webkit/WebKit/android/nav/CachedRoot.h
|
dcbb033aafed2abc472f0d88520869a6b1f1945b |
|
04-Dec-2009 |
Leon Scroggins <scroggo@google.com> |
Store InputType information for <input> fields, return SEARCH action for SEARCH <input> Fixes http://b/issue?id=2299660 and http://b/issue?id=2299650 Also remove isPassword, which is redundant.
/external/webkit/WebKit/android/nav/CachedRoot.h
|
3298a7d84b96ade73c6b170671711a8f2792ae59 |
|
13-Nov-2009 |
Steve Block <steveblock@google.com> |
Fixes license headers for all files in WebKit/android, other than those in stl/. 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
/external/webkit/WebKit/android/nav/CachedRoot.h
|
19194ea29920c2f7a02d08dfb0416608bc81dbb7 |
|
28-Oct-2009 |
Leon Scroggins <scroggo@google.com> |
Fix a clicking bug. 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
/external/webkit/WebKit/android/nav/CachedRoot.h
|
7b035dc1012763a04adddc6de25256647fea50bd |
|
28-Oct-2009 |
Cary Clark <cary@android.com> |
pass the current cursor when computing the mouse position 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
/external/webkit/WebKit/android/nav/CachedRoot.h
|
fa768f11d82c34980cce020f442329299efb08ca |
|
29-Jul-2009 |
Cary Clark <cary@android.com> |
rebuild the nav cache on mouse clicks during page load 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.
/external/webkit/WebKit/android/nav/CachedRoot.h
|
e3635bdd4530eeff44657cb1423a0572482381ce |
|
30-Jul-2009 |
Leon Scroggins <scroggo@google.com> |
Allow user to jump to the next textfield. 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.
/external/webkit/WebKit/android/nav/CachedRoot.h
|
5a8af164f143407fe5bc7e004287de02ed61d6d5 |
|
20-Jul-2009 |
Cary Clark <cary@android.com> |
Find left edge of column using nav cache data. The function is currently unused, but will be used by Grace's double-tap experiment.
/external/webkit/WebKit/android/nav/CachedRoot.h
|
0181faa1ffede024c2712df19ae7c855a8cf64e3 |
|
24-Jun-2009 |
Cary Clark <cary@android.com> |
set trackball click to the edge of the text field, not the middle 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
/external/webkit/WebKit/android/nav/CachedRoot.h
|
c3fe941b7eb7da66bcea91b3513053d2ea60586f |
|
11-Jun-2009 |
Cary Clark <cary@android.com> |
more (browser) trackball-is-a-mouse work in progress 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.
/external/webkit/WebKit/android/nav/CachedRoot.h
|
46dfee13b2bec1b39f46c138df565b2207ccbc86 |
|
29-May-2009 |
Cary Clark <cary@android.com> |
in the browser, make the trackball more like a mouse Older code treated the trackball as a four way dpad with equivalents to moving up, down, left and right by generating arrow key events. This change makes the trackball solely generate mousemove events. The old arrow keys in turn were mapped to be as close as possible to tab-key events that moved the focus. The new model leaves focus-changes to the DOM. Clicking the dpad is distinguished from pressing the enter key to be more compatible with desktop-authored web pages.
/external/webkit/WebKit/android/nav/CachedRoot.h
|
cf5ef6c01a2cd27a06391ab9cf3d2c9c24335e4d |
|
13-May-2009 |
Cary Clark <cary@android.com> |
use one rectangle for browser focus ring Check to see if the potentially larger hit-test bounds can be used in place of the normal bounds, or if the normal bounds can be used in place of the individual text bounds. Construct a region out of the individual focus ring rectangles, then see if any text is drawn inside the bounds but outside of the focus ring. If not, use one rectangle instead of the rings.
/external/webkit/WebKit/android/nav/CachedRoot.h
|
8e35f3cfc7fba1d1c829dc557ebad6409cbe16a2 |
|
04-Mar-2009 |
The Android Open Source Project <initial-contribution@android.com> |
auto import from //depot/cupcake/@135843
/external/webkit/WebKit/android/nav/CachedRoot.h
|
648161bb0edfc3d43db63caed5cc5213bc6cb78f |
|
04-Mar-2009 |
The Android Open Source Project <initial-contribution@android.com> |
auto import from //depot/cupcake/@135843
/external/webkit/WebKit/android/nav/CachedRoot.h
|
498e5e4ad10920a9cfae6fdb7ffb19a6ed936ba7 |
|
11-Feb-2009 |
The Android Open Source Project <initial-contribution@android.com> |
auto import from //branches/cupcake/...@130745
/external/webkit/WebKit/android/nav/CachedRoot.h
|
7a355dabbffb876b2e08cf63ac4fc28a39c19c6a |
|
16-Jan-2009 |
The Android Open Source Project <initial-contribution@android.com> |
auto import from //branches/cupcake/...@126645
/external/webkit/WebKit/android/nav/CachedRoot.h
|
1cbdecfa9fc428ac2d8aca0fa91c9580b3d57353 |
|
18-Dec-2008 |
The Android Open Source Project <initial-contribution@android.com> |
Code drop from //branches/cupcake/...@124589
/external/webkit/WebKit/android/nav/CachedRoot.h
|