diff options
author | Simon Hausmann <simon.hausmann@digia.com> | 2012-09-18 15:53:33 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@digia.com> | 2012-09-18 15:53:33 +0200 |
commit | 6bbb7fbbac94d0f511a7bd0cbd50854ab643bfb2 (patch) | |
tree | d9c68d1cca0b3e352f1e438561f3e504e641a08f /Source/WebKit2 | |
parent | d0424a769059c84ae20beb3c217812792ea6726b (diff) | |
download | qtwebkit-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')
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 |