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