From c11789055f57fd73176ad0a363d2a2b534cf2944 Mon Sep 17 00:00:00 2001 From: Jiyeon Kim Date: Mon, 13 May 2013 17:36:36 +0900 Subject: [PATCH] Add cancelForOpenPanel api for removing openPanelResultListener [Title] Add cancelForOpenPanel api for removing openPanelResultListener [Problem] After user select cancel button on app selector popup or cancel operation during media capture function, appselect or other app couldn't launch [Cause] If openPanel doesn't receive cancel callback from application, openpanel doesn't launch. [Solution] Add cancelForOpenPanel api for removing previous openPanelResultListener Change-Id: Ie7bfc1f0a351a7c4d74101e19e85a638a171172f --- Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp | 5 +++++ Source/WebKit2/WebProcess/WebPage/WebPage.cpp | 10 ++++++++++ Source/WebKit2/WebProcess/WebPage/WebPage.h | 3 +++ 3 files changed, 18 insertions(+) diff --git a/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp b/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp index ee11858..8aa85ab 100755 --- a/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp +++ b/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp @@ -771,8 +771,13 @@ PassOwnPtr WebChromeClient::createColorChooser(ColorChooserClient* void WebChromeClient::runOpenPanel(Frame* frame, PassRefPtr prpFileChooser) { +#if OS(TIZEN) + if (m_page->activeOpenPanelResultListener()) + m_page->cancelForOpenPanel(); +#else if (m_page->activeOpenPanelResultListener()) return; +#endif RefPtr fileChooser = prpFileChooser; diff --git a/Source/WebKit2/WebProcess/WebPage/WebPage.cpp b/Source/WebKit2/WebProcess/WebPage/WebPage.cpp index 5cebbba..d694d4a 100755 --- a/Source/WebKit2/WebProcess/WebPage/WebPage.cpp +++ b/Source/WebKit2/WebProcess/WebPage/WebPage.cpp @@ -2855,6 +2855,16 @@ void WebPage::didCancelForOpenPanel() m_activeOpenPanelResultListener = 0; } +#if OS(TIZEN) +void WebPage::cancelForOpenPanel() +{ + if (m_activeOpenPanelResultListener) { + m_activeOpenPanelResultListener->disconnectFromPage(); + m_activeOpenPanelResultListener = 0; + } +} +#endif + #if ENABLE(WEB_PROCESS_SANDBOX) void WebPage::extendSandboxForFileFromOpenPanel(const SandboxExtension::Handle& handle) { diff --git a/Source/WebKit2/WebProcess/WebPage/WebPage.h b/Source/WebKit2/WebProcess/WebPage/WebPage.h index b128f8b..c0ade44 100644 --- a/Source/WebKit2/WebProcess/WebPage/WebPage.h +++ b/Source/WebKit2/WebProcess/WebPage/WebPage.h @@ -342,6 +342,9 @@ public: WebOpenPanelResultListener* activeOpenPanelResultListener() const { return m_activeOpenPanelResultListener.get(); } void setActiveOpenPanelResultListener(PassRefPtr); +#if OS(TIZEN) + void cancelForOpenPanel(); +#endif // -- Called from WebProcess. void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); -- 2.7.4