[BlackBerry] Upstream smart selection
https://bugs.webkit.org/show_bug.cgi?id=111226

Patch by Iris Wu <shuwu@rim.com> on 2013-03-01
Reviewed by Rob Buis.

1.  Extend the touch hold text selection to next paragraph.
2.  Draw and expand overlay over text as touch hold selection expands.
    Select paragraph when it's entirely covered by overlay.
3.  Start scrolling at a constant rate when the end of
    next pargraph is not in the viewport.

Reviewed Internally By Genevieve Mak and Mike Fenton.
PR 217897 238485 258279 279042 299779

* Api/WebPage.cpp:
(BlackBerry::WebKit::WebPage::selectAtDocumentPoint):
(BlackBerry::WebKit::WebPage::expandSelection):
(WebKit):
(BlackBerry::WebKit::WebPage::setOverlayExpansionPixelHeight):
(BlackBerry::WebKit::WebPagePrivate::setOverlayExpansionPixelHeight):
(BlackBerry::WebKit::WebPage::setParagraphExpansionPixelScrollMargin):
* Api/WebPage.h:
* Api/WebPageClient.h:
* Api/WebPage_p.h:
(WebPagePrivate):
* WebKitSupport/SelectionHandler.cpp:
(BlackBerry::WebKit::SelectionHandler::cancelSelection):
(BlackBerry::WebKit::SelectionHandler::selectAtPoint):
(BlackBerry::WebKit::isInvalidLine):
(WebKit):
(BlackBerry::WebKit::isInvalidParagraph):
(BlackBerry::WebKit::SelectionHandler::selectNextParagraph):
(BlackBerry::WebKit::SelectionHandler::drawOverlay):
(BlackBerry::WebKit::SelectionHandler::findNextOverlayRegion):
(BlackBerry::WebKit::SelectionHandler::expandSelection):
(BlackBerry::WebKit::SelectionHandler::ensureSelectedTextVisible):
(BlackBerry::WebKit::SelectionHandler::setParagraphExpansionScrollMargin):
(BlackBerry::WebKit::SelectionHandler::expandSelectionToGranularity):
* WebKitSupport/SelectionHandler.h:
(SelectionHandler):
(BlackBerry::WebKit::SelectionHandler::setOverlayExpansionHeight):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@144515 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Unreviewed gardening of AppleWin port.

* platform/win/TestExpectations:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@144516 268f45cc-cd09-0410-ab3c-d52691b4dbfc
IndexedDB: Avoid ScriptValue copies in IDBAny
https://bugs.webkit.org/show_bug.cgi?id=111002

Reviewed by Adam Barth.

This avoids some v8 handle thrashing in the long term,
and protects us against some crashes in the short term.

The crashes will be fixed in
https://bugs.webkit.org/show_bug.cgi?id=110206.

* Modules/indexeddb/IDBAny.cpp:
(WebCore::IDBAny::createNull):
(WebCore::IDBAny::createString):
(WebCore::IDBAny::IDBAny):
(WebCore::IDBAny::scriptValue):
* Modules/indexeddb/IDBAny.h:
(WebCore::IDBAny::create):
(IDBAny):
(WebCore::IDBAny::keyPath):
* bindings/v8/custom/V8IDBAnyCustom.cpp:
(WebCore::toV8):
(WebCore):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@144517 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[chromium] Revert r143827 to restore WebHelperPluginImpl's call to frameDetached()
https://bugs.webkit.org/show_bug.cgi?id=111232

Patch by David Dorwin <ddorwin@chromium.org> on 2013-03-01
Reviewed by Adam Barth.

This patch reverts r143827, which causes a crash in failure conditions:
http://crbug.com/178848

* src/WebHelperPluginImpl.cpp:
(WebKit::WebHelperPluginImpl::destoryPage):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@144518 268f45cc-cd09-0410-ab3c-d52691b4dbfc
EventHandler::handleGestureScrollUpdate() should invoke the user-generated scroll routines
so its behavior matches other user-initiated scrolls
https://bugs.webkit.org/show_bug.cgi?id=109769

Reviewed by James Robinson.

Source/WebCore:

To ensure that the scrolling behavior of GestureScrollUpdate events are consistent with
the scrolling behavior of mousewheel events, use the existing user-generated scroll logic
instead of calling into RenderLayer::scrollByRecursively(). This patch fixes the bug
reported in https://bugs.webkit.org/show_bug.cgi?id=109316, where the example page can
be scrolled using touch but cannot be scrolled using mousewheels.

