Diff
Modified: trunk/LayoutTests/ChangeLog (102873 => 102874)
--- trunk/LayoutTests/ChangeLog 2011-12-15 03:39:51 UTC (rev 102873)
+++ trunk/LayoutTests/ChangeLog 2011-12-15 04:16:25 UTC (rev 102874)
@@ -1,3 +1,13 @@
+2011-12-14 Jing Zhao <[email protected]>
+
+ Opening two popup menus by dispatchEvent() makes problems.
+ https://bugs.webkit.org/show_bug.cgi?id=73304
+
+ Reviewed by Kent Tamura.
+
+ * fast/forms/select/menulist-popup-crash-expected.txt: Added.
+ * fast/forms/select/menulist-popup-crash.html: Added.
+
2011-12-14 Hajime Morrita <[email protected]>
Unreviewed expectation update.
Added: trunk/LayoutTests/fast/forms/select/menulist-popup-crash-expected.txt (0 => 102874)
--- trunk/LayoutTests/fast/forms/select/menulist-popup-crash-expected.txt (rev 0)
+++ trunk/LayoutTests/fast/forms/select/menulist-popup-crash-expected.txt 2011-12-15 04:16:25 UTC (rev 102874)
@@ -0,0 +1,5 @@
+<select> test for opening two popup menus.
+
+PASS if the test didn't crash.
+
+
Added: trunk/LayoutTests/fast/forms/select/menulist-popup-crash.html (0 => 102874)
--- trunk/LayoutTests/fast/forms/select/menulist-popup-crash.html (rev 0)
+++ trunk/LayoutTests/fast/forms/select/menulist-popup-crash.html 2011-12-15 04:16:25 UTC (rev 102874)
@@ -0,0 +1,53 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+</head>
+<body>
+<p id="description"><select> test for opening two popup menus.</p>
+<div id="console"></div>
+<p id="debug">PASS if the test didn't crash.</p>
+<script>
+ if (window.layoutTestController)
+ layoutTestController.dumpAsText();
+
+ var parent = document.createElement('div');
+ parent.innerHTML = '<select id="sl1">'
+ + '<option>one</option>'
+ + '<option>two</option>'
+ + '<option>three</option>'
+ + '<option>four</option>'
+ + '<option>five</option>'
+ + '<option>six</option>'
+ + '<option>seven</option>'
+ + '<option>eight</option>'
+ + '<option>nine</option>'
+ + '<option>ten</option>'
+ + '<option>eleven</option>'
+ + '<option>twelve</option>'
+ + '<option>thirteen</option>'
+ + '<option>fourteen</option>'
+ + '<option>fifteen</option>'
+ + '<option>sixteen</option>'
+ + '<option>seventeen</option>'
+ + '</select>'
+ + '<select id="sl2">'
+ + '<option>one</option>'
+ + '<option>two</option>'
+ + '<option>three</option>'
+ + '</select>';
+ document.body.appendChild(parent);
+
+ function mouseDownOnSelect(selId)
+ {
+ var sl = document.getElementById(selId);
+ var event = document.createEvent("MouseEvent");
+ event.initMouseEvent("mousedown", true, true, document.defaultView, 1, sl.offsetLeft, sl.offsetTop, sl.offsetLeft, sl.offsetTop, false, false, false, false, 0, document);
+ sl.dispatchEvent(event);
+ }
+
+ mouseDownOnSelect("sl1");
+ mouseDownOnSelect("sl2");
+
+</script>
+</body>
+</html>
Modified: trunk/Source/WebCore/ChangeLog (102873 => 102874)
--- trunk/Source/WebCore/ChangeLog 2011-12-15 03:39:51 UTC (rev 102873)
+++ trunk/Source/WebCore/ChangeLog 2011-12-15 04:16:25 UTC (rev 102874)
@@ -1,3 +1,28 @@
+2011-12-14 Jing Zhao <[email protected]>
+
+ Opening two popup menus by dispatchEvent() makes problems.
+ https://bugs.webkit.org/show_bug.cgi?id=73304
+
+ Reviewed by Kent Tamura.
+
+ By using element.dispatchEvent(), a user written script can open two
+ popup menus, which causes various problems in different platforms.
+
+ Add a hasOpenedPopup() method in ChromeClient and a wrapper in Chrome.
+ In RenderMenuList::showPopup(), check if there is an opened popup menu
+ before opening a new popup menu.
+
+ Test: fast/forms/select-popup-crash.html
+
+ * loader/EmptyClients.h: Overrides hasOpenedPopup().
+ (WebCore::EmptyChromeClient::hasOpenedPopup): Returns false as a default case.
+ * page/Chrome.cpp:
+ (WebCore::Chrome::hasOpenedPopup): Calls ChromeClient::hasOpenedPopup().
+ * page/Chrome.h: Declares hasOpenedPopup().
+ * page/ChromeClient.h: Declares hasOpenedPopup() as a pure virtual function.
+ * rendering/RenderMenuList.cpp:
+ (WebCore::RenderMenuList::showPopup): Calls Chrome::hasOpenedPopup() before opening a new popup menu.
+
2011-12-14 Tony Chang <[email protected]>
Clean up style in CSSStyleSelector.cpp
Modified: trunk/Source/WebCore/loader/EmptyClients.h (102873 => 102874)
--- trunk/Source/WebCore/loader/EmptyClients.h 2011-12-15 03:39:51 UTC (rev 102873)
+++ trunk/Source/WebCore/loader/EmptyClients.h 2011-12-15 04:16:25 UTC (rev 102874)
@@ -140,6 +140,7 @@
virtual bool selectItemWritingDirectionIsNatural() { return false; }
virtual bool selectItemAlignmentFollowsMenuWritingDirection() { return false; }
+ virtual bool hasOpenedPopup() const OVERRIDE { return false; }
virtual PassRefPtr<PopupMenu> createPopupMenu(PopupMenuClient*) const { return adoptRef(new EmptyPopupMenu()); }
virtual PassRefPtr<SearchPopupMenu> createSearchPopupMenu(PopupMenuClient*) const { return adoptRef(new EmptySearchPopupMenu()); }
Modified: trunk/Source/WebCore/page/Chrome.cpp (102873 => 102874)
--- trunk/Source/WebCore/page/Chrome.cpp 2011-12-15 03:39:51 UTC (rev 102873)
+++ trunk/Source/WebCore/page/Chrome.cpp 2011-12-15 04:16:25 UTC (rev 102874)
@@ -555,6 +555,11 @@
return m_client->selectItemAlignmentFollowsMenuWritingDirection();
}
+bool Chrome::hasOpenedPopup() const
+{
+ return m_client->hasOpenedPopup();
+}
+
PassRefPtr<PopupMenu> Chrome::createPopupMenu(PopupMenuClient* client) const
{
return m_client->createPopupMenu(client);
Modified: trunk/Source/WebCore/page/Chrome.h (102873 => 102874)
--- trunk/Source/WebCore/page/Chrome.h 2011-12-15 03:39:51 UTC (rev 102873)
+++ trunk/Source/WebCore/page/Chrome.h 2011-12-15 04:16:25 UTC (rev 102874)
@@ -174,6 +174,7 @@
bool selectItemWritingDirectionIsNatural();
bool selectItemAlignmentFollowsMenuWritingDirection();
+ bool hasOpenedPopup() const;
PassRefPtr<PopupMenu> createPopupMenu(PopupMenuClient*) const;
PassRefPtr<SearchPopupMenu> createSearchPopupMenu(PopupMenuClient*) const;
Modified: trunk/Source/WebCore/page/ChromeClient.h (102873 => 102874)
--- trunk/Source/WebCore/page/ChromeClient.h 2011-12-15 03:39:51 UTC (rev 102873)
+++ trunk/Source/WebCore/page/ChromeClient.h 2011-12-15 04:16:25 UTC (rev 102874)
@@ -302,6 +302,8 @@
virtual bool selectItemWritingDirectionIsNatural() = 0;
virtual bool selectItemAlignmentFollowsMenuWritingDirection() = 0;
+ // Checks if there is an opened popup, called by RenderMenuList::showPopup().
+ virtual bool hasOpenedPopup() const = 0;
virtual PassRefPtr<PopupMenu> createPopupMenu(PopupMenuClient*) const = 0;
virtual PassRefPtr<SearchPopupMenu> createSearchPopupMenu(PopupMenuClient*) const = 0;
Modified: trunk/Source/WebCore/rendering/RenderMenuList.cpp (102873 => 102874)
--- trunk/Source/WebCore/rendering/RenderMenuList.cpp 2011-12-15 03:39:51 UTC (rev 102873)
+++ trunk/Source/WebCore/rendering/RenderMenuList.cpp 2011-12-15 04:16:25 UTC (rev 102874)
@@ -293,6 +293,9 @@
if (m_popupIsVisible)
return;
+ if (document()->page()->chrome()->hasOpenedPopup())
+ return;
+
// Create m_innerBlock here so it ends up as the first child.
// This is important because otherwise we might try to create m_innerBlock
// inside the showPopup call and it would fail.
Modified: trunk/Source/WebKit/chromium/ChangeLog (102873 => 102874)
--- trunk/Source/WebKit/chromium/ChangeLog 2011-12-15 03:39:51 UTC (rev 102873)
+++ trunk/Source/WebKit/chromium/ChangeLog 2011-12-15 04:16:25 UTC (rev 102874)
@@ -1,3 +1,22 @@
+2011-12-14 Jing Zhao <[email protected]>
+
+ Opening two popup menus by dispatchEvent() makes problems.
+ https://bugs.webkit.org/show_bug.cgi?id=73304
+
+ Reviewed by Kent Tamura.
+
+ By using element.dispatchEvent(), a user written script can open two
+ popup menus, which causes the assertion in WebViewImpl::popupOpened()
+ fail.
+
+ ChromeClientImpl::hasOpenedPopup() is called by Chrome::hasOpenedPopup()
+ in RenderMenuList::showPopup(), to check if there is an opened popup
+ menu before opening a new popup menu.
+
+ * src/ChromeClientImpl.cpp:
+ (WebKit::ChromeClientImpl::hasOpenedPopup): Checks the popup in WebViewImpl.
+ * src/ChromeClientImpl.h: Overrides hasOpenedPopup().
+
2011-12-14 Kenichi Ishibashi <[email protected]>
[Chromium] Implement PluginViewBase::getFormValue
Modified: trunk/Source/WebKit/chromium/src/ChromeClientImpl.cpp (102873 => 102874)
--- trunk/Source/WebKit/chromium/src/ChromeClientImpl.cpp 2011-12-15 03:39:51 UTC (rev 102873)
+++ trunk/Source/WebKit/chromium/src/ChromeClientImpl.cpp 2011-12-15 04:16:25 UTC (rev 102874)
@@ -939,6 +939,11 @@
return true;
}
+bool ChromeClientImpl::hasOpenedPopup() const
+{
+ return !!m_webView->selectPopup();
+}
+
PassRefPtr<PopupMenu> ChromeClientImpl::createPopupMenu(PopupMenuClient* client) const
{
if (WebViewImpl::useExternalPopupMenus())
Modified: trunk/Source/WebKit/chromium/src/ChromeClientImpl.h (102873 => 102874)
--- trunk/Source/WebKit/chromium/src/ChromeClientImpl.h 2011-12-15 03:39:51 UTC (rev 102873)
+++ trunk/Source/WebKit/chromium/src/ChromeClientImpl.h 2011-12-15 04:16:25 UTC (rev 102874)
@@ -185,6 +185,7 @@
virtual bool selectItemWritingDirectionIsNatural();
virtual bool selectItemAlignmentFollowsMenuWritingDirection();
+ virtual bool hasOpenedPopup() const OVERRIDE;
virtual PassRefPtr<WebCore::PopupMenu> createPopupMenu(WebCore::PopupMenuClient*) const;
virtual PassRefPtr<WebCore::SearchPopupMenu> createSearchPopupMenu(WebCore::PopupMenuClient*) const;
Modified: trunk/Source/WebKit/efl/ChangeLog (102873 => 102874)
--- trunk/Source/WebKit/efl/ChangeLog 2011-12-15 03:39:51 UTC (rev 102873)
+++ trunk/Source/WebKit/efl/ChangeLog 2011-12-15 04:16:25 UTC (rev 102874)
@@ -1,3 +1,14 @@
+2011-12-14 Jing Zhao <[email protected]>
+
+ Opening two popup menus by dispatchEvent() makes problems.
+ https://bugs.webkit.org/show_bug.cgi?id=73304
+
+ Reviewed by Kent Tamura.
+
+ * WebCoreSupport/ChromeClientEfl.cpp:
+ (WebCore::ChromeClientEfl::hasOpenedPopup): Not implemented.
+ * WebCoreSupport/ChromeClientEfl.h: Overrides hasOpenedPopup().
+
2011-12-12 Raphael Kubo da Costa <[email protected]>
[EFL] Add API to query the validity of a frame's SSL certificate.
Modified: trunk/Source/WebKit/efl/WebCoreSupport/ChromeClientEfl.cpp (102873 => 102874)
--- trunk/Source/WebKit/efl/WebCoreSupport/ChromeClientEfl.cpp 2011-12-15 03:39:51 UTC (rev 102873)
+++ trunk/Source/WebKit/efl/WebCoreSupport/ChromeClientEfl.cpp 2011-12-15 04:16:25 UTC (rev 102874)
@@ -544,6 +544,12 @@
return false;
}
+bool ChromeClientEfl::hasOpenedPopup() const
+{
+ notImplemented();
+ return false;
+}
+
PassRefPtr<PopupMenu> ChromeClientEfl::createPopupMenu(PopupMenuClient* client) const
{
return adoptRef(new PopupMenuEfl(client));
Modified: trunk/Source/WebKit/efl/WebCoreSupport/ChromeClientEfl.h (102873 => 102874)
--- trunk/Source/WebKit/efl/WebCoreSupport/ChromeClientEfl.h 2011-12-15 03:39:51 UTC (rev 102873)
+++ trunk/Source/WebKit/efl/WebCoreSupport/ChromeClientEfl.h 2011-12-15 04:16:25 UTC (rev 102874)
@@ -167,6 +167,7 @@
virtual bool selectItemWritingDirectionIsNatural();
virtual bool selectItemAlignmentFollowsMenuWritingDirection();
+ virtual bool hasOpenedPopup() const;
virtual PassRefPtr<PopupMenu> createPopupMenu(PopupMenuClient*) const;
virtual PassRefPtr<SearchPopupMenu> createSearchPopupMenu(PopupMenuClient*) const;
Modified: trunk/Source/WebKit/gtk/ChangeLog (102873 => 102874)
--- trunk/Source/WebKit/gtk/ChangeLog 2011-12-15 03:39:51 UTC (rev 102873)
+++ trunk/Source/WebKit/gtk/ChangeLog 2011-12-15 04:16:25 UTC (rev 102874)
@@ -1,3 +1,14 @@
+2011-12-14 Jing Zhao <[email protected]>
+
+ Opening two popup menus by dispatchEvent() makes problems.
+ https://bugs.webkit.org/show_bug.cgi?id=73304
+
+ Reviewed by Kent Tamura.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::hasOpenedPopup): Not implemented.
+ * WebCoreSupport/ChromeClientGtk.h: Overrides hasOpenedPopup().
+
2011-12-12 Ryosuke Niwa <[email protected]>
WebKit code shouldn't be calling applyCommand directly
Modified: trunk/Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp (102873 => 102874)
--- trunk/Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp 2011-12-15 03:39:51 UTC (rev 102873)
+++ trunk/Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp 2011-12-15 04:16:25 UTC (rev 102874)
@@ -861,6 +861,12 @@
return true;
}
+bool ChromeClient::hasOpenedPopup() const
+{
+ notImplemented();
+ return false;
+}
+
PassRefPtr<WebCore::PopupMenu> ChromeClient::createPopupMenu(WebCore::PopupMenuClient* client) const
{
return adoptRef(new PopupMenuGtk(client));
Modified: trunk/Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.h (102873 => 102874)
--- trunk/Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.h 2011-12-15 03:39:51 UTC (rev 102873)
+++ trunk/Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.h 2011-12-15 04:16:25 UTC (rev 102874)
@@ -142,6 +142,7 @@
virtual bool selectItemWritingDirectionIsNatural();
virtual bool selectItemAlignmentFollowsMenuWritingDirection();
+ virtual bool hasOpenedPopup() const;
virtual PassRefPtr<PopupMenu> createPopupMenu(PopupMenuClient*) const;
virtual PassRefPtr<SearchPopupMenu> createSearchPopupMenu(PopupMenuClient*) const;
#if ENABLE(VIDEO)
Modified: trunk/Source/WebKit/mac/ChangeLog (102873 => 102874)
--- trunk/Source/WebKit/mac/ChangeLog 2011-12-15 03:39:51 UTC (rev 102873)
+++ trunk/Source/WebKit/mac/ChangeLog 2011-12-15 04:16:25 UTC (rev 102874)
@@ -1,3 +1,14 @@
+2011-12-14 Jing Zhao <[email protected]>
+
+ Opening two popup menus by dispatchEvent() makes problems.
+ https://bugs.webkit.org/show_bug.cgi?id=73304
+
+ Reviewed by Kent Tamura.
+
+ * WebCoreSupport/WebChromeClient.h: Overrides hasOpenedPopup().
+ * WebCoreSupport/WebChromeClient.mm:
+ (WebChromeClient::hasOpenedPopup): Not implemented.
+
2011-12-14 Michael Saboff <[email protected]>
Mac WebScriptDebugger crashes beneath sourceParsed()
Modified: trunk/Source/WebKit/mac/WebCoreSupport/WebChromeClient.h (102873 => 102874)
--- trunk/Source/WebKit/mac/WebCoreSupport/WebChromeClient.h 2011-12-15 03:39:51 UTC (rev 102873)
+++ trunk/Source/WebKit/mac/WebCoreSupport/WebChromeClient.h 2011-12-15 04:16:25 UTC (rev 102874)
@@ -170,6 +170,7 @@
virtual bool selectItemWritingDirectionIsNatural() OVERRIDE;
virtual bool selectItemAlignmentFollowsMenuWritingDirection() OVERRIDE;
+ virtual bool hasOpenedPopup() const OVERRIDE;
virtual PassRefPtr<WebCore::PopupMenu> createPopupMenu(WebCore::PopupMenuClient*) const OVERRIDE;
virtual PassRefPtr<WebCore::SearchPopupMenu> createSearchPopupMenu(WebCore::PopupMenuClient*) const OVERRIDE;
Modified: trunk/Source/WebKit/mac/WebCoreSupport/WebChromeClient.mm (102873 => 102874)
--- trunk/Source/WebKit/mac/WebCoreSupport/WebChromeClient.mm 2011-12-15 03:39:51 UTC (rev 102873)
+++ trunk/Source/WebKit/mac/WebCoreSupport/WebChromeClient.mm 2011-12-15 04:16:25 UTC (rev 102874)
@@ -840,6 +840,12 @@
#endif
}
+bool WebChromeClient::hasOpenedPopup() const
+{
+ notImplemented();
+ return false;
+}
+
PassRefPtr<WebCore::PopupMenu> WebChromeClient::createPopupMenu(WebCore::PopupMenuClient* client) const
{
return adoptRef(new PopupMenuMac(client));
Modified: trunk/Source/WebKit/qt/ChangeLog (102873 => 102874)
--- trunk/Source/WebKit/qt/ChangeLog 2011-12-15 03:39:51 UTC (rev 102873)
+++ trunk/Source/WebKit/qt/ChangeLog 2011-12-15 04:16:25 UTC (rev 102874)
@@ -1,3 +1,14 @@
+2011-12-14 Jing Zhao <[email protected]>
+
+ Opening two popup menus by dispatchEvent() makes problems.
+ https://bugs.webkit.org/show_bug.cgi?id=73304
+
+ Reviewed by Kent Tamura.
+
+ * WebCoreSupport/ChromeClientQt.cpp:
+ (WebCore::ChromeClientQt::hasOpenedPopup): Not implemented.
+ * WebCoreSupport/ChromeClientQt.h: Overrides hasOpenedPopup().
+
2011-12-14 Hajime Morrita <[email protected]>
JS_INLINE and WTF_INLINE should be visible from WebCore
Modified: trunk/Source/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp (102873 => 102874)
--- trunk/Source/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp 2011-12-15 03:39:51 UTC (rev 102873)
+++ trunk/Source/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp 2011-12-15 04:16:25 UTC (rev 102874)
@@ -712,6 +712,12 @@
return false;
}
+bool ChromeClientQt::hasOpenedPopup() const
+{
+ notImplemented();
+ return false;
+}
+
PassRefPtr<PopupMenu> ChromeClientQt::createPopupMenu(PopupMenuClient* client) const
{
return adoptRef(new PopupMenuQt(client, this));
Modified: trunk/Source/WebKit/qt/WebCoreSupport/ChromeClientQt.h (102873 => 102874)
--- trunk/Source/WebKit/qt/WebCoreSupport/ChromeClientQt.h 2011-12-15 03:39:51 UTC (rev 102873)
+++ trunk/Source/WebKit/qt/WebCoreSupport/ChromeClientQt.h 2011-12-15 04:16:25 UTC (rev 102874)
@@ -181,6 +181,7 @@
virtual bool selectItemWritingDirectionIsNatural();
virtual bool selectItemAlignmentFollowsMenuWritingDirection();
+ virtual bool hasOpenedPopup() const;
virtual PassRefPtr<PopupMenu> createPopupMenu(PopupMenuClient*) const;
virtual PassRefPtr<SearchPopupMenu> createSearchPopupMenu(PopupMenuClient*) const;
virtual void populateVisitedLinks();
Modified: trunk/Source/WebKit/win/ChangeLog (102873 => 102874)
--- trunk/Source/WebKit/win/ChangeLog 2011-12-15 03:39:51 UTC (rev 102873)
+++ trunk/Source/WebKit/win/ChangeLog 2011-12-15 04:16:25 UTC (rev 102874)
@@ -1,3 +1,14 @@
+2011-12-14 Jing Zhao <[email protected]>
+
+ Opening two popup menus by dispatchEvent() makes problems.
+ https://bugs.webkit.org/show_bug.cgi?id=73304
+
+ Reviewed by Kent Tamura.
+
+ * WebCoreSupport/WebChromeClient.cpp:
+ (WebChromeClient::hasOpenedPopup): Not implemented.
+ * WebCoreSupport/WebChromeClient.h: Overrides hasOpenedPopup().
+
2011-12-14 Sam Weinig <[email protected]>
Remove whitespace from InheritedPropertySheets attributes in
Modified: trunk/Source/WebKit/win/WebCoreSupport/WebChromeClient.cpp (102873 => 102874)
--- trunk/Source/WebKit/win/WebCoreSupport/WebChromeClient.cpp 2011-12-15 03:39:51 UTC (rev 102873)
+++ trunk/Source/WebKit/win/WebCoreSupport/WebChromeClient.cpp 2011-12-15 04:16:25 UTC (rev 102874)
@@ -786,6 +786,12 @@
return false;
}
+bool WebChromeClient::hasOpenedPopup() const
+{
+ notImplemented();
+ return false;
+}
+
PassRefPtr<PopupMenu> WebChromeClient::createPopupMenu(PopupMenuClient* client) const
{
return adoptRef(new PopupMenuWin(client));
Modified: trunk/Source/WebKit/win/WebCoreSupport/WebChromeClient.h (102873 => 102874)
--- trunk/Source/WebKit/win/WebCoreSupport/WebChromeClient.h 2011-12-15 03:39:51 UTC (rev 102873)
+++ trunk/Source/WebKit/win/WebCoreSupport/WebChromeClient.h 2011-12-15 04:16:25 UTC (rev 102874)
@@ -165,6 +165,7 @@
virtual bool selectItemWritingDirectionIsNatural();
virtual bool selectItemAlignmentFollowsMenuWritingDirection();
+ virtual bool hasOpenedPopup() const;
virtual PassRefPtr<WebCore::PopupMenu> createPopupMenu(WebCore::PopupMenuClient*) const;
virtual PassRefPtr<WebCore::SearchPopupMenu> createSearchPopupMenu(WebCore::PopupMenuClient*) const;
Modified: trunk/Source/WebKit2/ChangeLog (102873 => 102874)
--- trunk/Source/WebKit2/ChangeLog 2011-12-15 03:39:51 UTC (rev 102873)
+++ trunk/Source/WebKit2/ChangeLog 2011-12-15 04:16:25 UTC (rev 102874)
@@ -1,3 +1,14 @@
+2011-12-14 Jing Zhao <[email protected]>
+
+ Opening two popup menus by dispatchEvent() makes problems.
+ https://bugs.webkit.org/show_bug.cgi?id=73304
+
+ Reviewed by Kent Tamura.
+
+ * WebProcess/WebCoreSupport/WebChromeClient.cpp:
+ (WebKit::WebChromeClient::hasOpenedPopup): Not implemented.
+ * WebProcess/WebCoreSupport/WebChromeClient.h: Overrides hasOpenedPopup().
+
2011-12-14 Sam Weinig <[email protected]>
Remove whitespace from InheritedPropertySheets attributes in
Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp (102873 => 102874)
--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp 2011-12-15 03:39:51 UTC (rev 102873)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp 2011-12-15 04:16:25 UTC (rev 102874)
@@ -660,6 +660,12 @@
#endif
}
+bool WebChromeClient::hasOpenedPopup() const
+{
+ notImplemented();
+ return false;
+}
+
PassRefPtr<WebCore::PopupMenu> WebChromeClient::createPopupMenu(WebCore::PopupMenuClient* client) const
{
return WebPopupMenu::create(m_page, client);
Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.h (102873 => 102874)
--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.h 2011-12-15 03:39:51 UTC (rev 102873)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.h 2011-12-15 04:16:25 UTC (rev 102874)
@@ -170,6 +170,7 @@
virtual bool selectItemWritingDirectionIsNatural() OVERRIDE;
virtual bool selectItemAlignmentFollowsMenuWritingDirection() OVERRIDE;
+ virtual bool hasOpenedPopup() const OVERRIDE;
virtual PassRefPtr<WebCore::PopupMenu> createPopupMenu(WebCore::PopupMenuClient*) const OVERRIDE;
virtual PassRefPtr<WebCore::SearchPopupMenu> createSearchPopupMenu(WebCore::PopupMenuClient*) const OVERRIDE;