summaryrefslogtreecommitdiff
path: root/Source/WebKit2
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2012-09-18 15:53:33 +0200
committerSimon Hausmann <simon.hausmann@digia.com>2012-09-18 15:53:33 +0200
commit6bbb7fbbac94d0f511a7bd0cbd50854ab643bfb2 (patch)
treed9c68d1cca0b3e352f1e438561f3e504e641a08f /Source/WebKit2
parentd0424a769059c84ae20beb3c217812792ea6726b (diff)
downloadqtwebkit-6bbb7fbbac94d0f511a7bd0cbd50854ab643bfb2.tar.gz
Imported WebKit commit c7503cef7ecb236730d1309676ab9fc723fd061d (http://svn.webkit.org/repository/webkit/trunk@128886)
New snapshot with various build fixes
Diffstat (limited to 'Source/WebKit2')
-rw-r--r--Source/WebKit2/ChangeLog526
-rw-r--r--Source/WebKit2/Configurations/FeatureDefines.xcconfig3
-rw-r--r--Source/WebKit2/Configurations/Version.xcconfig2
-rw-r--r--Source/WebKit2/Platform/CoreIPC/ArgumentEncoder.cpp5
-rw-r--r--Source/WebKit2/PlatformEfl.cmake2
-rw-r--r--Source/WebKit2/PluginProcess/PluginControllerProxy.cpp8
-rw-r--r--Source/WebKit2/PluginProcess/PluginControllerProxy.h3
-rw-r--r--Source/WebKit2/PluginProcess/PluginControllerProxy.messages.in3
-rw-r--r--Source/WebKit2/PluginProcess/mac/PluginProcessMac.mm35
-rw-r--r--Source/WebKit2/Shared/APIClientTraits.h2
-rw-r--r--Source/WebKit2/Shared/NativeWebTouchEvent.h5
-rw-r--r--Source/WebKit2/Shared/WebHitTestResult.cpp4
-rw-r--r--Source/WebKit2/Shared/WebHitTestResult.h23
-rw-r--r--Source/WebKit2/Shared/efl/NativeWebTouchEventEfl.cpp42
-rw-r--r--Source/WebKit2/Shared/efl/WebEventFactory.cpp52
-rw-r--r--Source/WebKit2/Shared/efl/WebEventFactory.h4
-rw-r--r--Source/WebKit2/Target.pri4
-rw-r--r--Source/WebKit2/UIProcess/API/efl/PageClientImpl.cpp8
-rw-r--r--Source/WebKit2/UIProcess/API/efl/ewk_private.h2
-rw-r--r--Source/WebKit2/UIProcess/API/efl/ewk_touch.h58
-rw-r--r--Source/WebKit2/UIProcess/API/efl/ewk_view.cpp28
-rw-r--r--Source/WebKit2/UIProcess/API/efl/ewk_view.h1
-rw-r--r--Source/WebKit2/UIProcess/API/efl/ewk_view_private.h1
-rw-r--r--Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h2
-rw-r--r--Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_refptr_evas_object.cpp134
-rw-r--r--Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp2
-rw-r--r--Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp14
-rw-r--r--Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBasePrivate.h1
-rw-r--r--Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp18
-rw-r--r--Source/WebKit2/UIProcess/API/qt/qwebloadrequest.cpp12
-rw-r--r--Source/WebKit2/UIProcess/Authentication/AuthenticationDecisionListener.h2
-rw-r--r--Source/WebKit2/UIProcess/Authentication/WebCredential.h4
-rw-r--r--Source/WebKit2/UIProcess/Authentication/WebProtectionSpace.h2
-rw-r--r--Source/WebKit2/UIProcess/GenericCallback.h2
-rw-r--r--Source/WebKit2/UIProcess/InspectorServer/WebSocketServer.h2
-rw-r--r--Source/WebKit2/UIProcess/PageViewportController.cpp2
-rw-r--r--Source/WebKit2/UIProcess/PageViewportController.h30
-rw-r--r--Source/WebKit2/UIProcess/Plugins/mac/PluginInfoStoreMac.mm10
-rw-r--r--Source/WebKit2/UIProcess/ResponsivenessTimer.h2
-rw-r--r--Source/WebKit2/UIProcess/WebApplicationCacheManagerProxy.h2
-rw-r--r--Source/WebKit2/UIProcess/WebBackForwardList.h2
-rw-r--r--Source/WebKit2/UIProcess/WebContextUserMessageCoders.h2
-rw-r--r--Source/WebKit2/UIProcess/WebFullScreenManagerProxy.h2
-rw-r--r--Source/WebKit2/UIProcess/WebGrammarDetail.h2
-rw-r--r--Source/WebKit2/UIProcess/WebInspectorProxy.h2
-rw-r--r--Source/WebKit2/UIProcess/WebKeyValueStorageManagerProxy.h2
-rw-r--r--Source/WebKit2/UIProcess/WebMediaCacheManagerProxy.h2
-rw-r--r--Source/WebKit2/UIProcess/WebNavigationData.h2
-rw-r--r--Source/WebKit2/UIProcess/WebOpenPanelResultListenerProxy.h2
-rw-r--r--Source/WebKit2/UIProcess/WebPopupMenuProxy.h2
-rw-r--r--Source/WebKit2/UIProcess/WebPreferences.h2
-rw-r--r--Source/WebKit2/UIProcess/qt/PageViewportControllerClientQt.cpp2
-rw-r--r--Source/WebKit2/UIProcess/qt/PageViewportControllerClientQt.h2
-rw-r--r--Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleFrame.cpp5
-rw-r--r--Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleFramePrivate.h1
-rw-r--r--Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.h7
-rw-r--r--Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp4
-rw-r--r--Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageUIClient.cpp8
-rw-r--r--Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageUIClient.h1
-rw-r--r--Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.cpp18
-rw-r--r--Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.h6
-rw-r--r--Source/WebKit2/WebProcess/Plugins/Netscape/mac/NetscapeSandboxFunctions.h3
-rw-r--r--Source/WebKit2/WebProcess/Plugins/Netscape/mac/NetscapeSandboxFunctions.mm21
-rw-r--r--Source/WebKit2/WebProcess/Plugins/PDF/BuiltInPDFView.h1
-rw-r--r--Source/WebKit2/WebProcess/Plugins/PDF/BuiltInPDFView.mm4
-rw-r--r--Source/WebKit2/WebProcess/Plugins/Plugin.h4
-rw-r--r--Source/WebKit2/WebProcess/Plugins/PluginProxy.cpp5
-rw-r--r--Source/WebKit2/WebProcess/Plugins/PluginProxy.h2
-rw-r--r--Source/WebKit2/WebProcess/Plugins/PluginView.cpp12
-rw-r--r--Source/WebKit2/WebProcess/Plugins/PluginView.h1
-rw-r--r--Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp11
-rw-r--r--Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp8
-rw-r--r--Source/WebKit2/WebProcess/WebPage/WebFrame.cpp8
-rw-r--r--Source/WebKit2/WebProcess/WebPage/WebFrame.h1
-rw-r--r--Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm6
-rw-r--r--Source/WebKit2/win/WebKit2.def5
-rw-r--r--Source/WebKit2/win/WebKit2CFLite.def5
77 files changed, 1150 insertions, 85 deletions
diff --git a/Source/WebKit2/ChangeLog b/Source/WebKit2/ChangeLog
index 9e29ab1ca..1a701316d 100644
--- a/Source/WebKit2/ChangeLog
+++ b/Source/WebKit2/ChangeLog
@@ -1,3 +1,529 @@
+2012-09-18 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r128849.
+ http://trac.webkit.org/changeset/128849
+ https://bugs.webkit.org/show_bug.cgi?id=97007
+
+ Causes test_ewk2_view to time out. (Requested by rakuco on
+ #webkit).
+
+ * UIProcess/API/efl/ewk_view.cpp:
+ (ewk_view_webprocess_crashed):
+ * UIProcess/API/efl/ewk_view.h:
+ * UIProcess/API/efl/ewk_view_private.h:
+ * UIProcess/API/efl/ewk_view_ui_client.cpp:
+ (ewk_view_ui_client_attach):
+ * UIProcess/API/efl/tests/test_ewk2_view.cpp:
+ (TEST_F):
+
+2012-09-18 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ [GTK] Set the area of tooltips in WebKit2
+ https://bugs.webkit.org/show_bug.cgi?id=96618
+
+ Reviewed by Martin Robinson.
+
+ In GTK+ tooltips are associated to a widget, if the mouse is moved
+ inside the widget area, the tooltip position doesn't change even
+ if the tooltip text changes. To support multiple tooltips for the
+ same widget, we need to set the area of the widget for every
+ tooltip.
+
+ * Shared/WebHitTestResult.cpp:
+ (WebKit::WebHitTestResult::Data::encode): Encode elementBoundingBox.
+ (WebKit::WebHitTestResult::Data::decode): Decode elementBoundingBox.
+ * Shared/WebHitTestResult.h:
+ (Data): Add elementBoundingBox to WebHitTestResult::Data.
+ (WebKit::WebHitTestResult::Data::elementBoundingBoxInWindowCoordinates):
+ Get the bounding box of the inner non shared node of the hit test
+ result in window coordinates.
+ (WebKit::WebHitTestResult::Data::Data):
+ (WebKit::WebHitTestResult::elementBoundingBox):
+ (WebHitTestResult):
+ * UIProcess/API/gtk/WebKitWebView.cpp:
+ (webkitWebViewMouseTargetChanged): Call webkitWebViewBaseSetTooltipArea.
+ * UIProcess/API/gtk/WebKitWebViewBase.cpp:
+ (webkitWebViewBaseQueryTooltip): Use the tooltipArea if it's not empty.
+ (webkitWebViewBaseSetTooltipArea): Set the tooltipArea.
+ * UIProcess/API/gtk/WebKitWebViewBasePrivate.h:
+
+2012-09-18 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ [Qt] Fix build without the QtQuick module
+
+ Reviewed by Simon Hausmann.
+
+ * Target.pri:
+
+2012-09-17 Eunmi Lee <eunmi15.lee@samsung.com>
+
+ [EFL][WK2] Add NativeWebTouchEvent and handle the Touch event.
+ https://bugs.webkit.org/show_bug.cgi?id=90662
+
+ Reviewed by Gyuyoung Kim.
+
+ Implement codes to handle touch event for WebKit2 EFL port.
+ Additionally, types and structure for touch event are defined because
+ they are not in the Evas.
+
+ * PlatformEfl.cmake:
+ * Shared/NativeWebTouchEvent.h:
+ (NativeWebTouchEvent):
+ * Shared/efl/NativeWebTouchEventEfl.cpp: Added.
+ (WebKit):
+ (WebKit::NativeWebTouchEvent::NativeWebTouchEvent):
+ * Shared/efl/WebEventFactory.cpp:
+ (WebKit):
+ (WebKit::typeForTouchEvent):
+ (WebKit::WebEventFactory::createWebTouchEvent):
+ * Shared/efl/WebEventFactory.h:
+ (WebEventFactory):
+ * UIProcess/API/efl/ewk_touch.h: Added.
+
+2012-09-17 Csaba Osztrogonác <ossy@webkit.org>
+
+ Unreviewed, rolling out r128826 and r128813.
+
+ * WebProcess/Plugins/Netscape/JSNPObject.cpp:
+ (WebKit):
+ (WebKit::JSNPObject::JSNPObject):
+ * WebProcess/Plugins/Netscape/JSNPObject.h:
+ (JSNPObject):
+
+2012-09-17 Kent Tamura <tkent@chromium.org>
+
+ Export RuntimeEnabledFeatures::isLangAttributeAwareFormControlUIEnabled correctly
+ https://bugs.webkit.org/show_bug.cgi?id=96855
+
+ Reviewed by Hajime Morita.
+
+ * win/WebKit2.def: Remove a symbol
+ * win/WebKit2CFLite.def: ditto.
+
+2012-09-17 Byungwoo Lee <bw80.lee@samsung.com>
+
+ [EFL][WK2] Add javascript popup API.
+ https://bugs.webkit.org/show_bug.cgi?id=95672
+
+ Reviewed by Gyuyoung Kim.
+
+ Add smart class member function for javascript alert(), confirm() and prompt().
+
+ * UIProcess/API/efl/ewk_view.cpp:
+ (ewk_view_run_javascript_alert):
+ (ewk_view_run_javascript_confirm):
+ (ewk_view_run_javascript_prompt):
+ * UIProcess/API/efl/ewk_view.h:
+ * UIProcess/API/efl/ewk_view_private.h:
+ * UIProcess/API/efl/ewk_view_ui_client.cpp:
+ (runJavaScriptAlert):
+ (runJavaScriptConfirm):
+ (runJavaScriptPrompt):
+ (ewk_view_ui_client_attach):
+ * UIProcess/API/efl/tests/test_ewk2_view.cpp:
+ Added unit test for javascript popup smart class member function.
+ (checkAlert):
+ (TEST_F):
+ (checkConfirm):
+ (checkPrompt):
+
+2012-09-17 Regina Chung <heejin.r.chung@samsung.com>
+
+ [EFL][WK2] Regression (r128163)
+ https://bugs.webkit.org/show_bug.cgi?id=96610
+
+ Reviewed by Gyuyoung Kim.
+
+ While removing compile warnings r128163 changed the logic of code for entering
+ accelerated compositing mode, resulting in never being able to enter it.
+ Changed back to the correct code and fixed the compile warning by using an
+ appropriate EINA macro.
+
+ * UIProcess/API/efl/ewk_view.cpp:
+ (ewk_view_accelerated_compositing_mode_enter): Changed EINA_SAFETY_ON_NULL_RETURN_VAL to *if* condition statement.
+
+2012-09-17 Sam Weinig <sam@webkit.org>
+
+ Fix the Snow Leopard build.
+
+ * PluginProcess/mac/PluginProcessMac.mm:
+ (WebKit::PluginProcess::platformInitialize):
+
+2012-09-17 Sam Weinig <sam@webkit.org>
+
+ Add experimental code to enter a sandbox for a plug-in.
+ Based on a patch by Ivan Krstić.
+ <rdar://problem/11823151>
+
+ Reviewed by Anders Carlsson.
+
+ Enter a sandbox for a plug-in if a sandbox profile is found in /usr/share/sandbox/ that
+ has the plug-ins bundle identifier for a name.
+
+ * PluginProcess/mac/PluginProcessMac.mm:
+ (WebKit::initializeSandbox):
+ (WebKit::PluginProcess::platformInitialize):
+ Enter the sandbox provided if a profile can be found.
+
+ * WebProcess/Plugins/Netscape/mac/NetscapeSandboxFunctions.h:
+ * WebProcess/Plugins/Netscape/mac/NetscapeSandboxFunctions.mm:
+ (enterSandbox):
+ Factor out the core sandbox entering logic (so if can be used above) and make sure
+ that Remote Save Panel is enabled.
+
+2012-09-17 Mark Hahnenberg <mhahnenberg@apple.com>
+
+ Fixing the build after http://trac.webkit.org/changeset/128813
+
+ * WebProcess/Plugins/Netscape/JSNPObject.cpp:
+ (WebKit):
+ (WebKit::JSNPObject::JSNPObject):
+ * WebProcess/Plugins/Netscape/JSNPObject.h:
+ (JSNPObject):
+
+2012-09-17 Anders Carlsson <andersca@apple.com>
+
+ Crash if we fail to allocate memory for the argument encoder buffer.
+ https://bugs.webkit.org/show_bug.cgi?id=88367
+
+ Reviewed by Andreas Kling.
+ <rdar://problem/11488239>
+
+ Since there's no way to recover from malloc returning null here, just crash.
+
+ * Platform/CoreIPC/ArgumentEncoder.cpp:
+ (CoreIPC::ArgumentEncoder::grow):
+
+2012-09-17 Beth Dakin <bdakin@apple.com>
+
+ https://bugs.webkit.org/show_bug.cgi?id=96936
+ Opt into layers for fixed positioned elements for TiledDrawingArea
+
+ Reviewed by Tim Horton.
+
+ This code already exists in DrawingAreaImpl, and we need it for
+ TiledCoreAnimationDrawingArea as well.
+ * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
+ (WebKit::TiledCoreAnimationDrawingArea::updatePreferences):
+
+2012-09-17 Anders Carlsson <andersca@apple.com>
+
+ Don't load a blocked plug-in if a non-blocked version of the same plug-in exists
+ https://bugs.webkit.org/show_bug.cgi?id=96933
+ <rdar://problem/12206720>
+
+ Reviewed by Andreas Kling.
+
+ If a plug-in with the same bundle identifier already exists and it's blocked, remove it and replace it
+ with the other version.
+
+ * UIProcess/Plugins/mac/PluginInfoStoreMac.mm:
+ (WebKit::PluginInfoStore::shouldUsePlugin):
+
+2012-09-17 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ [Qt] Remove 'using namespace WebCore' from header file
+
+ Broke the build on Mac OS X by causing clashes between Fixed from
+ /usr/include/MacTypes.h and Source/WebCore/platform/Length.h.
+
+ Reviewed by Simon Hausmann..
+
+ * UIProcess/PageViewportController.cpp:
+ * UIProcess/PageViewportController.h:
+ (PageViewportController):
+ (WebKit::PageViewportController::contentsLayoutSize):
+ (WebKit):
+ * UIProcess/qt/PageViewportControllerClientQt.cpp:
+ * UIProcess/qt/PageViewportControllerClientQt.h:
+ (PageViewportControllerClientQt):
+
+2012-09-15 Vivek Galatage <vivekgalatage@gmail.com>
+
+ WinCairo build fix due to missing symbols for setImagesEnabled and setStorageBlockingPolicy
+ https://bugs.webkit.org/show_bug.cgi?id=96866
+
+ Reviewed by Kentaro Hara.
+
+ Adding missing symbol defines in the def file to fix the build break
+ for WinCairo
+
+ * win/WebKit2CFLite.def:
+
+2012-09-15 Jinwoo Song <jinwoo7.song@samsung.com>
+
+ [EFL][WK2] Provide implementation for PageClientImpl::processDidCrash()
+ https://bugs.webkit.org/show_bug.cgi?id=96197
+
+ Reviewed by Gyuyoung Kim.
+
+ WebKit2 EFL does not have an implementation for PageClientImpl::processDidCrash().
+ So when WebProcess has crashed, UI process does nothing and is left alone as it is.
+
+ This patch checks if loading was ongoing, if so, set the load progress as 1.
+ Then send a signal callback "webprocess,crashed" for an application to handle it.
+ If the application does not handle the crash event, show an Eina Log warning message
+ with a url at web process exit and load an error page.
+
+ * UIProcess/API/efl/PageClientImpl.cpp:
+ (WebKit::PageClientImpl::processDidCrash):
+ * UIProcess/API/efl/ewk_private.h:
+ * UIProcess/API/efl/ewk_view.cpp:
+ (ewk_view_webprocess_crashed):
+ * UIProcess/API/efl/ewk_view.h:
+ * UIProcess/API/efl/ewk_view_private.h:
+
+2012-09-15 Pierre Rossi <pierre.rossi@gmail.com>
+
+ [Qt] QDoc fixes for Qt 5 documentation
+ https://bugs.webkit.org/show_bug.cgi?id=96796
+
+ Reviewed by Simon Hausmann.
+
+ Fixup miscellaneous qdoc commands syntax.
+
+ * UIProcess/API/qt/qquickwebview.cpp:
+ * UIProcess/API/qt/qwebloadrequest.cpp:
+
+2012-09-14 Gyuyoung Kim <gyuyoung.kim@samsung.com>
+
+ Add *explicit* keyword to constructors to WebKit2/UIProcess
+ https://bugs.webkit.org/show_bug.cgi?id=96732
+
+ Reviewed by Kentaro Hara.
+
+ As a step of *explicit* cleanup for constructors which have only one parameter,
+ *explicit* is added to WebKit2/UIProcess in order to avoid implicit type conversion.
+
+ * UIProcess/Authentication/AuthenticationDecisionListener.h:
+ (AuthenticationDecisionListener):
+ * UIProcess/Authentication/WebCredential.h:
+ (WebCredential):
+ * UIProcess/Authentication/WebProtectionSpace.h:
+ (WebProtectionSpace):
+ * UIProcess/GenericCallback.h:
+ (WebKit::CallbackBase::CallbackBase):
+ * UIProcess/InspectorServer/WebSocketServer.h:
+ * UIProcess/ResponsivenessTimer.h:
+ (ResponsivenessTimer):
+ * UIProcess/WebApplicationCacheManagerProxy.h:
+ (WebApplicationCacheManagerProxy):
+ * UIProcess/WebBackForwardList.h:
+ (WebBackForwardList):
+ * UIProcess/WebContextUserMessageCoders.h:
+ (WebKit::WebContextUserMessageEncoder::WebContextUserMessageEncoder):
+ * UIProcess/WebFullScreenManagerProxy.h:
+ (WebFullScreenManagerProxy):
+ * UIProcess/WebGrammarDetail.h:
+ (WebGrammarDetail):
+ * UIProcess/WebInspectorProxy.h:
+ (WebInspectorProxy):
+ * UIProcess/WebKeyValueStorageManagerProxy.h:
+ (WebKeyValueStorageManagerProxy):
+ * UIProcess/WebMediaCacheManagerProxy.h:
+ (WebMediaCacheManagerProxy):
+ * UIProcess/WebNavigationData.h:
+ (WebNavigationData):
+ * UIProcess/WebOpenPanelResultListenerProxy.h:
+ (WebOpenPanelResultListenerProxy):
+ * UIProcess/WebPopupMenuProxy.h:
+ (WebKit::WebPopupMenuProxy::WebPopupMenuProxy):
+ * UIProcess/WebPreferences.h:
+ (WebPreferences):
+
+2012-09-14 Beth Dakin <bdakin@apple.com>
+
+ https://bugs.webkit.org/show_bug.cgi?id=96846
+ Tests failing on WK2 bots after giving fixed positioning its own
+ stacking context
+
+ Reviewed by Geoffrey Garen.
+
+ Tests are failing because I checked in updated results that expect
+ fixed positioning to create a stacking context. However,
+ WebKitTestRunner does not enable ScrollingCoordinator, so the code
+ that I added to enable stacking contexts for fixedPos is never
+ actually running. This patch moves that code to a place where it will
+ run for the testing tools, which matches the patch for WK1.
+ * WebProcess/WebPage/DrawingAreaImpl.cpp:
+ (WebKit::DrawingAreaImpl::updatePreferences):
+ * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
+ (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea):
+
+2012-09-14 Julien Chaffraix <jchaffraix@webkit.org>
+
+ Revert r127457 and following fixes due to several hit-testing regressions
+ https://bugs.webkit.org/show_bug.cgi?id=96830
+
+ Reviewed by Antonio Gomes.
+
+ This change reverts r127457, r127863 and r128505.
+
+ * win/WebKit2.def:
+ * win/WebKit2CFLite.def:
+
+2012-09-14 Adam Barth <abarth@webkit.org>
+
+ Remove webkitPostMessage
+ https://bugs.webkit.org/show_bug.cgi?id=96577
+
+ Reviewed by Ojan Vafai.
+
+ Add ENABLE_LEGACY_VENDOR_PREFIXES flag.
+
+ * Configurations/FeatureDefines.xcconfig:
+
+2012-09-14 Jeffrey Pfau <jpfau@apple.com>
+
+ Allow third-party storage blocking setting to change while a page is loaded
+ https://bugs.webkit.org/show_bug.cgi?id=95790
+
+ Reviewed by Brady Eidson.
+
+ Inform plugins about changes to the storage blocking policy by way of the private browsing feature.
+
+ * PluginProcess/PluginControllerProxy.cpp:
+ (WebKit::PluginControllerProxy::storageBlockingStateChanged):
+ (WebKit):
+ * PluginProcess/PluginControllerProxy.h:
+ (PluginControllerProxy):
+ * PluginProcess/PluginControllerProxy.messages.in: Add WK2 message for storageBlockingStateChanged.
+ * WebProcess/Plugins/Netscape/NetscapePlugin.cpp:
+ (WebKit::NetscapePlugin::storageBlockingStateChanged):
+ (WebKit):
+ (WebKit::NetscapePlugin::privateBrowsingStateChanged):
+ (WebKit::NetscapePlugin::updateNPNPrivateMode): Set plugin's private browsing if either private browsing or storage blocking is enabled.
+ * WebProcess/Plugins/Netscape/NetscapePlugin.h:
+ (NetscapePlugin):
+ * WebProcess/Plugins/PDF/BuiltInPDFView.h:
+ (BuiltInPDFView):
+ * WebProcess/Plugins/PDF/BuiltInPDFView.mm: Treat storageBlockingStateChanged as a no-op.
+ (WebKit::BuiltInPDFView::storageBlockingStateChanged):
+ (WebKit):
+ * WebProcess/Plugins/Plugin.h: Add pure virtual storageBlockingStateChanged method.
+ (Plugin):
+ * WebProcess/Plugins/PluginProxy.cpp:
+ (WebKit::PluginProxy::storageBlockingStateChanged):
+ (WebKit):
+ * WebProcess/Plugins/PluginProxy.h:
+ (PluginProxy):
+ * WebProcess/Plugins/PluginView.cpp:
+ (WebKit::PluginView::storageBlockingStateChanged):
+ (WebKit):
+ * WebProcess/Plugins/PluginView.h:
+ (PluginView):
+ * win/WebKit2.def:
+
+2012-09-14 Beth Dakin <bdakin@apple.com>
+
+ https://bugs.webkit.org/show_bug.cgi?id=96688
+ Put position:fixed elements in their own layers and allow them to
+ create a stacking context
+ -and corresponding-
+ <rdar://problem/11467961>
+
+ Reviewed by Simon Fraser.
+
+ Soon we want pages with fixed positioned elements to be able to be
+ scrolled by the ScrollingCoordinator. As a part of that work, we have
+ to composite fixed position elements, and we have to allow those
+ elements to create a stacking context.
+ * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
+ (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea):
+
+2012-09-14 Bo Liu <boliu@chromium.org>
+
+ Add in-place reload behavior to ImagesEnabled setting
+ https://bugs.webkit.org/show_bug.cgi?id=95478
+
+ Reviewed by Adam Barth.
+
+ Export WebCore::Settings::setImagesEnabled symbol.
+
+ * win/WebKit2.def:
+
+2012-09-14 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com>
+
+ [EFL] RefPtr<Evas_Object> unit tests fails
+ https://bugs.webkit.org/show_bug.cgi?id=96809
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Added missing return.
+
+ * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h:
+ (EWK2UnitTest::EWK2UnitTestBase::canvas):
+
+2012-09-14 Christophe Dumez <christophe.dumez@intel.com>
+
+ WebKitTestRunner needs layoutTestController.dumpDatabaseCallbacks
+ https://bugs.webkit.org/show_bug.cgi?id=57570
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Add new didExceedDatabaseQuota callback to WKBundlePageUIClient
+ and call it from WebChromeClient::exceededDatabaseQuota().
+ This is needed by WebKitTestRunner to dump information about
+ database callbacks.
+
+ * Shared/APIClientTraits.h:
+ * WebProcess/InjectedBundle/API/c/WKBundlePage.h:
+ * WebProcess/InjectedBundle/InjectedBundle.cpp:
+ (WebKit::InjectedBundle::setDatabaseQuota): Call WebDatabaseManager::setQuotaForOrigin()
+ with "file__0" instead of "file:///" as origin identifier. WebDatabaseManager expects
+ a database identifier, not a string representation of the security origin. "file__0" is
+ the string that is used as databaseIdentifier of local files. This bug was causing the
+ database quota not to be set. The test cases would therefore fail due to the quota being
+ 0 instead of the value explicitly set.
+ * WebProcess/InjectedBundle/InjectedBundlePageUIClient.cpp:
+ (WebKit::InjectedBundlePageUIClient::didExceedDatabaseQuota):
+ (WebKit):
+ * WebProcess/InjectedBundle/InjectedBundlePageUIClient.h:
+ (InjectedBundlePageUIClient):
+ * WebProcess/WebCoreSupport/WebChromeClient.cpp:
+ (WebKit::WebChromeClient::exceededDatabaseQuota):
+
+2012-09-14 Christophe Dumez <christophe.dumez@intel.com>
+
+ WebKitTestRunner needs layoutTestController.setStopProvisionalFrameLoads
+ https://bugs.webkit.org/show_bug.cgi?id=42691
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Add WKBundleFrame private API to stop loading of a frame.
+ This is needed by WebKitTestRunner to implement
+ testrunner.setStopProvisionalFrameLoads.
+
+ Original patch by Alexey Proskuryakov.
+
+ * WebProcess/InjectedBundle/API/c/WKBundleFrame.cpp:
+ (WKBundleFrameStopLoading):
+ * WebProcess/InjectedBundle/API/c/WKBundleFramePrivate.h:
+ * WebProcess/WebPage/WebFrame.cpp:
+ (WebKit::WebFrame::stopLoading):
+ (WebKit):
+ * WebProcess/WebPage/WebFrame.h:
+ (WebFrame):
+
+2012-09-14 Kenneth Rohde Christiansen <kenneth@webkit.org>
+
+ [EFL] Add unit test for RefPtr<Evas_Object>
+ https://bugs.webkit.org/show_bug.cgi?id=96776
+
+ Reviewed by Simon Hausmann.
+
+ Basic testing of the new EFL specific RefPtr type.
+
+ * PlatformEfl.cmake:
+ * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h:
+ (EWK2UnitTest::EWK2UnitTestBase::backingStore):
+ (EWK2UnitTest::EWK2UnitTestBase::canvas):
+
+ Add some new accessors for Ecore_Evas and Evas*.
+
+ * UIProcess/API/efl/tests/test_ewk2_refptr_evas_object.cpp: Added.
+ (TEST_F):
+
2012-09-14 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
[Qt] Move .mm file to OBJECTIVE_SOURCES
diff --git a/Source/WebKit2/Configurations/FeatureDefines.xcconfig b/Source/WebKit2/Configurations/FeatureDefines.xcconfig
index 8aa9cd33a..f142ee8cf 100644
--- a/Source/WebKit2/Configurations/FeatureDefines.xcconfig
+++ b/Source/WebKit2/Configurations/FeatureDefines.xcconfig
@@ -96,6 +96,7 @@ ENABLE_LEGACY_NOTIFICATIONS_macosx = $(ENABLE_LEGACY_NOTIFICATIONS_macosx_$(TARG
ENABLE_LEGACY_NOTIFICATIONS_macosx_1070 = ;
ENABLE_LEGACY_NOTIFICATIONS_macosx_1080 = ENABLE_LEGACY_NOTIFICATIONS;
ENABLE_LEGACY_NOTIFICATIONS_macosx_1090 = ENABLE_LEGACY_NOTIFICATIONS;
+ENABLE_LEGACY_VENDOR_PREFIXES = ENABLE_LEGACY_VENDOR_PREFIXES;
ENABLE_LINK_PREFETCH = ;
ENABLE_LINK_PRERENDER = ;
ENABLE_MATHML = ENABLE_MATHML;
@@ -140,4 +141,4 @@ ENABLE_WIDGET_REGION_macosx = ENABLE_WIDGET_REGION;
ENABLE_WORKERS = ENABLE_WORKERS;
ENABLE_XSLT = ENABLE_XSLT;
-FEATURE_DEFINES = $(ENABLE_3D_RENDERING) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ANIMATION_API) $(ENABLE_BLOB) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CSP_NEXT) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_EXCLUSIONS) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_FILTERS) $(ENABLE_CSS_HIERARCHIES) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_REGIONS) $(ENABLE_CSS_SHADERS) $(ENABLE_CSS_STICKY_POSITION) $(ENABLE_CSS_VARIABLES) $(ENABLE_CSS3_TEXT_DECORATION) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DATA_TRANSFER_ITEMS) $(ENABLE_DETAILS_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DIALOG_ELEMENT) $(ENABLE_DIRECTORY_UPLOAD) $(ENABLE_FILE_SYSTEM) $(ENABLE_FILTERS) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_HIGH_DPI_CANVAS) $(ENABLE_ICONDATABASE) $(ENABLE_IFRAME_SEAMLESS) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INPUT_SPEECH) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_JAVASCRIPT_DEBUGGER) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_NOTIFICATIONS) $(ENABLE_LINK_PREFETCH) $(ENABLE_LINK_PRERENDER) $(ENABLE_MATHML) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MICRODATA) $(ENABLE_MUTATION_OBSERVERS) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NOTIFICATIONS) $(ENABLE_PAGE_VISIBILITY_API) $(ENABLE_PROGRESS_ELEMENT) $(ENABLE_QUOTA) $(ENABLE_REQUEST_ANIMATION_FRAME) $(ENABLE_SCRIPTED_SPEECH) $(ENABLE_SHADOW_DOM) $(ENABLE_SHARED_WORKERS) $(ENABLE_SQL_DATABASE) $(ENABLE_STYLE_SCOPED) $(ENABLE_SVG) $(ENABLE_SVG_DOM_OBJC_BINDINGS) $(ENABLE_SVG_FONTS) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TEXT_NOTIFICATIONS_ONLY) $(ENABLE_TOUCH_ICON_LOADING) $(ENABLE_UNDO_MANAGER) $(ENABLE_VIDEO) $(ENABLE_VIDEO_TRACK) $(ENABLE_WEBGL) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_SOCKETS) $(ENABLE_WEB_TIMING) $(ENABLE_WIDGET_REGION) $(ENABLE_WORKERS) $(ENABLE_XSLT);
+FEATURE_DEFINES = $(ENABLE_3D_RENDERING) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ANIMATION_API) $(ENABLE_BLOB) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CSP_NEXT) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_EXCLUSIONS) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_FILTERS) $(ENABLE_CSS_HIERARCHIES) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_REGIONS) $(ENABLE_CSS_SHADERS) $(ENABLE_CSS_STICKY_POSITION) $(ENABLE_CSS_VARIABLES) $(ENABLE_CSS3_TEXT_DECORATION) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DATA_TRANSFER_ITEMS) $(ENABLE_DETAILS_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DIALOG_ELEMENT) $(ENABLE_DIRECTORY_UPLOAD) $(ENABLE_FILE_SYSTEM) $(ENABLE_FILTERS) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_HIGH_DPI_CANVAS) $(ENABLE_ICONDATABASE) $(ENABLE_IFRAME_SEAMLESS) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INPUT_SPEECH) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_JAVASCRIPT_DEBUGGER) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_NOTIFICATIONS) $(LEGACY_VENDOR_PREFIXES) $(ENABLE_LINK_PREFETCH) $(ENABLE_LINK_PRERENDER) $(ENABLE_MATHML) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MICRODATA) $(ENABLE_MUTATION_OBSERVERS) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NOTIFICATIONS) $(ENABLE_PAGE_VISIBILITY_API) $(ENABLE_PROGRESS_ELEMENT) $(ENABLE_QUOTA) $(ENABLE_REQUEST_ANIMATION_FRAME) $(ENABLE_SCRIPTED_SPEECH) $(ENABLE_SHADOW_DOM) $(ENABLE_SHARED_WORKERS) $(ENABLE_SQL_DATABASE) $(ENABLE_STYLE_SCOPED) $(ENABLE_SVG) $(ENABLE_SVG_DOM_OBJC_BINDINGS) $(ENABLE_SVG_FONTS) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TEXT_NOTIFICATIONS_ONLY) $(ENABLE_TOUCH_ICON_LOADING) $(ENABLE_UNDO_MANAGER) $(ENABLE_VIDEO) $(ENABLE_VIDEO_TRACK) $(ENABLE_WEBGL) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_SOCKETS) $(ENABLE_WEB_TIMING) $(ENABLE_WIDGET_REGION) $(ENABLE_WORKERS) $(ENABLE_XSLT);
diff --git a/Source/WebKit2/Configurations/Version.xcconfig b/Source/WebKit2/Configurations/Version.xcconfig
index b2a1841f0..b7b7a526a 100644
--- a/Source/WebKit2/Configurations/Version.xcconfig
+++ b/Source/WebKit2/Configurations/Version.xcconfig
@@ -22,7 +22,7 @@
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
MAJOR_VERSION = 537;
-MINOR_VERSION = 10;
+MINOR_VERSION = 11;
TINY_VERSION = 0;
FULL_VERSION = $(MAJOR_VERSION).$(MINOR_VERSION);
diff --git a/Source/WebKit2/Platform/CoreIPC/ArgumentEncoder.cpp b/Source/WebKit2/Platform/CoreIPC/ArgumentEncoder.cpp
index 64c2048cf..96688a172 100644
--- a/Source/WebKit2/Platform/CoreIPC/ArgumentEncoder.cpp
+++ b/Source/WebKit2/Platform/CoreIPC/ArgumentEncoder.cpp
@@ -80,8 +80,9 @@ uint8_t* ArgumentEncoder::grow(unsigned alignment, size_t size)
m_buffer = static_cast<uint8_t*>(malloc(newCapacity));
else
m_buffer = static_cast<uint8_t*>(realloc(m_buffer, newCapacity));
-
- // FIXME: What should we do if allocating memory fails?
+
+ if (!m_buffer)
+ CRASH();
m_bufferCapacity = newCapacity;
}
diff --git a/Source/WebKit2/PlatformEfl.cmake b/Source/WebKit2/PlatformEfl.cmake
index 9418d91b7..80210b9f4 100644
--- a/Source/WebKit2/PlatformEfl.cmake
+++ b/Source/WebKit2/PlatformEfl.cmake
@@ -17,6 +17,7 @@ LIST(APPEND WebKit2_SOURCES
Shared/efl/NativeWebKeyboardEventEfl.cpp
Shared/efl/NativeWebWheelEventEfl.cpp
Shared/efl/NativeWebMouseEventEfl.cpp
+ Shared/efl/NativeWebTouchEventEfl.cpp
Shared/efl/ProcessExecutablePathEfl.cpp
Shared/efl/WebEventFactory.cpp
@@ -286,6 +287,7 @@ SET(EWK2UnitTests_BINARIES
test_ewk2_cookie_manager
test_ewk2_download_job
test_ewk2_eina_shared_string
+ test_ewk2_refptr_evas_object
test_ewk2_intents
test_ewk2_settings
test_ewk2_view
diff --git a/Source/WebKit2/PluginProcess/PluginControllerProxy.cpp b/Source/WebKit2/PluginProcess/PluginControllerProxy.cpp
index 2ad41daa5..31a5d61a6 100644
--- a/Source/WebKit2/PluginProcess/PluginControllerProxy.cpp
+++ b/Source/WebKit2/PluginProcess/PluginControllerProxy.cpp
@@ -563,6 +563,14 @@ void PluginControllerProxy::getPluginScriptableNPObject(uint64_t& pluginScriptab
releaseNPObject(pluginScriptableNPObject);
}
+void PluginControllerProxy::storageBlockingStateChanged(bool isStorageBlockingEnabled)
+{
+ if (m_storageBlockingEnabled != isStorageBlockingEnabled) {
+ m_storageBlockingEnabled = isStorageBlockingEnabled;
+ m_plugin->storageBlockingStateChanged(m_storageBlockingEnabled);
+ }
+}
+
void PluginControllerProxy::privateBrowsingStateChanged(bool isPrivateBrowsingEnabled)
{
m_isPrivateBrowsingEnabled = isPrivateBrowsingEnabled;
diff --git a/Source/WebKit2/PluginProcess/PluginControllerProxy.h b/Source/WebKit2/PluginProcess/PluginControllerProxy.h
index a9d35a663..b4a40673e 100644
--- a/Source/WebKit2/PluginProcess/PluginControllerProxy.h
+++ b/Source/WebKit2/PluginProcess/PluginControllerProxy.h
@@ -35,6 +35,7 @@
#include "ShareableBitmap.h"
#include "WebProcessConnectionMessages.h"
#include <WebCore/RunLoop.h>
+#include <WebCore/SecurityOrigin.h>
#include <wtf/Noncopyable.h>
namespace CoreIPC {
@@ -152,6 +153,7 @@ private:
void updateLayerHostingContext(LayerHostingMode);
#endif
+ void storageBlockingStateChanged(bool);
void privateBrowsingStateChanged(bool);
void getFormValue(bool& returnValue, String& formValue);
@@ -163,6 +165,7 @@ private:
uint64_t m_pluginInstanceID;
String m_userAgent;
+ bool m_storageBlockingEnabled;
bool m_isPrivateBrowsingEnabled;
bool m_isAcceleratedCompositingEnabled;
bool m_isInitializing;
diff --git a/Source/WebKit2/PluginProcess/PluginControllerProxy.messages.in b/Source/WebKit2/PluginProcess/PluginControllerProxy.messages.in
index 371bee237..d7c2d02b2 100644
--- a/Source/WebKit2/PluginProcess/PluginControllerProxy.messages.in
+++ b/Source/WebKit2/PluginProcess/PluginControllerProxy.messages.in
@@ -106,6 +106,9 @@ messages -> PluginControllerProxy {
# Return a snapshot of the plugin
Snapshot() -> (WebKit::ShareableBitmap::Handle backingStoreHandle)
+ # Sent when storage blocking policy changes
+ StorageBlockingStateChanged(bool storageBlockingEnabled)
+
# Sent when private browsing is enabled or disabled
PrivateBrowsingStateChanged(bool isPrivateBrowsingEnabled)
diff --git a/Source/WebKit2/PluginProcess/mac/PluginProcessMac.mm b/Source/WebKit2/PluginProcess/mac/PluginProcessMac.mm
index f4e834c57..7a8cb35f4 100644
--- a/Source/WebKit2/PluginProcess/mac/PluginProcessMac.mm
+++ b/Source/WebKit2/PluginProcess/mac/PluginProcessMac.mm
@@ -39,6 +39,10 @@
#import <objc/runtime.h>
#import <wtf/HashSet.h>
+#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1070
+#import "NetscapeSandboxFunctions.h"
+#endif
+
namespace WebKit {
static pthread_once_t shouldCallRealDebuggerOnce = PTHREAD_ONCE_INIT;
@@ -262,6 +266,33 @@ void PluginProcess::setFullscreenWindowIsShowing(bool fullscreenWindowIsShowing)
m_connection->send(Messages::PluginProcessProxy::SetFullscreenWindowIsShowing(fullscreenWindowIsShowing), 0);
}
+#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1070
+static void initializeSandbox(const String& pluginPath)
+{
+ RetainPtr<CFStringRef> cfPluginPath = adoptCF(pluginPath.createCFString());
+ RetainPtr<CFURLRef> pluginURL = adoptCF(CFURLCreateWithFileSystemPath(0, cfPluginPath.get(), kCFURLPOSIXPathStyle, false));
+ if (!pluginURL)
+ return;
+
+ RetainPtr<CFBundleRef> pluginBundle = adoptCF(CFBundleCreate(kCFAllocatorDefault, pluginURL.get()));
+ if (!pluginBundle)
+ return;
+
+ CFStringRef bundleIdentifier = CFBundleGetIdentifier(pluginBundle.get());
+ if (!bundleIdentifier)
+ return;
+
+ RetainPtr<CFStringRef> sandboxFileName = CFStringCreateWithFormat(0, 0, CFSTR("%@.sb"), bundleIdentifier);
+ RetainPtr<CFURLRef> pluginSandboxDirectory = adoptCF(CFURLCreateWithFileSystemPath(0, CFSTR("/usr/share/sandbox/"), kCFURLPOSIXPathStyle, YES));
+ RetainPtr<CFURLRef> sandboxURL = adoptCF(CFURLCreateWithFileSystemPathRelativeToBase(0, sandboxFileName.get(), kCFURLPOSIXPathStyle, FALSE, pluginSandboxDirectory.get()));
+ RetainPtr<NSString> profileString = [[NSString alloc] initWithContentsOfURL:(NSURL *)sandboxURL.get() encoding:NSUTF8StringEncoding error:NULL];
+ if (!profileString)
+ return;
+
+ enterSandbox([profileString.get() UTF8String], 0, 0);
+}
+#endif
+
void PluginProcess::platformInitialize(const PluginProcessCreationParameters& parameters)
{
m_compositingRenderServerPort = parameters.acceleratedCompositingPort.port();
@@ -273,6 +304,10 @@ void PluginProcess::platformInitialize(const PluginProcessCreationParameters& pa
(NSString *)parameters.parentProcessName];
WKSetVisibleApplicationName((CFStringRef)applicationName);
+
+#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1070
+ initializeSandbox(m_pluginPath);
+#endif
}
} // namespace WebKit
diff --git a/Source/WebKit2/Shared/APIClientTraits.h b/Source/WebKit2/Shared/APIClientTraits.h
index 3fd03cd31..9b7663d0a 100644
--- a/Source/WebKit2/Shared/APIClientTraits.h
+++ b/Source/WebKit2/Shared/APIClientTraits.h
@@ -55,7 +55,7 @@ template<> struct APIClientTraits<WKBundlePageFullScreenClient> {
};
template<> struct APIClientTraits<WKBundlePageUIClient> {
- static const size_t interfaceSizesByVersion[2];
+ static const size_t interfaceSizesByVersion[3];
};
template<> struct APIClientTraits<WKPageContextMenuClient> {
diff --git a/Source/WebKit2/Shared/NativeWebTouchEvent.h b/Source/WebKit2/Shared/NativeWebTouchEvent.h
index f20214a8f..49bbf8010 100644
--- a/Source/WebKit2/Shared/NativeWebTouchEvent.h
+++ b/Source/WebKit2/Shared/NativeWebTouchEvent.h
@@ -30,6 +30,9 @@
#if PLATFORM(QT)
#include <QTouchEvent>
+#elif PLATFORM(EFL)
+#include "ewk_touch.h"
+#include <Evas.h>
#endif
namespace WebKit {
@@ -38,6 +41,8 @@ class NativeWebTouchEvent : public WebTouchEvent {
public:
#if PLATFORM(QT)
explicit NativeWebTouchEvent(const QTouchEvent*, const QTransform& fromItemTransform);
+#elif PLATFORM(EFL)
+ NativeWebTouchEvent(Ewk_Touch_Event_Type, const Eina_List*, const Evas_Modifier*, const Evas_Point*, double timestamp);
#endif
#if PLATFORM(QT)
diff --git a/Source/WebKit2/Shared/WebHitTestResult.cpp b/Source/WebKit2/Shared/WebHitTestResult.cpp
index 26eaf6a0a..799ed5220 100644
--- a/Source/WebKit2/Shared/WebHitTestResult.cpp
+++ b/Source/WebKit2/Shared/WebHitTestResult.cpp
@@ -43,6 +43,7 @@ void WebHitTestResult::Data::encode(CoreIPC::ArgumentEncoder* encoder) const
encoder->encode(linkLabel);
encoder->encode(linkTitle);
encoder->encode(isContentEditable);
+ encoder->encode(elementBoundingBox);
}
bool WebHitTestResult::Data::decode(CoreIPC::ArgumentDecoder* decoder, WebHitTestResult::Data& hitTestResultData)
@@ -53,7 +54,8 @@ bool WebHitTestResult::Data::decode(CoreIPC::ArgumentDecoder* decoder, WebHitTes
|| !decoder->decode(hitTestResultData.absoluteMediaURL)
|| !decoder->decode(hitTestResultData.linkLabel)
|| !decoder->decode(hitTestResultData.linkTitle)
- || !decoder->decode(hitTestResultData.isContentEditable))
+ || !decoder->decode(hitTestResultData.isContentEditable)
+ || !decoder->decode(hitTestResultData.elementBoundingBox))
return false;
return true;
diff --git a/Source/WebKit2/Shared/WebHitTestResult.h b/Source/WebKit2/Shared/WebHitTestResult.h
index 798a2db2b..e53a5c7e2 100644
--- a/Source/WebKit2/Shared/WebHitTestResult.h
+++ b/Source/WebKit2/Shared/WebHitTestResult.h
@@ -21,8 +21,10 @@
#define WebHitTestResult_h
#include "APIObject.h"
+#include <WebCore/FrameView.h>
#include <WebCore/HitTestResult.h>
#include <WebCore/KURL.h>
+#include <WebCore/Node.h>
#include <wtf/Forward.h>
#include <wtf/PassRefPtr.h>
#include <wtf/RefPtr.h>
@@ -49,11 +51,29 @@ public:
String linkLabel;
String linkTitle;
bool isContentEditable;
+ WebCore::IntRect elementBoundingBox;
Data()
{
}
+ WebCore::IntRect elementBoundingBoxInWindowCoordinates(const WebCore::HitTestResult& hitTestResult)
+ {
+ WebCore::Node* node = hitTestResult.innerNonSharedNode();
+ if (!node)
+ return WebCore::IntRect();
+
+ WebCore::Frame* frame = node->document()->frame();
+ if (!frame)
+ return WebCore::IntRect();
+
+ WebCore::FrameView* view = frame->view();
+ if (!view)
+ return WebCore::IntRect();
+
+ return view->contentsToWindow(node->pixelSnappedBoundingBox());
+ }
+
explicit Data(const WebCore::HitTestResult& hitTestResult)
: absoluteImageURL(hitTestResult.absoluteImageURL().string())
, absolutePDFURL(hitTestResult.absolutePDFURL().string())
@@ -62,6 +82,7 @@ public:
, linkLabel(hitTestResult.textContent())
, linkTitle(hitTestResult.titleDisplayString())
, isContentEditable(hitTestResult.isContentEditable())
+ , elementBoundingBox(elementBoundingBoxInWindowCoordinates(hitTestResult))
{
}
@@ -81,6 +102,8 @@ public:
bool isContentEditable() const { return m_data.isContentEditable; }
+ WebCore::IntRect elementBoundingBox() const { return m_data.elementBoundingBox; }
+
private:
explicit WebHitTestResult(const WebHitTestResult::Data& hitTestResultData)
: m_data(hitTestResultData)
diff --git a/Source/WebKit2/Shared/efl/NativeWebTouchEventEfl.cpp b/Source/WebKit2/Shared/efl/NativeWebTouchEventEfl.cpp
new file mode 100644
index 000000000..70d8bb7c7
--- /dev/null
+++ b/Source/WebKit2/Shared/efl/NativeWebTouchEventEfl.cpp
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2012 Samsung Electronics
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "NativeWebTouchEvent.h"
+
+#include "WebEventFactory.h"
+
+#if ENABLE(TOUCH_EVENTS)
+
+namespace WebKit {
+
+NativeWebTouchEvent::NativeWebTouchEvent(Ewk_Touch_Event_Type type, const Eina_List* points, const Evas_Modifier* modifiers, const Evas_Point* position, double timestamp)
+ : WebTouchEvent(WebEventFactory::createWebTouchEvent(type, points, modifiers, position, timestamp))
+{
+}
+
+} // namespace WebKit
+
+#endif
diff --git a/Source/WebKit2/Shared/efl/WebEventFactory.cpp b/Source/WebKit2/Shared/efl/WebEventFactory.cpp
index 74a0530a3..6e50ed199 100644
--- a/Source/WebKit2/Shared/efl/WebEventFactory.cpp
+++ b/Source/WebKit2/Shared/efl/WebEventFactory.cpp
@@ -192,4 +192,56 @@ WebKeyboardEvent WebEventFactory::createWebKeyboardEvent(const Evas_Event_Key_Up
event->timestamp);
}
+#if ENABLE(TOUCH_EVENTS)
+static inline WebEvent::Type typeForTouchEvent(Ewk_Touch_Event_Type type)
+{
+ if (type == EWK_TOUCH_START)
+ return WebEvent::TouchStart;
+ if (type == EWK_TOUCH_MOVE)
+ return WebEvent::TouchMove;
+ if (type == EWK_TOUCH_END)
+ return WebEvent::TouchEnd;
+ if (type == EWK_TOUCH_CANCEL)
+ return WebEvent::TouchCancel;
+
+ return WebEvent::NoType;
+}
+
+WebTouchEvent WebEventFactory::createWebTouchEvent(Ewk_Touch_Event_Type type, const Eina_List* points, const Evas_Modifier* modifiers, const Evas_Point* position, double timestamp)
+{
+ Vector<WebPlatformTouchPoint> touchPoints;
+ WebPlatformTouchPoint::TouchPointState state;
+ const Eina_List* list;
+ void* item;
+ EINA_LIST_FOREACH(points, list, item) {
+ Ewk_Touch_Point* point = static_cast<Ewk_Touch_Point*>(item);
+
+ switch (point->state) {
+ case EVAS_TOUCH_POINT_UP:
+ state = WebPlatformTouchPoint::TouchReleased;
+ break;
+ case EVAS_TOUCH_POINT_MOVE:
+ state = WebPlatformTouchPoint::TouchMoved;
+ break;
+ case EVAS_TOUCH_POINT_DOWN:
+ state = WebPlatformTouchPoint::TouchPressed;
+ break;
+ case EVAS_TOUCH_POINT_STILL:
+ state = WebPlatformTouchPoint::TouchStationary;
+ break;
+ case EVAS_TOUCH_POINT_CANCEL:
+ state = WebPlatformTouchPoint::TouchCancelled;
+ break;
+ default:
+ ASSERT_NOT_REACHED();
+ break;
+ }
+
+ touchPoints.append(WebPlatformTouchPoint(point->id, state, IntPoint(point->x, point->y), IntPoint(point->x - position->x, point->y - position->y)));
+ }
+
+ return WebTouchEvent(typeForTouchEvent(type), touchPoints, modifiersForEvent(modifiers), timestamp);
+}
+#endif
+
} // namespace WebKit
diff --git a/Source/WebKit2/Shared/efl/WebEventFactory.h b/Source/WebKit2/Shared/efl/WebEventFactory.h
index f47a3caed..9a8b1d6bd 100644
--- a/Source/WebKit2/Shared/efl/WebEventFactory.h
+++ b/Source/WebKit2/Shared/efl/WebEventFactory.h
@@ -27,6 +27,7 @@
#define WebEventFactory_h
#include "WebEvent.h"
+#include "ewk_touch.h"
#include <Evas.h>
namespace WebKit {
@@ -39,6 +40,9 @@ public:
static WebWheelEvent createWebWheelEvent(const Evas_Event_Mouse_Wheel*, const Evas_Point*);
static WebKeyboardEvent createWebKeyboardEvent(const Evas_Event_Key_Down*);
static WebKeyboardEvent createWebKeyboardEvent(const Evas_Event_Key_Up*);
+#if ENABLE(TOUCH_EVENTS)
+ static WebTouchEvent createWebTouchEvent(Ewk_Touch_Event_Type, const Eina_List*, const Evas_Modifier*, const Evas_Point*, double timestamp);
+#endif
};
} // namespace WebKit
diff --git a/Source/WebKit2/Target.pri b/Source/WebKit2/Target.pri
index 8ff365cc1..81895f04d 100644
--- a/Source/WebKit2/Target.pri
+++ b/Source/WebKit2/Target.pri
@@ -617,7 +617,6 @@ SOURCES += \
UIProcess/WebUIClient.cpp \
UIProcess/WebVibrationProvider.cpp \
UIProcess/WebVibrationProxy.cpp \
- UIProcess/qt/QtWebContext.cpp \
UIProcess/qt/TextCheckerQt.cpp \
UIProcess/qt/WebContextQt.cpp \
UIProcess/qt/WebFullScreenManagerProxyQt.cpp \
@@ -809,7 +808,6 @@ have?(QTQUICK) {
UIProcess/API/qt/qwebpreferences.cpp \
UIProcess/API/qt/qwebkittest.cpp \
UIProcess/qt/PageViewportControllerClientQt.cpp \
- UIProcess/qt/QtWebError.cpp \
UIProcess/qt/QtDialogRunner.cpp \
UIProcess/qt/QtDownloadManager.cpp \
UIProcess/qt/QtPageClient.cpp \
@@ -821,6 +819,8 @@ have?(QTQUICK) {
UIProcess/qt/QtPanGestureRecognizer.cpp \
UIProcess/qt/QtPinchGestureRecognizer.cpp \
UIProcess/qt/QtTapGestureRecognizer.cpp \
+ UIProcess/qt/QtWebContext.cpp \
+ UIProcess/qt/QtWebError.cpp \
UIProcess/qt/WebContextMenuProxyQt.cpp \
UIProcess/qt/WebGeolocationProviderQt.cpp \
UIProcess/qt/WebPopupMenuProxyQt.cpp \
diff --git a/Source/WebKit2/UIProcess/API/efl/PageClientImpl.cpp b/Source/WebKit2/UIProcess/API/efl/PageClientImpl.cpp
index 9e75e0828..f8519ce6b 100644
--- a/Source/WebKit2/UIProcess/API/efl/PageClientImpl.cpp
+++ b/Source/WebKit2/UIProcess/API/efl/PageClientImpl.cpp
@@ -39,6 +39,7 @@
#include "ewk_context_private.h"
#include "ewk_download_job.h"
#include "ewk_download_job_private.h"
+#include "ewk_view.h"
#include "ewk_view_private.h"
using namespace WebCore;
@@ -106,7 +107,12 @@ bool PageClientImpl::isViewInWindow()
void PageClientImpl::processDidCrash()
{
- notImplemented();
+ // Check if loading was ongoing, when web process crashed.
+ double loadProgress = ewk_view_load_progress_get(m_viewWidget);
+ if (loadProgress >= 0 && loadProgress < 1)
+ ewk_view_load_progress_changed(m_viewWidget, 1);
+
+ ewk_view_webprocess_crashed(m_viewWidget);
}
void PageClientImpl::didRelaunchProcess()
diff --git a/Source/WebKit2/UIProcess/API/efl/ewk_private.h b/Source/WebKit2/UIProcess/API/efl/ewk_private.h
index 86ca42d4e..96611e20d 100644
--- a/Source/WebKit2/UIProcess/API/efl/ewk_private.h
+++ b/Source/WebKit2/UIProcess/API/efl/ewk_private.h
@@ -31,4 +31,6 @@
#define COMPILE_ASSERT_MATCHING_ENUM(ewkName, webcoreName) \
COMPILE_ASSERT(int(ewkName) == int(webcoreName), mismatchingEnums)
+extern int _ewk_log_dom;
+
#endif // ewk_private_h
diff --git a/Source/WebKit2/UIProcess/API/efl/ewk_touch.h b/Source/WebKit2/UIProcess/API/efl/ewk_touch.h
new file mode 100644
index 000000000..1c9cdd59d
--- /dev/null
+++ b/Source/WebKit2/UIProcess/API/efl/ewk_touch.h
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2012 Samsung Electronics
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef ewk_touch_h
+#define ewk_touch_h
+
+#include <Evas.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/// Represents types of touch event.
+typedef enum {
+ EWK_TOUCH_START,
+ EWK_TOUCH_MOVE,
+ EWK_TOUCH_END,
+ EWK_TOUCH_CANCEL
+} Ewk_Touch_Event_Type;
+
+/// Creates a type name for _Ewk_Touch_Point.
+typedef struct _Ewk_Touch_Point Ewk_Touch_Point;
+
+/// Represents a touch point.
+struct _Ewk_Touch_Point {
+ int id; /**< identifier of the touch event */
+ int x; /**< the horizontal position of the touch event */
+ int y; /**< the vertical position of the touch event */
+ Evas_Touch_Point_State state; /**< state of the touch event */
+};
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // ewk_touch_h
diff --git a/Source/WebKit2/UIProcess/API/efl/ewk_view.cpp b/Source/WebKit2/UIProcess/API/efl/ewk_view.cpp
index dc77fb2cc..148a5b64c 100644
--- a/Source/WebKit2/UIProcess/API/efl/ewk_view.cpp
+++ b/Source/WebKit2/UIProcess/API/efl/ewk_view.cpp
@@ -498,7 +498,10 @@ bool ewk_view_accelerated_compositing_mode_enter(const Evas_Object* ewkView)
EWK_VIEW_SD_GET_OR_RETURN(ewkView, smartData, false);
EWK_VIEW_PRIV_GET_OR_RETURN(smartData, priv, false);
- EINA_SAFETY_ON_NULL_RETURN_VAL(priv->evasGl, false);
+ if (priv->evasGl) {
+ EINA_LOG_DOM_WARN(_ewk_log_dom, "Accelerated compositing mode already entered.");
+ return false;
+ }
Evas* evas = evas_object_evas_get(ewkView);
priv->evasGl = evas_gl_new(evas);
@@ -1623,3 +1626,26 @@ Eina_Bool ewk_view_mouse_events_enabled_get(const Evas_Object* ewkView)
return priv->areMouseEventsEnabled;
}
+
+/**
+ * @internal
+ * Web process has crashed.
+ *
+ * Emits signal: "webprocess,crashed" with pointer to crash handling boolean.
+ */
+void ewk_view_webprocess_crashed(Evas_Object* ewkView)
+{
+ EWK_VIEW_SD_GET_OR_RETURN(ewkView, smartData);
+ EWK_VIEW_PRIV_GET_OR_RETURN(smartData, priv);
+
+ bool handled = false;
+ evas_object_smart_callback_call(ewkView, "webprocess,crashed", &handled);
+
+ if (!handled) {
+ CString url = priv->pageProxy->urlAtProcessExit().utf8();
+ EINA_LOG_DOM_WARN(_ewk_log_dom, "WARNING: The web process experienced a crash on '%s'.\n", url.data());
+
+ // Display an error page
+ ewk_view_html_string_load(ewkView, "The web process has crashed.", 0, url.data());
+ }
+}
diff --git a/Source/WebKit2/UIProcess/API/efl/ewk_view.h b/Source/WebKit2/UIProcess/API/efl/ewk_view.h
index b040fdf30..996a2bbf5 100644
--- a/Source/WebKit2/UIProcess/API/efl/ewk_view.h
+++ b/Source/WebKit2/UIProcess/API/efl/ewk_view.h
@@ -64,6 +64,7 @@
* - "text,found", unsigned int*: the requested text was found and it gives the number of matches.
* - "title,changed", const char*: title of the main frame was changed.
* - "uri,changed", const char*: uri of the main frame was changed.
+ * - "webprocess,crashed", Eina_Bool*: expects a @c EINA_TRUE if web process crash is handled; @c EINA_FALSE, otherwise.
*/
#ifndef ewk_view_h
diff --git a/Source/WebKit2/UIProcess/API/efl/ewk_view_private.h b/Source/WebKit2/UIProcess/API/efl/ewk_view_private.h
index fcd65ee0f..88f9aab07 100644
--- a/Source/WebKit2/UIProcess/API/efl/ewk_view_private.h
+++ b/Source/WebKit2/UIProcess/API/efl/ewk_view_private.h
@@ -101,5 +101,6 @@ bool ewk_view_accelerated_compositing_mode_exit(const Evas_Object* ewkView);
#endif
void ewk_view_popup_menu_request(Evas_Object* ewkView, WebKit::WebPopupMenuProxyEfl* popupMenu, const WebCore::IntRect&, WebCore::TextDirection, double pageScaleFactor, const Vector<WebKit::WebPopupItem>& items, int32_t selectedIndex);
+void ewk_view_webprocess_crashed(Evas_Object* ewkView);
#endif // ewk_view_private_h
diff --git a/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h b/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h
index fa6abd160..717607897 100644
--- a/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h
+++ b/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h
@@ -29,6 +29,8 @@ namespace EWK2UnitTest {
class EWK2UnitTestBase : public ::testing::Test {
public:
+ Ecore_Evas* backingStore() { return m_ecoreEvas; }
+ Evas* canvas() { return ecore_evas_get(m_ecoreEvas); }
Evas_Object* webView() { return m_webView; }
Ewk_View_Smart_Class* ewkViewClass() { return &m_ewkViewClass; }
diff --git a/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_refptr_evas_object.cpp b/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_refptr_evas_object.cpp
new file mode 100644
index 000000000..fb6e57269
--- /dev/null
+++ b/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_refptr_evas_object.cpp
@@ -0,0 +1,134 @@
+/*
+ * Copyright (C) 2012 Intel Corporation. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+
+#include "UnitTestUtils/EWK2UnitTestBase.h"
+#include "UnitTestUtils/EWK2UnitTestEnvironment.h"
+#include <EWebKit2.h>
+#include <Ecore_Evas.h>
+#include <Evas.h>
+#include <gtest/gtest.h>
+#include <wtf/OwnPtr.h>
+#include <wtf/PassOwnPtr.h>
+#include <wtf/efl/RefPtrEfl.h>
+
+using namespace EWK2UnitTest;
+
+extern EWK2UnitTestEnvironment* environment;
+
+TEST_F(EWK2UnitTestBase, construction)
+{
+ RefPtr<Evas_Object> nullObject = 0;
+ ASSERT_FALSE(nullObject);
+
+ RefPtr<Evas_Object> object;
+ ASSERT_FALSE(object);
+
+ object = adoptRef(evas_object_box_add(canvas()));
+ ASSERT_TRUE(object);
+
+ object = 0;
+ ASSERT_FALSE(object);
+
+ object = adoptRef(evas_object_box_add(canvas()));
+ ASSERT_TRUE(object);
+
+ object.clear();
+ ASSERT_FALSE(object);
+}
+
+TEST_F(EWK2UnitTestBase, reffing)
+{
+ RefPtr<Evas_Object> object = adoptRef(evas_object_box_add(canvas()));
+ ASSERT_TRUE(object);
+ // Evas_Objec external ref count is not as you would expect.
+ ASSERT_EQ(evas_object_ref_get(object.get()), 0);
+
+ {
+ RefPtr<Evas_Object> aRef = object;
+ ASSERT_TRUE(object);
+ ASSERT_TRUE(aRef);
+ ASSERT_EQ(evas_object_ref_get(object.get()), 1);
+ ASSERT_EQ(evas_object_ref_get(aRef.get()), 1);
+
+ {
+ RefPtr<Evas_Object> bRef = object;
+
+ ASSERT_TRUE(object);
+ ASSERT_TRUE(aRef);
+ ASSERT_TRUE(bRef);
+
+ ASSERT_EQ(evas_object_ref_get(object.get()), 2);
+ ASSERT_EQ(evas_object_ref_get(aRef.get()), 2);
+
+ RefPtr<Evas_Object> cRef = bRef;
+ ASSERT_TRUE(cRef);
+
+ ASSERT_EQ(evas_object_ref_get(object.get()), 3);
+ ASSERT_EQ(evas_object_ref_get(aRef.get()), 3);
+ ASSERT_EQ(evas_object_ref_get(bRef.get()), 3);
+ ASSERT_EQ(evas_object_ref_get(cRef.get()), 3);
+
+ bRef.clear();
+ ASSERT_EQ(evas_object_ref_get(object.get()), 2);
+ ASSERT_EQ(evas_object_ref_get(aRef.get()), 2);
+ ASSERT_EQ(evas_object_ref_get(cRef.get()), 2);
+ }
+ ASSERT_EQ(evas_object_ref_get(object.get()), 1);
+ ASSERT_EQ(evas_object_ref_get(aRef.get()), 1);
+ }
+ ASSERT_EQ(evas_object_ref_get(object.get()), 0);
+}
+
+TEST_F(EWK2UnitTestBase, destruction)
+{
+ RefPtr<Evas_Object> object = adoptRef(evas_object_box_add(canvas()));
+ ASSERT_TRUE(object);
+ ASSERT_EQ(evas_object_ref_get(object.get()), 0);
+
+ RefPtr<Evas_Object> aRef = object;
+ ASSERT_TRUE(object);
+ ASSERT_TRUE(aRef);
+ ASSERT_EQ(evas_object_ref_get(object.get()), 1);
+ ASSERT_EQ(evas_object_ref_get(aRef.get()), 1);
+
+ object = nullptr;
+ ASSERT_EQ(evas_object_ref_get(object.get()), 0);
+ ASSERT_EQ(evas_object_ref_get(aRef.get()), 0);
+
+ object = aRef;
+ ASSERT_EQ(evas_object_ref_get(object.get()), 1);
+ ASSERT_EQ(evas_object_ref_get(aRef.get()), 1);
+
+ object = 0;
+ ASSERT_EQ(evas_object_ref_get(object.get()), 0);
+ ASSERT_EQ(evas_object_ref_get(aRef.get()), 0);
+
+ aRef.clear();
+ ASSERT_FALSE(aRef);
+ ASSERT_FALSE(object);
+}
+
diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp
index 6fefb652b..e35f603ff 100644
--- a/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp
+++ b/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp
@@ -1268,6 +1268,8 @@ void webkitWebViewMakePermissionRequest(WebKitWebView* webView, WebKitPermission
void webkitWebViewMouseTargetChanged(WebKitWebView* webView, WKHitTestResultRef wkHitTestResult, unsigned modifiers)
{
+ webkitWebViewBaseSetTooltipArea(WEBKIT_WEB_VIEW_BASE(webView), toImpl(wkHitTestResult)->elementBoundingBox());
+
WebKitWebViewPrivate* priv = webView->priv;
if (priv->mouseTargetHitTestResult
&& priv->mouseTargetModifiers == modifiers
diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp
index f5bd2ddcc..0482b347e 100644
--- a/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp
+++ b/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp
@@ -84,6 +84,7 @@ struct _WebKitWebViewBasePrivate {
GRefPtr<GtkIMContext> imContext;
GtkClickCounter clickCounter;
CString tooltipText;
+ IntRect tooltipArea;
GtkDragAndDropHelper dragAndDropHelper;
DragIcon dragIcon;
IntSize resizerSize;
@@ -502,9 +503,13 @@ static gboolean webkitWebViewBaseQueryTooltip(GtkWidget* widget, gint x, gint y,
if (priv->tooltipText.length() <= 0)
return FALSE;
- // TODO: set the tip area when WKPageMouseDidMoveOverElementCallback
- // receives a hit test result.
+ if (!priv->tooltipArea.isEmpty()) {
+ GdkRectangle area = priv->tooltipArea;
+ gtk_tooltip_set_tip_area(tooltip, &area);
+ } else
+ gtk_tooltip_set_tip_area(tooltip, 0);
gtk_tooltip_set_text(tooltip, priv->tooltipText.data());
+
return TRUE;
}
@@ -691,6 +696,11 @@ void webkitWebViewBaseSetTooltipText(WebKitWebViewBase* webViewBase, const char*
gtk_widget_trigger_tooltip_query(GTK_WIDGET(webViewBase));
}
+void webkitWebViewBaseSetTooltipArea(WebKitWebViewBase* webViewBase, const IntRect& tooltipArea)
+{
+ webViewBase->priv->tooltipArea = tooltipArea;
+}
+
void webkitWebViewBaseStartDrag(WebKitWebViewBase* webViewBase, const DragData& dragData, PassRefPtr<ShareableBitmap> dragImage)
{
WebKitWebViewBasePrivate* priv = webViewBase->priv;
diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBasePrivate.h b/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBasePrivate.h
index 70cc72575..1295f3d53 100644
--- a/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBasePrivate.h
+++ b/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBasePrivate.h
@@ -40,6 +40,7 @@ GtkIMContext* webkitWebViewBaseGetIMContext(WebKitWebViewBase*);
WebPageProxy* webkitWebViewBaseGetPage(WebKitWebViewBase*);
void webkitWebViewBaseCreateWebPage(WebKitWebViewBase*, WKContextRef, WKPageGroupRef);
void webkitWebViewBaseSetTooltipText(WebKitWebViewBase*, const char*);
+void webkitWebViewBaseSetTooltipArea(WebKitWebViewBase*, const WebCore::IntRect&);
void webkitWebViewBaseForwardNextKeyEvent(WebKitWebViewBase*);
void webkitWebViewBaseStartDrag(WebKitWebViewBase*, const WebCore::DragData&, PassRefPtr<ShareableBitmap> dragImage);
void webkitWebViewBaseChildMoveResize(WebKitWebViewBase*, GtkWidget*, const WebCore::IntRect&);
diff --git a/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp b/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp
index bacae91ec..80f1ba7f0 100644
--- a/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp
+++ b/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp
@@ -349,10 +349,6 @@ bool QQuickWebViewPrivate::transparentBackground() const
return webPageProxy->drawsTransparentBackground();
}
-/*!
- \qmlsignal WebView::loadingChanged(WebLoadRequest request)
-*/
-
void QQuickWebViewPrivate::provisionalLoadDidStart(const WTF::String& url)
{
Q_Q(QQuickWebView);
@@ -1439,7 +1435,6 @@ QQuickWebPage* QQuickWebViewExperimental::page()
/*!
\page index.html
-
\title QtWebKit: QML WebView version 3.0
The WebView API allows QML applications to render regions of dynamic
@@ -1447,12 +1442,12 @@ QQuickWebPage* QQuickWebViewExperimental::page()
QML components or encompass the full screen as specified within the
QML application.
- QML WebView version 3.0 is incompatible with previous QML WebView API
- versions. It allows an application to load pages into the WebView,
- either by URL or with an HTML string, and navigate within session
- history. By default, links to different pages load within the same
- WebView, but applications may intercept requests to delegate links to
- other functions.
+ QML WebView version 3.0 is incompatible with previous QML \l
+ {QtWebKit1::WebView} {WebView} API versions. It allows an
+ application to load pages into the WebView, either by URL or with
+ an HTML string, and navigate within session history. By default,
+ links to different pages load within the same WebView, but applications
+ may intercept requests to delegate links to other functions.
This sample QML application loads a web page, responds to session
history context, and intercepts requests for external links:
@@ -1485,6 +1480,7 @@ QQuickWebPage* QQuickWebViewExperimental::page()
/*!
\qmltype WebView
+ \instantiates QQuickWebView
\inqmlmodule QtWebKit 3.0
\brief A WebView renders web content within a QML application
*/
diff --git a/Source/WebKit2/UIProcess/API/qt/qwebloadrequest.cpp b/Source/WebKit2/UIProcess/API/qt/qwebloadrequest.cpp
index 39f314c3b..eebf20d76 100644
--- a/Source/WebKit2/UIProcess/API/qt/qwebloadrequest.cpp
+++ b/Source/WebKit2/UIProcess/API/qt/qwebloadrequest.cpp
@@ -40,15 +40,16 @@ public:
};
/*!
- \qmlclass WebLoadRequest QWebLoadRequest
+ \qmltype WebLoadRequest
+ \instantiates QWebLoadRequest
+ \inqmlmodule QtWebKit 3.0
+
\brief A utility class for the WebView::loadingChanged signal.
This class contains information about a requested load of a web page, like the URL and
current loading status (started, finished, failed).
- \sa WebView::loadingChanged(WebLoadRequest)
-
- \inqmlmodule QtWebKit 3.0
+ \sa WebView::onLoadingChanged
*/
QWebLoadRequest::QWebLoadRequest(const QUrl& url, QQuickWebView::LoadStatus status, const QString& errorString, QQuickWebView::ErrorDomain errorDomain, int errorCode, QObject* parent)
: QObject(parent)
@@ -80,7 +81,8 @@ QUrl QWebLoadRequest::url() const
\li WebView::LoadFailedStatus - the page has failed loading.
\endlist
- \sa WebLoadRequest, WebView::loadingChanged(WebLoadRequest)
+ \sa WebLoadRequest
+ \sa WebView::onLoadingChanged
*/
QQuickWebView::LoadStatus QWebLoadRequest::status() const
{
diff --git a/Source/WebKit2/UIProcess/Authentication/AuthenticationDecisionListener.h b/Source/WebKit2/UIProcess/Authentication/AuthenticationDecisionListener.h
index 00af84965..b2f92f4b0 100644
--- a/Source/WebKit2/UIProcess/Authentication/AuthenticationDecisionListener.h
+++ b/Source/WebKit2/UIProcess/Authentication/AuthenticationDecisionListener.h
@@ -50,7 +50,7 @@ public:
void detachChallenge();
private:
- AuthenticationDecisionListener(AuthenticationChallengeProxy* authenticationChallenge);
+ explicit AuthenticationDecisionListener(AuthenticationChallengeProxy*);
virtual Type type() const { return APIType; }
diff --git a/Source/WebKit2/UIProcess/Authentication/WebCredential.h b/Source/WebKit2/UIProcess/Authentication/WebCredential.h
index b07a8a6ec..9f42d02e4 100644
--- a/Source/WebKit2/UIProcess/Authentication/WebCredential.h
+++ b/Source/WebKit2/UIProcess/Authentication/WebCredential.h
@@ -63,8 +63,8 @@ public:
const String& user() const;
private:
- WebCredential(const WebCore::Credential&);
- WebCredential(WebCertificateInfo*);
+ explicit WebCredential(const WebCore::Credential&);
+ explicit WebCredential(WebCertificateInfo*);
virtual Type type() const { return APIType; }
diff --git a/Source/WebKit2/UIProcess/Authentication/WebProtectionSpace.h b/Source/WebKit2/UIProcess/Authentication/WebProtectionSpace.h
index 604236a62..7c3882aad 100644
--- a/Source/WebKit2/UIProcess/Authentication/WebProtectionSpace.h
+++ b/Source/WebKit2/UIProcess/Authentication/WebProtectionSpace.h
@@ -51,7 +51,7 @@ public:
WebCore::ProtectionSpaceAuthenticationScheme authenticationScheme() const;
private:
- WebProtectionSpace(const WebCore::ProtectionSpace&);
+ explicit WebProtectionSpace(const WebCore::ProtectionSpace&);
virtual Type type() const { return APIType; }
diff --git a/Source/WebKit2/UIProcess/GenericCallback.h b/Source/WebKit2/UIProcess/GenericCallback.h
index b0d7b9b1c..5b6a0f9bb 100644
--- a/Source/WebKit2/UIProcess/GenericCallback.h
+++ b/Source/WebKit2/UIProcess/GenericCallback.h
@@ -44,7 +44,7 @@ public:
uint64_t callbackID() const { return m_callbackID; }
protected:
- CallbackBase(void* context)
+ explicit CallbackBase(void* context)
: m_context(context)
, m_callbackID(generateCallbackID())
{
diff --git a/Source/WebKit2/UIProcess/InspectorServer/WebSocketServer.h b/Source/WebKit2/UIProcess/InspectorServer/WebSocketServer.h
index 56aa7fb26..ecffaf84f 100644
--- a/Source/WebKit2/UIProcess/InspectorServer/WebSocketServer.h
+++ b/Source/WebKit2/UIProcess/InspectorServer/WebSocketServer.h
@@ -51,7 +51,7 @@ class WebSocketServerConnection;
class WebSocketServer {
public:
enum ServerState { Closed, Listening };
- WebSocketServer(WebSocketServerClient*);
+ explicit WebSocketServer(WebSocketServerClient*);
virtual ~WebSocketServer();
// Server operations.
diff --git a/Source/WebKit2/UIProcess/PageViewportController.cpp b/Source/WebKit2/UIProcess/PageViewportController.cpp
index 71ec685c2..e9a513af1 100644
--- a/Source/WebKit2/UIProcess/PageViewportController.cpp
+++ b/Source/WebKit2/UIProcess/PageViewportController.cpp
@@ -28,6 +28,8 @@
#include <WebCore/FloatSize.h>
#include <wtf/MathExtras.h>
+using namespace WebCore;
+
namespace WebKit {
static inline float bound(float min, float value, float max)
diff --git a/Source/WebKit2/UIProcess/PageViewportController.h b/Source/WebKit2/UIProcess/PageViewportController.h
index 0746ff1df..1820d8d69 100644
--- a/Source/WebKit2/UIProcess/PageViewportController.h
+++ b/Source/WebKit2/UIProcess/PageViewportController.h
@@ -32,8 +32,6 @@ class IntPoint;
class IntSize;
}
-using namespace WebCore;
-
namespace WebKit {
class WebPageProxy;
@@ -76,11 +74,11 @@ public:
void suspendContent();
void resumeContent();
- FloatRect positionRangeForContentAtScale(float viewportScale) const;
+ WebCore::FloatRect positionRangeForContentAtScale(float viewportScale) const;
float convertFromViewport(float value) const { return value / m_devicePixelRatio; }
float convertToViewport(float value) const { return value * m_devicePixelRatio; }
- FloatRect convertToViewport(const FloatRect&) const;
+ WebCore::FloatRect convertToViewport(const WebCore::FloatRect&) const;
float innerBoundedContentsScale(float) const;
float outerBoundedContentsScale(float) const;
@@ -89,7 +87,7 @@ public:
bool hadUserInteraction() const { return m_hadUserInteraction; }
bool allowsUserScaling() const { return m_allowsUserScaling; }
- FloatSize contentsLayoutSize() const { return m_rawAttributes.layoutSize; }
+ WebCore::FloatSize contentsLayoutSize() const { return m_rawAttributes.layoutSize; }
float devicePixelRatio() const { return m_devicePixelRatio; }
float minimumContentsScale() const { return m_minimumScale; }
float maximumContentsScale() const { return m_maximumScale; }
@@ -98,21 +96,21 @@ public:
void setHadUserInteraction(bool didUserInteract) { m_hadUserInteraction = didUserInteract; }
// Notifications to the WebProcess.
- void setViewportSize(const FloatSize& newSize);
- void setVisibleContentsRect(const FloatRect& visibleContentsRect, float viewportScale, const FloatPoint& trajectoryVector = FloatPoint::zero());
+ void setViewportSize(const WebCore::FloatSize& newSize);
+ void setVisibleContentsRect(const WebCore::FloatRect& visibleContentsRect, float viewportScale, const WebCore::FloatPoint& trajectoryVector = WebCore::FloatPoint::zero());
// Notifications from the WebProcess.
- void didChangeContentsSize(const IntSize& newSize);
- void didChangeViewportAttributes(const ViewportAttributes&);
- void pageDidRequestScroll(const IntPoint& cssPosition);
+ void didChangeContentsSize(const WebCore::IntSize& newSize);
+ void didChangeViewportAttributes(const WebCore::ViewportAttributes&);
+ void pageDidRequestScroll(const WebCore::IntPoint& cssPosition);
private:
- void syncVisibleContents(const FloatPoint &trajectoryVector = FloatPoint::zero());
+ void syncVisibleContents(const WebCore::FloatPoint &trajectoryVector = WebCore::FloatPoint::zero());
WebPageProxy* const m_webPageProxy;
PageViewportControllerClient* m_client;
- ViewportAttributes m_rawAttributes;
+ WebCore::ViewportAttributes m_rawAttributes;
bool m_allowsUserScaling;
float m_minimumScale;
@@ -123,16 +121,16 @@ private:
bool m_hasSuspendedContent;
bool m_hadUserInteraction;
- FloatSize m_viewportSize;
- FloatSize m_contentsSize;
- FloatRect m_visibleContentsRect;
+ WebCore::FloatSize m_viewportSize;
+ WebCore::FloatSize m_contentsSize;
+ WebCore::FloatRect m_visibleContentsRect;
float m_effectiveScale; // Should always be cssScale * devicePixelRatio.
friend class ViewportUpdateDeferrer;
};
bool fuzzyCompare(float, float, float epsilon);
-FloatPoint boundPosition(const FloatPoint minPosition, const FloatPoint& position, const FloatPoint& maxPosition);
+WebCore::FloatPoint boundPosition(const WebCore::FloatPoint minPosition, const WebCore::FloatPoint& position, const WebCore::FloatPoint& maxPosition);
} // namespace WebKit
diff --git a/Source/WebKit2/UIProcess/Plugins/mac/PluginInfoStoreMac.mm b/Source/WebKit2/UIProcess/Plugins/mac/PluginInfoStoreMac.mm
index 9b86aaed3..29c744ffd 100644
--- a/Source/WebKit2/UIProcess/Plugins/mac/PluginInfoStoreMac.mm
+++ b/Source/WebKit2/UIProcess/Plugins/mac/PluginInfoStoreMac.mm
@@ -115,8 +115,14 @@ bool PluginInfoStore::shouldUsePlugin(Vector<PluginModuleInfo>& alreadyLoadedPlu
const PluginModuleInfo& loadedPlugin = alreadyLoadedPlugins[i];
// If a plug-in with the same bundle identifier already exists, we don't want to load it.
- if (loadedPlugin.bundleIdentifier == plugin.bundleIdentifier)
- return false;
+ // However, if the already existing plug-in is blocked we want to replace it with the new plug-in.
+ if (loadedPlugin.bundleIdentifier == plugin.bundleIdentifier) {
+ if (!shouldBlockPlugin(loadedPlugin))
+ return false;
+
+ alreadyLoadedPlugins.remove(i);
+ break;
+ }
}
// Prefer the Oracle Java plug-in over the Apple java plug-in.
diff --git a/Source/WebKit2/UIProcess/ResponsivenessTimer.h b/Source/WebKit2/UIProcess/ResponsivenessTimer.h
index 307b3b169..8db2872fd 100644
--- a/Source/WebKit2/UIProcess/ResponsivenessTimer.h
+++ b/Source/WebKit2/UIProcess/ResponsivenessTimer.h
@@ -40,7 +40,7 @@ public:
virtual void didBecomeResponsive(ResponsivenessTimer*) = 0;
};
- ResponsivenessTimer(ResponsivenessTimer::Client*);
+ explicit ResponsivenessTimer(ResponsivenessTimer::Client*);
~ResponsivenessTimer();
void start();
diff --git a/Source/WebKit2/UIProcess/WebApplicationCacheManagerProxy.h b/Source/WebKit2/UIProcess/WebApplicationCacheManagerProxy.h
index b3dca15b6..597f8d7e1 100644
--- a/Source/WebKit2/UIProcess/WebApplicationCacheManagerProxy.h
+++ b/Source/WebKit2/UIProcess/WebApplicationCacheManagerProxy.h
@@ -68,7 +68,7 @@ public:
bool shouldTerminate(WebProcessProxy*) const;
private:
- WebApplicationCacheManagerProxy(WebContext*);
+ explicit WebApplicationCacheManagerProxy(WebContext*);
virtual Type type() const { return APIType; }
diff --git a/Source/WebKit2/UIProcess/WebBackForwardList.h b/Source/WebKit2/UIProcess/WebBackForwardList.h
index d78ed5a67..b6de90b03 100644
--- a/Source/WebKit2/UIProcess/WebBackForwardList.h
+++ b/Source/WebKit2/UIProcess/WebBackForwardList.h
@@ -85,7 +85,7 @@ public:
#endif
private:
- WebBackForwardList(WebPageProxy*);
+ explicit WebBackForwardList(WebPageProxy*);
virtual Type type() const { return APIType; }
diff --git a/Source/WebKit2/UIProcess/WebContextUserMessageCoders.h b/Source/WebKit2/UIProcess/WebContextUserMessageCoders.h
index 5693751e0..ffe322811 100644
--- a/Source/WebKit2/UIProcess/WebContextUserMessageCoders.h
+++ b/Source/WebKit2/UIProcess/WebContextUserMessageCoders.h
@@ -41,7 +41,7 @@ class WebContextUserMessageEncoder : public UserMessageEncoder<WebContextUserMes
public:
typedef UserMessageEncoder<WebContextUserMessageEncoder> Base;
- WebContextUserMessageEncoder(APIObject* root)
+ explicit WebContextUserMessageEncoder(APIObject* root)
: Base(root)
{
}
diff --git a/Source/WebKit2/UIProcess/WebFullScreenManagerProxy.h b/Source/WebKit2/UIProcess/WebFullScreenManagerProxy.h
index 61435d647..b83af5476 100644
--- a/Source/WebKit2/UIProcess/WebFullScreenManagerProxy.h
+++ b/Source/WebKit2/UIProcess/WebFullScreenManagerProxy.h
@@ -90,7 +90,7 @@ public:
void requestExitFullScreen();
private:
- WebFullScreenManagerProxy(WebPageProxy*);
+ explicit WebFullScreenManagerProxy(WebPageProxy*);
void supportsFullScreen(bool withKeyboard, bool&);
void enterFullScreen();
diff --git a/Source/WebKit2/UIProcess/WebGrammarDetail.h b/Source/WebKit2/UIProcess/WebGrammarDetail.h
index ff79b5cce..2fcebc0ec 100644
--- a/Source/WebKit2/UIProcess/WebGrammarDetail.h
+++ b/Source/WebKit2/UIProcess/WebGrammarDetail.h
@@ -50,7 +50,7 @@ public:
private:
WebGrammarDetail(int location, int length, ImmutableArray* guesses, const String& userDescription);
- WebGrammarDetail(const WebCore::GrammarDetail&);
+ explicit WebGrammarDetail(const WebCore::GrammarDetail&);
virtual Type type() const { return APIType; }
diff --git a/Source/WebKit2/UIProcess/WebInspectorProxy.h b/Source/WebKit2/UIProcess/WebInspectorProxy.h
index 1f53cccf0..b80700429 100644
--- a/Source/WebKit2/UIProcess/WebInspectorProxy.h
+++ b/Source/WebKit2/UIProcess/WebInspectorProxy.h
@@ -144,7 +144,7 @@ public:
#endif
private:
- WebInspectorProxy(WebPageProxy* page);
+ explicit WebInspectorProxy(WebPageProxy*);
virtual Type type() const { return APIType; }
diff --git a/Source/WebKit2/UIProcess/WebKeyValueStorageManagerProxy.h b/Source/WebKit2/UIProcess/WebKeyValueStorageManagerProxy.h
index 79cb03ee9..2be77c351 100644
--- a/Source/WebKit2/UIProcess/WebKeyValueStorageManagerProxy.h
+++ b/Source/WebKit2/UIProcess/WebKeyValueStorageManagerProxy.h
@@ -68,7 +68,7 @@ public:
bool shouldTerminate(WebProcessProxy*) const;
private:
- WebKeyValueStorageManagerProxy(WebContext*);
+ explicit WebKeyValueStorageManagerProxy(WebContext*);
virtual Type type() const { return APIType; }
diff --git a/Source/WebKit2/UIProcess/WebMediaCacheManagerProxy.h b/Source/WebKit2/UIProcess/WebMediaCacheManagerProxy.h
index 43231e5e6..adc68c4ab 100644
--- a/Source/WebKit2/UIProcess/WebMediaCacheManagerProxy.h
+++ b/Source/WebKit2/UIProcess/WebMediaCacheManagerProxy.h
@@ -66,7 +66,7 @@ public:
bool shouldTerminate(WebProcessProxy*) const;
private:
- WebMediaCacheManagerProxy(WebContext*);
+ explicit WebMediaCacheManagerProxy(WebContext*);
virtual Type type() const { return APIType; }
diff --git a/Source/WebKit2/UIProcess/WebNavigationData.h b/Source/WebKit2/UIProcess/WebNavigationData.h
index a2788d6bc..c2e20f368 100644
--- a/Source/WebKit2/UIProcess/WebNavigationData.h
+++ b/Source/WebKit2/UIProcess/WebNavigationData.h
@@ -48,7 +48,7 @@ public:
const WebCore::ResourceRequest& originalRequest() const { return m_store.originalRequest; }
private:
- WebNavigationData(const WebNavigationDataStore&);
+ explicit WebNavigationData(const WebNavigationDataStore&);
virtual Type type() const { return APIType; }
diff --git a/Source/WebKit2/UIProcess/WebOpenPanelResultListenerProxy.h b/Source/WebKit2/UIProcess/WebOpenPanelResultListenerProxy.h
index ba931dcf3..5ec369c9b 100644
--- a/Source/WebKit2/UIProcess/WebOpenPanelResultListenerProxy.h
+++ b/Source/WebKit2/UIProcess/WebOpenPanelResultListenerProxy.h
@@ -52,7 +52,7 @@ public:
void invalidate();
private:
- WebOpenPanelResultListenerProxy(WebPageProxy*);
+ explicit WebOpenPanelResultListenerProxy(WebPageProxy*);
virtual Type type() const { return APIType; }
diff --git a/Source/WebKit2/UIProcess/WebPopupMenuProxy.h b/Source/WebKit2/UIProcess/WebPopupMenuProxy.h
index d5bfa4c5c..0d7788dc4 100644
--- a/Source/WebKit2/UIProcess/WebPopupMenuProxy.h
+++ b/Source/WebKit2/UIProcess/WebPopupMenuProxy.h
@@ -72,7 +72,7 @@ public:
void invalidate() { m_client = 0; }
protected:
- WebPopupMenuProxy(Client* client)
+ explicit WebPopupMenuProxy(Client* client)
: m_client(client)
{
}
diff --git a/Source/WebKit2/UIProcess/WebPreferences.h b/Source/WebKit2/UIProcess/WebPreferences.h
index 1cb9731e1..81d9580a4 100644
--- a/Source/WebKit2/UIProcess/WebPreferences.h
+++ b/Source/WebKit2/UIProcess/WebPreferences.h
@@ -79,7 +79,7 @@ public:
private:
WebPreferences();
- WebPreferences(const String& identifier);
+ explicit WebPreferences(const String&);
WebPreferences(const WebPreferences&);
void platformInitializeStore();
diff --git a/Source/WebKit2/UIProcess/qt/PageViewportControllerClientQt.cpp b/Source/WebKit2/UIProcess/qt/PageViewportControllerClientQt.cpp
index 3d134ea93..c517023e2 100644
--- a/Source/WebKit2/UIProcess/qt/PageViewportControllerClientQt.cpp
+++ b/Source/WebKit2/UIProcess/qt/PageViewportControllerClientQt.cpp
@@ -32,6 +32,8 @@
#include <WebCore/FloatRect.h>
#include <WebCore/FloatSize.h>
+using namespace WebCore;
+
namespace WebKit {
static const int kScaleAnimationDurationMillis = 250;
diff --git a/Source/WebKit2/UIProcess/qt/PageViewportControllerClientQt.h b/Source/WebKit2/UIProcess/qt/PageViewportControllerClientQt.h
index 8b2819ad8..19b27ae9e 100644
--- a/Source/WebKit2/UIProcess/qt/PageViewportControllerClientQt.h
+++ b/Source/WebKit2/UIProcess/qt/PageViewportControllerClientQt.h
@@ -47,7 +47,7 @@ public:
PageViewportControllerClientQt(QQuickWebView*, QQuickWebPage*);
~PageViewportControllerClientQt();
- virtual void setContentsPosition(const FloatPoint& localPoint);
+ virtual void setContentsPosition(const WebCore::FloatPoint& localPoint);
virtual void setContentsScale(float localScale, bool treatAsInitialValue);
virtual void didResumeContent();
diff --git a/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleFrame.cpp b/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleFrame.cpp
index d32b5618c..895be2323 100644
--- a/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleFrame.cpp
+++ b/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleFrame.cpp
@@ -182,6 +182,11 @@ void WKBundleFrameClearOpener(WKBundleFrameRef frameRef)
coreFrame->loader()->setOpener(0);
}
+void WKBundleFrameStopLoading(WKBundleFrameRef frameRef)
+{
+ toImpl(frameRef)->stopLoading();
+}
+
WKStringRef WKBundleFrameCopyLayerTreeAsText(WKBundleFrameRef frameRef)
{
return toCopiedAPI(toImpl(frameRef)->layerTreeAsText());
diff --git a/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleFramePrivate.h b/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleFramePrivate.h
index 98722f856..b4710445f 100644
--- a/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleFramePrivate.h
+++ b/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleFramePrivate.h
@@ -49,6 +49,7 @@ WK_EXPORT void WKBundleFrameResumeAnimations(WKBundleFrameRef frame);
WK_EXPORT unsigned WKBundleFrameGetPendingUnloadCount(WKBundleFrameRef frame);
WK_EXPORT WKStringRef WKBundleFrameCopyLayerTreeAsText(WKBundleFrameRef frame);
WK_EXPORT void WKBundleFrameClearOpener(WKBundleFrameRef frame);
+WK_EXPORT void WKBundleFrameStopLoading(WKBundleFrameRef frame);
WK_EXPORT bool WKBundleFrameContainsAnyFormElements(WKBundleFrameRef frame);
WK_EXPORT void WKBundleFrameSetTextDirection(WKBundleFrameRef frame, WKStringRef);
diff --git a/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.h b/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.h
index 206e1e9c3..04abc86ae 100644
--- a/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.h
+++ b/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.h
@@ -237,6 +237,7 @@ typedef WKBundlePageUIElementVisibility (*WKBundlePageStatusBarIsVisibleCallback
typedef WKBundlePageUIElementVisibility (*WKBundlePageMenuBarIsVisibleCallback)(WKBundlePageRef page, const void *clientInfo);
typedef WKBundlePageUIElementVisibility (*WKBundlePageToolbarsAreVisibleCallback)(WKBundlePageRef page, const void *clientInfo);
typedef void (*WKBundlePageReachedAppCacheOriginQuotaCallback)(WKBundlePageRef page, WKSecurityOriginRef origin, int64_t totalBytesNeeded, const void *clientInfo);
+typedef uint64_t (*WKBundlePageExceededDatabaseQuotaCallback)(WKBundlePageRef page, WKSecurityOriginRef origin, WKStringRef databaseName, WKStringRef databaseDisplayName, uint64_t currentQuotaBytes, uint64_t currentOriginUsageBytes, uint64_t currentDatabaseUsageBytes, uint64_t expectedUsageBytes, const void *clientInfo);
struct WKBundlePageUIClient {
int version;
@@ -258,10 +259,14 @@ struct WKBundlePageUIClient {
// Version 1.
WKBundlePageReachedAppCacheOriginQuotaCallback didReachApplicationCacheOriginQuota;
+
+ // Version 2.
+ WKBundlePageExceededDatabaseQuotaCallback didExceedDatabaseQuota;
+
};
typedef struct WKBundlePageUIClient WKBundlePageUIClient;
-enum { kWKBundlePageUIClientCurrentVersion = 1 };
+enum { kWKBundlePageUIClientCurrentVersion = 2 };
// Editor client
typedef bool (*WKBundlePageShouldBeginEditingCallback)(WKBundlePageRef page, WKBundleRangeHandleRef range, const void* clientInfo);
diff --git a/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp b/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp
index a7de64e8a..a1ba347f5 100644
--- a/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp
+++ b/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp
@@ -327,7 +327,9 @@ void InjectedBundle::clearAllDatabases()
void InjectedBundle::setDatabaseQuota(uint64_t quota)
{
#if ENABLE(SQL_DATABASE)
- WebDatabaseManager::shared().setQuotaForOrigin("file:///", quota);
+ // Historically, we've used the following (somewhat non-sensical) string
+ // for the databaseIdentifier of local files.
+ WebDatabaseManager::shared().setQuotaForOrigin("file__0", quota);
#endif
}
diff --git a/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageUIClient.cpp b/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageUIClient.cpp
index 2ef9ca76f..62aa2b318 100644
--- a/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageUIClient.cpp
+++ b/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageUIClient.cpp
@@ -155,4 +155,12 @@ void InjectedBundlePageUIClient::didReachApplicationCacheOriginQuota(WebPage* pa
m_client.didReachApplicationCacheOriginQuota(toAPI(page), toAPI(origin), totalBytesNeeded, m_client.clientInfo);
}
+uint64_t InjectedBundlePageUIClient::didExceedDatabaseQuota(WebPage* page, WebSecurityOrigin* origin, const String& databaseName, const String& databaseDisplayName, uint64_t currentQuotaBytes, uint64_t currentOriginUsageBytes, uint64_t currentDatabaseUsageBytes, uint64_t expectedUsageBytes)
+{
+ if (!m_client.didExceedDatabaseQuota)
+ return 0;
+
+ return m_client.didExceedDatabaseQuota(toAPI(page), toAPI(origin), toAPI(databaseName.impl()), toAPI(databaseDisplayName.impl()), currentQuotaBytes, currentOriginUsageBytes, currentDatabaseUsageBytes, expectedUsageBytes, m_client.clientInfo);
+}
+
} // namespace WebKit
diff --git a/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageUIClient.h b/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageUIClient.h
index b8a48271f..13c89c67d 100644
--- a/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageUIClient.h
+++ b/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageUIClient.h
@@ -67,6 +67,7 @@ public:
WKBundlePageUIElementVisibility toolbarsAreVisible(WebPage*);
void didReachApplicationCacheOriginQuota(WebPage*, WebSecurityOrigin*, int64_t totalBytesNeeded);
+ uint64_t didExceedDatabaseQuota(WebPage*, WebSecurityOrigin*, const String& databaseName, const String& databaseDisplayName, uint64_t currentQuotaBytes, uint64_t currentOriginUsageBytes, uint64_t currentDatabaseUsageBytes, uint64_t expectedUsageBytes);
};
} // namespace WebKit
diff --git a/Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.cpp b/Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.cpp
index 01238cbc1..d67ac9511 100644
--- a/Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.cpp
+++ b/Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.cpp
@@ -946,8 +946,24 @@ void NetscapePlugin::contentsScaleFactorChanged(float scaleFactor)
#endif
}
+void NetscapePlugin::storageBlockingStateChanged(bool storageBlockingEnabled)
+{
+ if (m_storageBlockingState != storageBlockingEnabled) {
+ m_storageBlockingState = storageBlockingEnabled;
+ updateNPNPrivateMode();
+ }
+}
+
void NetscapePlugin::privateBrowsingStateChanged(bool privateBrowsingEnabled)
{
+ if (m_privateBrowsingState != privateBrowsingEnabled) {
+ m_privateBrowsingState = privateBrowsingEnabled;
+ updateNPNPrivateMode();
+ }
+}
+
+void NetscapePlugin::updateNPNPrivateMode()
+{
ASSERT(m_isStarted);
// From https://wiki.mozilla.org/Plugins:PrivateMode
@@ -955,7 +971,7 @@ void NetscapePlugin::privateBrowsingStateChanged(bool privateBrowsingEnabled)
// (assigned enum value 18) with a pointer to an NPBool value on all applicable instances.
// Plugins should check the boolean value pointed to, not the pointer itself.
// The value will be true when private mode is on.
- NPBool value = privateBrowsingEnabled;
+ NPBool value = m_privateBrowsingState || m_storageBlockingState;
NPP_SetValue(NPNVprivateModeBool, &value);
}
diff --git a/Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.h b/Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.h
index 2c290c76b..61e2bb798 100644
--- a/Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.h
+++ b/Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.h
@@ -221,6 +221,7 @@ private:
#endif
virtual void contentsScaleFactorChanged(float);
+ virtual void storageBlockingStateChanged(bool);
virtual void privateBrowsingStateChanged(bool);
virtual bool getFormValue(String& formValue);
virtual bool handleScroll(WebCore::ScrollDirection, WebCore::ScrollGranularity);
@@ -236,6 +237,8 @@ private:
// converted (if the transformation matrix isn't invertible).
bool convertFromRootView(const WebCore::IntPoint& pointInRootViewCoordinates, WebCore::IntPoint& pointInPluginCoordinates);
+ void updateNPNPrivateMode();
+
#if PLUGIN_ARCHITECTURE(WIN)
static BOOL WINAPI hookedTrackPopupMenu(HMENU, UINT uFlags, int x, int y, int nReserved, HWND, const RECT*);
void scheduleWindowedGeometryUpdate();
@@ -312,6 +315,9 @@ private:
TimerMap m_timers;
unsigned m_nextTimerID;
+ bool m_privateBrowsingState;
+ bool m_storageBlockingState;
+
#if PLUGIN_ARCHITECTURE(MAC)
NPDrawingModel m_drawingModel;
NPEventModel m_eventModel;
diff --git a/Source/WebKit2/WebProcess/Plugins/Netscape/mac/NetscapeSandboxFunctions.h b/Source/WebKit2/WebProcess/Plugins/Netscape/mac/NetscapeSandboxFunctions.h
index d58924368..0956cc636 100644
--- a/Source/WebKit2/WebProcess/Plugins/Netscape/mac/NetscapeSandboxFunctions.h
+++ b/Source/WebKit2/WebProcess/Plugins/Netscape/mac/NetscapeSandboxFunctions.h
@@ -51,7 +51,10 @@ typedef struct _WKNSandboxFunctions {
WKN_FileStopAccessingProcPtr fileStopAccessing;
} WKNSandboxFunctions;
+// FIXME: This header is mostly "API", except for the following two functions. We should
+// move the declarations to a seperate header.
WKNSandboxFunctions* netscapeSandboxFunctions();
+NPError enterSandbox(const char* sandboxProfile, const char* readOnlyPaths[], const char* readWritePaths[]);
#ifdef __cplusplus
}
diff --git a/Source/WebKit2/WebProcess/Plugins/Netscape/mac/NetscapeSandboxFunctions.mm b/Source/WebKit2/WebProcess/Plugins/Netscape/mac/NetscapeSandboxFunctions.mm
index afcc6456c..07cd2e708 100644
--- a/Source/WebKit2/WebProcess/Plugins/Netscape/mac/NetscapeSandboxFunctions.mm
+++ b/Source/WebKit2/WebProcess/Plugins/Netscape/mac/NetscapeSandboxFunctions.mm
@@ -94,15 +94,11 @@ static CString readSandboxProfile()
return result;
}
-NPError WKN_EnterSandbox(const char* readOnlyPaths[], const char* readWritePaths[])
+NPError enterSandbox(const char* sandboxProfile, const char* readOnlyPaths[], const char* readWritePaths[])
{
if (enteredSandbox)
return NPERR_GENERIC_ERROR;
- CString profile = readSandboxProfile();
- if (profile.isNull())
- exit(EX_NOPERM);
-
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1080
// Use private temporary and cache directories.
String systemDirectorySuffix = "com.apple.WebKit.PluginProcess+" + PluginProcess::shared().netscapePluginModule()->module()->bundleIdentifier();
@@ -157,7 +153,7 @@ NPError WKN_EnterSandbox(const char* readOnlyPaths[], const char* readWritePaths
exit(EX_NOPERM);
const char* sandboxParameters[] = { "HOME_DIR", homeDirectory, 0, 0 };
- if (!WKEnterPluginSandbox(profile.data(), sandboxParameters, extendedReadOnlyPaths.data(), extendedReadWritePaths.data())) {
+ if (!WKEnterPluginSandbox(sandboxProfile, sandboxParameters, extendedReadOnlyPaths.data(), extendedReadWritePaths.data())) {
WTFLogAlways("Couldn't initialize sandbox profile\n");
exit(EX_NOPERM);
}
@@ -169,9 +165,22 @@ NPError WKN_EnterSandbox(const char* readOnlyPaths[], const char* readWritePaths
free(homeDirectory);
enteredSandbox = true;
+
+ RetainPtr<NSDictionary> defaults = adoptNS([[NSDictionary alloc] initWithObjectsAndKeys:[NSNumber numberWithBool:YES], @"NSUseRemoteSavePanel", nil]);
+ [[NSUserDefaults standardUserDefaults] registerDefaults:defaults.get()];
+
return NPERR_NO_ERROR;
}
+NPError WKN_EnterSandbox(const char* readOnlyPaths[], const char* readWritePaths[])
+{
+ CString profile = readSandboxProfile();
+ if (profile.isNull())
+ exit(EX_NOPERM);
+
+ return enterSandbox(profile.data(), readOnlyPaths, readWritePaths);
+}
+
NPError WKN_FileStopAccessing(const char* path)
{
if (!enteredSandbox)
diff --git a/Source/WebKit2/WebProcess/Plugins/PDF/BuiltInPDFView.h b/Source/WebKit2/WebProcess/Plugins/PDF/BuiltInPDFView.h
index d99d9436d..1c8829d2b 100644
--- a/Source/WebKit2/WebProcess/Plugins/PDF/BuiltInPDFView.h
+++ b/Source/WebKit2/WebProcess/Plugins/PDF/BuiltInPDFView.h
@@ -112,6 +112,7 @@ private:
virtual void setLayerHostingMode(LayerHostingMode) OVERRIDE;
#endif
+ virtual void storageBlockingStateChanged(bool);
virtual void privateBrowsingStateChanged(bool);
virtual bool getFormValue(String& formValue);
virtual bool handleScroll(WebCore::ScrollDirection, WebCore::ScrollGranularity);
diff --git a/Source/WebKit2/WebProcess/Plugins/PDF/BuiltInPDFView.mm b/Source/WebKit2/WebProcess/Plugins/PDF/BuiltInPDFView.mm
index 9cf8c887b..8dcaea96c 100644
--- a/Source/WebKit2/WebProcess/Plugins/PDF/BuiltInPDFView.mm
+++ b/Source/WebKit2/WebProcess/Plugins/PDF/BuiltInPDFView.mm
@@ -660,6 +660,10 @@ void BuiltInPDFView::setLayerHostingMode(LayerHostingMode)
#endif
+void BuiltInPDFView::storageBlockingStateChanged(bool)
+{
+}
+
void BuiltInPDFView::privateBrowsingStateChanged(bool)
{
}
diff --git a/Source/WebKit2/WebProcess/Plugins/Plugin.h b/Source/WebKit2/WebProcess/Plugins/Plugin.h
index 91d234fe6..d197a6765 100644
--- a/Source/WebKit2/WebProcess/Plugins/Plugin.h
+++ b/Source/WebKit2/WebProcess/Plugins/Plugin.h
@@ -29,6 +29,7 @@
#include <WebCore/GraphicsLayer.h>
#include <WebCore/KURL.h>
#include <WebCore/ScrollTypes.h>
+#include <WebCore/SecurityOrigin.h>
#include <wtf/RefCounted.h>
#include <wtf/RetainPtr.h>
#include <wtf/Vector.h>
@@ -216,6 +217,9 @@ public:
// Tells the plug-in about scale factor changes.
virtual void contentsScaleFactorChanged(float) = 0;
+ // Called when the storage blocking policy for this plug-in changes.
+ virtual void storageBlockingStateChanged(bool) = 0;
+
// Called when the private browsing state for this plug-in changes.
virtual void privateBrowsingStateChanged(bool) = 0;
diff --git a/Source/WebKit2/WebProcess/Plugins/PluginProxy.cpp b/Source/WebKit2/WebProcess/Plugins/PluginProxy.cpp
index d3eb28a3b..9c30a5ef4 100644
--- a/Source/WebKit2/WebProcess/Plugins/PluginProxy.cpp
+++ b/Source/WebKit2/WebProcess/Plugins/PluginProxy.cpp
@@ -452,6 +452,11 @@ void PluginProxy::contentsScaleFactorChanged(float scaleFactor)
geometryDidChange();
}
+void PluginProxy::storageBlockingStateChanged(bool isStorageBlockingEnabled)
+{
+ m_connection->connection()->send(Messages::PluginControllerProxy::StorageBlockingStateChanged(isStorageBlockingEnabled), m_pluginInstanceID);
+}
+
void PluginProxy::privateBrowsingStateChanged(bool isPrivateBrowsingEnabled)
{
m_connection->connection()->send(Messages::PluginControllerProxy::PrivateBrowsingStateChanged(isPrivateBrowsingEnabled), m_pluginInstanceID);
diff --git a/Source/WebKit2/WebProcess/Plugins/PluginProxy.h b/Source/WebKit2/WebProcess/Plugins/PluginProxy.h
index c3183bb2b..7a36c1afd 100644
--- a/Source/WebKit2/WebProcess/Plugins/PluginProxy.h
+++ b/Source/WebKit2/WebProcess/Plugins/PluginProxy.h
@@ -32,6 +32,7 @@
#include "Plugin.h"
#include <WebCore/AffineTransform.h>
#include <WebCore/IntRect.h>
+#include <WebCore/SecurityOrigin.h>
#if PLATFORM(MAC)
#include <wtf/RetainPtr.h>
@@ -111,6 +112,7 @@ private:
#endif
virtual void contentsScaleFactorChanged(float);
+ virtual void storageBlockingStateChanged(bool);
virtual void privateBrowsingStateChanged(bool);
virtual bool getFormValue(String& formValue);
virtual bool handleScroll(WebCore::ScrollDirection, WebCore::ScrollGranularity);
diff --git a/Source/WebKit2/WebProcess/Plugins/PluginView.cpp b/Source/WebKit2/WebProcess/Plugins/PluginView.cpp
index 8f50d8706..fc06486fd 100644
--- a/Source/WebKit2/WebProcess/Plugins/PluginView.cpp
+++ b/Source/WebKit2/WebProcess/Plugins/PluginView.cpp
@@ -570,13 +570,21 @@ JSObject* PluginView::scriptObject(JSGlobalObject* globalObject)
#endif
}
-void PluginView::privateBrowsingStateChanged(bool privateBrowsingEnabled)
+void PluginView::storageBlockingStateChanged()
{
// The plug-in can be null here if it failed to initialize.
if (!m_isInitialized || !m_plugin)
return;
- if (!privateBrowsingEnabled && !frame()->document()->securityOrigin()->canAccessPluginStorage(frame()->tree()->top()->document()->securityOrigin()))
+ bool storageBlockingPolicy = !frame()->document()->securityOrigin()->canAccessPluginStorage(frame()->tree()->top()->document()->securityOrigin());
+
+ m_plugin->storageBlockingStateChanged(storageBlockingPolicy);
+}
+
+void PluginView::privateBrowsingStateChanged(bool privateBrowsingEnabled)
+{
+ // The plug-in can be null here if it failed to initialize.
+ if (!m_isInitialized || !m_plugin)
return;
m_plugin->privateBrowsingStateChanged(privateBrowsingEnabled);
diff --git a/Source/WebKit2/WebProcess/Plugins/PluginView.h b/Source/WebKit2/WebProcess/Plugins/PluginView.h
index d1d985363..9cc257a98 100644
--- a/Source/WebKit2/WebProcess/Plugins/PluginView.h
+++ b/Source/WebKit2/WebProcess/Plugins/PluginView.h
@@ -109,6 +109,7 @@ private:
virtual PlatformLayer* platformLayer() const;
#endif
virtual JSC::JSObject* scriptObject(JSC::JSGlobalObject*);
+ virtual void storageBlockingStateChanged();
virtual void privateBrowsingStateChanged(bool);
virtual bool getFormValue(String&);
virtual bool scroll(WebCore::ScrollDirection, WebCore::ScrollGranularity);
diff --git a/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp b/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp
index 4fb65bec3..87b54f5bd 100644
--- a/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp
+++ b/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp
@@ -536,9 +536,14 @@ void WebChromeClient::exceededDatabaseQuota(Frame* frame, const String& database
uint64_t currentQuota = DatabaseTracker::tracker().quotaForOrigin(origin);
uint64_t currentOriginUsage = DatabaseTracker::tracker().usageForOrigin(origin);
uint64_t newQuota = 0;
- WebProcess::shared().connection()->sendSync(
- Messages::WebPageProxy::ExceededDatabaseQuota(webFrame->frameID(), origin->databaseIdentifier(), databaseName, details.displayName(), currentQuota, currentOriginUsage, details.currentUsage(), details.expectedUsage()),
- Messages::WebPageProxy::ExceededDatabaseQuota::Reply(newQuota), m_page->pageID());
+ RefPtr<WebSecurityOrigin> webSecurityOrigin = WebSecurityOrigin::createFromDatabaseIdentifier(origin->databaseIdentifier());
+ newQuota = m_page->injectedBundleUIClient().didExceedDatabaseQuota(m_page, webSecurityOrigin.get(), databaseName, details.displayName(), currentQuota, currentOriginUsage, details.currentUsage(), details.expectedUsage());
+
+ if (!newQuota) {
+ WebProcess::shared().connection()->sendSync(
+ Messages::WebPageProxy::ExceededDatabaseQuota(webFrame->frameID(), origin->databaseIdentifier(), databaseName, details.displayName(), currentQuota, currentOriginUsage, details.currentUsage(), details.expectedUsage()),
+ Messages::WebPageProxy::ExceededDatabaseQuota::Reply(newQuota), m_page->pageID());
+ }
DatabaseTracker::tracker().setQuota(origin, newQuota);
}
diff --git a/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp b/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp
index 6548a25ed..b3c732819 100644
--- a/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp
+++ b/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp
@@ -261,9 +261,15 @@ void DrawingAreaImpl::setPaintingEnabled(bool paintingEnabled)
void DrawingAreaImpl::updatePreferences(const WebPreferencesStore& store)
{
+#if PLATFORM(MAC)
+ // Soon we want pages with fixed positioned elements to be able to be scrolled by the ScrollingCoordinator.
+ // As a part of that work, we have to composite fixed position elements, and we have to allow those
+ // elements to create a stacking context.
+ m_webPage->corePage()->settings()->setAcceleratedCompositingForFixedPositionEnabled(true);
+ m_webPage->corePage()->settings()->setFixedPositionCreatesStackingContext(true);
+
// <rdar://problem/10697417>: It is necessary to force compositing when accelerate drawing
// is enabled on Mac so that scrollbars are always in their own layers.
-#if PLATFORM(MAC)
if (m_webPage->corePage()->settings()->acceleratedDrawingEnabled())
m_webPage->corePage()->settings()->setForceCompositingMode(LayerTreeHost::supportsAcceleratedCompositing());
else
diff --git a/Source/WebKit2/WebProcess/WebPage/WebFrame.cpp b/Source/WebKit2/WebProcess/WebPage/WebFrame.cpp
index fd6f4c8d2..d04f4db7f 100644
--- a/Source/WebKit2/WebProcess/WebPage/WebFrame.cpp
+++ b/Source/WebKit2/WebProcess/WebPage/WebFrame.cpp
@@ -651,6 +651,14 @@ bool WebFrame::containsAnyFormElements() const
return false;
}
+void WebFrame::stopLoading()
+{
+ if (!m_coreFrame)
+ return;
+
+ m_coreFrame->loader()->stopForUserCancel();
+}
+
WebFrame* WebFrame::frameForContext(JSContextRef context)
{
JSObjectRef globalObjectRef = JSContextGetGlobalObject(context);
diff --git a/Source/WebKit2/WebProcess/WebPage/WebFrame.h b/Source/WebKit2/WebProcess/WebPage/WebFrame.h
index bd536372f..6691dce33 100644
--- a/Source/WebKit2/WebProcess/WebPage/WebFrame.h
+++ b/Source/WebKit2/WebProcess/WebPage/WebFrame.h
@@ -113,6 +113,7 @@ public:
bool hasVerticalScrollbar() const;
bool getDocumentBackgroundColor(double* red, double* green, double* blue, double* alpha);
bool containsAnyFormElements() const;
+ void stopLoading();
static WebFrame* frameForContext(JSContextRef);
diff --git a/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm b/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm
index 6c723a956..43f6440a8 100644
--- a/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm
+++ b/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm
@@ -208,6 +208,12 @@ void TiledCoreAnimationDrawingArea::updatePreferences(const WebPreferencesStore&
bool scrollingPerformanceLoggingEnabled = m_webPage->scrollingPerformanceLoggingEnabled();
ScrollingThread::dispatch(bind(&ScrollingTree::setScrollingPerformanceLoggingEnabled, m_webPage->corePage()->scrollingCoordinator()->scrollingTree(), scrollingPerformanceLoggingEnabled));
+ // Soon we want pages with fixed positioned elements to be able to be scrolled by the ScrollingCoordinator.
+ // As a part of that work, we have to composite fixed position elements, and we have to allow those
+ // elements to create a stacking context.
+ m_webPage->corePage()->settings()->setAcceleratedCompositingForFixedPositionEnabled(true);
+ m_webPage->corePage()->settings()->setFixedPositionCreatesStackingContext(true);
+
bool showDebugBorders = m_webPage->corePage()->settings()->showDebugBorders();
if (showDebugBorders == !!m_debugInfoLayer)
diff --git a/Source/WebKit2/win/WebKit2.def b/Source/WebKit2/win/WebKit2.def
index aa3bac015..8aa40371f 100644
--- a/Source/WebKit2/win/WebKit2.def
+++ b/Source/WebKit2/win/WebKit2.def
@@ -186,7 +186,6 @@ EXPORTS
?instrumentingAgentsForPage@InspectorInstrumentation@WebCore@@CAPAVInstrumentingAgents@2@PAVPage@2@@Z
?isActiveInsertionPoint@WebCore@@YA_NPBVNode@1@@Z
?isCSSExclusionsEnabled@RuntimeEnabledFeatures@WebCore@@0_NA
- ?isLangAttributeAwareFormControlUIEnabled@RuntimeEnabledFeatures@WebCore@@0_NA
?isPreloaded@CachedResourceLoader@WebCore@@QBE_NABVString@WTF@@@Z
?jsArray@WebCore@@YA?AVJSValue@JSC@@PAVExecState@3@PAVJSDOMGlobalObject@1@V?$PassRefPtr@VDOMStringList@WebCore@@@WTF@@@Z
?lastChangeWasUserEdit@HTMLTextFormControlElement@WebCore@@QBE_NXZ
@@ -223,6 +222,7 @@ EXPORTS
?setDOMException@WebCore@@YAXPAVExecState@JSC@@H@Z
?setFantasyFontFamily@Settings@WebCore@@QAEXABVAtomicString@WTF@@W4UScriptCode@@@Z
?setFixedFontFamily@Settings@WebCore@@QAEXABVAtomicString@WTF@@W4UScriptCode@@@Z
+ ?setImagesEnabled@Settings@WebCore@@QAEX_N@Z
?setMockScrollbarsEnabled@Settings@WebCore@@SAX_N@Z
?mockScrollbarsEnabled@Settings@WebCore@@SA_NXZ
?setPageScaleFactor@Page@WebCore@@QAEXMABVIntPoint@2@@Z
@@ -236,6 +236,7 @@ EXPORTS
?setScrollOffsetFromInternals@ScrollableArea@WebCore@@QAEXABVIntPoint@2@@Z
?setSerifFontFamily@Settings@WebCore@@QAEXABVAtomicString@WTF@@W4UScriptCode@@@Z
?setStandardFontFamily@Settings@WebCore@@QAEXABVAtomicString@WTF@@W4UScriptCode@@@Z
+ ?setStorageBlockingPolicy@Settings@WebCore@@QAEXW4StorageBlockingPolicy@SecurityOrigin@2@@Z
?setSuggestedValue@HTMLInputElement@WebCore@@QAEXABVString@WTF@@@Z
?setEditingValue@HTMLInputElement@WebCore@@QAEXABVString@WTF@@@Z
?settings@Document@WebCore@@QBEPAVSettings@2@XZ
@@ -264,7 +265,7 @@ EXPORTS
??1ContextDestructionObserver@WebCore@@MAE@XZ
?contextDestroyed@ContextDestructionObserver@WebCore@@UAEXXZ
??0ContextDestructionObserver@WebCore@@QAE@PAVScriptExecutionContext@1@@Z
- ?nodesFromRect@Document@WebCore@@QBE?AV?$PassRefPtr@VNodeList@WebCore@@@WTF@@HHIIII_N00@Z
+ ?nodesFromRect@Document@WebCore@@QBE?AV?$PassRefPtr@VNodeList@WebCore@@@WTF@@HHIIII_N0@Z
?selectionStartHasMarkerFor@Editor@WebCore@@QBE_NW4MarkerType@DocumentMarker@2@HH@Z
?webkitWillEnterFullScreenForElement@Document@WebCore@@QAEXPAVElement@2@@Z
?webkitDidEnterFullScreenForElement@Document@WebCore@@QAEXPAVElement@2@@Z
diff --git a/Source/WebKit2/win/WebKit2CFLite.def b/Source/WebKit2/win/WebKit2CFLite.def
index 3ec5b55f5..100843781 100644
--- a/Source/WebKit2/win/WebKit2CFLite.def
+++ b/Source/WebKit2/win/WebKit2CFLite.def
@@ -179,7 +179,6 @@ EXPORTS
?instrumentingAgentsForPage@InspectorInstrumentation@WebCore@@CAPAVInstrumentingAgents@2@PAVPage@2@@Z
?isActiveInsertionPoint@WebCore@@YA_NPBVNode@1@@Z
?isCSSExclusionsEnabled@RuntimeEnabledFeatures@WebCore@@0_NA
- ?isLangAttributeAwareFormControlUIEnabled@RuntimeEnabledFeatures@WebCore@@0_NA
?isPreloaded@CachedResourceLoader@WebCore@@QBE_NABVString@WTF@@@Z
?jsArray@WebCore@@YA?AVJSValue@JSC@@PAVExecState@3@PAVJSDOMGlobalObject@1@V?$PassRefPtr@VDOMStringList@WebCore@@@WTF@@@Z
?lastChangeWasUserEdit@HTMLTextFormControlElement@WebCore@@QBE_NXZ
@@ -216,6 +215,7 @@ EXPORTS
?setDOMException@WebCore@@YAXPAVExecState@JSC@@H@Z
?setFantasyFontFamily@Settings@WebCore@@QAEXABVAtomicString@WTF@@W4UScriptCode@@@Z
?setFixedFontFamily@Settings@WebCore@@QAEXABVAtomicString@WTF@@W4UScriptCode@@@Z
+ ?setImagesEnabled@Settings@WebCore@@QAEX_N@Z
?setMockScrollbarsEnabled@Settings@WebCore@@SAX_N@Z
?mockScrollbarsEnabled@Settings@WebCore@@SA_NXZ
?setPageScaleFactor@Page@WebCore@@QAEXMABVIntPoint@2@@Z
@@ -229,6 +229,7 @@ EXPORTS
?setScrollOffsetFromInternals@ScrollableArea@WebCore@@QAEXABVIntPoint@2@@Z
?setSerifFontFamily@Settings@WebCore@@QAEXABVAtomicString@WTF@@W4UScriptCode@@@Z
?setStandardFontFamily@Settings@WebCore@@QAEXABVAtomicString@WTF@@W4UScriptCode@@@Z
+ ?setStorageBlockingPolicy@Settings@WebCore@@QAEXW4StorageBlockingPolicy@SecurityOrigin@2@@Z
?setSuggestedValue@HTMLInputElement@WebCore@@QAEXABVString@WTF@@@Z
?setEditingValue@HTMLInputElement@WebCore@@QAEXABVString@WTF@@@Z
?settings@Document@WebCore@@QBEPAVSettings@2@XZ
@@ -257,7 +258,7 @@ EXPORTS
??1ContextDestructionObserver@WebCore@@MAE@XZ
?contextDestroyed@ContextDestructionObserver@WebCore@@UAEXXZ
??0ContextDestructionObserver@WebCore@@QAE@PAVScriptExecutionContext@1@@Z
- ?nodesFromRect@Document@WebCore@@QBE?AV?$PassRefPtr@VNodeList@WebCore@@@WTF@@HHIIII_N00@Z
+ ?nodesFromRect@Document@WebCore@@QBE?AV?$PassRefPtr@VNodeList@WebCore@@@WTF@@HHIIII_N0@Z
?selectionStartHasMarkerFor@Editor@WebCore@@QBE_NW4MarkerType@DocumentMarker@2@HH@Z
?restrictScaleFactorToInitialScaleIfNotUserScalable@WebCore@@YAXAAUViewportAttributes@1@@Z
?restrictMinimumScaleFactorToViewportSize@WebCore@@YAXAAUViewportAttributes@1@VIntSize@1@@Z