From f627a77f344ab33aa54b842a2e5d90bec4410cc5 Mon Sep 17 00:00:00 2001 From: "jiewen_tan@apple.com" Date: Mon, 8 May 2017 19:17:29 +0000 Subject: [PATCH] Search events should not fire synchronously for search type input elements with incremental attribute set https://bugs.webkit.org/show_bug.cgi?id=171376 Reviewed by Chris Dumez. Source/WebCore: For some reasons, we fire search events immediately for search type input elements with incremental attribute set only when the length of the input equals to zero. This behaviour should be prevented as event listeners in the middle might perform unexpectedly. Test: fast/forms/search/search-incremental-crash.html * html/SearchInputType.cpp: (WebCore::SearchInputType::startSearchEventTimer): LayoutTests: * fast/forms/search/search-incremental-crash-expected.txt: Added. * fast/forms/search/search-incremental-crash.html: Added. git-svn-id: https://svn.webkit.org/repository/webkit/trunk@216443 268f45cc-cd09-0410-ab3c-d52691b4dbfc --- LayoutTests/ChangeLog | 11 +++++++++ .../search/search-incremental-crash-expected.txt | 1 + .../forms/search/search-incremental-crash.html | 28 ++++++++++++++++++++++ Source/WebCore/ChangeLog | 17 +++++++++++++ Source/WebCore/html/SearchInputType.cpp | 3 +-- 5 files changed, 58 insertions(+), 2 deletions(-) create mode 100644 LayoutTests/fast/forms/search/search-incremental-crash-expected.txt create mode 100644 LayoutTests/fast/forms/search/search-incremental-crash.html diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog index 0887c62..59395e5 100644 --- a/LayoutTests/ChangeLog +++ b/LayoutTests/ChangeLog @@ -1,3 +1,14 @@ +2017-05-04 Jiewen Tan + + Search events should not fire synchronously for search type input elements with incremental attribute set + https://bugs.webkit.org/show_bug.cgi?id=171376 + + + Reviewed by Chris Dumez. + + * fast/forms/search/search-incremental-crash-expected.txt: Added. + * fast/forms/search/search-incremental-crash.html: Added. + 2017-05-08 Zalan Bujtas Text overlaps on http://www.duden.de/rechtschreibung/Acre diff --git a/LayoutTests/fast/forms/search/search-incremental-crash-expected.txt b/LayoutTests/fast/forms/search/search-incremental-crash-expected.txt new file mode 100644 index 0000000..2b7c6fe --- /dev/null +++ b/LayoutTests/fast/forms/search/search-incremental-crash-expected.txt @@ -0,0 +1 @@ + Test passes if WebKit doesn't crash. diff --git a/LayoutTests/fast/forms/search/search-incremental-crash.html b/LayoutTests/fast/forms/search/search-incremental-crash.html new file mode 100644 index 0000000..933b33b --- /dev/null +++ b/LayoutTests/fast/forms/search/search-incremental-crash.html @@ -0,0 +1,28 @@ + + + + + + + +Test passes if WebKit doesn't crash. + + \ No newline at end of file diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog index 95e710d..992cab7 100644 --- a/Source/WebCore/ChangeLog +++ b/Source/WebCore/ChangeLog @@ -1,3 +1,20 @@ +2017-05-04 Jiewen Tan + + Search events should not fire synchronously for search type input elements with incremental attribute set + https://bugs.webkit.org/show_bug.cgi?id=171376 + + + Reviewed by Chris Dumez. + + For some reasons, we fire search events immediately for search type input elements with incremental + attribute set only when the length of the input equals to zero. This behaviour should be prevented + as event listeners in the middle might perform unexpectedly. + + Test: fast/forms/search/search-incremental-crash.html + + * html/SearchInputType.cpp: + (WebCore::SearchInputType::startSearchEventTimer): + 2017-05-08 Zalan Bujtas Text overlaps on http://www.duden.de/rechtschreibung/Acre diff --git a/Source/WebCore/html/SearchInputType.cpp b/Source/WebCore/html/SearchInputType.cpp index 6bbf8be..a2a6f8a 100644 --- a/Source/WebCore/html/SearchInputType.cpp +++ b/Source/WebCore/html/SearchInputType.cpp @@ -161,8 +161,7 @@ void SearchInputType::startSearchEventTimer() unsigned length = element().innerTextValue().length(); if (!length) { - stopSearchEventTimer(); - element().onSearch(); + m_searchEventTimer.startOneShot(0_ms); return; } -- 1.8.3.1