PAGE_POPUP: window.setValueAndClosePopup should be moved to a
per-context property of DOMWindow.
https://bugs.webkit.org/show_bug.cgi?id=87086
Reviewed by Adam Barth.
.:
* ManualTests/forms/calendar-picker.html:
Introduce pseudo window.pagePopupController.
Source/WebCore:
- Introduce window.pagePagePopupController property as V8EnabledPerContext.
- Move window.setValueAndClosePopup() to window.pagePopupController.
So, we can remove ad-hoc ScriptController::installFunctionsForPagePopup().
No behavior change.
Test: fast/forms/date/no-page-popup-controller.html
* Resources/calendarPicker.js:
(submitValue): Use window.pagePopupController.
(handleCancel): ditto.
* WebCore.gypi: Add new files.
* bindings/generic/ContextEnabledFeatures.cpp:
(WebCore::ContextEnabledFeatures::pagePopupEnabled): Added.
* bindings/generic/ContextEnabledFeatures.h:
(ContextEnabledFeatures): Added.
* bindings/v8/ScriptController.cpp: Remove installFunctionsForPagePopup().
* bindings/v8/ScriptController.h: ditto.
* loader/FrameLoaderClient.h:
(WebCore::FrameLoaderClient::allowPagePopup): Added.
* page/DOMWindowPagePopup.cpp:
(WebCore::DOMWindowPagePopup::DOMWindowPagePopup):
Creates a PagePopupController object for the specified PagePopupClient.
(WebCore::DOMWindowPagePopup::~DOMWindowPagePopup):
Empty destructor to generate the RefPtr<PagePopupController> destructor.
(WebCore::DOMWindowPagePopup::pagePopupController):
* page/DOMWindowPagePopup.h:
(DOMWindowPagePopup):
- Remove setValueAndClosePopup()
- Add pagePopupController()
- Change the data member from PagePopupClient to PagePopupController.
* page/DOMWindowPagePopup.idl: Supply per-context window.pagePopupController.
* page/PagePopupController.cpp: Added. This object is attached to window.
* page/PagePopupController.h: ditto.
* page/PagePopupController.idl: ditto.
Source/WebKit/chromium:
* src/WebPagePopupImpl.cpp:
(WebKit): Add PagePopupFrameLoaderClient, which allows window.pagePopupController.
(WebKit::WebPagePopupImpl::initPage):
- Use PagePopupFrameLoaderClient
- Remove the call of ScriptController::installFunctionsForPagePopup().
- Call DOMWindowPagePopup::install() to inform m_popupClient to a
DOMWindowPagePopup object for the DOMWindow.
LayoutTests:
* fast/forms/date/no-page-popup-controller-expected.txt: Added.
* fast/forms/date/no-page-popup-controller.html: Added.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@118482 268f45cc-cd09-0410-ab3c-d52691b4dbfc
21 files changed