summaryrefslogtreecommitdiffstats
path: root/WebKit/android
Commit message (Collapse)AuthorAgeFilesLines
* Fixes a crash in WeakJavaInstanceSteve Block2010-03-031-8/+16
| | | | | | | | | | | | | | | | | | | | | | | WeakJavaInstance is a wrapper around JavaInstance. Outside of calls to virtualBegin/virtualEnd, it replaces the strong reference to the Java instance held by JavaInstance with a weak reference. This is to break circular references and allow the Java instance to be garbage collected. The code does not handle correctly the case where multiple calls are made to virtualBegin before corresponding calls to virtualEnd. virtualBegin caches the current instance as _weakRef. However, if virtualBegin has already been called, the current instance is now a strong reference, and this overwrites _weakRef. When virtualEnd is called, the instance is not restored to the weak reference. In the WeakJavaInstance destructor, we try to restore the strong reference from the weak reference, but this has already been deleted, causing the VM to abort. This patch fixes the problem by returning early from virtualBegin and virtualEnd when unmatched calls to virtualBegin have already been made. Also fixes some style issues. Bug: 2485164 Change-Id: I2b22a849af10e377525a3da215ca91e611d892d0
* Merge "use advance widths to deduce spaces in selected text"Cary Clark2010-03-011-15/+41
|\
| * use advance widths to deduce spaces in selected textCary Clark2010-03-011-15/+41
| | | | | | | | | | | | | | | | | | | | | | | | | | The earlier method of using bounding boxes does not work if the characters have sufficiently large kerning, such as 'A Java' or sufficiently small kerning, such as '16'. Also, don't add spaces after hyphens or dashes, and detect baseline changes correctly. Reset the first space condition once text is clipped out. http://b/2457350 http://b/2165553
* | Make nativeMoveCursorToNextTextInput return a value based on success.Leon Scroggins2010-03-013-14/+11
|/ | | | | | | | | Also no longer differentiate between textfields and areas for the purpose of the next action. Part of fix for http://b/issue?id=2478052 Requires a change to frameworks/base
* ignore rootlayer when drawing (fixes regression)Mike Reed2010-02-261-1/+6
| | | | dump layers contents in displayTree.txt
* Merge "Only set the DatabaseTracker path if it has been successfully set to ↵Ben Murdoch2010-02-261-3/+10
|\ | | | | | | something on the Java side as the DatabaseTracker only allows us to set it once."
| * Only set the DatabaseTracker path if it has been successfully set to ↵Ben Murdoch2010-02-251-3/+10
| | | | | | | | | | | | | | | | something on the Java side as the DatabaseTracker only allows us to set it once. Change-Id: I5d0121dac9a2b276a483992784822c1f52c04853
* | Merge "Prevent unsafe upper casting by checking Element's namespaceURI."Shimeng (Simon) Wang2010-02-251-4/+11
|\ \
| * | Prevent unsafe upper casting by checking Element's namespaceURI.Shimeng (Simon) Wang2010-02-251-4/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | For some website, when elements are created, somehow the tagName's namespaceURI is empty, so for "form" element, Element node is created instead of expected HTMLFormElement. Bug: 2461358 modified: WebKit/android/jni/WebCoreFrameBridge.cpp
* | | Merge "refactor drawing to support layers"Cary Clark2010-02-2516-386/+464
|\ \ \
| * | | refactor drawing to support layersCary Clark2010-02-2416-386/+464
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | | | Merge " Don't display our custom border round combo boxes when the ↵Leon Clarke2010-02-251-2/+20
|\ \ \ \ | |_|_|/ |/| | | | | | | stylesheet has defined one."
| * | | Don't display our custom border round combo boxes when the stylesheet ↵Leon Clarke2010-02-241-2/+20
| | | | | | | | | | | | | | | | has defined one.
* | | | Merge "Use reference instead of vector copying when dealing formElements."Shimeng (Simon) Wang2010-02-241-3/+3
|\ \ \ \ | |_|/ / |/| | / | | |/ | |/|
| * | Use reference instead of vector copying when dealing formElements.Shimeng (Simon) Wang2010-02-241-3/+3
| | |
* | | Simplify the layer code:Nicolas Roard2010-02-245-29/+21
| | | | | | | | | | | | | | | | | | | | | * 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 70a336f2: am da8d052d: Merge "adding logging to determine the delay ↵Derek Sollenberger2010-02-231-3/+8
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | between event origination and its arrival at the plugin." into eclair-mr2 Merge commit '70a336f20c4244b6f93ba593e999e83f23af1145' * commit '70a336f20c4244b6f93ba593e999e83f23af1145': adding logging to determine the delay between event origination and its arrival at the plugin.
| * \ Merge "adding logging to determine the delay between event origination and ↵Derek Sollenberger2010-02-231-3/+8
| |\ \ | | | | | | | | | | | | its arrival at the plugin." into eclair-mr2
| | * | adding logging to determine the delay between event origination and its ↵Derek Sollenberger2010-02-231-3/+8
| | | | | | | | | | | | | | | | arrival at the plugin.
| * | | Do not merge.Patrick Scott2010-02-232-9/+41
| |/ / | | | | | | | | | | | | | | | | | | | | | Implement redirectDataToPlugin. This fixes going to swf files directly (i.e. http://foo.com/bar.swf). Bug: 2435632
* | | am 5bce6668: am 15027de7: Added new logging messages and updated event logs ↵Derek Sollenberger2010-02-233-16/+36
|\ \ \ | |/ / | | | | | | | | | | | | | | | | | | | | | with plugin execution time Merge commit '5bce666850444bb87efe0be67046e7648ff15e67' * commit '5bce666850444bb87efe0be67046e7648ff15e67': Added new logging messages and updated event logs with plugin execution time
| * | Added new logging messages and updated event logs with plugin execution timeDerek Sollenberger2010-02-233-16/+36
| | |
* | | Fixes a bug with showing the Geolocation permissions promptSteve Block2010-02-234-34/+93
| |/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, if an iframe causes the Geolocation permissions prompt to be shown, but the frame is navigated away before the user responds to the permissions prompt, the prompt is not removed from the screen. This change fixes that bug. It uses the new ChromeClient::cancelGeolocationPermissionRequestForFrame() method, which was cherry-picked from WebKit in https://android-git.corp.google.com/g/#change,41747 The logic is complicated by the fact that multiple iframes may have requested Geolocation permissions for the same origin. In this case, we should not hide the prompt until the last such frame is navigated away. Bug: 2463551 Change-Id: I1e4de05586150c7a94bc8343f6e56e4a4870cd3b
* | Merge "Cherry-pick WebKit change 55136 to add a means to cancel an ongoing ↵Steve Block2010-02-231-0/+1
|\ \ | | | | | | | | | Geolocation permission request"
| * | Cherry-pick WebKit change 55136 to add a means to cancel an ongoing ↵Steve Block2010-02-231-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Geolocation permission request This is part of the change required to fix a Geolocation permissions bug. See https://android-git.corp.google.com/g/#change,40601 Note that We take only the WebCore component of the change, but additional changes are required to ChromeClientAndroid. See http://trac.webkit.org/changeset/55136 Change-Id: Iff0eab3adc3e41876df7f114c0d50243d015664f
* | | Merge "Implement redirectDataToPlugin."Patrick Scott2010-02-222-9/+41
|\ \ \
| * | | Implement redirectDataToPlugin.Patrick Scott2010-02-222-9/+41
| |/ / | | | | | | | | | | | | | | | This fixes going to swf files directly (i.e. http://foo.com/bar.swf). Bug: 2435632
* | | am 4c76da0e: am 1044e7fd: Fixes error where plugin is created while ↵Derek Sollenberger2010-02-222-17/+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-222-17/+13
| | | | | | | | bug #2438492
| * Pass touch event time from Java to WebKitGrace Kloba2010-02-025-6/+16
| |
* | Fix for busy loopNicolas Roard2010-02-221-1/+0
| | | | | | | | Bug:2457438
* | disable webkit layersCary Clark2010-02-211-0/+2
| | | | | | | | | | With layers enabled, servicing timers saturate the CPU at times. This also fixes a compile-time switch in FindCanvas to disable layers.
* | move viewport into just this subclassMike Reed2010-02-192-5/+9
| |
* | fix nav layer bugsCary Clark2010-02-193-9/+20
| | | | | | | | | | | | | | Clip the nodes inside the layer to the layer's bounds Don't crash if the layer with the matching id can't be found. http://b/2453945
* | Add support for setting key states with touch events on Android.Ben Murdoch2010-02-192-6/+6
| | | | | | | | | | | | Properly guard non-upstreamed common code. Change-Id: I109dbe97d8c96efe3660ce3893a4e730927e90ef
* | Merge "refactor"Mike Reed2010-02-181-5/+5
|\ \
| * | refactorMike Reed2010-02-181-5/+5
| | |
* | | Merge "Add code to try and reclaim granted but unused database quota. This ↵Ben Murdoch2010-02-182-5/+57
|\ \ \ | |/ / |/| | | | | will help alleviate the situation when a website requests a lot of quota (but uses a little) and we run out of quota to dish out to new origins."
| * | Add code to try and reclaim granted but unused database quota. This will ↵Ben Murdoch2010-02-182-5/+57
| | | | | | | | | | | | | | | | | | | | | | | | help alleviate the situation when a website requests a lot of quota (but uses a little) and we run out of quota to dish out to new origins. We also set the estimatedSize that we pass to Java on quota overflow to 0 if this is a genuine quota overflow as opposed to the creation of a new database. Change-Id: I370cf7c663d11fc1e5c630beb5299d2d34103b08
* | | check for layer containing final nodes in DOMCary Clark2010-02-181-1/+6
| | | | | | | | | | | | | | | | | | This fix prevents a crash in http://webkit.org/blog-files/leaves/ http://b/2369549
* | | Merge "Fixes a bug with the Geolocation suspend/resume behaviour"Steve Block2010-02-183-9/+9
|\ \ \ | |/ / |/| |
| * | Fixes a bug with the Geolocation suspend/resume behaviourSteve Block2010-02-183-9/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | | Merge "minor fixes to layer nav"Cary Clark2010-02-187-29/+28
|\ \ \ | |/ / |/| |
| * | minor fixes to layer navCary Clark2010-02-177-29/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - 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
* | | Changes to remove WebTextView at end of touch/press rather than during.Leon Scroggins2010-02-171-8/+4
|/ / | | | | | | | | | | | | | | | | Remove calls to clearTextEntry during a touch/press, and move them to the end. Requires a change to frameworks/base Fix for http://b/issue?id=2340871
* | Add UI considerations to layersCary Clark2010-02-1718-449/+1167
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | Merge "checkpoint for refactoring"Mike Reed2010-02-151-2/+11
|\ \
| * | checkpoint for refactoringMike Reed2010-02-151-2/+11
| | |
* | | Use common version of PluginView::parentFrameSteve Block2010-02-151-1/+1
|/ / | | | | | | | | | | This was added in http://trac.webkit.org/changeset/42748 Change-Id: Ifcb9308d817203b6e23945ceedd83b9f9eb2e80f