[BlackBerry] Clear supression flag when caret changes aren't propogated through
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 27 May 2013 21:59:52 +0000 (21:59 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 27 May 2013 21:59:52 +0000 (21:59 +0000)
https://bugs.webkit.org/show_bug.cgi?id=116840

Patch by Nima Ghanavatian <nghanavatian@blackberry.com> on 2013-05-27
Reviewed by Rob Buis.

Internally reviewed by Mike Fenton.

PR339965
We set and clear the flag upon every use. This leaves us vulnerable if
1. midway through processing the selection change event is dismissed and
2. we don't receive a TouchRelease event
One example of this is while dragging the FCC handle we start typing. To
safeguard against this, if the process change guard is set during a
selection change event, we send out to clear the flag status before returning.

* Api/WebPageClient.h:
* WebKitSupport/InputHandler.cpp:
(BlackBerry::WebKit::InputHandler::selectionChanged):

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

Source/WebKit/blackberry/Api/WebPageClient.h
Source/WebKit/blackberry/ChangeLog
Source/WebKit/blackberry/WebKitSupport/InputHandler.cpp

index 5a68473..1aea90e 100644 (file)
@@ -276,6 +276,7 @@ public:
     virtual void notificationDestroyed(const BlackBerry::Platform::String& /*notificationId*/) = 0;
     virtual void startSelectionScroll() = 0;
     virtual void stopExpandingSelection() = 0;
+    virtual void suppressCaretChangeNotification(bool shouldClearState) = 0;
 };
 } // namespace WebKit
 } // namespace BlackBerry
index 9e65272..3fea4bd 100644 (file)
@@ -1,3 +1,24 @@
+2013-05-27  Nima Ghanavatian  <nghanavatian@blackberry.com>
+
+        [BlackBerry] Clear supression flag when caret changes aren't propogated through
+        https://bugs.webkit.org/show_bug.cgi?id=116840
+
+        Reviewed by Rob Buis.
+
+        Internally reviewed by Mike Fenton.
+
+        PR339965
+        We set and clear the flag upon every use. This leaves us vulnerable if
+        1. midway through processing the selection change event is dismissed and
+        2. we don't receive a TouchRelease event
+        One example of this is while dragging the FCC handle we start typing. To
+        safeguard against this, if the process change guard is set during a
+        selection change event, we send out to clear the flag status before returning.
+
+        * Api/WebPageClient.h:
+        * WebKitSupport/InputHandler.cpp:
+        (BlackBerry::WebKit::InputHandler::selectionChanged):
+
 2013-05-27  Andy Chen  <andchen@blackberry.com>
 
         [BlackBerry] Find-on-page should be able to convert the active match to selection when clearing all matches
index 0204de3..849369e 100644 (file)
@@ -1703,8 +1703,10 @@ void InputHandler::selectionChanged()
     if (!isActiveTextEdit())
         return;
 
-    if (processingChange())
+    if (processingChange()) {
+        m_webPage->m_client->suppressCaretChangeNotification(true /*shouldClearState*/);
         return;
+    }
 
     // Scroll the field if necessary. This must be done even if we are processing
     // a change as the text change may have moved the caret. IMF doesn't require