summaryrefslogtreecommitdiffstats
path: root/WebKit/android/nav/CacheBuilder.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Merge WebKit at r75993: Move WebKit/android files to SourceBen Murdoch2011-05-161-3201/+0
| | | | Change-Id: Ifa871f8320bdb3a09fe189fffecc23f702c394b9
* Merge WebKit at r74534: Rename rendering methodsBen Murdoch2011-05-101-1/+1
| | | | | | | | | Following the rename of *visible to *visual upstream, make them in our platform code. See http://trac.webkit.org/changeset/73385 Change-Id: Ic4cb1ed8736d67bbc6e963b9f409bfdae07d5c5f
* Merge WebKit at r74534: Fix RenderBlockLineLayout.cpp and others.Ben Murdoch2011-05-101-1/+1
| | | | | | | | | Fixes RenderBlockLineLayout.cpp, WebViewCore.cpp and CacheBuilder.cpp after upstream refactoring. See http://trac.webkit.org/changeset/73618 Change-Id: I7942d6d77ce70ceb147dd711c5229c649242b10c
* Use UI side scrolling for readOnly textareas.Leon Scroggins2011-02-251-1/+5
| | | | | Bug:3300760 Change-Id: I44641bb4ba385ece2ace9f8dba2205b76e755289
* don't combine single image bitmapsCary Clark2011-02-141-5/+11
| | | | | | | | | | | | | | | Anchors and other links often contain multiple bitmaps, which must be stitched together when analyzing the picture data to determine if the anchor is fully visible, partially occluded, or fully hidden. For instance, nine-patches in WebKit appear as adjacent bitmaps. If a website design has two or more bitmaps adjacent to each other, these may be mistakenly joined. By tracking whether the original node contained exactly one img element, combining bitmaps based on their location is avoided unncessarily. bug:3373743 Change-Id: I5bcbdaec3097a2b839ee2444e512a0def6a016d0
* Prevent plugin node from being deleted in the nav cache.Derek Sollenberger2011-01-311-1/+2
| | | | | bug: 3331323, 3393264 Change-Id: I1077a9d82d5e9c96a24e738cfede1dfaff70cc1c
* Fix for bug 3398340Kristian Monsen2011-01-281-1/+0
| | | | | | Removed a variable that was never set, but still used Change-Id: I180f631472a02ed512f6071a0760913c8ddf6e84
* Fix hit testing inside layers.Patrick Scott2011-01-261-7/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | A new webkit merge added a couple methods to ClipRects that were not copying the hit test rect. This make the clip rect empty during hit testing which was clipping out all nodes in scrollable layers. When tracking a layer, use the foreground layer if present as it will contain the right nodes. When looking for a scrollable layer, traverse the children in reverse drawing order to find the top-most visible layer. This allows orkut.com to scroll. Remove a couple of casts and headers. Use relaxAdoptionRequirement() to avoid a RefCounted assert. Swap the texture owner hash set during deletion as release can modify the iterator concurrently. Update the scrollbars (even though we don't have any) when scrolling a layer to keep the scroll position of the scrollbar in sync with the layer. Rewrite a little bit of PluginPackageAndroid. m_module may be non-null during load. If it is null, load the library and store it in m_module. Follow the regular path assuming m_module is not null. Bug: 3373179 Change-Id: If07ec9735b30c1e98e363667378a8d253a841a45
* Prevent a crash by caching overflow scrolling.Patrick Scott2011-01-111-2/+2
| | | | | | | | | Use adoptRef when creating a new bridge item. Use toRenderBoxModelObject instead of toRenderBox as RenderInlines have layers. Bug: 3321493 Change-Id: I4283681eba961aedaa8d80bfdfb3d1a468aab1ac
* Merge WebKit at r72805: Use Node::parent() rather than Node::parentNode()Steve Block2011-01-061-1/+1
| | | | | | | | | | | | | | This is a revert of "Merge WebKit at r73109: use parentNode method." See http://trac.webkit.org/changeset/72825 This reverts commit 23aa22bb0c8bf0d91c99d21c5dca4c64a4825a87. Note that this is a backwards merge from Chromium release 9.0.600.0 to 9.0.597.0, to align with the Chromium 9 stable release branch. Change-Id: I5ba4d0976c3b87b32326fdc8e2eb1cffdd7541cf
* Keep track of whether input fields have autocomplete.Leon Scroggins2011-01-051-0/+1
| | | | | | | | Bug:3300365 Requires a change in frameworks/base. Change-Id: Ia466cae0c43b43817651e9d5903e18aae96a814f
* use same matrix left when reading pictureCary Clark2011-01-051-2/+4
| | | | | | | | | | | | | | | | In select text, the nav cache picture is read multiple times. If the matrix is different, it's possible that the text metrics will be off by one when the text position is near to but not equal to an integer (e.g., 315.999969). Pinning the matrix to zero makes the matrices the same in the bug case. Use the simpler doIRect interface if the glyph rec isn't needed. Check for contentRender() before dereferencing it. bug:3315620 Change-Id: I4bfaf9f9b7bf12f66b29f4609d744bceaf5b2964
* Merge WebKit at r73109: use parentNode method.Shimeng (Simon) Wang2010-12-221-1/+1
| | | | | | | | This is because of: http://trac.webkit.org/changeset/72825/trunk/WebCore/dom/Node.h which makes the parent method private. Change-Id: I706c4cbc4e69bee990f9e138aeb7ad2ed2a3d42f
* Re-enable iframe scrolling.Patrick Scott2010-12-151-33/+16
| | | | This reverts commit c7911ffd666a7e73131dfd68919b769086a093e0.
* Revert "Enable iframe scrolling."Guang Zhu2010-12-141-16/+33
| | | | This reverts commit 27dd9e051d0960e985cb677bfc1ce20531ac0456.
* Enable iframe scrolling.Patrick Scott2010-12-131-33/+16
| | | | | | | | | | Turn off iframe expansion and record iframes in a composited layer. Fix navigation by tracking iframe layers if needed. Remove the logic to add focused nodes to the last tracked layer as it is not needed and might add nodes to the wrong layer. Bug: 3219076, 3211666, 3201077, 3194321 Change-Id: Ifc0b83102438255db7e4b62ad260f50ebbdb0e50
* Attempt to scroll layers everytime the user drags.Patrick Scott2010-12-031-13/+10
| | | | | | | | | | | This is part of a frameworks/base change. Use the composite root bounds for the inval region when updating the UI picture. This fixes several drawing issues with outdated pictures. Bug: 3022562 Change-Id: Ic28cfbbe381fdd59368a6d83bb73b01df912b530
* Rewrite scrollable layers using multiple layers.Patrick Scott2010-12-031-30/+47
| | | | | | | | | | | | | | | | | | | | | | | Remove PlatformBridge::updateLayers and instead call layersDraw from ChromeClientAndroid during a requested sync. Instead of LayerAndroid having knowledge of scrolling pictures, use multiple layers (background, mask, foreground). Update navigation to use the new structure. Always record nodes in absolute, unscrolled coordinates. Do not track layers unless the node has a composited layer and a last child. Check for composited parents when adding to tracked layers as well. TODO: * developer.android.com doesn't completely work with navigation due to some nodes being clipped out. * BaseLayerAndroid needs to be able to operate with a matrix other than identity. * nested fixed position elements do not draw correctly. * nested overflow layers haven't been tested. Change-Id: I0e2bd37612341e8884d68153ab36194cb2dc1eeb
* fix radio, checkbox hit testingCary Clark2010-11-241-0/+2
| | | | | | | | | | | | | | | | Radio and checkbox input types draw only a bitmap in their navigation bounds, and require some special treatment. Never treat them as transparent. Use the slop box instead of the exact box when detecting them, since our asset may be larger than the space webkit provides. Also, fix a debug test if the layer is null. bug:3215174 Change-Id: I3b573e3aa215268390db2d58435ac47115804ed7
* Provide the line spacing attribute for textareas.Leon Scroggins2010-11-221-1/+8
| | | | | | | | | | | | Bug:3085564 In order to line up the WebTextView text with the page's text, we need to know the line spacing attribute stored in the DOM. Requires a change in frameworks/base: https://android-git.corp.google.com/g/#change,80646 Change-Id: I539454df318826233496ffcd140ba1d6e396a4a0
* fix indices in cached frameCary Clark2010-11-181-1/+7
| | | | | | | | | After the CachedFrame is built, it may replace the previous node. Replace the indices stored in the CachedFrame and in the CachedNode with the index from the overwritten node. bug:3201246 Change-Id: Ia70f4f2c1f8009db2370e723bc8631e4a3873e75
* Return a float for text size.Leon Scroggins2010-11-121-1/+1
| | | | | | | | Bug:3085564 Requires a change in frameworks/base: https://android-git.corp.google.com/g/#change,79591 Change-Id: Iaf3ebc405fca349e23bebb113228c4b550e6b88e
* Encode email addresses that are not mailto: links.Patrick Scott2010-11-081-4/+10
| | | | | | | | Fix a few extra copies of KURL and String. Added more characters to the list of allowable mailbox characters. Bug: 3038103 Change-Id: I49bd3ba9c628a70e7e1633d16fc329d64613dbf1
* Adjust layers when parent layer scrollsCary Clark2010-11-041-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When a page has layers, it causes the main body of the page to become a layer as well. The scroll position of the WebView must be applied to the layer to translate the cursor rings correctly for hit-testing. Today, applying the scroll position of the WebView screws up overflow scrolling. Until this gets figured out, skip using the scroll position in CacheFrame adjust() and unadjust(). The position of the layer, and all of its parent layers, should be considered when adjusting the rectangle bounds contained by that layer. Before, only the child layer's position was considered. The clip used by scrollable divs may be initialized but never set. If it is empty, ignore it, rather than clipping out all content. In CacheBuilder, remove a couple of unnecessary lines -- the CacheInput initialization clears all members. In SelectText, reverse the order of the xfer mode and paint objects to remove a Skia ref count assert. In CachedInput, make the debug printout current. Overall, added more debugging output (turned off by default). bug:3030370 Change-Id: Ic19c24b3bf33d081a1d0c1f8c06601dcb56ae881
* Fix potential crash in Nav Cache code introduced by WebKit mergeBen Murdoch2010-10-261-1/+1
| | | | | | | | The refactoring in the nav cache code caused by the recent merge to webkit r70209 can crash. Fix that. Bug: 3132882 Change-Id: I98b605ae2fdf24cf0f25adc919f2dbba581abef0
* Merge Webkit at r70209: DeprecatedInputType is now private.Ben Murdoch2010-10-261-6/+4
| | | | | | | | See http://trac.webkit.org/changeset/68749 Bug: 3132882 Change-Id: I51dfa144c5c289c759caa48e7dedc9020b7d8f12
* compute cursor rings when layers are transparentCary Clark2010-10-181-5/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Google search suggestions are drawn in a popup menu (a div with a small amount of transparency). This can partially or complete obscure links underneath the popup, and can present touchable targets which may be much larger than the text contained by the link. CachedRoot::checkRings() determines if a larger bounding box can be used for the ring around the link. CachedRoot::maskIfHidden() determines if the ring needs to be cut down in size because it is only partially visible, or fully obscured. Both routines share the implementation that gathers information about the link, which uses RingCanvas to parse the picture, and RingCheck to build layers describing the text and rectangles drawn in the area around the ring. The basic strategy is to find the text contained by the link under consideration, and see if subsequent drawing obscures the text, or if other text would be enclosed by enlarging the ring. Since maskIfHidden() works better now than before, this CL enabled checking for hidden links when recomputing the current selection after the picture updates. It also checks to see if the link can be larger when maskIfHidden() determines that it is unclipped. Also, if a tap is inside the larger ring, but not on the text itself, treat that as a valid hit. (In CachedFrame::findBestHitAt) And, this fixes CacheBuilder debugging code, and the CacheBuilder array crasher described by bug: 3043268 bug: 2661613 Change-Id: I751f6539f6c840889a58de8c4611364442b3e37c
* resolved conflicts for merge of 1457b739 to masterKenny Root2010-10-141-0/+4
|\ | | | | | | Change-Id: I5e5460ec4afde9a229c3f73255f4d40322eb7166
| * Provide padding + border values for textfields.Leon Scroggins2010-10-121-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Bug:3085564 They are used by WebView.java to align the WebTextView's text positioning with the page below. This allows the selection and insertion arrow handlers to line up better with the actual selection on the page. Requires a change in frameworks/base: https://android-git.corp.google.com/g/#change,73565 Change-Id: Ia100286016a780abd5f30e32975f8ad566a6ed74
| * Do not merge: fix array overwrite crasherCary Clark2010-09-301-4/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If two nodes have the same coordinates, one is deleted. If either has focus, the focus needs to be transfered to the other, and the focus index recomputed, so the index won't point to the wrong node. If the two nodes are at the end of the list, the index may point off the end of the array, subsequently crashing on access. This is a possible security issue. Change-Id: I1ca934074637fbf68e40318fbc354e28c6b474ba http://b/3043268
* | check for columns before looking at column dataCary Clark2010-10-111-2/+4
| | | | | | | | | | | | | | | | Also, fix some debug info to sync up with latest webkit. Change-Id: Iea8f019619b701fc2d3267228b9412379334b66e http://b/3074179
* | Merge WebKit at r67908: ColumnInfo no longer provides columnRectAt()Steve Block2010-09-291-3/+3
| | | | | | | | | | | | See http://trac.webkit.org/changeset/67660 Change-Id: Ia3c17881d27919b20d62a47218cdb95293736b2e
* | Merge WebKit at r67908: HTMLInputElement::InputType renamedSteve Block2010-09-291-1/+1
| | | | | | | | | | | | | | | | InputType renamed to DeprecatedInputType See http://trac.webkit.org/changeset/67903 Change-Id: I9efb9889588523dd2b9489809fb2c44bd799d2ba
* | Merge WebKit at r67178 : Fix CacheBuilder.Iain Merrick2010-09-161-7/+8
| | | | | | | | | | | | | | The internal representation of column rects was changed in http://trac.webkit.org/changeset/66903 Change-Id: I774c9fc487c0c88f7dec60e90f4096ba3cf657a7
* | clip img elements the same as textCary Clark2010-09-131-9/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The nav cache builds the cursor ring by collecting the bounds of the text and images contained by the clickable node. The clip described by the parent node is available when the bounds are collected. The current code clips the text. Generalize this to clip the images also. Also, print whether the node is transparent in the node dumper. Change-Id: I44d6cbacb95211f191cf11b6abd5273e0712930f http://b/2463829
* | Add CSS cursor ring definitionsCary Clark2010-08-181-0/+58
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This allows web pages to have fine-grain control over the appearance of the rings drawn around nodes. Generated links (email, addresses, phone numbers) are no longer given unique colors. To preserve this feature, a separate change could add an HTML extension similar to vlink to provide the cursor ring defintions for theses links. The mechanism implemented below isn't appropriate since these links don't necessarily correspond to single DOM nodes or other DOM elements. ------------ CSS examples ------------ The CSS to specify the ring looks like: -webkit-ring-fill-color:rgba(0,0,255,0.4); -webkit-ring-inner-width:2 px; -webkit-ring-outer-width:3.5 px; -webkit-ring-outset: 8 px; -webkit-ring-pressed-inner-color:rgba(0,0,255,0.8); -webkit-ring-pressed-outer-color:rgba(0,0,127,0.3); -webkit-ring-radius: 10 px; -webkit-ring-selected-inner-color:rgba(63,63,255,0.8); -webkit-ring-selected-outer-color:rgba(63,63,127,0.3); and may be alternately defined with a property shortcut: -webkit-ring:rgba(255,0,0,0.4) 5px 7px rgba(255,0,0,0.8) rgba(127,0,0,0.3) 20px rgba(255,63,63,0.8) rgba(127,63,63,0.3); -------------------- Property definitions -------------------- A vertical cross-section of the ring corresponds to these parameters as shown: ______ R / ___O_ R = corner radius / / __I_ o I = inner ring / / / _O_ ^ O = outer ring | | | / F | F = fill |O|I|O| L o = outset | | | \_F_ | L = original link \ \ \__O_ V \ \___I_ o R \____O_ The fill color specifies what to draw inside the ring when the link is followed. The fill area consists of the original link area plus the outset. The inner and outer widths specify the stoke width of the inner and outer rings, respectively. The widths may be specified in fractional pixels. The implementation captures 4 bits of the fraction. The outset specifies the distance from the edge of the original link to the rings' center. Both rings are drawn at the same center location. The radius specifies the curvature of the corners at the center of the rings. ------------- Data lifetime ------------- The selected colors specify the colors of the inner and outer rings when the trackball or D-pad hovers over the link. The pressed colors specify the colors of the rings when the trackball center is pressed or the link is tapped. The CSS data is recorded in the RenderStyle when the DOM is parsed. The widths are scaled up by 16 to preserve the fraction. When the nav cache is built, the CSS style information is recorded in the CachedColor class. Only unique style sets are recorded; many CachedNode instances can share the same CachedColor instance. When the cursor ring is drawn, the CachedColor is retrieved by getting the index from the CachedNode, and looking up the entry in the CachedFrame. The widths are scaled down by 16 since Lengths are stored by the webkit as integers. ---------- File Edits ---------- WebCore/Android.derived.mk - Build the CSS data property tables by concatentating Android specific data and optionally SVG data. WebCore/config.h - Add switch for these rings. This switch is meant as a convenience for finding the code in WebKit that was added to enable this feature. Since the old code in DrawCursor has been removed, it does not revert to the old behavior if the switch is turned off. WebCore/css/AndroidCSSPropertyNames.in - The new ring properties, plus an old one we added before. WebCore/css/CSSComputedStyleDeclaration.cpp WebCore/css/CSSMutableStyleDeclaration.cpp WebCore/css/CSSParser.cpp WebCore/css/CSSStyleSelector.cpp - I can guess what these functions are for as well as anyone, but I really don't know. Do I need all of them? Do I need to modify Mutable at all? WebCore/css/CSSPropertyNames.in - Moved Android addition to AndroidCSSPropertyNames.in WebCore/platform/graphics/Color.h - Added initial color values here. WebCore/platform/graphics/android/android_graphics.* - This draws the cursor ring. The code that draws 'synthetic' links has been discarded. WebCore/rendering/style/RenderStyle.h - Functions to get, set, and initialize the style data. WebCore/rendering/style/StyleRareInheritedData.* - The storage for the style data and an equivalence function. WebKit/Android.mk - Added CachedColor to the build. WebKit/android/nav/CacheBuilder.cpp - Record the color from the DOM into the cache. WebKit/android/nav/CachedColor.* - Store the cached color info. WebKit/android/nav/CachedFrame.* - Where the array of colors is stored. WebKit/android/nav/CachedNode.* - Where the index to the colors is stored. Change-Id: Ia3a931f41d6545e47678e245aafe7c84d4658f94 http://b/2603197
* | Update navigation in scrollable layers.Patrick Scott2010-08-161-7/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Set the foreground clip after drawing. Use the absolute bounds to compute the local foreground clip in order to compensate for any outline. Consolidate the check for overflow scrolling into RenderLayer. Request a compositing update after computing the scroll dimensions. Only change the foregroundRect of the layer during paint so that the outline rect (and background/layerBounds) are correct. Draw the outline as part of the background phase. During painting of a layer, scroll to (0,0), paint, then scroll back. When clicking on an element in a layer, scroll to the position of the element but do not scroll back. This makes text input fields visible to the tree and will properly update when typing. Record the original scroll position of layers in order to offset the bounds of nodes when checking the nav cache. Make sure to reset all cached layers during setRootLayer. Otherwise we were reaching into layers from the wrong thread. Change-Id: Id9827ec461989b0869a8252d4d2563ecd12c5fac
* | Merge WebKit at r65072: String class has moved to the WTF namespace.Ben Murdoch2010-08-131-2/+2
| | | | | | | | | | | | See http://trac.webkit.org/changeset/65021 Change-Id: I779a8ec0c3e1e0aed8f8d1894cfc1e5ca33ee549
* | Enable navigation in scrollable layers.Patrick Scott2010-08-021-6/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | EventHandler: * Added IgnoreClipping in order to touch nodes that are clipped out. android_graphics: * Remember the absolute bounds of the node for invals. RenderBox: * Fix a compiler warning. RenderLayer: * Do not record the entire layer contents unless the scroll dimensions are larger than the client dimensions. * Change isSelfPaintingLayer to check for an overflow clip instead of the scrollable dimensions since it can be too early to check at this point. RenderLayerCompositor: * Same as RenderLayer for checking the overflow clip. WebViewCore: * Scroll the containing layer to the node bounds and offset the mouse position if scrolled. Once the mouse event is processed, restore the layer to 0,0. CacheBuilder: * The body position is no longer used. * Do not clip out nodes if the layer is scrollable. CachedFrame: * Add unadjustBounds to restore adjusted bounds to their original position (fixed position elements). * Call unadjustBounds when a node has been found. This new set of bounds is passed over to WebViewCore to handle clicks. * Reject empty node bounds. CachedLayer: * Document adjustBounds and add unadjustBounds. Add in the scroll position to the node bounds. CachedRoot: * Unadjust the mouse bounds. WebView: * Unadjust the mouse bounds and use the absolute bounds of the ring during inval. Bug: 1566791 Change-Id: Ia55f2cbb61869087176d3ff61882e40324614c6a
* | Revert "Add CSS cursor ring definitions"Cary Clark2010-07-301-55/+0
| | | | | | | | This reverts commit 0ed6485271097ecf1b4cf4e790f9cfdbb57d921c.
* | Add CSS cursor ring definitionsCary Clark2010-07-301-0/+55
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This allows web pages to have fine-grain control over the appearance of the rings drawn around nodes. Generated links (email, addresses, phone numbers) are no longer given unique colors. To preserve this feature, a separate change could add an HTML extension similar to vlink to provide the cursor ring defintions for theses links. The mechanism implemented below isn't appropriate since these links don't necessarily correspond to single DOM nodes or other DOM elements. ------------ CSS examples ------------ The CSS to specify the ring looks like: -webkit-ring-fill-color:rgba(0,0,255,0.4); -webkit-ring-inner-width:2 px; -webkit-ring-outer-width:3.5 px; -webkit-ring-outset: 8 px; -webkit-ring-pressed-inner-color:rgba(0,0,255,0.8); -webkit-ring-pressed-outer-color:rgba(0,0,127,0.3); -webkit-ring-radius: 10 px; -webkit-ring-selected-inner-color:rgba(63,63,255,0.8); -webkit-ring-selected-outer-color:rgba(63,63,127,0.3); and may be alternately defined with a property shortcut: -webkit-ring:rgba(255,0,0,0.4) 5px 7px rgba(255,0,0,0.8) rgba(127,0,0,0.3) 20px rgba(255,63,63,0.8) rgba(127,63,63,0.3); -------------------- Property definitions -------------------- A vertical cross-section of the ring corresponds to these parameters as shown: ______ R / ___O_ R = corner radius / / __I_ o I = inner ring / / / _O_ ^ O = outer ring | | | / F | F = fill |O|I|O| L o = outset | | | \_F_ | L = original link \ \ \__O_ V \ \___I_ o R \____O_ The fill color specifies what to draw inside the ring when the link is followed. The fill area consists of the original link area the outset. The inner and outer widths specify the stoke width of the inner and outer rings, respectively. The widths may be specified in fractional pixels. The implementation captures 4 bits of the fraction. The outset specifies the distance from the edge of the original link to the rings' center. Both rings are drawn at the same center location. The radius specifies the curvature of the corners at the center of the rings. ------------- Data lifetime ------------- The selected colors specify the colors of the inner and outer rings when the trackball or D-pad hovers over the link. The pressed colors specify the colors of the rings when the trackball center is pressed or the link is tapped. The CSS data is recorded in the RenderStyle when the DOM is parsed. The widths are scaled up by 16 to preserve the fraction. When the nav cache is built, the CSS style information is recorded in the CachedColor class. Only unique style sets are recorded; many CachedNode instances can share the same CachedColor instance. When the cursor ring is drawn, the CachedColor is retrieved by getting the index from the CachedNode, and looking up the entry in the CachedFrame. The widths are scaled down by 16 since Lengths are stored by the webkit as integers. ---------- File Edits ---------- WebCore/Android.derived.mk - Build the CSS data property tables by concatentating Android specific data and optionally SVG data. WebCore/config.h - Add switch for these rings. This switch is meant as a convenience for finding the code in WebKit that was added to enable this feature. Since the old code in DrawCursor has been removed, it does not revert to the old behavior if the switch is turned off. WebCore/css/AndroidCSSPropertyNames.in - The new ring properties, plus an old one we added before. WebCore/css/CSSComputedStyleDeclaration.cpp WebCore/css/CSSMutableStyleDeclaration.cpp WebCore/css/CSSParser.cpp WebCore/css/CSSStyleSelector.cpp - I can guess what these functions are for as well as anyone, but I really don't know. Do I need all of them? Do I need to modify Mutable at all? WebCore/css/CSSPropertyNames.in - Moved Android addition to AndroidCSSPropertyNames.in WebCore/platform/graphics/Color.h - Added initial color values here. WebCore/platform/graphics/android/android_graphics.* - This draws the cursor ring. The code that draws 'synthetic' links has been discarded. WebCore/rendering/style/RenderStyle.h - Functions to get, set, and initialize the style data. WebCore/rendering/style/StyleRareInheritedData.* - The storage for the style data and an equivalence function. WebKit/Android.mk - Added CachedColor to the build. WebKit/android/nav/CacheBuilder.cpp - Record the color from the DOM into the cache. WebKit/android/nav/CachedColor.* - Store the cached color info. WebKit/android/nav/CachedFrame.* - Where the array of colors is stored. WebKit/android/nav/CachedNode.* - Where the index to the colors is stored. Change-Id: Ia3a931f41d6545e47678e245aafe7c84d4658f94 http://b/2603197
* | Merge Webkit at r63859 : PluginWidget class has been renamed and moved to ↵Ben Murdoch2010-07-271-1/+1
| | | | | | | | | | | | WebKit. See http://trac.webkit.org/changeset/63638 Change-Id: I97784c98b694f28804421637716afa649aa09a6e
* | don't walk off the end of the DOM when looking for textCary Clark2010-07-021-3/+4
| | | | | | | | | | | | | | | | Also, fix a couple of minor changes in debugging code to stay sync'd with webkit. Change-Id: If4263bab97715e2a2d12f06f2359554740bf5dbc http://b/2816549
* | Merge WebKit at r60074: Remove ANDROID_EXPOSE_COLUMN_GAP as ↵Steve Block2010-05-271-2/+0
| | | | | | | | | | | | | | | | RenderBlock::columnGap() is now public See http://trac.webkit.org/changeset/59784 Change-Id: I06ab20401e79c8b9c8104bb6a81c5891ef36d717
* | Merge WebKit at r60074: RenderStyle color accessors are now privateSteve Block2010-05-271-1/+1
| | | | | | | | | | | | See http://trac.webkit.org/changeset/59956 Change-Id: If1839f65ad960250c7dda5b565bd47278aa7df14
* | suppress partial screen updates if a canvas element is visibleCary Clark2010-05-141-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A PictureSet contains a list of pictures. Each picture draws part of the screen. If the picture contains a Canvas element, the corresponding bitmap is not shared. Small partial invalidates can create a dozen or so pictures, each of which may be quite small, a few hundred bytes. But the bitmap referenced by the picture may be large, several meg. The backing bitmap is unique to the Canvas element. Since a canvas rarely benefits from small updates, disable the partial invalidates if CacheBuilder detects a canvas. Change-Id: I5761667db3d037d7363dcb01f8a26f7f62e2eabc http://b/2678787
* | clean up nav cache debuggingCary Clark2010-05-141-9/+35
| | | | | | | | | | | | | | | | | | This adds additional content to the nav cache dump, and cleans up a few formatting problems. This has no effect on code that does not have nav cache debugging enabled. Change-Id: Ice2c4bb33138a8ddc96739d95ead58fbe328bfa8
* | Enable contentEditable.Leon Scroggins2010-05-051-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | WebViewCore.cpp: Open the keyboard when a contentEditable element is put into focus by a click. In key(), return whether the selection changed if a contentEditable element is in focus. CacheBuilder.cpp: Add root contentEditable elements to the navigation tree. CachedNode.h: Include contentEditable elements as elements that want key events. CachedNodeType.h Add a type for contentEditable. WebView.cpp: Do not call setFollowedLink for contentEditable, so that the orange selection ring stays around the field. Add a check to determine whether the page should handle shift and arrow keys. Bug 1788820 Caveats: Does not ensure that the caret remains on screen. Frame::revealSelection is called, but we ignore it for other reasons. Need to investigate that. The cursor will blink if the contentEditable node has focus, even if the user has not clicked on it or has moved to a different input field. Further, while in this state, the user can input text. Requires a change to frameworks/base Change-Id: Ife39254f46dcc1046a075eee2fda6cf4879b4ee8
* | Do not hide the cursor ring when clicking on a <select> element.Leon Scroggins2010-04-271-0/+2
|/ | | | | | | | | | Add a CachedNodeType for <select> elements. If the cursor node is a <select> element, do not call setFollowedLink, which would hide the cursor ring. Bug 1694023 Change-Id: I2df2e70391b5f5969683b71b1e69bc24cba8946f
* don't track layer node twiceCary Clark2010-03-251-1/+8
| | | | | | | | If a cache node is both in a layer and contains a layer, don't add it the second time. Change-Id: I45cc302e234565bfbc87649ca503f515b1f487e8 http://b/2543736