summaryrefslogtreecommitdiffstats
path: root/WebKit/android/jni/WebViewCore.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Update file chooser to pass the accept type from WebCore to Java.Ben Murdoch2010-05-211-4/+13
| | | | | | | | Requires a frameworks/base change to receive the accept type and a packages/apps/Browser change to override the new method signature. Change-Id: I3d0cfdc76151237a3167139c89f5e275b209ab37
* Adding a mechanism for injecting accessibility in WebViews with disabled ↵Svetoslav Ganov2010-05-151-0/+65
| | | | | | JavaScript. Change-Id: If0d8fc9cffcd00356dffe46af094b65488b3ff5a
* 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
* restrict nav cache picture to content width, heightCary Clark2010-05-121-1/+2
| | | | | | | | | | | | | | | Formerly, the nav cache picture recorded a rectangle of (0, 0, INT_MAX, INT_MAX). If the drawing was subsequently translated, the rectangle wrapped around and futher drawing was clipped out. Now the drawing is constrained to the contentWidth and contentHeight -- the enclosing picture already had this restriction. http://b/2604141 Change-Id: Idde1cbaeb507310813a7c5b00e3dde9cacebe44d
* Merge webkit.org at r58033 : Update location of KeyboardCodes.hSteve Block2010-05-111-1/+1
| | | | | | See http://trac.webkit.org/changeset/56704 Change-Id: I0091045727b5dcbbeebcd0d3839a220d8af176c7
* Merge webkit.org at r58033 : Update location of CString.hSteve Block2010-05-111-4/+4
| | | | | | See http://trac.webkit.org/changeset/56825 Change-Id: I8ba6a9685dcd1d8c4dec3400fba81e19fcbfe74d
* Enable contentEditable.Leon Scroggins2010-05-051-3/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* am 5c6e2c78: am 34a423ba: am 22804c07: Pass scroll mode to Java so that we ↵Grace Kloba2010-04-151-0/+11
|\ | | | | | | can handle overflow on html and body correctly.
| * Pass scroll mode to Java so that we can handleGrace Kloba2010-04-131-0/+11
| | | | | | | | | | overflow on html and body correctly. Fix http://b/issue?id=2512549
* | Remove the TouchStationary state from PlatformTouchPoint.Ben Murdoch2010-04-141-8/+0
|/ | | | | | This is being tracked upstream at webkit.org in https://bugs.webkit.org/show_bug.cgi?id=37609 Change-Id: Ideb26d7457e27799564e8db9b3308a703a1110e2
* Do not set touch state to TouchStationary as EventHandlerGrace Kloba2010-04-091-2/+5
| | | | | | | doesn't handle it. The result is preventDefault will be always false and trigger the unexpected behavior for Flash. Fix http://b/issue?id=2585109
* Fix bug that causes plugins not be notified of the change to theDerek Sollenberger2010-04-081-27/+31
| | | | | | | | visible screen dimensions as a result of pinch to zoom. http://b/2578820 Change-Id: I98576e9937ec469a1dfa7162954ac93e120bc149
* Revert "Mark positioned elements as needing a relayout when checking for hit ↵Nicolas Roard2010-04-061-32/+1
| | | | | | | | | | | test." Not needed anymore. This reverts commit 84b2cee4185865d37e64bb3cc7a9e1bd6051eb7c. Bug:2457215 Change-Id: I945e6ebe520b1490f4bf62809b4f375750f5c597
* Remove a warning.Leon Scroggins III2010-03-251-1/+1
| | | | Change-Id: Iffd11a306df9a5140b3406e825185713d17d273e
* Mark positioned elements as needing a relayout when checking for hit test.Nicolas Roard2010-03-241-1/+32
| | | | | | | | | | This is necessary when using composited fixed layers, as the layers position may have moved UI-side, while the webkit's related position of those layers may not have been updated yet. Fix Bug:2457215 Change-Id: If4f0e9c3d1a4786b29dcc7c2dc3510ba090b6a36
* Allowing native code access to the application context as long asDerek Sollenberger2010-03-231-0/+21
| | | | | | | | | | there is at least one valid instance of the webviewcore class. This change allows plugins access to the application context when the plugin package is loaded, prior to any instances of the plugin being created. Change-Id: I74a58cf76cc3c2d0ef7bca19346f13f58f616830
* use picture recording flag to speed up clipPath (and avoid asserts in very ↵Mike Reed2010-03-191-1/+1
| | | | | | | | large edgelists) override (and no-op) clipPath() in IsEmptyCanvas, same reasons as above. Change-Id: I70b1565a11c1e314fdde507c1b2118b9aba651e6
* Pass selection data along with message to open the keyboard.Leon Scroggins2010-03-181-6/+28
| | | | | | | | Fixes http://b/issue?id=2431351 Requires a change to frameworks/base Change-Id: I7f703746bdd00aaae2607a6a41ac4916f43d37b1
* Fix for Bug 2486292, transparent backgrounds not transparent in Froyo.Kristian Monsen2010-03-171-0/+4
| | | | | | | Recreating the transparent and color of old window when creating a new one, and setting transparent if all the colors are 0. Updated patch to fix comments from Grace. Change-Id: I934401630fd7041e7e4ae1cbeeaa198271025c87
* Clean up full-screen mode plugins now that they handle touchDerek Sollenberger2010-03-151-16/+3
| | | | | | | | in their java view. There is a matching commit in frameworks/base Change-Id: Ibe76eb22c2b5ccc7fb80e4807edcbbc4d25e4793
* Add requestCenterFitZoom to android_npapi so thatGrace Kloba2010-03-121-0/+10
| | | | | Flash can trigger the smart-zoom Fix http://b/issue?id=2510670
* iterate through the children of the label to find its textCary Clark2010-03-121-2/+11
| | | | | Change-Id: Ib4d713fd5797d9ee5c0a3080085a2db438c2bee0 http://b/2502091
* set the cached focus state when a node is in a fixed layerCary Clark2010-03-111-6/+17
| | | | | | | | | The newly built nav cache needs the layer information set before it attempts to set the focus so the nodes' bounds are set correctly. Change-Id: I72ff03988c267388da5921ac85b0ac0f6fb2374a http://2503096
* Only call plugin touch code if it is in full screenLeon Scroggins2010-03-091-6/+6
| | | | | | | | | | | | | mode or it is the document focused node. Remove Android special code added to support prevent default for double tap and long press. Long press and double tap needs to call preventDefault if it is needed. Remove Android special code added to pass event time. Need a separate CL for android_npapi.
* check for null node to prevent monkey crashCary Clark2010-03-081-1/+1
| | | | | Change-Id: I11625535de5e18f94d293081416eaa9bfa0a8c3c http://b/2492244
* Set the proper frame's focus controller to active and focused.Leon Scroggins2010-03-051-7/+17
| | | | | | | When editing text, set the FocusController to both active and focused, and use the FocusController associated with the focus. Fixes http://b/issue?id=2251399
* Remove unnecessary call to ChromeClientAndroid::scheduleCompositingLayerSync().Andrei Popescu2010-03-051-6/+0
| | | | Fix b: 2471383
* refactor drawing to support layersCary Clark2010-02-241-0/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Simplify the layer code:Nicolas Roard2010-02-241-2/+3
| | | | | | | * Rename setRootLayer to setUIRootLayer * Fixed some logs in GraphicsLayerAndroid * Added back the diagonal drawing debug code in LayerAndroid * Simplified ChromeClientAndroid, removed compositingLayerSync()
* Do not forward touch event types we do not support into WebCore as ↵Ben Murdoch2010-02-241-3/+4
| | | | | | TouchCancel events. The old behavior creates an issue now we support pinch to zoom where releasing the pinch will always send a touch cancel to WebCore as the Java land touch event type is ACTION_POINTER_UP. Change-Id: Ie691f4a3c5ba6a09c3838deb37d8b9e0671c835b
* am 4c76da0e: am 1044e7fd: Fixes error where plugin is created while ↵Derek Sollenberger2010-02-221-14/+13
|\ | | | | | | | | | | | | | | | | iterating through the list of plugins. Merge commit '4c76da0e5177ea82be36bb81e67b52d51a5a72bb' * commit '4c76da0e5177ea82be36bb81e67b52d51a5a72bb': Fixes error where plugin is created while iterating through the list of plugins.
| * Fixes error where plugin is created while iterating through the list of plugins.Derek Sollenberger2010-02-221-14/+13
| | | | | | | | bug #2438492
| * Pass touch event time from Java to WebKitGrace Kloba2010-02-021-5/+5
| |
* | Add support for setting key states with touch events on Android.Ben Murdoch2010-02-191-5/+5
| | | | | | | | | | | | Properly guard non-upstreamed common code. Change-Id: I109dbe97d8c96efe3660ce3893a4e730927e90ef
* | Fixes a bug with the Geolocation suspend/resume behaviourSteve Block2010-02-181-4/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | PlatformBridge::isWebViewPaused needs to be an instance method, rather than a static. This fixes a bug where if the user switches browser windows while a page that uses Geolocation is still loading, the Geolocation service won't be started in the suspended state. Note that this is a temporary fix, as the upstreaming of the existing suspend/resume code will introduce a new approach, which will avoid this problem altogether. See https://android-git.corp.google.com/g/#change,38942 Change-Id: I3f07f8837b8a8c1c5e7e4f5112ab487188670c3a
* | Add UI considerations to layersCary Clark2010-02-171-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | Add dump layers capability (triggered the same way as the dump tree trick,Nicolas Roard2010-02-121-0/+1
| | | | | | | | saving the layres tree in /sdcard/layersTree.plist)
* | Merge webkit.org at r54127 : Fix some WebKit includesSteve Block2010-02-041-2/+3
| | | | | | | | Change-Id: Ibcdef84d6e49c7e4a725ac1d22ae59a165418280
* | Forward the console message level from WebCore to Java land.Ben Murdoch2010-02-041-3/+3
| | | | | | | | | | | | | | | | This change requires a change to frameworks/base to receive the extra information. BUG=2401755 Change-Id: I27b1059dbc24ad2687e8ef0223599b0efcd74eca
* | Pass touch event time from Java to WebKitGrace Kloba2010-02-031-5/+5
| | | | | | merge from https://android-git.corp.google.com/g/#change,39356
* | Implement V8 counter supportAndrei Popescu2010-02-021-0/+12
| |
* | Anchor the page at top left corner when webView size changed.Shimeng (Simon) Wang2010-01-291-35/+17
| | | | | | | | | | Bug: 2356891 modified: WebKit/android/jni/WebViewCore.cpp
* | Stop forwarding touch events from Java when the top level document is ↵Ben Murdoch2010-01-271-18/+12
| | | | | | | | | | | | | | | | | | | | | | detached rather than when eventHandlers are cleared for a frame. Also no longer keep track of the number of touch event handlers that a page has registered. If a page requests touch events, always send them from Java until a new page is loaded. This simplifies the logic when dealing with the page cache as otherwise as well as restoring the forwarding of touch events when a page is restored from the page cache, we would need to restore the number of touch handlers that have been registered. Change-Id: I0269e1632a37ccbf105bac658c2cb7f1d5cd3052
* | Merge pinch zoom from Eclair to Master. Including,Grace Kloba2010-01-231-27/+78
| | | | | | | | | | | | commit 237bd75b6ebc1298cbd1c46b43903d19d7dd18b1 commit dbb3061334333f32b6f12c294a551bd2a4a3844c commit f48712a096831a3b85a5e18dabd44a541f6b4712 commit b99dd716b4af0afde074e28b50b7b28ae3c03da7
* | Refactor style of Android specific touch events code in preparation for ↵Ben Murdoch2010-01-211-1/+1
| | | | | | | | | | | | upstreaming to webkit.org. Change-Id: Id34e727145fe94e98e62a36b7fc8256468b4157c
* | am 67c90537: am 72acb46d: Fix the crash of exiting full screen by checking null.Grace Kloba2010-01-201-1/+2
|\ \ | |/ | | | | | | | | | | Merge commit '67c90537fc70147ad8943f0a2cd02def405bcf8f' * commit '67c90537fc70147ad8943f0a2cd02def405bcf8f': Fix the crash of exiting full screen by checking null.
| * Fix the crash of exiting full screen by checking null.Grace Kloba2010-01-201-1/+2
| | | | | | | | | | When we exit full screen, we place the embedded view on the screen, so we need to destroy it again in the destructor
* | resolved conflicts for merge of 9dabd572 to masterGrace Kloba2010-01-201-1/+0
|\ \ | |/
| * Changing plugin setwindow() to use page coordinateGrace Kloba2010-01-201-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | instead of frame as it is what Flash expects. For other port like Mac, it passes the window coordinate to the plugin. In Android, plugin always sees the full page and we use the visible screen rect to indicate whether it is visible. Change to use page coordinate across PluginView and PluginWidget for consistency. This should fix the problem Ben saw with plugin inside iframe (which is caused by a race condition) and the cnnn ad problem Adobe has.
* | Cherry-pick WebKit change 53497 to rename jni_utility and ↵Steve Block2010-01-201-3/+4
| | | | | | | | | | | | | | | | | | | | | | jni_utility_private to JNIUtility and JNIUtilityPrivate See http://trac.webkit.org/changeset/53497 This is required to sync the Android tree with webkit.org to allow unforking in WebCore/bridge. This change required updating headers in Android-specific files in WebCore and WebKit. Change-Id: I4b80eb3eadcff66cbd261aa6ccef0f37927250b1