Note that this patch does not use any of the mousewheel event-handling code.

Tests: fast/events/touch/gesture/touch-gesture-noscroll-body-propagated.html
       fast/events/touch/gesture/touch-gesture-noscroll-body-xhidden.html
       fast/events/touch/gesture/touch-gesture-noscroll-body-yhidden.html
       fast/events/touch/gesture/touch-gesture-noscroll-body.html

* page/EventHandler.cpp:
(WebCore::EventHandler::clear):
(WebCore::EventHandler::handleGestureEvent):
(WebCore::EventHandler::handleGestureScrollBegin):
(WebCore::EventHandler::handleGestureScrollUpdate):
(WebCore::EventHandler::sendScrollEventToView):
    By calling this function at the start of handleGestureScrollUpdate() in the case
    where |m_scrollGestureHandlingNode| is null, we ensure that the scroll updates
    can still scroll the page itself, if possible.
(WebCore):
(WebCore::EventHandler::clearGestureScrollNodes):
* page/EventHandler.h:
(EventHandler):
* platform/PlatformWheelEvent.h:
(WebCore::PlatformWheelEvent::setHasPreciseScrollingDeltas):

Source/WebKit/chromium:

Clear the nodes corresponding to a fling scroll event when the event ends.

* src/WebViewImpl.cpp:
(WebKit::WebViewImpl::updateAnimations):

LayoutTests:

Four new layout tests have been added and touch-gesture-scroll-page.html has been
modified to demonstrate that this patch fixes two existing bugs. See the inline
comments below for details.

Because I am now using the existing user-generated scroll logic, the delta for a single
GestureScrollUpdate event will not be propagated to the parent of the targeted node
unless the targeted node has no remaining scrollable area. So the changes to the
existing layout tests have been made to ensure that the targeted node has been fully
scrolled before subsequent GestureScrollUpdate events will scroll the parent(s) of
the targeted node.

I have also removed the function recordScroll() from the existing layout tests
because this function already exists in the included file resources/gesture-helpers.js.

* fast/events/touch/gesture/touch-gesture-noscroll-body-expected.txt: Added.
* fast/events/touch/gesture/touch-gesture-noscroll-body-propagated-expected.txt: Added.
* fast/events/touch/gesture/touch-gesture-noscroll-body-propagated.html: Copied from LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-page.html.
* fast/events/touch/gesture/touch-gesture-noscroll-body-xhidden-expected.txt: Added.
* fast/events/touch/gesture/touch-gesture-noscroll-body-xhidden.html: Copied from LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-page.html.
* fast/events/touch/gesture/touch-gesture-noscroll-body-yhidden-expected.txt: Added.
* fast/events/touch/gesture/touch-gesture-noscroll-body-yhidden.html: Copied from LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-page.html.
* fast/events/touch/gesture/touch-gesture-noscroll-body.html: Copied from LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-page.html.
* fast/events/touch/gesture/touch-gesture-scroll-div-not-propagated.html:
* fast/events/touch/gesture/touch-gesture-scroll-div-propagated.html:
* fast/events/touch/gesture/touch-gesture-scroll-div-twice-propagated.html:
* fast/events/touch/gesture/touch-gesture-scroll-iframe-not-propagated.html:
* fast/events/touch/gesture/touch-gesture-scroll-iframe-propagated.html:
* fast/events/touch/gesture/touch-gesture-scroll-page-not-propagated.html:
* fast/events/touch/gesture/touch-gesture-scroll-page-propagated.html:
* fast/events/touch/gesture/touch-gesture-scroll-page.html:
      I modified this layout test in order to add test coverage for another bug
      which is fixed by this patch: if the hit test performed on a GestureScrollBegin
      does not target a specific node, the subsequent GestureScrollUpdate events should
      still attempt to scroll the page itself. This is consistent with how mousewheel
      events behave.
* platform/chromium/fast/events/touch/gesture/touch-gesture-noscroll-body-expected.txt: Added.
* platform/chromium/fast/events/touch/gesture/touch-gesture-noscroll-body-propagated-expected.txt: Added.
* platform/chromium/fast/events/touch/gesture/touch-gesture-noscroll-body-xhidden-expected.txt: Added.
* platform/chromium/fast/events/touch/gesture/touch-gesture-noscroll-body-yhidden-expected.txt: Added.
      These four new layout tests verify that a non-scrollable body will not scroll,
      as reported in https://bugs.webkit.org/show_bug.cgi?id=109316.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@144519 268f45cc-cd09-0410-ab3c-d52691b4dbfc