Title: [123630] trunk/Source/WebKit2
Revision
123630
Author
[email protected]
Date
2012-07-25 10:22:47 -0700 (Wed, 25 Jul 2012)

Log Message

        Chinese IM receives incorrect/duplicated key events in text fields in webpages in Safari.
        https://bugs.webkit.org/show_bug.cgi?id=89048
        <rdar://problem/11786384>

        Reviewed by Andreas Kling.

        Cannot test text input from UI process side.

        Stop relying on IPC to handle key events in order. There are too many complications
        where out of order delivery is performed. Instead, queue the events at UI process
        side.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::handleKeyboardEvent):
        (WebKit::WebPageProxy::didReceiveEvent):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (123629 => 123630)


--- trunk/Source/WebKit2/ChangeLog	2012-07-25 17:21:57 UTC (rev 123629)
+++ trunk/Source/WebKit2/ChangeLog	2012-07-25 17:22:47 UTC (rev 123630)
@@ -1,3 +1,21 @@
+2012-07-25  Alexey Proskuryakov  <[email protected]>
+
+        Chinese IM receives incorrect/duplicated key events in text fields in webpages in Safari.
+        https://bugs.webkit.org/show_bug.cgi?id=89048
+        <rdar://problem/11786384>
+
+        Reviewed by Andreas Kling.
+
+        Cannot test text input from UI process side.
+
+        Stop relying on IPC to handle key events in order. There are too many complications
+        where out of order delivery is performed. Instead, queue the events at UI process
+        side.
+
+        * UIProcess/WebPageProxy.cpp:
+        (WebKit::WebPageProxy::handleKeyboardEvent):
+        (WebKit::WebPageProxy::didReceiveEvent):
+
 2012-07-25  Gyuyoung Kim  <[email protected]>
 
         [EFL] Use eina_stringshare_add instead of strdup.

Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (123629 => 123630)


--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp	2012-07-25 17:21:57 UTC (rev 123629)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp	2012-07-25 17:22:47 UTC (rev 123630)
@@ -1136,7 +1136,7 @@
         bool handled = false;
         process()->sendSync(Messages::WebPage::KeyEventSyncForTesting(event), Messages::WebPage::KeyEventSyncForTesting::Reply(handled), m_pageID);
         didReceiveEvent(event.type(), handled);
-    } else
+    } else if (m_keyEventQueue.size() == 1) // Otherwise, sent from DidReceiveEvent message handler.
         process()->send(Messages::WebPage::KeyEvent(event), m_pageID);
 }
 
@@ -3253,8 +3253,10 @@
 
         m_keyEventQueue.removeFirst();
 
+        if (!m_keyEventQueue.isEmpty())
+            process()->send(Messages::WebPage::KeyEvent(m_keyEventQueue.first()), m_pageID);
+
         m_pageClient->doneWithKeyEvent(event, handled);
-
         if (handled)
             break;
 
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to