[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 5a68473eabb0c1714bf235b37d2519a24d4289aa..1aea90e821a64c1c326b48ca9254f7972ea47ef5 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 9e65272c932e9081f3471190d8b90818f53d28a2..3fea4bdb828da133e417ad53718fa250e7151c21 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 0204de31f6160693413168432442a8b44e5bb674..849369ed075f1cec3330de378c7bcb4a6366997c 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