diff options
Diffstat (limited to 'Source/WebKit2')
450 files changed, 35446 insertions, 22290 deletions
diff --git a/Source/WebKit2/CMakeLists.txt b/Source/WebKit2/CMakeLists.txt index d0096ac25..8564d98a9 100644 --- a/Source/WebKit2/CMakeLists.txt +++ b/Source/WebKit2/CMakeLists.txt @@ -123,6 +123,7 @@ SET(WebKit2_SOURCES Platform/CoreIPC/BinarySemaphore.cpp Platform/CoreIPC/Connection.cpp Platform/CoreIPC/DataReference.cpp + Platform/CoreIPC/MessageReceiverMap.cpp PluginProcess/PluginControllerProxy.cpp PluginProcess/PluginCreationParameters.cpp @@ -495,6 +496,8 @@ SET(WebKit2_MESSAGES_IN_FILES PluginProcess/PluginProcess.messages.in PluginProcess/WebProcessConnection.messages.in + Shared/WebConnection.messages.in + Shared/Plugins/NPObjectMessageReceiver.messages.in UIProcess/DrawingAreaProxy.messages.in @@ -559,6 +562,7 @@ SET(WebKit2_MESSAGES_IN_FILES WebProcess/WebPage/EventDispatcher.messages.in WebProcess/WebPage/WebInspector.messages.in WebProcess/WebPage/WebPage.messages.in + WebProcess/WebPage/WebPageGroupProxy.messages.in WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.messages.in ) diff --git a/Source/WebKit2/ChangeLog b/Source/WebKit2/ChangeLog index 5492dce9a..d212c6216 100644 --- a/Source/WebKit2/ChangeLog +++ b/Source/WebKit2/ChangeLog @@ -1,4721 +1,1818 @@ -2012-09-25 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com> +2012-10-15 Simon Hausmann <simon.hausmann@digia.com> - [DRT][WTR] Support overriding the 'WebKitDisplayImagesKey' preference - https://bugs.webkit.org/show_bug.cgi?id=96883 + [Qt] Separate Qt WebKit into Qt WebKit and Qt WebKit Widgets + https://bugs.webkit.org/show_bug.cgi?id=88162 Reviewed by Kenneth Rohde Christiansen. - * WebProcess/InjectedBundle/InjectedBundle.cpp: - (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner): Add - support for changing - WebPreferencesKey::loadsImagesAutomaticallyKey(). - -2012-09-25 Dan Bernstein <mitz@apple.com> - - Try to fix non-Mac builds. - - * WebProcess/WebPage/WebPage.cpp: - (WebKit::WebPage::updatePreferences): - -2012-09-25 Dan Bernstein <mitz@apple.com> - - WebKit2 part of <rdar://problem/11455228> [mac] Stop using screen fonts - https://bugs.webkit.org/show_bug.cgi?id=97620 - - Reviewed by John Sullivan. - - * Shared/WebPreferencesStore.h: - (WebKit): Changed the default value of the screenFontSubstitutionEnabled preference to false. - * Shared/WebProcessCreationParameters.cpp: - (WebKit::WebProcessCreationParameters::WebProcessCreationParameters): Added an initializer for - the new shouldForceScreenFontSubstitution data member. - (WebKit::WebProcessCreationParameters::encode): Added encoding of shouldForceScreenFontSubstitution. - (WebKit::WebProcessCreationParameters::decode): Added decoding of shouldForceScreenFontSubstitution. - * Shared/WebProcessCreationParameters.h: - (WebProcessCreationParameters): Added shouldForceScreenFontSubstitution boolean data member. - * UIProcess/mac/WebContextMac.mm: - (WebKit::WebContext::platformInitializeWebProcess): Added code to set shouldForceScreenFontSubstitution - in the process creation parameters to the value of the NSFontDefaultScreenFontSubstitutionEnabled user - defaults key. - * WebProcess/WebPage/WebPage.cpp: - (WebKit::WebPage::updatePreferences): Changed to enable screen font substitution also if - shouldForceScreenFontSubstitution() is true. - * WebProcess/WebProcess.h: - (WebKit::WebProcess::shouldForceScreenFontSubstitution): Added this getter. - (WebProcess): Added m_shouldForceScreenFontSubstitution boolean data member. - * WebProcess/mac/WebProcessMac.mm: - (WebKit::WebProcess::platformInitializeWebProcess): Added initialization of - m_shouldForceScreenFontSubstitution from the creation parameters. + Rename the QtWebKit module to QtWebKitWidgets. -2012-09-25 Alexey Proskuryakov <ap@apple.com> - - Get rid of WebContext::m_pendingMessagesToPostToInjectedBundle - https://bugs.webkit.org/show_bug.cgi?id=94368 + * PluginProcess.pro: + * UIProcess/API/qt/tests/inspectorserver/inspectorserver.pro: + * UIProcess/API/qt/tests/publicapi/publicapi.pro: + * UIProcess/API/qt/tests/qmltests/DesktopBehavior.pro: + * UIProcess/API/qt/tests/qmltests/WebView.pro: + * UIProcess/API/qt/tests/qquickwebview/qquickwebview.pro: + * UIProcess/API/qt/tests/qrawwebview/qrawwebview.pro: + * UIProcess/API/qt/tests/tests.pri: + * WebProcess.pro: - Reviewed by Anders Carlsson. +2012-10-15 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> - It doesn't appear to be of any use. + [EFL][WK2] Encapsulate ref counting for Ewk objects in a parent class + https://bugs.webkit.org/show_bug.cgi?id=99174 - * UIProcess/WebContext.cpp: - (WebKit::WebContext::createNewWebProcess): - (WebKit::WebContext::postMessageToInjectedBundle): - * UIProcess/WebContext.h: - -2012-09-24 Simon Fraser <simon.fraser@apple.com> - - <rdar://problem/12351906> Have DumpRenderTree and WebKitTestRunner crash logs show which test crashed + Reviewed by Kenneth Rohde Christiansen. - Reviewed by Mark Rowe. + Ewk objects can be inherited from RefCounted class, so that ref counting is encapsulated and RefPtr can be used. + Applied the new approach for Ewk_Navigation_Data and Ewk_Url_Request objects as an example. + The requirement of adoption can be satisfied as long as we keep dealing with smart pointers only. + In case external client provides an already referenced object as a raw pointer, relaxAdoptionRequirement() can be set + explicitly in this specific place. - Use a new WebKitSytemInterface function to add data to crash logs about which - test was running when the crash happened. + * UIProcess/API/efl/ewk_context_history_client.cpp: + (didNavigateWithNavigationData): + * UIProcess/API/efl/ewk_download_job.cpp: + (_Ewk_Download_Job): + (_Ewk_Download_Job::_Ewk_Download_Job): + (_Ewk_Download_Job::~_Ewk_Download_Job): + (ewk_download_job_request_get): + * UIProcess/API/efl/ewk_navigation_data.cpp: + (ewk_navigation_data_ref): + (ewk_navigation_data_unref): + (ewk_navigation_data_original_request_get): + * UIProcess/API/efl/ewk_navigation_data_private.h: + (_Ewk_Navigation_Data): + (_Ewk_Navigation_Data::_Ewk_Navigation_Data): + * UIProcess/API/efl/ewk_navigation_policy_decision.cpp: + (_Ewk_Navigation_Policy_Decision): + (_Ewk_Navigation_Policy_Decision::_Ewk_Navigation_Policy_Decision): + (_Ewk_Navigation_Policy_Decision::~_Ewk_Navigation_Policy_Decision): + (ewk_navigation_policy_request_get): + (ewk_navigation_policy_decision_new): + * UIProcess/API/efl/ewk_url_request.cpp: + (ewk_url_request_ref): + (ewk_url_request_unref): + * UIProcess/API/efl/ewk_url_request_private.h: + (_Ewk_Url_Request): + (_Ewk_Url_Request::_Ewk_Url_Request): + * UIProcess/API/efl/ewk_view_resource_load_client.cpp: + (didInitiateLoadForResource): + (didSendRequestForResource): - * WebProcess/WebCoreSupport/mac/WebSystemInterface.mm: - (InitWebCoreSystemInterface): Hook up the function pointer for [wk|WK]SetCrashReportApplicationSpecificInformation. +2012-10-15 Allan Sandfeld Jensen <allan.jensen@digia.com> -2012-09-25 Beth Dakin <bdakin@apple.com> + [Qt] Regression(r130031) coverRect is used in wrong coordinates. + https://bugs.webkit.org/show_bug.cgi?id=97777 - Build fix. I removed this function as a part of - https://bugs.webkit.org/show_bug.cgi?id=95397 but it is - still needed for nightlies and open source builds. + Reviewed by Jocelyn Turcotte. - * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp: - (WKBundlePageSetPaintedObjectsCounterThreshold): - * WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h: + Convert coverRect from screen coordinates to content coordinates before using it + outside tiled-backing store. -2012-09-25 Beth Dakin <bdakin@apple.com> + * WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.h: + (WebCore::CoordinatedGraphicsLayer::coverRect): - https://bugs.webkit.org/show_bug.cgi?id=95397 - Need to merge didFirstVisuallyNonEmptyLayout and - didNewFirstVisuallyNonEmptyLayout - -and corresponding- - <rdar://problem/10791680> +2012-10-15 Carlos Garcia Campos <cgarcia@igalia.com> - Reviewed by Sam Weinig. + Unreviewed. Fix make distcheck. - The new API has two parts. First, the client has to opt into which - layout milestones they are interested in hearing about using - WKPageListenForLayoutMilestones or - WKBundlePageListenForLayoutMilestones(). Then, WebKit will call - the didLayout(WKLayoutMilestones) callback on the appropriate - clients when the specified layout milestones have fired. didLayout - takes the WKLayoutMilestones bit mask, which will indicate which - milestones have fired since it is possible for two to fire at the - same time. - - Define WKLayoutMilestoneOptions. - * Shared/API/c/WKPageLoadTypes.h: - - Define conversions between WKLayoutMilestoneOptions and - WebCore::LayoutMilestoneOptions - * Shared/API/c/WKSharedAPICast.h: - (WebKit::toWKLayoutMilestoneOptions): - (WebKit): - (WebKit::toLayoutMilestoneOptions): + * GNUmakefile.am: Add .in files in WebKit2/Shared to EXTRA_DIST. + * GNUmakefile.list.am: Remove deleted file. - New API. - * UIProcess/API/C/WKPage.cpp: - (WKPageListenForLayoutMilestones): - * UIProcess/API/C/WKPage.h: - * UIProcess/WebLoaderClient.cpp: - (WebKit::WebLoaderClient::didLayout): - (WebKit): - * UIProcess/WebLoaderClient.h: - (WebLoaderClient): - - didFirstLayoutForFrame, didFirstVisuallyNonEmptyLayoutForFrame, - and didNewFirstVisuallyNonEmptyLayout are now implemented with - didLayout under the hood. So if those old callbacks have been - defined, be sure to add the appropriate layout milestones here for - backwards-compatibility. - * UIProcess/WebPageProxy.cpp: - (WebKit::WebPageProxy::initializeLoaderClient): +2012-10-14 Anders Carlsson <andersca@apple.com> - New API. - (WebKit::WebPageProxy::listenForLayoutMilestones): - (WebKit): - (WebKit::WebPageProxy::didLayout): - * UIProcess/WebPageProxy.h: - (WebPageProxy): - * UIProcess/WebPageProxy.messages.in: + Fix the world. - New API. And remove the now-unnecessary - WKBundlePageSetPaintedObjectsCounterThreshold. - * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp: - (WKBundlePageListenForLayoutMilestones): - * WebProcess/InjectedBundle/API/c/WKBundlePage.h: - * WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h: + Add back a forgotten !. - New API. - * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp: - (WebKit::InjectedBundlePageLoaderClient::didNewFirstVisuallyNonEmptyLayout): - (WebKit): - (WebKit::InjectedBundlePageLoaderClient::didLayout): - * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h: - (InjectedBundlePageLoaderClient): - - Remove dispatchDidFirstLayout, - dispatchDidFirstVisuallyNonEmptyLayout, and - dispatchDidNewFirstVisuallyNonEmptyLayout. They are now replaced - by dispatchDidLayout(LayoutMilestoneOptions) - * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: - (WebKit::WebFrameLoaderClient::dispatchDidLayout): - * WebProcess/WebCoreSupport/WebFrameLoaderClient.h: - (WebFrameLoaderClient): - - didFirstLayoutForFrame, didFirstVisuallyNonEmptyLayoutForFrame, - and didNewFirstVisuallyNonEmptyLayout are now implemented with - didLayout under the hood. So if those old callbacks have been - defined, be sure to add the appropriate layout milestones here for - backwards-compatibility. * WebProcess/WebPage/WebPage.cpp: - (WebKit::WebPage::initializeInjectedBundleLoaderClient): - (WebKit): - - Call into WebCore to set the layout milestones. - (WebKit::WebPage::listenForLayoutMilestones): - * WebProcess/WebPage/WebPage.h: - (WebPage): - * WebProcess/WebPage/WebPage.messages.in: + (WebKit::WebPage::postInjectedBundleMessage): - Account for the new member of PageLoadClient. - * WebProcess/qt/QtBuiltinBundlePage.cpp: - (WebKit::QtBuiltinBundlePage::QtBuiltinBundlePage): +2012-10-14 Sam Weinig <sam@webkit.org> -2012-09-25 Carlos Garcia Campos <cgarcia@igalia.com> + Stop all the crashing! - [GTK][EFL] Disk cache is never dumped to disk in WebKit2 - https://bugs.webkit.org/show_bug.cgi?id=97583 - - Reviewed by Martin Robinson. - - The problem is that WebProcess::platformTerminate(), where the - cache is currently dumped, is not called when the web process - finishes because the UI process closes the connection. The cache - is created and loaded in the main() so it can also be flushed and - dumped there, so that we also make sure it's always called when - the process finishes normally when the main loop quits. - - * WebProcess/efl/WebProcessMainEfl.cpp: - (WebKit::WebProcessMainEfl): Flush and dump the disk cache when - the main loop returns. - * WebProcess/gtk/WebProcessMainGtk.cpp: - (WebKit::WebProcessMainGtk): Ditto. - * WebProcess/soup/WebProcessSoup.cpp: - (WebKit::WebProcess::platformTerminate): Do not flush and dump - the disk cache. - -2012-09-25 Benjamin Poulain <bpoulain@apple.com> - - Add missing support for Geolocation tests on WebKit2 - https://bugs.webkit.org/show_bug.cgi?id=97518 - - Reviewed by Sam Weinig. + The WebProcessProxy is not the Connection::Client, the WebConnectionToWebProcess is. - The existing API for reporting error does not support passing and error message. - - The interface UIProcess<->WebProcess is changed to take an error message, the - existing API now pass a null String, and the new function - WKGeolocationManagerProviderDidFailToDeterminePositionWithErrorMessage() provide - the extended support with error message. - - * UIProcess/API/C/WKGeolocationManager.cpp: - (WKGeolocationManagerProviderDidFailToDeterminePositionWithErrorMessage): - * UIProcess/API/C/WKGeolocationManager.h: - * UIProcess/WebGeolocationManagerProxy.cpp: - (WebKit::WebGeolocationManagerProxy::providerDidFailToDeterminePosition): - * UIProcess/WebGeolocationManagerProxy.h: - (WebGeolocationManagerProxy): - * WebProcess/Geolocation/WebGeolocationManager.cpp: - (WebKit::WebGeolocationManager::didFailToDeterminePosition): - * WebProcess/Geolocation/WebGeolocationManager.h: - (WebGeolocationManager): - * WebProcess/Geolocation/WebGeolocationManager.messages.in: + * UIProcess/WebConnectionToWebProcess.h: + (WebKit::WebConnectionToWebProcess::webProcessProxy): + * UIProcess/WebProcessProxy.cpp: + (WebKit::WebProcessProxy::fromConnection): -2012-09-25 Akash Vaswani <avaswani@apple.com> +2012-10-14 Anders Carlsson <andersca@apple.com> - Crash after clicking in plugin at kauaiexplorer.com - <rdar://problem/11525987/> and https://bugs.webkit.org/show_bug.cgi?id=90925 + Re-land of "WebContext should be a MessageReceiver" + https://bugs.webkit.org/show_bug.cgi?id=98958 Reviewed by Sam Weinig. - Bug: Clicking the plugin to navigate away from the page caused the browser to crash. - This is because it is possible for a beforeunload handler to destroy the plugin - while it is still needed. In this case the handler set visibility to "none" and - then accessed a property on the plugin script object. This forced a layout - that destroyed the plugin. - Fix: Protecting PluginView objects until they are no longer required. - This was done by adding a RefPtr at the beginning of performURLRequest() - - * WebProcess/Plugins/PluginView.cpp: - (WebKit::PluginView::performURLRequest): - -2012-09-25 Carlos Garcia Campos <cgarcia@igalia.com> - - [GTK] Don't kill automatically the web process when the ui process finishes - https://bugs.webkit.org/show_bug.cgi?id=97580 - - Reviewed by Martin Robinson. - - We use prctl(PR_SET_PDEATHSIG, SIGKILL); in linux to make sure the - web process is killed when the UI process finishes. This is not - needed any more since now the web process stops the main loop when - the connection with the UI process is closed in - WebProcess::didClose(). This approach is better because it works - for any platform and makes the web process finish normally from - main(). - - * UIProcess/Launcher/gtk/ProcessLauncherGtk.cpp: - (WebKit::childSetupFunction): Don't call prctl(PR_SET_PDEATHSIG, - SIGKILL) in the child process. - -2012-09-25 Benjamin Poulain <benjamin@webkit.org> - - Build fix, GeolocationClientMock should not be included by WebProcess InjectedBundle - - Unreviewed. - - The patch r129252 removes the dependencies on GeolocationClientMock, r129444 removes - GeolocationClientMock from the Mac port. The #include breaks new Mac build. - - * WebProcess/InjectedBundle/InjectedBundle.cpp: - -2012-09-25 Jocelyn Turcotte <jocelyn.turcotte@digia.com> - - [Qt] PageViewportController: Consolidate positionRangeForViewportAtScale and boundPosition - https://bugs.webkit.org/show_bug.cgi?id=97222 - - Reviewed by Kenneth Rohde Christiansen. - - Those methods are used together everywhere, merge them into a single - clampViewportToContents method. - - * UIProcess/PageViewportController.cpp: - (WebKit::PageViewportController::innerBoundedViewportScale): - (WebKit::PageViewportController::outerBoundedViewportScale): - (WebKit::PageViewportController::clampViewportToContents): - (WebKit): - (WebKit::PageViewportController::pageDidRequestScroll): - (WebKit::PageViewportController::syncVisibleContents): - * UIProcess/PageViewportController.h: - (PageViewportController): - (WebKit): - * UIProcess/qt/PageViewportControllerClientQt.cpp: - (WebKit::PageViewportControllerClientQt::focusEditableArea): - (WebKit::PageViewportControllerClientQt::zoomToAreaGestureEnded): - (WebKit::PageViewportControllerClientQt::nearestValidVisibleContentsRect): - -2012-09-25 Jocelyn Turcotte <jocelyn.turcotte@digia.com> - - [Qt] Unify the PageViewportController<->Client interface regarding positions - https://bugs.webkit.org/show_bug.cgi?id=97220 - - Reviewed by Kenneth Rohde Christiansen. - - - Make sure that css units are used for all position arguments - - Make sure that all positions represent the viewport relatively to the contents - rather than the other way around - - Delay clamping the viewport to the contents size in the controller rather than in the client - - * UIProcess/API/qt/qquickwebview.cpp: - (QQuickWebViewFlickablePrivate::updateViewportSize): - * UIProcess/PageViewportController.cpp: - (WebKit::PageViewportController::pageDidRequestScroll): - (WebKit::PageViewportController::didChangeViewportSize): - (WebKit::PageViewportController::didChangeContentsVisibility): - (WebKit::PageViewportController::syncVisibleContents): - (WebKit::PageViewportController::positionRangeForViewportAtScale): - * UIProcess/PageViewportController.h: - (PageViewportController): - * UIProcess/PageViewportControllerClient.h: - (PageViewportControllerClient): - * UIProcess/qt/PageViewportControllerClientQt.cpp: - (WebKit::PageViewportControllerClientQt::animateContentRectVisible): - (WebKit::PageViewportControllerClientQt::focusEditableArea): - (WebKit::PageViewportControllerClientQt::zoomToAreaGestureEnded): - (WebKit::PageViewportControllerClientQt::nearestValidVisibleContentsRect): - (WebKit::PageViewportControllerClientQt::setViewportPosition): - (WebKit::PageViewportControllerClientQt::updateViewportController): - * UIProcess/qt/PageViewportControllerClientQt.h: - (PageViewportControllerClientQt): - -2012-09-25 Jocelyn Turcotte <jocelyn.turcotte@digia.com> - - [Qt] Make sure that desktop pages honour the devicePixelRatio - https://bugs.webkit.org/show_bug.cgi?id=97215 - - Reviewed by Kenneth Rohde Christiansen. - - The desktopWidth given to computeViewportAttributes is expected to be pixel-ratio adjusted already. - We need to make sure that the viewport size is divided by the pixel ratio to prevent - the equivalent of a 1.0 devicePixelRatio to be in effect once viewportSize.width() is larger - than layoutFallbackWidth. - - * WebProcess/WebPage/WebPage.cpp: - (WebKit::WebPage::sendViewportAttributesChanged): + Make WebContext be a MessageReceiver that lives in its own map. This allows us to get rid of the + knowsHowToHandleMessage functions on MessageReceiverMap and WebContext. -2012-09-25 Simon Pena <spena@igalia.com> - - [GTK] Add Undo / Redo method to WebKit2 GTK+ API - https://bugs.webkit.org/show_bug.cgi?id=97553 - - Reviewed by Martin Robinson. - - Add the macros for Undo / Redo support, and include them - in the documentation. - - * UIProcess/API/gtk/WebKitEditingCommands.h: - * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: - -2012-09-25 Jocelyn Turcotte <jocelyn.turcotte@digia.com> - - [Qt] Abstract as much devicePixelRatio logic as possible behind PageViewportController - https://bugs.webkit.org/show_bug.cgi?id=97214 - - Reviewed by Kenneth Rohde Christiansen. - - Currently the client is required to multiply the scales it receives each bime by the - devicePixelRatio. This shouldn't be required since essentially, the only places that the - devicePixelRatio should be in use, is to adjust the layout size, multiply the base scale - and for scale constants. - - Other related changes: - - Make sure that the controller and it's client are only exchanging effective scales - (cssScale * devicePixelRatio) - - Remove members duplicating m_rawAttributes values - - Use a separate member for the minimum scale to fit the page, separate from the viewport arguments - - Make sure that the minimum scale to fit is adjusted if the contents size isn't - updated after the viewport attributes changed - - Make the scale conversion functions private to discourage this logic from spreading in the client - - * UIProcess/PageViewportController.cpp: - (WebKit::PageViewportController::PageViewportController): - (WebKit::PageViewportController::innerBoundedViewportScale): - (WebKit::PageViewportController::outerBoundedViewportScale): + * Platform/CoreIPC/Connection.h: + (CoreIPC::Connection::client): + (Connection): + * Platform/CoreIPC/MessageReceiverMap.cpp: + (CoreIPC::MessageReceiverMap::addMessageReceiver): + (CoreIPC::MessageReceiverMap::invalidate): + (CoreIPC::MessageReceiverMap::knowsHowToHandleMessage): + (CoreIPC::MessageReceiverMap::dispatchMessage): + (CoreIPC::MessageReceiverMap::dispatchSyncMessage): + * Platform/CoreIPC/MessageReceiverMap.h: + (MessageReceiverMap): + * UIProcess/WebContext.cpp: + (WebKit::WebContext::WebContext): + (WebKit::WebContext::~WebContext): + (WebKit::WebContext::dispatchMessage): + (WebKit::WebContext::dispatchSyncMessage): + (WebKit::WebContext::didReceiveMessage): + (WebKit::WebContext::didReceiveSyncMessage): + * UIProcess/WebContext.h: + (WebContext): + * UIProcess/WebProcessProxy.cpp: + (WebKit::WebProcessProxy::fromConnection): (WebKit): - (WebKit::PageViewportController::devicePixelRatio): - (WebKit::PageViewportController::didChangeContentsSize): - (WebKit::PageViewportController::didChangeViewportAttributes): - (WebKit::PageViewportController::resumeContent): - (WebKit::PageViewportController::updateMinimumScaleToFit): - * UIProcess/PageViewportController.h: - (PageViewportController): - (WebKit::PageViewportController::minimumContentsScale): - (WebKit::PageViewportController::maximumContentsScale): - (WebKit::PageViewportController::currentContentsScale): - (WebKit::PageViewportController::fromViewportScale): - (WebKit::PageViewportController::toViewportScale): - * UIProcess/qt/PageViewportControllerClientQt.cpp: - (WebKit::PageViewportControllerClientQt::focusEditableArea): - (WebKit::PageViewportControllerClientQt::zoomToAreaGestureEnded): - (WebKit::PageViewportControllerClientQt::nearestValidVisibleContentsRect): - (WebKit::PageViewportControllerClientQt::setContentsRectToNearestValidBounds): - (WebKit::PageViewportControllerClientQt::pinchGestureRequestUpdate): - -2012-09-25 Simon Pena <spena@igalia.com> - - [GTK] Fix typo in accessing union field in a GdkEvent in a WebKit2 unit test - https://bugs.webkit.org/show_bug.cgi?id=97564 - - Reviewed by Martin Robinson. - - In the WebViewTest::moveMouseTo method, the wrong field in - a union was being accessed in a GdkEvent: instead of the button - field, we were supposed to act on the motion one. This patch - fixes the typo. - - * UIProcess/API/gtk/tests/WebViewTest.cpp: - (WebViewTest::mouseMoveTo): - -2012-09-25 Carlos Garcia Campos <cgarcia@igalia.com> - - [GTK] Don't use the C API internally in WebKitFindController - https://bugs.webkit.org/show_bug.cgi?id=96775 - - Reviewed by Gustavo Noronha Silva. - - Using the C++ classes directly instead of the C API wrappers we - avoid a lot of toImpl/toAPI casts, string conversions and - allocations. The code is also a lot simpler and easier to read. - - * UIProcess/API/gtk/WebKitFindController.cpp: - (getPage): - (webkitFindControllerConstructed): - (webKitFindControllerPerform): - (webkit_find_controller_search_next): - (webkit_find_controller_search_previous): - (webkit_find_controller_search_finish): - -2012-09-25 Jocelyn Turcotte <jocelyn.turcotte@digia.com> - - [Qt] Apply the devicePixelRatio as soon as possible - https://bugs.webkit.org/show_bug.cgi?id=97211 - - Reviewed by Kenneth Rohde Christiansen. - - Having to wait for the contents size to apply the devicePixelRatio can - be problematic since the devicePixelRatio affects the layout width, which - then affects the contents size. - - Fix the initial issue that this was working around by preventing the - early return if useFixedLayout() is true. - - * UIProcess/API/qt/qquickwebview.cpp: - (QQuickWebViewPrivate::QQuickWebViewPrivate): - (QQuickWebViewFlickablePrivate::didChangeContentsSize): - (QQuickWebViewExperimental::devicePixelRatio): - (QQuickWebViewExperimental::setDevicePixelRatio): - * UIProcess/API/qt/qquickwebview_p_p.h: - (QQuickWebViewPrivate::didChangeContentsSize): - (QQuickWebViewPrivate): - * UIProcess/DrawingAreaProxyImpl.cpp: - (WebKit::DrawingAreaProxyImpl::sendUpdateBackingStoreState): - -2012-09-25 Jocelyn Turcotte <jocelyn.turcotte@digia.com> - - [Qt] Don't render at scale 1.0 when doing a pinch-zoom out - https://bugs.webkit.org/show_bug.cgi?id=97212 - - Reviewed by Kenneth Rohde Christiansen. - - When the user starts pinching this creates extra rendering that is bound to the - page size and can be considerably big, reducing performance and peaking the tile - memory usage. - - Fixing this might require a different approach that we could experiment with. - - * UIProcess/qt/PageViewportControllerClientQt.cpp: - (WebKit::PageViewportControllerClientQt::animateContentRectVisible): - (WebKit::PageViewportControllerClientQt::pinchGestureRequestUpdate): - -2012-09-25 Michael Brüning <michael.bruning@digia.com> - - [Qt][WK2] Focus out is not handled properly - https://bugs.webkit.org/show_bug.cgi?id=96997 - - Reviewed by Simon Hausmann. - - Adds a handler for QQuickWebView::itemChange event that is sent to - QQuickItems when their focus has been changed to replace focusOutEvent. - - This fixes the problem because the focus has been updated when - itemChange is called, while it is not yet update when focusOutEvent - is called. - - * UIProcess/API/qt/qquickwebview.cpp: Removed focusOutEvent. - (QQuickWebView::itemChange): Added in place of focusOutEvent. - * UIProcess/API/qt/qquickwebview_p.h: - * UIProcess/qt/QtWebPageEventHandler.cpp: - (WebKit::QtWebPageEventHandler::handleFocusLost): Renamed from handleFocusOutEvent, parameter removed. - * UIProcess/qt/QtWebPageEventHandler.h: - (QtWebPageEventHandler): + (WebKit::WebProcessProxy::didReceiveMessage): + (WebKit::WebProcessProxy::didReceiveSyncMessage): + * UIProcess/WebProcessProxy.h: + (WebProcessProxy): -2012-09-25 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> +2012-10-14 Anders Carlsson <andersca@apple.com> - [WK2] Supported media MIME types are not included to the list of shown MIME types. - https://bugs.webkit.org/show_bug.cgi?id=97552 + WebPage::PostInjectedBundleMessage should be a variadic message + https://bugs.webkit.org/show_bug.cgi?id=99277 - Reviewed by Kenneth Rohde Christiansen. + Reviewed by Sam Weinig. - Added supported media MIME types to the list of shown MIME types in order to fix - media tests regression after r129479. + Don't use a data reference for messages posted to the injected bundle; they could contain data that requires attachments + (such as shared memory). * UIProcess/WebPageProxy.cpp: - (WebKit::WebPageProxy::canShowMIMEType): - * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp: - (WKBundlePageCanShowMIMEType): - -2012-09-25 KwangYong Choi <ky0.choi@samsung.com> - - [EFL][WK2] Added hideColorPicker test case - https://bugs.webkit.org/show_bug.cgi?id=97522 - - Reviewed by Kenneth Rohde Christiansen. - - Added a test case for removing input element during color picker is shown. - - * UIProcess/API/efl/tests/test_ewk2_view.cpp: - (setColorPickerColor): - (showColorPicker): - (hideColorPicker): - (TEST_F): - -2012-09-25 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> - - [WK2][WTR] WTR bundle client loads binary data as text - https://bugs.webkit.org/show_bug.cgi?id=97532 - - Reviewed by Kenneth Rohde Christiansen. - - Added WKBundlePageCanShowMIMEType() function to WKBundlePage private API. - This function is put to WKBundlePage to keep consistency with WebKit::WebPageProxy::canShowMIMEType(). - Actually it does not need anything from page. - - * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp: - (WKBundlePageCanShowMIMEType): - * WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h: - -2012-09-25 Carlos Garcia Campos <cgarcia@igalia.com> - - [GTK] Don't use the C API internally in WebKitWebView - https://bugs.webkit.org/show_bug.cgi?id=96767 - - Reviewed by Gustavo Noronha Silva. - - Using the C++ classes directly instead of the C API wrappers we - avoid a lot of toImpl/toAPI casts, string conversions and - allocations. The code is also a lot simpler and easier to read. - - * UIProcess/API/gtk/WebKitContextMenuClient.cpp: - (getContextMenuFromProposedMenu): - * UIProcess/API/gtk/WebKitResourceLoadClient.cpp: - (didInitiateLoadForResource): - * UIProcess/API/gtk/WebKitUIClient.cpp: - (createNewPage): - (runJavaScriptPrompt): - (mouseDidMoveOverElement): - (printFrame): - * UIProcess/API/gtk/WebKitURIRequest.cpp: - (webkitURIRequestCreateForResourceRequest): - (webkitURIRequestGetResourceRequest): - * UIProcess/API/gtk/WebKitURIRequestPrivate.h: - * UIProcess/API/gtk/WebKitWebView.cpp: - (allowModalDialogsChanged): - (zoomTextOnlyChanged): - (webkitWebViewSetSettings): - (webkitWebViewConstructed): - (webkitWebViewUpdateURI): - (webkitWebViewCreateNewPage): - (webkitWebViewRunJavaScriptPrompt): - (webkitWebViewMouseTargetChanged): - (webkitWebViewPrintFrame): - (webkitWebViewResourceLoadStarted): - (webkitWebViewPopulateContextMenu): - (webkit_web_view_load_uri): - (webkit_web_view_load_html): - (webkit_web_view_load_alternate_html): - (webkit_web_view_load_plain_text): - (webkit_web_view_load_request): - (webkit_web_view_reload): - (webkit_web_view_reload_bypass_cache): - (webkit_web_view_stop_loading): - (webkit_web_view_go_back): - (webkit_web_view_can_go_back): - (webkit_web_view_go_forward): - (webkit_web_view_can_go_forward): - (webkit_web_view_get_custom_charset): - (webkit_web_view_set_custom_charset): - (webkit_web_view_go_to_back_forward_list_item): - (webkit_web_view_set_settings): - (webkit_web_view_set_zoom_level): - (webkit_web_view_get_zoom_level): - (webkit_web_view_can_execute_editing_command): - (webkit_web_view_execute_editing_command): - (webkit_web_view_run_javascript): - (webkit_web_view_get_inspector): - (webkit_web_view_can_show_mime_type): - (ViewSaveAsyncData): - (getContentsAsMHTMLDataCallback): - (webkit_web_view_save): - (webkit_web_view_save_finish): - (webkit_web_view_save_to_file): - * UIProcess/API/gtk/WebKitWebViewBase.cpp: - (webkitWebViewBaseCreate): - (webkitWebViewBaseCreateWebPage): - * UIProcess/API/gtk/WebKitWebViewBasePrivate.h: - * UIProcess/API/gtk/WebKitWebViewPrivate.h: - -2012-09-24 Bo Liu <boliu@chromium.org> - - Reland "Add in-place reload behavior to ImagesEnabled setting" with optimizations - https://bugs.webkit.org/show_bug.cgi?id=97055 - - Reviewed by Adam Barth. - - Relanding 128780, 128676, 128645. Was reverted in 128914 due to - performance regression in Chromium. - - New changes in addition to previously reverted patches: - - Refactored CachedResource::requestResource, loadResource, and - revalidateResource. Moved CachedResource::load method to end of - requestResource so there is one place where load is called for all - resources. - - Added a enum parameter for requestResource and - determineRevalidationPolicy so that FrameLoaderClient::allowImage call - do not need to be called multiple times. - - Removed CachedImage::load call in requestImage so it is not called - twice. - - Removed unnecessary Frame.h includes in CachedResource and - CachedImage. - - Removed dead load() method declaration in CachedImage. - - Updated text expectation for two image-permissions tests to reflect - the removed calls to allowImage. - - * win/WebKit2.def: + (WebKit::WebPageProxy::postMessageToInjectedBundle): + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::postInjectedBundleMessage): + * WebProcess/WebPage/WebPage.h: + (WebPage): + * WebProcess/WebPage/WebPage.messages.in: -2012-09-24 Sam Weinig <sam@webkit.org> +2012-10-14 Sam Weinig <sam@webkit.org> - WKProcessGroup can't load injected bundle with file URL - <rdar://problem/12322774> - https://bugs.webkit.org/show_bug.cgi?id=97520 + Simplify user content in WebKit2 by using WebCore::UserStyleSheet and WebCore::UserScript directly + https://bugs.webkit.org/show_bug.cgi?id=99276 Reviewed by Anders Carlsson. - * UIProcess/API/mac/WKProcessGroup.mm: - (-[WKProcessGroup initWithInjectedBundleURL:]): - Fix typo. We need to pass the string as path, not as a URL. - -2012-09-24 Sam Weinig <sam@webkit.org> - - Use NSUserDefaults rather than an environment variable to control whether to use an XPC Service for the WebProcess - https://bugs.webkit.org/show_bug.cgi?id=97514 - - Reviewed by Anders Carlsson. + - Removes UserContentContainer in favor of Vector<UserStyleSheet> and Vector<UserScript> right on WebPageGroupData. + - Adds support for UserScripts, but does not expose API for it just yet. + * CMakeLists.txt: * GNUmakefile.list.am: - * PlatformEfl.cmake: * Target.pri: - Add new files. - - * UIProcess/Launcher/ProcessLauncher.h: - * UIProcess/WebProcessProxy.cpp: - (WebKit::WebProcessProxy::connect): - Move platform specific launch options to a new function, platformConnect. - - * UIProcess/WebProcessProxy.h: - * UIProcess/efl/WebProcessProxyEfl.cpp: Added. - Move Efl specific launch options here. - - (WebKit::WebProcessProxy::platformConnect): - * UIProcess/gtk/WebProcessProxyGtk.cpp: Added. - Add stub. - - (WebKit::WebProcessProxy::platformConnect): - * UIProcess/mac/WebProcessProxyMac.mm: - (WebKit::WebProcessProxy::platformConnect): - Move Mac specific launch option setting here, and switch from - using an environment variable to NSUserDefaults. - - * UIProcess/qt/WebProcessProxyQt.cpp: Added. - (WebKit::WebProcessProxy::platformConnect): - Add stub. - - * UIProcess/win/WebProcessProxyWin.cpp: - (WebKit::WebProcessProxy::platformConnect): - Add stub. - -2012-09-24 Laszlo Gombos <l.gombos@samsung.com> - - [GTK][EFL] Remove cairo prefix from include statements - https://bugs.webkit.org/show_bug.cgi?id=97509 - - Reviewed by Gyuyoung Kim. - - Make the build system consistent by always assuming that directory - that includes the cairo headers is included in the include path. - - * UIProcess/cairo/BackingStoreCairo.cpp: - * WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp: - -2012-09-24 Sheriff Bot <webkit.review.bot@gmail.com> - - Unreviewed, rolling out r129388. - http://trac.webkit.org/changeset/129388 - https://bugs.webkit.org/show_bug.cgi?id=97477 - - Caused an assertion in a WebKit2 unit test (Requested by - abarth on #webkit). - - * win/WebKit2.def: - -2012-09-24 Simon Pena <spena@igalia.com> - - [GTK] Add Select All method to WebKit2 GTK+ API - https://bugs.webkit.org/show_bug.cgi?id=97460 - - Reviewed by Martin Robinson. - - Following the same approach used when added Cut, Copy and Paste, - the Select All method is added to the WebKit2 GTK+ API. - - This introduces a new macro in the WebKitEditingCommands, - updates the documentation, and includes a new unit test. - - * UIProcess/API/gtk/WebKitEditingCommands.h: Add a new macro for - the Select All command. - * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Include the Select All - command in the documentation. - * UIProcess/API/gtk/tests/TestWebViewEditor.cpp: Cover the new command - with a unit test. - (testWebViewEditorSelectAll): - (beforeAll): - -2012-09-24 Bo Liu <boliu@chromium.org> - - Reland "Add in-place reload behavior to ImagesEnabled setting" with optimizations - https://bugs.webkit.org/show_bug.cgi?id=97055 - - Reviewed by Adam Barth. - - Relanding 128780, 128676, 128645. Was reverted in 128914 due to - performance regression in Chromium. - - New changes in addition to previously reverted patches: - - Refactored CachedResource::requestResource, loadResource, and - revalidateResource. Moved CachedResource::load method to end of - requestResource so there is one place where load is called for all - resources. - - Added a enum parameter for requestResource and - determineRevalidationPolicy so that FrameLoaderClient::allowImage call - do not need to be called multiple times. - - Removed CachedImage::load call in requestImage so it is not called - twice. - - Removed unnecessary Frame.h includes in CachedResource and - CachedImage. - - Removed dead load() method declaration in CachedImage. - - Updated text expectation for two image-permissions tests to reflect - the removed calls to allowImage. - - * win/WebKit2.def: - -2012-09-24 Joone Hur <joone.hur@intel.com>, Gustavo Noronha Silva <gustavo.noronha@collabora.com> - - [GTK] Implement GraphicsLayer using Clutter - https://bugs.webkit.org/show_bug.cgi?id=73767 - - Reviewed by Martin Robinson. - - Fixed link errors by adding Clutter library and header to WebKit2 build. - - * GNUmakefile.am: - -2012-09-24 Carlos Garcia Campos <cgarcia@igalia.com> - - [GTK] WebKitWebView:is-loading is not updated when the is loaded is started by link clicked navigation action - https://bugs.webkit.org/show_bug.cgi?id=97458 - - Reviewed by Xan Lopez. - - WebKitWebView:is-loading is set to TRUE when the load is started - by using the API. We want to make sure that both URI and - is-loading are updated before load-started is emitted, so we can - update both right before emitting load-started. - - * UIProcess/API/gtk/WebKitWebView.cpp: - (webkitWebViewEmitLoadChanged): Update both uri and is-loading - properties before emitting load-changed signal with - WEBKIT_LOAD_STARTED. - (webkit_web_view_load_uri): Don't call - webkitWebViewSetIsLoading(). - (webkit_web_view_load_html): Ditto. - (webkit_web_view_load_alternate_html): Ditto. - (webkit_web_view_load_plain_text): Ditto. - (webkit_web_view_load_request): Ditto. - (webkit_web_view_reload): Ditto. - (webkit_web_view_reload_bypass_cache): Ditto. - (webkit_web_view_go_back): Ditto. - (webkit_web_view_go_forward): Ditto. - (webkit_web_view_go_to_back_forward_list_item): Ditto. - -2012-09-24 Byungwoo Lee <bw80.lee@samsung.com> - - [EFL][WK2] Change the install path for libewk2UnitTestInjectedBundleSample.so. - https://bugs.webkit.org/show_bug.cgi?id=97302 - - Reviewed by Gyuyoung Kim. - - libewk2UnitTestInjectedBundleSample.so file is created under the - Source directory. - Change install directory for the library to under the build directory. - - * PlatformEfl.cmake: - * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestEnvironment.cpp: - (EWK2UnitTest::EWK2UnitTestEnvironment::injectedBundleSample): - -2012-09-24 Vivek Galatage <vivekgalatage@gmail.com> - - Web Inspector: implement testing harness for pure protocol tests. - https://bugs.webkit.org/show_bug.cgi?id=90675 - - Reviewed by Yury Semikhatsky. - - Adding the export symbol definitions required on Apple Windows and WinCairo - ports to support Inspector Protocol testing harness. - - * win/WebKit2.def: - * win/WebKit2CFLite.def: - -2012-09-24 KwangYong Choi <ky0.choi@samsung.com> - - [EFL][WK2] Invalid featuring of INPUT_TYPE_COLOR in test_ewk2_view. - https://bugs.webkit.org/show_bug.cgi?id=97430 - - Reviewed by Kenneth Rohde Christiansen. - - The tests of ewk_view_context_get and ewk_view_feed_touch_event are not related to - INPUT_TYPE_COLOR. These tests should be moved to outside of INPUT_TYPE_COLOR block. - - * UIProcess/API/efl/tests/test_ewk2_view.cpp: - (TEST_F): - -2012-09-23 Seokju Kwon <seokju.kwon@samsung.com> - - [EFL][WK2] Add setting to toggle developer extensions - https://bugs.webkit.org/show_bug.cgi?id=96974 - - Reviewed by Kenneth Rohde Christiansen. - - This is required to allow the user to inspect pages. (Web inspector) - - * UIProcess/API/efl/ewk_settings.cpp: - (ewk_settings_developer_extras_enabled_set): - (ewk_settings_developer_extras_enabled_get): - * UIProcess/API/efl/ewk_settings.h: - * UIProcess/API/efl/tests/test_ewk2_settings.cpp: - (TEST_F): - -2012-09-23 Byungwoo Lee <bw80.lee@gmail.com> - - Fix build warnings : -Wunused-parameter, -Wparentheses, -Wuninitialized. - https://bugs.webkit.org/show_bug.cgi?id=97306 - - Reviewed by Benjamin Poulain. - - Fix build warning about -Wunused-parameter on Connection.cpp, - WKEinaSharedString.cpp, ewk_view_loader_client.cpp, WebPage.cpp by - using ASSERT_UNUSED() macro or removing parameter name. - Fix build warning about -Wuninitialized on WebEventFactory.cpp by - continueing the loop at the default switch case not to use the - uninitialized variable. - - * Platform/CoreIPC/Connection.cpp: - (CoreIPC::Connection::waitForSyncReply): - * Shared/efl/WebEventFactory.cpp: - (WebKit::WebEventFactory::createWebTouchEvent): - * UIProcess/API/cpp/efl/WKEinaSharedString.cpp: - (WKEinaSharedString::WKEinaSharedString): - * UIProcess/API/efl/ewk_view_loader_client.cpp: - (didSameDocumentNavigationForFrame): - * WebProcess/WebPage/WebPage.cpp: - (WebKit::WebPage::SandboxExtensionTracker::beginLoad): - -2012-09-22 Sam Weinig <sam@webkit.org> - - Install WebProcess XPC services into the right places - https://bugs.webkit.org/show_bug.cgi?id=97385 - - Reviewed by Anders Carlsson. - - * Configurations/WebProcessService.xcconfig: - Update INSTALL_PATH to go into WebKit2.framework/Versions/A/XPCServices. - - * Configurations/WebProcessServiceForWebKitDevelopment.xcconfig: - Since this config file is almost identical to WebProcessService.xcconfig, - just #include it and change the one thing that is different, the INFOPLIST_FILE - - * WebKit2.xcodeproj/project.pbxproj: - Follow XPC procedure and copy the services into the right place, WebKit2.framework/Versions/A/XPCServices - in all builds except production builds where it is not necessary. Also add a symlink like everyone else - does. - -2012-09-22 Sam Weinig <sam@webkit.org> - - Allow setting a custom path to where the plug-in sandbox profiles are being kept - https://bugs.webkit.org/show_bug.cgi?id=97399 - - Reviewed by Anders Carlsson. - - Add a new default to allow controlling where to look for plug-in sandbox profiles - called "PlugInSandboxProfileDirectoryPath". - - * PluginProcess/mac/PluginProcessMac.mm: - (WebKit::initializeSandbox): - Use the passed in sandboxProfileDirectoryPath instead of hard coding /usr/share/sandbox/. - - (WebKit::PluginProcess::platformInitialize): - * Shared/Plugins/PluginProcessCreationParameters.cpp: - (WebKit::PluginProcessCreationParameters::encode): - (WebKit::PluginProcessCreationParameters::decode): - * Shared/Plugins/PluginProcessCreationParameters.h: - (PluginProcessCreationParameters): - * UIProcess/Plugins/mac/PluginProcessProxyMac.mm: - (WebKit::PluginProcessProxy::platformInitializePluginProcess): - Grab the sandboxProfileDirectoryPath from standardUserDefaults and pass it to - the plug-in. - -2012-09-21 Sam Weinig <sam@webkit.org> - - Fix the Lion and Snow Leopard builds. - - * UIProcess/Launcher/mac/ProcessLauncherMac.mm: - (WebKit::connectToWebProcessServiceForWebKitDevelopment): - (WebKit::createWebProcessServiceForWebKitDevelopment): - (WebKit::createWebProcessService): - -2012-09-21 Sam Weinig <sam@webkit.org> - - WebProcess XPC services need have their environment set without disrupting all other XPC services - https://bugs.webkit.org/show_bug.cgi?id=95161 - - Reviewed by Anders Carlsson. - - Replace the WebKit2Service with two new XPC services, the WebProcessService, which is only used - when installed on the system, and the WebProcessServiceForWebKitDevelopment which is used at all - other times. We need both services because XPC can't in general be configured to have a custom - environment at runtime, and thus WebProcessServiceForWebKitDevelopment has the ability to re-exec - itself into a desired state. That capability is rather undesirable for installed usage, where we - don't want to allow arbitrary changes to the environment of the service, which would allow breaking - the App Sandbox. - - * Configurations/WebProcessService.xcconfig: Copied from Source/WebKit2/Configurations/WebKit2Service.xcconfig. - * Configurations/WebProcessServiceForWebKitDevelopment.xcconfig: Renamed from Source/WebKit2/Configurations/WebKit2Service.xcconfig. - Add new configuration files. - - * Platform/mac/WorkQueueMac.cpp: - (WorkQueue::registerMachPortEventHandler): - (WorkQueue::unregisterMachPortEventHandler): - Add helpful assertions. Without them, we confusingly crash a bit later in HashTable code. - - * UIProcess/Launcher/mac/ProcessLauncherMac.mm: - (WebKit::addDYLDEnvironmentAdditions): - Factor out environment additions to this helper function. - - (WebKit::connectToWebProcessServiceForWebKitDevelopment): - (WebKit::createWebProcessServiceForWebKitDevelopment): - Add functionality to setup the webkit development service via re-exec. - - (WebKit::createWebProcessService): - Add functionality to connect to the installed WebProcess service. - - (WebKit::createProcess): - Factor out posix_spawn based launching into this helper function. - - (WebKit::ProcessLauncher::launchProcess): - Call the correct process creation function based on launch data and install state. - * WebKit2.xcodeproj/project.pbxproj: - Add new files to the project. - - * WebProcess/mac/WebProcessServiceEntryPoints.h: Renamed from Source/WebKit2/WebProcess/mac/WebProcessXPCServiceMain.h. - * WebProcess/mac/WebProcessServiceEntryPoints.mm: Renamed from Source/WebKit2/WebProcess/mac/WebProcessXPCServiceMain.mm. - (WebKit::WebProcessServiceEventHandler): - (WebProcessServiceMain): - (InitializeWebProcessForWebProcessServiceForWebKitDevelopment): - Rename to WebProcessServiceEntryPoints since this is now used for both the WebProcessService and the - WebProcessServiceForWebKitDevelopment. - - * WebProcessService/Info.plist: Copied from Source/WebKit2/WebKit2Service/Info.plist. - * WebProcessService/WebProcessServiceMain.mm: Renamed from Source/WebKit2/WebKit2Service/MainMacService.mm. - Add main for the WebProcessService which just calls into the WebProcessServiceEntryPoints in WebKit2.framework. - - * WebProcessServiceForWebKitDevelopment/Info.plist: Renamed from Source/WebKit2/WebKit2Service/Info.plist. - * WebProcessServiceForWebKitDevelopment/WebProcessServiceForWebKitDevelopmentMain.mm: Added. - Add main for the WebProcessServiceForWebKitDevelopment, which can't just call directly into WebProcessServiceEntryPoints - as the framework path might not be set up correctly. This is also where we re-exec ourselves when required. - -2012-09-21 Anders Carlsson <andersca@apple.com> - - Fix WebKit2 sandbox profile. - - Instead of using #pragmas, just disable all warnings in DerivedSources.make. I suspect - that passing -traditional to the preprocessor disables support for #pragmas but I'm afraid - to change it to something else. - - * DerivedSources.make: - * WebProcess/com.apple.WebProcess.sb.in: - -2012-09-21 Benjamin Poulain <bpoulain@apple.com> - - fast/dom/Geolocation/disconnected-frame.html test asserts - https://bugs.webkit.org/show_bug.cgi?id=97376 - - Reviewed by Alexey Proskuryakov. - - In GeolocationPermissionRequestManager::cancelRequestForGeolocation, we access an iterator - after its value has been removed from the table. - There are two problems with that: - -The iterator is no longer valid after the container has been modified. - -If it was the last element, the table has been freed and the iterator points to deleted memory. - - We solve the issue by keeping a copy of the ID. We could have inverted the order of the calls - but that would make the issue less visible for future change. - - Testing covered by fast/dom/Geolocation/disconnected-frame.html. - - * WebProcess/Geolocation/GeolocationPermissionRequestManager.cpp: - (WebKit::GeolocationPermissionRequestManager::cancelRequestForGeolocation): - -2012-09-21 Sam Weinig <sam@webkit.org> - - REGRESSION (r120361) Warnings while preprocessing com.apple.WebProcess.sb.in - https://bugs.webkit.org/show_bug.cgi?id=91079 - <rdar://problem/12332660> - - Reviewed by Anders Carlsson. - - * WebProcess/com.apple.WebProcess.sb.in: - Add pragma to ignore the invalid preprocessor warnings. - -2012-09-21 Chris Rogers <crogers@google.com> - - Add Web Audio support for deprecated/legacy APIs - https://bugs.webkit.org/show_bug.cgi?id=97050 - - Reviewed by Eric Carlson. - - * Configurations/FeatureDefines.xcconfig: - -2012-09-21 Benjamin Poulain <bpoulain@apple.com> - - [WK2] Add basic testing support for Geolocation - https://bugs.webkit.org/show_bug.cgi?id=97278 - - Reviewed by Kenneth Rohde Christiansen. - - * Shared/API/c/WKNumber.h: Fix an unfortunate copy-paste :) + * win/WebKit2.vcproj: + * Shared/UserContentContainer.cpp: Removed. + * Shared/UserContentContainer.h: Removed. + Remove UserContentContainer.h/cpp. - * WebProcess/InjectedBundle/API/c/WKBundle.cpp: + * Shared/API/c/WKBase.h: + * Shared/API/c/WKSharedAPICast.h: + (WebKit::toUserScriptInjectionTime): + (WebKit::toUserContentInjectedFrames): + * WebProcess/InjectedBundle/API/c/WKBundleAPICast.h: * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h: - * WebProcess/InjectedBundle/InjectedBundle.cpp: - * WebProcess/InjectedBundle/InjectedBundle.h: - (InjectedBundle): - Remove the code forcing the Geolocation permissions. It was working around the normal - Geolocation code and updating all the GeolocationController, which is a terrible idea. - -2012-09-21 Alexey Proskuryakov <ap@apple.com> - - [WK2] Make Web Inspector work in multiple web process mode - https://bugs.webkit.org/show_bug.cgi?id=97354 - - Reviewed by Timothy Hatcher. - - * UIProcess/mac/WebInspectorProxyMac.mm: (WebKit::WebInspectorProxy::platformCreateInspectorPage): - Tell WKView that it's related to original page, making inspector page be in the same process. - -2012-09-21 Carlos Garcia Campos <cgarcia@igalia.com> - - [GTK] Implement ViewState methods in PageClientImpl in WebKit2 - https://bugs.webkit.org/show_bug.cgi?id=97202 - - Reviewed by Martin Robinson. - - Implement isViewWindowActive(), isViewFocused(), isViewVisible() - and isViewInWindow() in PageClientImpl. - - * GNUmakefile.list.am: Add new files to compilation. - * UIProcess/API/C/gtk/WKView.cpp: - (WKViewSetFocus): New private method used by WTR to focus the - WebView. - * UIProcess/API/C/gtk/WKViewPrivate.h: Added. - * UIProcess/API/gtk/PageClientImpl.cpp: - (WebKit::PageClientImpl::isViewWindowActive): Return - webkitWebViewBaseIsInWindowActive(). - (WebKit::PageClientImpl::isViewFocused): Return - webkitWebViewBaseIsFocused(). - (WebKit::PageClientImpl::isViewVisible): Return - webkitWebViewBaseIsVisible(). - (WebKit::PageClientImpl::isViewInWindow): Return - webkitWebViewBaseIsInWindow(). - * UIProcess/API/gtk/WebKitWebViewBase.cpp: - (webkitWebViewBaseNotifyResizerSize): Updated to not receive the - window as parameter since it's now saved in the instance struct. - (toplevelWindowResizeGripVisibilityChanged): Update to - webkitWebViewBaseNotifyResizerSize() API change. - (toplevelWindowFocusInEvent): Update ViewWindowIsActive flag and - notify the WebPageProxy if it changed. - (toplevelWindowFocusOutEvent): Ditto. - (webkitWebViewBaseSetToplevelOnScreenWindow): Set the toplevel - on-screen window where the view is currently added and notify - WebPageProxy if it changed. - (webkitWebViewBaseRealize): Call - webkitWebViewBaseSetToplevelOnScreenWindow() if the view has been - added to an on-screen window. - (webkitWebViewBaseFinalize): Reset the toplevel on-screen window - to make sure all signals are disconnected when the view is - destroyed. - (webkit_web_view_base_init): Remove unneeded initialization. - (resizeWebKitWebViewBaseFromAllocation): Update to - webkitWebViewBaseNotifyResizerSize() API change. - (webkitWebViewBaseMap): Update ViewIsVisible flag and notify - WebPageProxy if it changed. - (webkitWebViewBaseUnmap): Ditto. - (webkitWebViewBaseFocusInEvent): Call webkitWebViewBaseSetFocus() - passing true to focus the view. - (webkitWebViewBaseFocusOutEvent): Call webkitWebViewBaseSetFocus() - passing false to unfocus the view. - (webkitWebViewBaseParentSet): Reset the toplevel on-screen window - if the view is re-parented. - (webkit_web_view_base_class_init): Add implementations for map and - parent-set virtual functions. - (webkitWebViewBaseSetFocus): Update the ViewIsFocused and notify - WebPageProxy if it changed. - (webkitWebViewBaseIsInWindowActive): - (webkitWebViewBaseIsFocused): - (webkitWebViewBaseIsVisible): - (webkitWebViewBaseIsInWindow): - * UIProcess/API/gtk/WebKitWebViewBasePrivate.h: - * UIProcess/API/gtk/tests/TestWebKitWebView.cpp: - (testWebViewMouseTarget): Use a GTK_WINDOW_TOPLEVEL instead of - POPUP for this test to make sure the view receives focus change - events. - -2012-09-21 Carlos Garcia Campos <cgarcia@igalia.com> - - [GTK] Add WebKitWebView:is-loading property to WebKit2 GTK+ API - https://bugs.webkit.org/show_bug.cgi?id=97330 - - Reviewed by Xan Lopez. - - WebKitWebView:is-loading property allows to monitor when the view - is loading something without having to deal with load-changed - signal and all the details of the load status. This also allows to - know when a new load is started before it goes to STARTED status. - - * UIProcess/API/gtk/WebKitWebView.cpp: - (webkitWebViewGetProperty): Implement getter for is-loading - property. - (webkit_web_view_class_init): Add is-loading property. - (webkitWebViewSetIsLoading): Set whether web view is loading a - page and emit notify signal if the is-loading property has - changed. Also update the active URI when a new load operation has - started. - (webkitWebViewEmitLoadChanged): Set is-loading to FALSE when load - finishes. - (webkitWebViewLoadFailed): Set is-loading to FALSE when load fails. - (webkit_web_view_load_uri): Set is-loading to TRUE. - (webkit_web_view_load_html): Ditto. - (webkit_web_view_load_alternate_html): Ditto. - (webkit_web_view_load_plain_text): Ditto. - (webkit_web_view_load_request): Ditto. - (webkit_web_view_reload): Ditto. - (webkit_web_view_reload_bypass_cache): Ditto. - (webkit_web_view_is_loading): Return whether the view is loading a - page. - (webkit_web_view_go_back): Set is-loading to TRUE. - (webkit_web_view_go_forward): Ditto. - (webkit_web_view_go_to_back_forward_list_item): Ditto. - * UIProcess/API/gtk/WebKitWebView.h: - * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Add new symbol. - * UIProcess/API/gtk/tests/LoadTrackingTest.cpp: - (loadChangedCallback): - (loadFailedCallback): - * UIProcess/API/gtk/tests/TestLoaderClient.cpp: - (testWebViewIsLoading): - (beforeAll): - -2012-09-20 Eunmi Lee <eunmi15.lee@samsung.com> - - [EFL][WK2] Add API to feed touch event. - https://bugs.webkit.org/show_bug.cgi?id=96903 - - Reviewed by Kenneth Rohde Christiansen. - - The applications will use this API to feed touch event to the view - when they want to generate touch event from their own event processor. - WTR also will use this API to generate touch event with multiple touch - points for passing test cases of touch event in the WebKit2/EFL. - - * PlatformEfl.cmake: - * UIProcess/API/efl/EWebKit2.h: - * UIProcess/API/efl/ewk_view.cpp: - (ewk_view_feed_touch_event): - * UIProcess/API/efl/ewk_view.h: - * UIProcess/API/efl/tests/test_ewk2_view.cpp: - (TEST_F): - -2012-09-20 Patrick Gansterer <paroga@webkit.org> - - Add String::numberToStringFixedWidth() - https://bugs.webkit.org/show_bug.cgi?id=96330 - - Reviewed by Benjamin Poulain. - - * win/WebKit2.def: - * win/WebKit2CFLite.def: - -2012-09-17 Jon Lee <jonlee@apple.com> - - Safari 6 notifications' onclick handlers can't call window.open() - https://bugs.webkit.org/show_bug.cgi?id=96959 - <rdar://problem/12132427> - - Reviewed by Darin Adler. - - The click is not being treated as a user gesture when the message is sent to the web process. - - * WebProcess/Notifications/WebNotificationManager.cpp: - (WebKit::WebNotificationManager::didClickNotification): Gets called when the user clicks on the - platform notification. Set UserGestureIndicator to show the click event is due to user gesture. - -2012-09-20 Eunmi Lee <eunmi15.lee@samsung.com> - - [EFL][WK2] Add APIs to create, delete and get ewk_context. - https://bugs.webkit.org/show_bug.cgi?id=89186 - - Reviewed by Kenneth Rohde Christiansen. + Move UserContent enums to WKBase.h so they can be used from both processes, and move the + casts to WKSharedAPICast. - Provide APIs to create ewk_context with or without injected bundle path - and delete created ewk_context. - Additionally, the ewk_view can be created with ewk_context which is not - default context, so we have to get ewk_context from ewk_view. - - * PlatformEfl.cmake: - * UIProcess/API/efl/PageClientImpl.cpp: - (WebKit::PageClientImpl::handleDownloadRequest): - * UIProcess/API/efl/ewk_context.cpp: - (_Ewk_Context): - (_Ewk_Context::_Ewk_Context): - (ewk_context_ref): - (ewk_context_unref): - (ewk_context_new): - (ewk_context_new_with_injected_bundle_path): - * UIProcess/API/efl/ewk_context.h: - * UIProcess/API/efl/ewk_view.cpp: - (_Ewk_View_Private_Data): - (_Ewk_View_Private_Data::_Ewk_View_Private_Data): - (_ewk_view_priv_del): - (_ewk_view_initialize): - (ewk_view_context_get): - * UIProcess/API/efl/ewk_view.h: - * UIProcess/API/efl/tests/InjectedBundle/injected_bundle_sample.cpp: Added. - * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestEnvironment.cpp: - (EWK2UnitTest::EWK2UnitTestEnvironment::injectedBundleSample): - (EWK2UnitTest): - * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestEnvironment.h: - (EWK2UnitTestEnvironment): - * UIProcess/API/efl/tests/test_ewk2_context.cpp: - (TEST_F): - * UIProcess/API/efl/tests/test_ewk2_cookie_manager.cpp: - (TEST_F): - * UIProcess/API/efl/tests/test_ewk2_view.cpp: - (TEST_F): - -2012-09-20 KwangYong Choi <ky0.choi@samsung.com> - - [EFL][WK2] Implemented color picker API - https://bugs.webkit.org/show_bug.cgi?id=91832 - - Reviewed by Kenneth Rohde Christiansen. - - Add support for color picker API for EFL port in WebKit2. - - The external application can implement input picker by overriding - smart class function. - - * UIProcess/API/efl/ewk_view.cpp: - (_Ewk_View_Private_Data): - (_Ewk_View_Private_Data::_Ewk_View_Private_Data): - (ewk_view_color_picker_request): - (ewk_view_color_picker_dismiss): - (ewk_view_color_picker_color_set): - * UIProcess/API/efl/ewk_view.h: - * UIProcess/API/efl/ewk_view_private.h: - * UIProcess/API/efl/ewk_view_ui_client.cpp: - (showColorPicker): - (hideColorPicker): - (ewk_view_ui_client_attach): - * UIProcess/API/efl/tests/test_ewk2_view.cpp: - (onColorPickerDone): - (setColorPickerColor): - (showColorPicker): - (hideColorPicker): - (TEST_F): - -2012-09-20 Balazs Kelemen <kbalazs@webkit.org> - - [CoordinatedGraphics] Don't reset m_shouldSyncFrame in flushPendingLayerChanges - https://bugs.webkit.org/show_bug.cgi?id=97108 - - Reviewed by Noam Rosenthal. - - Stop ignoring if m_shouldSyncFrame has been set between the two - layer flush. It can be set during layout in several situations, - for example when a layer is deleted or changed state. We want to - send the DidRenderFrame message at the next flush in those situations - so the UI process will apply the changes as soon as possible. - - * WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp: - (WebKit::LayerTreeCoordinator::flushPendingLayerChanges): - -2012-09-20 Byungwoo Lee <bw80.lee@samsung.com> - - [EFL][WK2] Check timeout on waitUntilLoadFinished() and waitUntilTitleChangedTo(). - https://bugs.webkit.org/show_bug.cgi?id=97081 - - Reviewed by Gyuyoung Kim. + * Shared/WebCoreArgumentCoders.cpp: + * Shared/WebCoreArgumentCoders.h: + Add coders for UserStyleSheet and UserScript. + + * Shared/WebPageGroupData.cpp: + (WebKit::WebPageGroupData::encode): + (WebKit::WebPageGroupData::decode): + * Shared/WebPageGroupData.h: + (WebPageGroupData): + Replace UserContentContainer with Vector<UserStyleSheet> and Vector<UserScript>. Stop using + CoreIPC::In() and CoreIPC::Out(), and instead just call encode/decode multiple times. + + * UIProcess/API/C/WKPageGroup.cpp: + (WKPageGroupAddUserStyleSheet): + Pass the parameters with as little conversion as possible to the C++ to avoid doing too much + work in the API layer. + + * UIProcess/WebPageGroup.cpp: + (WebKit::toStringVector): + (WebKit::WebPageGroup::addUserStyleSheet): + (WebKit::WebPageGroup::addUserScript): + (WebKit::WebPageGroup::removeAllUserStyleSheets): + (WebKit::WebPageGroup::removeAllUserScripts): + (WebKit::WebPageGroup::removeAllUserContent): + * UIProcess/WebPageGroup.h: + * WebProcess/WebPage/WebPageGroupProxy.cpp: + (WebKit::WebPageGroupProxy::WebPageGroupProxy): + (WebKit::WebPageGroupProxy::addUserStyleSheet): + (WebKit::WebPageGroupProxy::addUserScript): + (WebKit::WebPageGroupProxy::removeAllUserScripts): + (WebKit::WebPageGroupProxy::removeAllUserContent): + * WebProcess/WebPage/WebPageGroupProxy.h: + (WebPageGroupProxy): + * WebProcess/WebPage/WebPageGroupProxy.messages.in: + Add support for user scripts and update to use UserScript and UserStyleSheet directly. + +2012-10-14 Jon Lee <jonlee@apple.com> + + Allow notification origin permission request when no js callback is provided + https://bugs.webkit.org/show_bug.cgi?id=63615 + <rdar://problem/11059590> - Add assertion to check timeout on waitUntilLoadFinished() and - waitUntilTitleChangedTo(). - Set the default timeout for the functions as 10 seconds. + Reviewed by Sam Weinig. - * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h: - (EWK2UnitTestBase): - * UIProcess/API/efl/tests/test_ewk2_back_forward_list.cpp: - (TEST_F): - * UIProcess/API/efl/tests/test_ewk2_context.cpp: - (TEST_F): - * UIProcess/API/efl/tests/test_ewk2_view.cpp: - (TEST_F): + Null checks already exist for both standard and legacy API callbacks, so no changes are needed here + like there are in WebKit 1. The checks existed because the callbacks are held in a hash map used to keep + track of pending requests. -2012-09-20 Jinwoo Song <jinwoo7.song@samsung.com> + Also, add a check for a null callback when short circuiting. - [EFL] Change the log macro names to be more consistent with EINA LOG - https://bugs.webkit.org/show_bug.cgi?id=97158 + * WebProcess/Notifications/NotificationPermissionRequestManager.cpp: + (WebKit::NotificationPermissionRequestManager::startRequest): - Reviewed by Kenneth Rohde Christiansen. +2012-10-14 Anders Carlsson <andersca@apple.com> - Some log macro names in WebKit2 are inconsistent with EINA LOG names - such as WRN/INF not WARN/INFO. + Move QDataStream functions into HistoryItemQt.cpp + https://bugs.webkit.org/show_bug.cgi?id=99203 - #define WRN(...) EINA_LOG_DOM_WARN(_ewk_log_dom, __VA_ARGS__) - #define INF(...) EINA_LOG_DOM_INFO(_ewk_log_dom, __VA_ARGS__) + Reviewed by Andreas Kling. - This patch changes the such names to be consistent with EINA LOG's names. + Forward declare QTransform. - * UIProcess/API/efl/ewk_main.cpp: - (ewk_init): - * UIProcess/API/efl/ewk_private.h: - * UIProcess/API/efl/ewk_view.cpp: - (ewk_view_webprocess_crashed): + * Shared/qt/WebEventFactoryQt.h: -2012-09-20 Christophe Dumez <christophe.dumez@intel.com> +2012-10-12 Anders Carlsson <andersca@apple.com> - [EFL][WK2] Same page navigation does not update view URI - https://bugs.webkit.org/show_bug.cgi?id=97094 + Explicitly mark messages variadic + https://bugs.webkit.org/show_bug.cgi?id=99229 - Reviewed by Kenneth Rohde Christiansen. + Reviewed by Dan Bernstein. - Handle didSameDocumentNavigationForFrame callback in - WKPageLoaderClient in order to update the view URI. - This fixes issues with the view URI not being updated - in case of a same page navigation. + Instead of deciding whether messages are variadic based on their type, decide it based on the existence of a 'Variadic' message attribute. - * UIProcess/API/efl/ewk_view_loader_client.cpp: - (didSameDocumentNavigationForFrame): - (ewk_view_loader_client_attach): - * UIProcess/API/efl/ewk_view_private.h: - * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp: - (CallbackDataTimer): - (EWK2UnitTest::CallbackDataTimer::CallbackDataTimer): - (EWK2UnitTest::CallbackDataTimer::~CallbackDataTimer): - (EWK2UnitTest::CallbackDataTimer::isDone): - (EWK2UnitTest::CallbackDataTimer::setDone): - (EWK2UnitTest::CallbackDataTimer::didTimeOut): - (EWK2UnitTest::CallbackDataTimer::setTimedOut): - (EWK2UnitTest): - (CallbackDataExpectedValue): - (EWK2UnitTest::CallbackDataExpectedValue::CallbackDataExpectedValue): - (EWK2UnitTest::CallbackDataExpectedValue::expectedValue): - (EWK2UnitTest::onLoadFinished): - (EWK2UnitTest::timeOutWhileWaitingUntilLoadFinished): - (EWK2UnitTest::EWK2UnitTestBase::waitUntilLoadFinished): - (EWK2UnitTest::onTitleChanged): - (EWK2UnitTest::timeOutWhileWaitingUntilTitleChangedTo): - (EWK2UnitTest::EWK2UnitTestBase::waitUntilTitleChangedTo): - (EWK2UnitTest::onURIChanged): - (EWK2UnitTest::timeOutWhileWaitingUntilURIChangedTo): - (EWK2UnitTest::EWK2UnitTestBase::waitUntilURIChangedTo): Add convenience function to test - framework in order to wait until the view URI changes to a given value. - * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h: - (EWK2UnitTestBase): - * UIProcess/API/efl/tests/resources/same_page_navigation.html: Added. - * UIProcess/API/efl/tests/test_ewk2_view.cpp: - (TEST_F): Add corresponding unit test to verify fix and prevent regressions - in the future. + * Scripts/webkit2/messages.py: + (messages_to_kind_enum): + (decode_type): + (async_case_statement): + (sync_case_statement): + * UIProcess/WebPageProxy.messages.in: + * WebProcess/WebProcess.messages.in: -2012-09-19 Dan Bernstein <mitz@apple.com> +2012-10-14 Sam Weinig <sam@webkit.org> - WebKit2 part of adding a setting and API for disabling screen font substitution - https://bugs.webkit.org/show_bug.cgi?id=97168 + Make UserScript and UserStyleSheet value objects that are copyable + https://bugs.webkit.org/show_bug.cgi?id=99275 Reviewed by Tim Horton. - * Shared/WebPreferencesStore.h: - (WebKit): Defined ScreenFontSubstitutionEnabled key with a default value of true. - * UIProcess/API/C/WKPreferences.cpp: - (WKPreferencesSetScreenFontSubstitutionEnabled): Added this setter. - (WKPreferencesGetScreenFontSubstitutionEnabled): Added this getter. - * UIProcess/API/C/WKPreferencesPrivate.h: - * WebProcess/WebPage/WebPage.cpp: - (WebKit::WebPage::updatePreferences): Added a call to Settings::setScreenFontSubstitutionEnabled - to push the preference into Settings. - -2012-09-19 Jinwoo Song <jinwoo7.song@samsung.com> + * Shared/UserContentContainer.cpp: + (WebKit::toStringVector): + (WebKit::UserContentContainer::Item::Item): + (WebKit::UserContentContainer::Item::encode): + (WebKit::UserContentContainer::Item::decode): + * Shared/UserContentContainer.h: + (WebKit::UserContentContainer::Item::whitelist): + (WebKit::UserContentContainer::Item::blacklist): + Switch UserContentContainer::Item to store Vector<String> instead of ImmutableArray, easing + transition to new PageGroup function signatures. - Fix unused parameter compile warnings in WebKit/WebKit2 - https://bugs.webkit.org/show_bug.cgi?id=96742 - - Reviewed by Gyuyoung Kim. - - Fix unused parameter compile warning messages(-Wunused-parameter) in WebKit2 during EFL build. - WebCore's warning messages were fixed in r128570. - - * Shared/FontInfo.cpp: - (WebKit::FontInfo::encode): - (WebKit::FontInfo::decode): - * Shared/PlatformPopupMenuData.cpp: - (WebKit::PlatformPopupMenuData::encode): - (WebKit::PlatformPopupMenuData::decode): - * Shared/SandboxExtension.h: - (WebKit::SandboxExtension::createHandleForTemporaryFile): - * Shared/ShareableSurface.cpp: - (WebKit::ShareableSurface::create): - * Shared/WebMemorySampler.cpp: - (WebKit::WebMemorySampler::appendCurrentMemoryUsageToFile): - * UIProcess/API/C/WKPage.cpp: - (WKPageGetContentsAsMHTMLData): - * UIProcess/API/C/WKPluginSiteDataManager.cpp: - (WKPluginSiteDataManagerClearSiteData): - (WKPluginSiteDataManagerClearAllSiteData): - * UIProcess/API/C/WKPreferences.cpp: - (WKPreferencesSetHixie76WebSocketProtocolEnabled): - (WKPreferencesGetHixie76WebSocketProtocolEnabled): - * UIProcess/API/efl/BatteryProvider.cpp: - (startUpdatingCallback): - (stopUpdatingCallback): - * UIProcess/API/efl/PageClientImpl.cpp: - (WebKit::PageClientImpl::doneWithTouchEvent): - * UIProcess/API/efl/VibrationProvider.cpp: - (vibrateCallback): - (cancelVibrationCallback): - * UIProcess/API/efl/ewk_context_download_client.cpp: - (decideDestinationWithSuggestedFilename): - (didCreateDestination): - * UIProcess/API/efl/ewk_view.cpp: - (_ewk_view_on_focus_in): - (_ewk_view_on_focus_out): - (_ewk_view_on_mouse_wheel): - (_ewk_view_on_mouse_down): - (_ewk_view_on_mouse_up): - (_ewk_view_on_mouse_move): - (_ewk_view_on_key_down): - (_ewk_view_on_key_up): - (_ewk_view_smart_move): - (ewk_view_contents_size_changed): - * UIProcess/API/efl/ewk_view_find_client.cpp: - (didFindString): - * UIProcess/API/efl/ewk_view_form_client.cpp: - (willSubmitForm): - * UIProcess/API/efl/ewk_view_loader_client.cpp: - (didReceiveIntentForFrame): - (registerIntentServiceForFrame): - (didFinishLoadForFrame): - (didFailLoadWithErrorForFrame): - (didStartProvisionalLoadForFrame): - (didReceiveServerRedirectForProvisionalLoadForFrame): - (didFailProvisionalLoadWithErrorForFrame): - (didChangeBackForwardList): - * UIProcess/API/efl/ewk_view_policy_client.cpp: - (decidePolicyForNavigationAction): - (decidePolicyForNewWindowAction): - (decidePolicyForResponseCallback): - * UIProcess/DrawingAreaProxy.h: - (WebKit::DrawingAreaProxy::update): - (WebKit::DrawingAreaProxy::didUpdateBackingStoreState): - * UIProcess/DrawingAreaProxyImpl.cpp: - (WebKit::DrawingAreaProxyImpl::didUpdateBackingStoreState): - (WebKit::DrawingAreaProxyImpl::enterAcceleratedCompositingMode): - (WebKit::DrawingAreaProxyImpl::updateAcceleratedCompositingMode): - * UIProcess/FindIndicator.cpp: - (WebKit::FindIndicator::draw): - * UIProcess/GeolocationPermissionRequestManagerProxy.cpp: - (WebKit::GeolocationPermissionRequestManagerProxy::didReceiveGeolocationPermissionDecision): - * UIProcess/Plugins/unix/PluginInfoStoreUnix.cpp: - (WebKit::PluginInfoStore::shouldUsePlugin): - * UIProcess/WebContext.cpp: - (WebKit::WebContext::setHTTPPipeliningEnabled): - * UIProcess/WebFullScreenManagerProxy.cpp: - (WebKit::WebFullScreenManagerProxy::supportsFullScreen): - * UIProcess/WebPageProxy.cpp: - (WebKit::WebPageProxy::sessionStateData): - (WebKit::WebPageProxy::recommendedScrollbarStyleDidChange): - (WebKit::WebPageProxy::didBlockInsecurePluginVersion): - * UIProcess/WebProcessProxy.cpp: - (WebKit::WebProcessProxy::createWebPage): - * UIProcess/efl/TextCheckerEfl.cpp: - (WebKit::TextChecker::continuousSpellCheckingEnabledStateChanged): - (WebKit::TextChecker::grammarCheckingEnabledStateChanged): - * UIProcess/efl/WebFullScreenManagerProxyEfl.cpp: - (WebKit::WebFullScreenManagerProxy::beganEnterFullScreen): - (WebKit::WebFullScreenManagerProxy::beganExitFullScreen): - * UIProcess/efl/WebPageProxyEfl.cpp: - (WebKit::WebPageProxy::standardUserAgent): - (WebKit::WebPageProxy::getEditorCommandsForKeyEvent): - * WebProcess/Downloads/soup/DownloadSoup.cpp: - (WebKit::Download::start): - (WebKit::Download::startWithHandle): - (WebKit::Download::didDecideDestination): - (WebKit::Download::receivedCredential): - (WebKit::Download::receivedRequestToContinueWithoutCredential): - (WebKit::Download::receivedCancellation): - * WebProcess/Geolocation/WebGeolocationManager.cpp: - (WebKit::WebGeolocationManager::didChangePosition): - * WebProcess/IconDatabase/WebIconDatabaseProxy.cpp: - (WebKit::WebIconDatabaseProxy::synchronousIconForPageURL): - (WebKit::WebIconDatabaseProxy::synchronousIconURLForPageURL): - (WebKit::WebIconDatabaseProxy::synchronousIconDataKnownForIconURL): - (WebKit::WebIconDatabaseProxy::synchronousLoadDecisionForIconURL): - (WebKit::WebIconDatabaseProxy::iconDataForIconURL): - * WebProcess/InjectedBundle/API/c/WKBundleFrame.cpp: - (WKBundleFrameCopyWebArchiveFilteringSubframes): - * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp: - (WKAccessibilityRootObject): - (WKAccessibilityFocusedObject): * WebProcess/InjectedBundle/InjectedBundle.cpp: - (WebKit::InjectedBundle::setGeoLocationPermission): - (WebKit::InjectedBundle::didReceiveMessage): - (WebKit::InjectedBundle::webNotificationID): - * WebProcess/Notifications/WebNotificationManager.cpp: - (WebKit::WebNotificationManager::initialize): - (WebKit::WebNotificationManager::didUpdateNotificationDecision): - (WebKit::WebNotificationManager::didRemoveNotificationDecisions): - (WebKit::WebNotificationManager::policyForOrigin): - (WebKit::WebNotificationManager::notificationIDForTesting): - (WebKit::WebNotificationManager::show): - (WebKit::WebNotificationManager::cancel): - (WebKit::WebNotificationManager::clearNotifications): - (WebKit::WebNotificationManager::didDestroyNotification): - (WebKit::WebNotificationManager::didShowNotification): - (WebKit::WebNotificationManager::didClickNotification): - (WebKit::WebNotificationManager::didCloseNotifications): - * WebProcess/Plugins/PluginView.cpp: - (WebKit::PluginView::paint): - * WebProcess/WebCoreSupport/WebChromeClient.cpp: - (WebKit::WebChromeClient::addMessageToConsole): - (WebKit::WebChromeClient::contentsSizeChanged): - (WebKit::WebChromeClient::customHighlightRect): - (WebKit::WebChromeClient::paintCustomHighlight): - (WebKit::WebChromeClient::supportsFullScreenForElement): - * WebProcess/WebCoreSupport/WebContextMenuClient.cpp: - (WebKit::WebContextMenuClient::downloadURL): - * WebProcess/WebCoreSupport/WebDragClient.cpp: - (WebKit::WebDragClient::dragSourceActionMaskForPoint): - * WebProcess/WebCoreSupport/WebEditorClient.cpp: - (WebKit::WebEditorClient::shouldEraseMarkersAfterChangeSelection): - * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: - (WebKit::WebFrameLoaderClient::dispatchDidCancelAuthenticationChallenge): - (WebKit::WebFrameLoaderClient::dispatchDidLoadResourceFromMemoryCache): - (WebKit::WebFrameLoaderClient::shouldStopLoadingForHistoryItem): - (WebKit::WebFrameLoaderClient::canShowMIMEType): - (WebKit::WebFrameLoaderClient::canShowMIMETypeAsHTML): - (WebKit::WebFrameLoaderClient::representationExistsForURLScheme): - (WebKit::WebFrameLoaderClient::generatedMIMETypeForURLScheme): - (WebKit::WebFrameLoaderClient::createFrame): - (WebKit::WebFrameLoaderClient::createJavaAppletWidget): - (WebKit::WebFrameLoaderClient::registerForIconNotification): - * WebProcess/WebCoreSupport/WebInspectorClient.cpp: - (WebKit::WebInspectorClient::drawRect): - * WebProcess/WebPage/DrawingArea.h: - (WebKit::DrawingArea::forceRepaintAsync): - (WebKit::DrawingArea::updateBackingStoreState): - * WebProcess/WebPage/FindController.cpp: - (WebKit::FindController::mouseEvent): - * WebProcess/WebPage/LayerTreeHost.cpp: - (WebKit::LayerTreeHost::create): - * WebProcess/WebPage/LayerTreeHost.h: - (WebKit::LayerTreeHost::forceRepaintAsync): - * WebProcess/WebPage/TapHighlightController.cpp: - (WebKit::TapHighlightController::drawRect): - * WebProcess/WebPage/WebPage.cpp: - (WebKit::WebPage::getWebArchiveOfFrame): - * WebProcess/WebProcess.cpp: - (WebKit::WebProcess::getSitesWithPluginData): - (WebKit::WebProcess::clearPluginSiteData): - * WebProcess/soup/WebKitSoupRequestGeneric.cpp: - (webkitSoupRequestGenericSendFinish): - * WebProcess/soup/WebKitSoupRequestInputStream.cpp: - (webkitSoupRequestInputStreamReadAsync): - (webkitSoupRequestInputStreamReadFinish): - -2012-09-19 Pratik Solanki <psolanki@apple.com> + (WebKit::toStringVector): + * WebProcess/WebPage/qt/WebPageQt.cpp: + (WebKit::WebPage::setUserScripts): + Update for new PageGroup function signatures. - Warning in SandboxExtension.h if WEB_PROCESS_SANDBOX is not enabled - https://bugs.webkit.org/show_bug.cgi?id=97137 +2012-10-14 Tim Horton <timothy_horton@apple.com> - Reviewed by Benjamin Poulain. + [wk2] Implement PDFPlugin + https://bugs.webkit.org/show_bug.cgi?id=99206 - m_size is only used when WEB_PROCESS_SANDBOX is enabled, so move its declaration inside - #if ENABLE(WEB_PROCESS_SANDBOX). + Unreviewed build fix, hand ivar name to @synthesize since it doesn't match the property name. - * Shared/SandboxExtension.h: - (HandleArray): + * WebProcess/Plugins/PDF/PDFPlugin.mm: -2012-09-19 Sudarsana Nagineni <sudarsana.nagineni@intel.com> +2012-10-14 Tim Horton <timothy_horton@apple.com> - [WTR] Memory leaks in TestRunner::deliverWebIntent() - https://bugs.webkit.org/show_bug.cgi?id=97111 + [wk2] Implement PDFPlugin + https://bugs.webkit.org/show_bug.cgi?id=99206 - Reviewed by Kenneth Rohde Christiansen. + Unreviewed, attempt to manipuate SVN to retain the history of SimplePDFPlugin. - Fix memory leaks in WKBundleIntentCreate() by adopting strings - created with WKStringCreateWithUTF8CString(). + * WebProcess/Plugins/PDF/SimplePDFPlugin.h: Replaced with Source/WebKit2/WebProcess/Plugins/PDF/BuiltInPDFView.h. + * WebProcess/Plugins/PDF/SimplePDFPlugin.mm: Replaced with Source/WebKit2/WebProcess/Plugins/PDF/BuiltInPDFView.mm. - * WebProcess/InjectedBundle/API/c/WKBundleIntent.cpp: - (WKBundleIntentCreate): +2012-10-14 Tim Horton <timothy_horton@apple.com> -2012-09-19 Christophe Dumez <christophe.dumez@intel.com> + [wk2] Implement PDFPlugin + https://bugs.webkit.org/show_bug.cgi?id=99206 - [EFL][WK2] fast/forms/select-writing-direction-natural.html is failing - https://bugs.webkit.org/show_bug.cgi?id=97082 + Reviewed by Dan Bernstein. - Reviewed by Kenneth Rohde Christiansen. + Add PDFPlugin, which uses PDFKit to display PDFs, instead of using PDFKit in the + UIProcess for full-page PDFs. This new plugin will also be used for inline PDFs + in place of SimplePDFPlugin (née BuiltInPDFView). - WebChromeClient::selectItemWritingDirectionIsNatural() now returns - true for EFL-WK2, consistently with EFL-WK1, so that the style - is properly adjusted in RenderMenuList::adjustInnerStyle(). + * Configurations/FeatureDefines.xcconfig: Add ENABLE_PDF_PLUGIN. - * WebProcess/WebCoreSupport/WebChromeClient.cpp: - (WebKit::WebChromeClient::selectItemWritingDirectionIsNatural): + Support three new Plugin methods: + - handleEditingCommand, which hands editing commands to the Plugin + - isEditingCommandEnabled, which validates editing commands via the Plugin + - handlesPageScaleFactor, which asks the plugin whether it wants to + opt into a mode where the WebPage doesn't scale in the ordinary fashion, + but instead proxies the Plugin's scale factor, so full-page plugins + can handle scale factor changes however they need to. -2012-09-19 Carlos Garcia Campos <cgarcia@igalia.com> + * PluginProcess/PluginControllerProxy.cpp: + (WebKit::PluginControllerProxy::handleEditingCommand): Proxy handleEditingCommand to the Plugin. + (WebKit::PluginControllerProxy::isEditingCommandEnabled): Proxy isEditingCommandEnabled to the Plugin. + (WebKit::PluginControllerProxy::handlesPageScaleFactor): Proxy handlesPageScaleFactor to the Plugin. + * PluginProcess/PluginControllerProxy.h: + (PluginControllerProxy): Add handleEditingCommand, isEditingCommandEnabled, and handlesPageScaleFactor. + * PluginProcess/PluginControllerProxy.messages.in: Add HandleEditingCommand, IsEditingCommandEnabled, and HandlesPageScaleFactor. + * WebProcess/Plugins/Netscape/NetscapePlugin.cpp: + (WebKit::NetscapePlugin::handleEditingCommand): NPAPI plugins support no editing commands by default. + (WebKit::NetscapePlugin::isEditingCommandEnabled): NPAPI plugins enable no editing commands by default. + (WebKit::NetscapePlugin::handlesPageScaleFactor): NPAPI plugins do not handle page scale factor changes themselves by default. + * WebProcess/Plugins/Netscape/NetscapePlugin.h: Add handleEditingCommand, isEditingCommandEnabled, and handlesPageScaleFactor. - [GTK] Add API to get/set the security policy of a given URI scheme to WebKit2 GTK+ - https://bugs.webkit.org/show_bug.cgi?id=96497 + Add PDFPluginEnabled preference. If it is not enabled, or the plugin is + not built, behavior will be the same as before (the UIProcess PDFView will + handle full-page PDFs, and SimplePDFPlugin will handle inline ones). - Reviewed by Martin Robinson. + * Shared/WebPreferencesStore.h: Add PDFPluginEnabled preference. + * UIProcess/API/C/WKPreferences.cpp: + (WKPreferencesSetPDFPluginEnabled): Setter for PDFPluginEnabled preference. + (WKPreferencesGetPDFPluginEnabled): Getter for PDFPluginEnabled preference. + * UIProcess/API/C/WKPreferencesPrivate.h: Expose WKPreferences(Set|Get)PDFPluginEnabled as a private preference. - Add WebKitSecurityManager object associated to a WebKitWebContext - to get/set the security policy of a URI scheme. + Move support for MIME types with custom representations onto WebPage instead of WebProcess. + This allows us to use preferences to control the use of custom representations (for example, + it allows us to have a preference to toggle between UIProcess's PDFView and PDFPlugin). - * GNUmakefile.list.am: Add new files to compilation. * Shared/WebProcessCreationParameters.cpp: - (WebKit::WebProcessCreationParameters::encode): Encode the list of - schemes to be reigstered as Local, NoAccess, DisplayIsolated and - CORSEnabled. - (WebKit::WebProcessCreationParameters::decode): Decode the list of - schemes to be reigstered as Local, NoAccess, DisplayIsolated and - CORSEnabled. - * Shared/WebProcessCreationParameters.h: - (WebProcessCreationParameters): Add new parameters to be able to - register schemes as Local, NoAccess, DisplayIsolated and - CORSEnabled. - * UIProcess/API/gtk/WebKitSecurityManager.cpp: Added. - (webkit_security_manager_init): - (webkitSecurityManagerFinalize): - (webkit_security_manager_class_init): - (webkitSecurityManagerCreate): Private function to create the - WebKitSecurityManager object associated to the given - WebKitWebContext. - (registerSecurityPolicyForURIScheme): - (checkSecurityPolicyForURIScheme): - (webkit_security_manager_register_uri_scheme_as_local): - (webkit_security_manager_uri_scheme_is_local): - (webkit_security_manager_register_uri_scheme_as_no_access): - (webkit_security_manager_uri_scheme_is_no_access): - (webkit_security_manager_register_uri_scheme_as_display_isolated): - (webkit_security_manager_uri_scheme_is_display_isolated): - (webkit_security_manager_register_uri_scheme_as_secure): - (webkit_security_manager_uri_scheme_is_secure): - (webkit_security_manager_register_uri_scheme_as_cors_enabled): - (webkit_security_manager_uri_scheme_is_cors_enabled): - (webkit_security_manager_register_uri_scheme_as_empty_document): - (webkit_security_manager_uri_scheme_is_empty_document): - * UIProcess/API/gtk/WebKitSecurityManager.h: Added. - * UIProcess/API/gtk/WebKitSecurityManagerPrivate.h: Added. - * UIProcess/API/gtk/WebKitWebContext.cpp: - (webkit_web_context_get_security_manager): Return the - WebKitSecurityManager object, creating it before if it doesn't exist. - * UIProcess/API/gtk/WebKitWebContext.h: - * UIProcess/API/gtk/docs/webkit2gtk-docs.sgml: Add new section for - WebKitSecurityManager. - * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Add new symbols. - * UIProcess/API/gtk/tests/TestWebKitWebContext.cpp: - (testWebContextSecurityPolicy): - (beforeAll): - * UIProcess/API/gtk/webkit2.h: Add WebKitSecurityManager.h. - * UIProcess/WebContext.cpp: - (WebKit::WebContext::createNewWebProcess): Copy new vector - schemes. - (WebKit::WebContext::registerURLSchemeAsLocal): Send a message to - WebProcess to register the given URL scheme as Local. - (WebKit::WebContext::registerURLSchemeAsNoAccess): Send a message - to WebProcess to register the given URL scheme as NoAccess. - (WebKit::WebContext::registerURLSchemeAsDisplayIsolated): Send a - message to WebProcess to register the given URL scheme as - DisplayIsolated. - (WebKit::WebContext::registerURLSchemeAsCORSEnabled): Send a - message to WebProcess to register the given URL scheme as - CORSEnabled. - * UIProcess/WebContext.h: - (WebContext): + (WebKit::WebProcessCreationParameters::encode): Don't pass mimeTypesWithCustomRepresentation + into the WebProcess, as we can compute it later. + (WebKit::WebProcessCreationParameters::decode): Same, on the decode side. + * Shared/WebProcessCreationParameters.h: Remove mimeTypesWithCustomRepresentation. + * UIProcess/mac/WebContextMac.mm: + (WebKit::WebContext::platformInitializeWebProcess): Don't add pdfAndPostScriptMIMETypes to mimeTypesWithCustomRepresentation here, as we're now computing it on WebPage instead. + * WebProcess/WebPage/WebPage.cpp: + (WebKit::canPluginHandleResponse): Move to WebPage from WebProcess so we can use WebPage's new notion of mimeTypesWithCustomRepresentation. + (WebKit::WebPage::shouldUseCustomRepresentationForResponse): Move to WebPage from WebProcess so we can use WebPage's new notion of mimeTypesWithCustomRepresentation. + * WebProcess/WebPage/mac/WebPageMac.mm: + (WebKit::WebPage::pdfAndPostScriptMIMETypes): Return the set of MIME types used for PDF and PostScript, which are handled with PDFView if PDFPlugin is not available or enabled. * WebProcess/WebProcess.cpp: - (WebKit::WebProcess::registerURLSchemeAsLocal): Register the - given URL scheme as Local in the SchemeRegistry. - (WebKit::WebProcess::registerURLSchemeAsNoAccess): Register the - given URL scheme as NoAccess in the SchemeRegistry. - (WebKit::WebProcess::registerURLSchemeAsDisplayIsolated): Register - the given URL scheme as DisplayIsolated in the SchemeRegistry. - (WebKit::WebProcess::registerURLSchemeAsCORSEnabled): Register the - given URL scheme as CORSEnabled in the SchemeRegistry. - * WebProcess/WebProcess.h: - * WebProcess/WebProcess.messages.in: Add new messages. - -2012-09-19 Balazs Kelemen <kbalazs@webkit.org> - - [Texmap] Potential crash in TextureMapperLayer because of referencing deleted mask/replica layer - https://bugs.webkit.org/show_bug.cgi?id=96919 - - Reviewed by Noam Rosenthal. - - Delay syncing deleted layers until flushPendingLayerChanges so the UI side state - will contain all changes related to the deletion of a layer. This saves us from - referencing a deleted layer. - - * WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp: - (WebKit::LayerTreeCoordinator::flushPendingLayerChanges): - (WebKit::LayerTreeCoordinator::detachLayer): - * WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.h: - (LayerTreeCoordinator): - -2012-09-19 Byungwoo Lee <bw80.lee@samsung.com> - - [EFL][WK2] waitUntilTitleChangedTo() and waitUntilLoadFinished() needs timeout. - https://bugs.webkit.org/show_bug.cgi?id=96910 - - Reviewed by Kenneth Rohde Christiansen. - - Currently, the waitUntilTitleChangedTo() and waitUntilLoadFinished() - functions doesn't handle timeout by itself. - And if there are some failed cases that loading is not finished or - title is not changed to the expected string, test case just stopped - with timeout and there is no more information about this such as line - number. + (WebKit::WebProcess::initializeWebProcess): Don't keep m_mimeTypesWithCustomRepresentations on WebProcess, it's owned by WebPage now. + * WebProcess/WebProcess.h: Move canPluginHandleResponse and shouldUseCustomRepresentationForResponse to WebPage. - To handle timeout status more properly, timeout parameter is added to - these functions. + Add PDFLayerController to the set of classes returned by PDFKitImports. - * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp: - (EWK2UnitTest::LoadFinishedData::LoadFinishedData): - (LoadFinishedData): - (EWK2UnitTest::LoadFinishedData::~LoadFinishedData): - (EWK2UnitTest): - (EWK2UnitTest::onLoadFinished): - (EWK2UnitTest::timeOutWhileWaitingUntilLoadFinished): - (EWK2UnitTest::EWK2UnitTestBase::waitUntilLoadFinished): - (EWK2UnitTest::TitleChangedData::TitleChangedData): - (TitleChangedData): - (EWK2UnitTest::TitleChangedData::~TitleChangedData): - (EWK2UnitTest::onTitleChanged): - (EWK2UnitTest::timeOutWhileWaitingUntilTitleChangedTo): - (EWK2UnitTest::EWK2UnitTestBase::waitUntilTitleChangedTo): - * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h: - (EWK2UnitTestBase): - -2012-09-18 Byungwoo Lee <bw80.lee@samsung.com> + * Shared/mac/PDFKitImports.h: Add pdfLayerControllerClass. + * Shared/mac/PDFKitImports.mm: + (WebKit::pdfLayerControllerClass): Find and return the PDFLayerController class. - [EFL][WK2] Add javascript popup API. - https://bugs.webkit.org/show_bug.cgi?id=95672 - - Reviewed by Gyuyoung Kim. + Add PDFPlugin, which inherits from SimplePDFPlugin, but uses PDFKit instead + of CoreGraphics, to provide additional interactive functionality. - 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-18 Sailesh Agrawal <sail@chromium.org> - - Chromium: Scrollbar with tickmarks doesn't respond to clicks - https://bugs.webkit.org/show_bug.cgi?id=96049 - - Reviewed by Beth Dakin. - - Update exported symbols. - - * win/WebKit2.def: - * win/WebKit2CFLite.def: - -2012-09-18 Jinwoo Song <jinwoo7.song@samsung.com> - - [EFL][WK2] Add log macros for EINA_LOG_DOM_XXX series - https://bugs.webkit.org/show_bug.cgi?id=97061 - - Reviewed by Gyuyoung Kim. - - EFL Webkit2 is using the EINA_LOG_DOM_XXX series in several places to log a message on the specified domain and format. - This patch adds log macros to simplify these logging codes. - - * UIProcess/API/efl/ewk_main.cpp: - (ewk_init): - * UIProcess/API/efl/ewk_private.h: - * UIProcess/API/efl/ewk_view.cpp: - (ewk_view_webprocess_crashed): - -2012-09-17 Martin Robinson <mrobinson@igalia.com> - - [WebKit2] [GTK] Add API for controlling the user agent - https://bugs.webkit.org/show_bug.cgi?id=95697 - - Reviewed by Carlos Garcia Campos. - - Add API for changing the user agent in WebKit2. This adds two styles of - setting the user agent: complete override and a method that just inserts - the application name and version, but preserves the carefully crafted user agent - in the library. - - * UIProcess/API/gtk/WebKitSettings.cpp: - (_WebKitSettingsPrivate): Added a new field to store the user agent. - This is stored in the private data structure, because we can only - set the user agent when attaching the settings to the page. - (webKitSettingsSetProperty): Add hooks for the new user agent property. - (webKitSettingsGetProperty): Ditto. - (webkit_settings_class_init): Ditto. - (webkitSettingsAttachSettingsToPage): Ditto. - (webkit_settings_get_user_agent): Added. - (webkit_settings_set_user_agent): Added. - (webkit_settings_set_user_agent_with_application_name): Added. - * UIProcess/API/gtk/WebKitSettings.h: Added new methods. - * UIProcess/API/gtk/WebKitWebView.cpp: Update the glue for the settings - when attaching and detaching from WebViews. - * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Added new methods to - the documentation. - * UIProcess/API/gtk/tests/TestWebKitSettings.cpp: Test the new user agent - property. - (testWebKitSettingsUserAgent): Ditto. - (beforeAll): Ditto. - * UIProcess/gtk/WebPageProxyGtk.cpp: - (WebKit::WebPageProxy::standardUserAgent): Now use the shared WebCore - code when setting the user agent. - -2012-09-18 Ryuan Choi <ryuan.choi@samsung.com> - - [EFL][WK2] Implement PageClientImpl::isViewFocused. - https://bugs.webkit.org/show_bug.cgi?id=97015 - - Reviewed by Gyuyoung Kim. - - WebKit2/Efl always returns true for PageClientImpl::isViewFocused. - So window.onblur events will not be generated when webview lost focus. - - This patch implements isViewFocused to return the current focus of webview. - - * UIProcess/API/efl/PageClientImpl.cpp: - (WebKit::PageClientImpl::isViewFocused): - -2012-09-18 Byungwoo Lee <bw80.lee@samsung.com> - - Title string should be changed when document.title is set to ''. - https://bugs.webkit.org/show_bug.cgi?id=96793 - - Reviewed by Kenneth Rohde Christiansen. - - Added unit test for setting document.title and checking the title - string with title,changed signal and ewk_view_title_get() function. - - * UIProcess/API/efl/tests/test_ewk2_view.cpp: - (TEST_F): - -2012-09-18 Anders Carlsson <andersca@apple.com> - - Division by zero crash in BackingStore::scroll - https://bugs.webkit.org/show_bug.cgi?id=97046 - <rdar://problem/11722564> - - Reviewed by Dan Bernstein. - - It appears that DrawingAreaImpl::scroll can be called with an empty scroll rect. Do nothing - if that's the case. Also, assert that the scrolling rect in BackingStoreMac is never empty. - - * UIProcess/mac/BackingStoreMac.mm: - (WebKit::BackingStore::scroll): - * WebProcess/WebPage/DrawingAreaImpl.cpp: - (WebKit::DrawingAreaImpl::scroll): - -2012-09-18 Bo Liu <boliu@chromium.org> - - Revert 128780, 128676, 128645 - https://bugs.webkit.org/show_bug.cgi?id=97022 - - Reviewed by Adam Barth. - - I made these revisions to add in-place reload behavior to ImagesEnabled setting. - Reverting this for now due to them causing performance regression in - chromium, possibly caused by increased calls to - PermissionClient::imageAllowed. - - * win/WebKit2.def: - -2012-09-18 Martin Robinson <mrobinson@igalia.com> - - [GTK] [WebKit2] Use XComposite window for accelerated compositing - https://bugs.webkit.org/show_bug.cgi?id=94417 - - Reviewed by Carlos Garcia Campos. - - Instead of rendering directly to the widget's native window, render to an - offscreen window redirected to a Pixmap with XComposite. + * UIProcess/WebProcessProxy.cpp: + (WebKit::WebProcessProxy::sendDidGetPlugins): Add PDFPlugin to the set of supported plugins. + * WebKit2.xcodeproj/project.pbxproj: Add PDFPlugin, rename BuiltInPDFView to SimplePDFPlugin. + * WebProcess/Plugins/PDF/PDFPlugin.h: Added. + * WebProcess/Plugins/PDF/PDFPlugin.mm: Added. + + PDFPlugin uses layers for scrollbars. + + (-[WKPDFPluginScrollbarLayer initWithPDFPlugin:WebKit::]): Initialize our CALayer subclass, + storing its parent PDFPlugin so it can delegate drawing there. + (-[WKPDFPluginScrollbarLayer actionForKey:]): Disable CoreAnimation implicit actions. + (-[WKPDFPluginScrollbarLayer drawInContext:]): Delegate scrollbar drawing to PDFPlugin. + + Implement the PDFLayerController delegate, eventually forwarding calls back to PDFPlugin. + + (-[WKPDFLayerControllerDelegate initWithPDFPlugin:WebKit::]): Initialize our delegate, + storing its parent PDFPlugin so it can forward delegate calls there. + (-[WKPDFLayerControllerDelegate updateScrollPosition:]): Update PDFPlugin's notion of the + current scroll position, when PDFKit changes the scroll position itself. + (-[WKPDFLayerControllerDelegate writeItemsToPasteboard:withTypes:]): Write the given + array of NSData objects to the pasteboard with the given types. + + The following PDFLayerController delegate methods will be implemented in the future. + + (-[WKPDFLayerControllerDelegate showDefinitionForAttributedString:atPoint:]): + (-[WKPDFLayerControllerDelegate performWebSearch:]): + (-[WKPDFLayerControllerDelegate openWithPreview]): + (-[WKPDFLayerControllerDelegate saveToPDF]): + + (WebKit::PDFPlugin::PDFPlugin): Set up the requisite layer hierarchy, and create a PDFLayerController (and its delegate proxy). + (WebKit::PDFPlugin::updateScrollbars): Update the frame of the layers hosting our scrollbars. + (WebKit::PDFPlugin::createScrollbar): Create a scrollbar and hosting layer, attaching its layer + to PDFPlugin's container layer. + (WebKit::PDFPlugin::destroyScrollbar): Destroy a scrollbar, detaching and destroying its hosting layer in the process. + (WebKit::PDFPlugin::pdfDocumentDidLoad): Called when the document finishes loading; hand + the loaded document to PDFKit, update all of our state (cached document size, scrollbars, etc.), and then execute any scripts in the document (to allow for automatic printing). + (WebKit::PDFPlugin::calculateSizes): Determine the size of the PDF and its pages. + (WebKit::PDFPlugin::destroy): Tear down the layer hierarchy. + (WebKit::PDFPlugin::paint): PDFPlugin is layer-based, so we paint nothing into the tiles. + (WebKit::PDFPlugin::paintControlForLayerInContext): Scrollbar controls are drawn into layers, but their painting is delegated here from WKPDFPluginScrollbarLayer. + (WebKit::PDFPlugin::snapshot): Perform a paint into a bitmap context. + (WebKit::PDFPlugin::pluginLayer): Return PDFPlugin's root layer. + (WebKit::PDFPlugin::geometryDidChange): The size or scale of the plugin changed; update + PDFLayerController's notion of the size and page scale, and invalidate the scrollbars. + + Mouse and keyboard events are converted back into NSEvents, but with + locationInWindow actually in terms of the PDFPlugin's layer, not + the window (since there is no window). + + (WebKit::modifierFlagsFromWebEvent): Construct an AppKit-style modifier bitmask from WebEvent's modifier key getters. + (WebKit::eventTypeFromWebEvent): Return the NSEventType equivalent to the given WebEvent. Only supports keyboard and mouse events, and only the left and right mouse button. + (WebKit::PDFPlugin::handleMouseEvent): Construct an NSEvent from the given WebMouseEvent and hand it to PDFLayerController. Mouse coordinates are in terms of m_contentLayer's origin. + (WebKit::PDFPlugin::handleKeyboardEvent): Construct an NSEvent from the given WebKeyboardEvent and hand it to PDFLayerController. PDFLayerController currently only handles keyDown events. + + (WebKit::PDFPlugin::handleEditingCommand): Handle copy and select-all commands, and forward them to PDFLayerController. + (WebKit::PDFPlugin::isEditingCommandEnabled): The 'copy' command should be enabled if + the user has selected a part of the PDF. The 'select all' command should always be enabled. + + (WebKit::PDFPlugin::setScrollOffset): Update both PDFPlugin and PDFLayerController's notion + of the current scroll position. + (WebKit::PDFPlugin::invalidateScrollbarRect): Invalidate the whole scrollbar layer. + (WebKit::PDFPlugin::invalidateScrollCornerRect): Invalidate the whole scroll corner layer. + + Rename BuiltInPDFView to SimplePDFPlugin, to differentiate it from PDFPlugin + and to better denote its inheritance from Plugin. + + * WebProcess/Plugins/PDF/SimplePDFPlugin.h: Renamed from WebProcess/Plugins/PDF/BuiltInPDFView.h. + (WebKit::SimplePDFPlugin): Make methods protected so PDFPlugin can override them. Rename m_pluginSize -> m_size, and m_dataBuffer->m_data. + (WebKit::SimplePDFPlugin::size): Retrieve the size of the plugin. + (WebKit::SimplePDFPlugin::setSize): Set the size of the plugin. + (WebKit::SimplePDFPlugin::pdfDocument): Retrieve the currently represented PDF document. + (WebKit::SimplePDFPlugin::setPDFDocument): Set the currently represented PDF document. + (WebKit::SimplePDFPlugin::pdfDocumentSize): Retrieve the current size of the PDF. + (WebKit::SimplePDFPlugin::setPDFDocumentSize): Set the current size of the PDF. + (WebKit::SimplePDFPlugin::data): Retrieve the accumulated document data. + * WebProcess/Plugins/PDF/SimplePDFPlugin.mm: Renamed from WebProcess/Plugins/PDF/BuiltInPDFView.mm. + (WebKit::SimplePDFPlugin::computePageBoxes): Copied out of calculateSizes() so PDFPlugin can use it too. + (WebKit::SimplePDFPlugin::runScriptsInPDFDocument): Factored out of pdfDocumentDidLoad() so PDFPlugin can use it too. + (WebKit::SimplePDFPlugin::convertFromScrollbarToContainingView): Implement the remaining scrollbar point conversion functions. + (WebKit::SimplePDFPlugin::convertFromContainingViewToScrollbar): Implement the remaining scrollbar point conversion functions. - * UIProcess/API/gtk/WebKitWebViewBase.cpp: - (_WebKitWebViewBasePrivate): Added a few members necessary to track the - offscreen window. - (webkit_web_view_base_init): - (renderAcceleratedCompositingResults): Added this helper functions which renders - the results of the accelerated compositing operations during the GTK+ draw loop. - (webkitWebViewBaseDraw): Call renderAcceleratedCompositingResults when appropriate. - (resizeWebKitWebViewBaseFromAllocation): Resize the offscreen window when appropriate. - (webkitWebViewBaseSizeAllocate): Do not call resizeWebKitWebViewBaseFromAllocation when - the actual size of the widget does not change. This prevents destroying and recreating - the offscreen window pixmap when it isn't necessary. - (webkitWebViewBaseMap): We no longer send the window id during map, instead it's sent - as soon as there is WebPageProxy. - (webkitWebViewBaseCreateWebPage): Send the window id of the redirected window to - the WebProcess. - (queueAnotherDrawOfAcceleratedCompositingResults): Added this helper which works - around the issue of slow updates of the pixmap backing the redirected XComposite window. - (webkitWebViewBaseQueueDrawOfAcceleratedCompositingResults): Added this method which - is what the WebProcess uses to force a redraw on the UIProcess side. - * UIProcess/API/gtk/WebKitWebViewBasePrivate.h: Added new method to the list of private methods. - * UIProcess/DrawingAreaProxyImpl.h: - (DrawingAreaProxyImpl): - (WebKit::DrawingAreaProxyImpl::isInAcceleratedCompositingMode): Exposed this method publically - so that it can be used from WebKitWebViewBase. - * UIProcess/WebPageProxy.h: - (WebPageProxy): Renamed widgetMapped to setAcceleratedCompositingWindowId. - * UIProcess/WebPageProxy.messages.in: Ditto. - * UIProcess/gtk/WebPageProxyGtk.cpp: Ditto. - (WebKit::WebPageProxy::setAcceleratedCompositingWindowId): + * WebProcess/Plugins/Plugin.h: + (Plugin): Add handleEditingCommand, isEditingCommandEnabled, and handlesPageScaleFactor. + * WebProcess/Plugins/PluginProxy.cpp: + (WebKit::PluginProxy::handleEditingCommand): Proxy handleEditingCommand to the PluginProcess. + (WebKit::PluginProxy::isEditingCommandEnabled): Proxy isEditingCommandEnabled + to the PluginProcess. + (WebKit::PluginProxy::handlesPageScaleFactor): Proxy handlesPageScaleFactor + to the PluginProcess. + * WebProcess/Plugins/PluginProxy.h: Add handleEditingCommand, isEditingCommandEnabled, + and handlesPageScaleFactor. + * WebProcess/Plugins/PluginView.cpp: + (WebKit::PluginView::setPageScaleFactor): Set the plugin's current page scale factor. Also, + update WebPageProxy's notion of the current pageScaleFactor when this is called. + (WebKit::PluginView::pageScaleFactor): Return the plugin's current page scale factor. + (WebKit::PluginView::handleEditingCommand): Proxy handleEditingCommand to the plugin. + (WebKit::PluginView::isEditingCommandEnabled): Proxy isEditingCommandEnabled to the plugin. + * WebProcess/Plugins/PluginView.h: + (PluginView): Add handleEditingCommand, isEditingCommandEnabled, + setPageScaleFactor/pageScaleFactor, and handlesPageScaleFactor. Add m_pageScaleFactor. + (WebKit::PluginView::handlesPageScaleFactor): Proxy handlesPageScaleFactor to the plugin. + * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: + (WebKit::WebFrameLoaderClient::restoreViewState): Don't update WebPageProxy's notion of the scale factor if it should be the default. + (WebKit::WebFrameLoaderClient::transitionToCommittedFromCachedFrame): Make use of shouldUseCustomRepresentationForResponse on WebPage instead of WebProcess. + (WebKit::WebFrameLoaderClient::transitionToCommittedForNewPage): Make use of shouldUseCustomRepresentationForResponse on WebPage instead of WebProcess. + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::createPlugin): Create a PDFPlugin if appropriate (if it is built and the setting is enabled). + (WebKit::pluginViewForFrame): Return the PluginView for the given frame if its document is a PluginDocument. + (WebKit::WebPage::executeEditingCommand): Attempt to execute editing commands on the + currently focused (or main-frame) plugin. + (WebKit::WebPage::isEditingCommandEnabled): Validate editing commands against the + currently focused (or main-frame) plugin. + (WebKit::WebPage::scalePage): If the plugin reports that it handles page scale factor + itself, hand it the new scale instead of WebCore. + (WebKit::WebPage::pageScaleFactor): If the plugin reports that it handles page scale + factor itself, return its notion of the current scale instead of WebCore's. + (WebKit::WebPage::validateCommand): Validate editing commands against the + currently focused (or main-frame) plugin. + (WebKit::WebPage::updatePreferences): Update m_pdfPluginEnabled given the relevant WebPreference. * WebProcess/WebPage/WebPage.h: - (WebPage): Ditto. - * WebProcess/WebPage/WebPage.messages.in: Ditto. - * WebProcess/WebPage/gtk/LayerTreeHostGtk.cpp: - (WebKit::LayerTreeHostGtk::sizeDidChange): Force a composite to the resized window right - away so that the new window pixmap is updated before the first draw. - (WebKit::LayerTreeHostGtk::compositeLayersToContext): If the composition is for a resize, - first clear the entire GL context so that we don't see black artifacts during resize. - * WebProcess/WebPage/gtk/LayerTreeHostGtk.h: - (LayerTreeHostGtk): Update the signature of compositeLayersToContext. - * WebProcess/WebPage/gtk/WebPageGtk.cpp: - (WebKit::WebPage::setAcceleratedCompositingWindowId): Added. - -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): + (WebKit::WebPage::pdfPluginEnabled): Return whether or not PDFPlugin should be used. + (WebKit::WebPage::setPDFPluginEnabled): Set whether or not PDFPlugin should be used. -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. +2012-10-13 Sam Weinig <sam@webkit.org> - Add smart class member function for javascript alert(), confirm() and prompt(). + Use class extension rather than a void* member for new Objective-C WebProcessPlugIn SPI + https://bugs.webkit.org/show_bug.cgi?id=99256 - * 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> + Reviewed by Dan Bernstein. - [EFL][WK2] Regression (r128163) - https://bugs.webkit.org/show_bug.cgi?id=96610 + A bit of good old fashion cleanup. - Reviewed by Gyuyoung Kim. + * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.h: + Remove the void* member. - 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. + * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.mm: + Move members from the WKWebProcessPlugInControllerData struct to a class extension. - * UIProcess/API/efl/ewk_view.cpp: - (ewk_view_accelerated_compositing_mode_enter): Changed EINA_SAFETY_ON_NULL_RETURN_VAL to *if* condition statement. + (didCreatePage): + (willDestroyPage): + (-[WKWebProcessPlugInController _initWithPrincipalClassInstance:bundleRef:]): + Directly access the members instead of using properties, now that it is not inconvenient. -2012-09-17 Sam Weinig <sam@webkit.org> + * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.h: + Remove the void* member. - Fix the Snow Leopard build. + * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm: + Move members from the WKWebProcessPlugInBrowserContextControllerData struct to a class extension. + + (-[WKWebProcessPlugInBrowserContextController _initWithBundlePageRef:]): + (-[WKWebProcessPlugInBrowserContextController _bundlePageRef]): + Remove unnecessary casts.. - * PluginProcess/mac/PluginProcessMac.mm: - (WebKit::PluginProcess::platformInitialize): + * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextControllerInternal.h: + * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextControllerPrivate.h: + Add space before the parenthesis of a category to be consistent. + + * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInInternal.h: + Remove unnecessary forward declare. -2012-09-17 Sam Weinig <sam@webkit.org> +2012-10-13 Andy Estes <aestes@apple.com> - Add experimental code to enter a sandbox for a plug-in. - Based on a patch by Ivan Krstić. - <rdar://problem/11823151> + Add a private header for WKWebProcessPlugInBrowserContextController that defines a property for getting the WKBundlePageRef + https://bugs.webkit.org/show_bug.cgi?id=99252 - Reviewed by Anders Carlsson. + Reviewed by Sam Weinig. - 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. + * WebKit2.xcodeproj/project.pbxproj: + * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm: + (-[WKWebProcessPlugInBrowserContextController _bundlePageRef]): + * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextControllerPrivate.h: Added. - * PluginProcess/mac/PluginProcessMac.mm: - (WebKit::initializeSandbox): - (WebKit::PluginProcess::platformInitialize): - Enter the sandbox provided if a profile can be found. +2012-10-12 Brady Eidson <beidson@apple.com> - * 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. + Setup basic NetworkProcess messaging and initialization. + https://bugs.webkit.org/show_bug.cgi?id=99198 -2012-09-17 Mark Hahnenberg <mhahnenberg@apple.com> + Reviewed by Sam Weinig. - Fixing the build after http://trac.webkit.org/changeset/128813 + Project file/build system stuff: + * DerivedSources.make: + * WebKit2.xcodeproj/project.pbxproj: + * Scripts/webkit2/messages.py: + (struct_or_class): - * WebProcess/Plugins/Netscape/JSNPObject.cpp: + Add basic initialization parameters for the NetworkProcess: + * Shared/Network/NetworkProcessCreationParameters.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::NetworkProcessCreationParameters::NetworkProcessCreationParameters): + (WebKit::NetworkProcessCreationParameters::encode): + (WebKit::NetworkProcessCreationParameters::decode): + * Shared/Network/NetworkProcessCreationParameters.h: + (CoreIPC): (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 + (NetworkProcessCreationParameters): - 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): + Use them to message the NetworkProcess what it's application name should be: + * UIProcess/Network/NetworkProcessProxy.cpp: + (WebKit::NetworkProcessProxy::didFinishLaunching): + * UIProcess/Network/NetworkProcessProxy.h: (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): + (NetworkProcessProxy): + * UIProcess/Network/mac/NetworkProcessProxyMac.mm: (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> + (WebKit::NetworkProcessProxy::platformInitializeNetworkProcess): - [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): + Add basic message handling and initialization to the NetworkProcess itself: + * NetworkProcess/NetworkProcess.messages.in: Added. + * Platform/CoreIPC/MessageID.h: + * NetworkProcess/NetworkProcess.cpp: + (WebKit::NetworkProcess::didReceiveMessage): + (WebKit::NetworkProcess::initializeNetworkProcess): (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): + * NetworkProcess/NetworkProcess.h: (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*. + (NetworkProcess): - * 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 - - Reviewed by Simon Hausmann. - - * Target.pri: - -2012-09-14 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com> - - WebKitTestRunner needs layoutTestController.setTabKeyCyclesThroughElements - https://bugs.webkit.org/show_bug.cgi?id=42687 - - Reviewed by Kenneth Rohde Christiansen. - - Implement testRunner.setTabKeyCyclesThroughElements for - WebKitTestRunner. - - * WebProcess/InjectedBundle/API/c/WKBundle.cpp: - (WKBundleSetTabKeyCyclesThroughElements): - * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h: - * WebProcess/InjectedBundle/InjectedBundle.cpp: - (WebKit::InjectedBundle::setTabKeyCyclesThroughElements): + Set a reasonable application name to be revealed in UI: + * NetworkProcess/mac/NetworkProcessMac.mm: (WebKit): - * WebProcess/InjectedBundle/InjectedBundle.h: - (InjectedBundle): + (WebKit::NetworkProcess::platformInitialize): -2012-09-14 Keishi Hattori <keishi@webkit.org> - Add runtime flag that enables lang attribute for form controls in LayoutTests - https://bugs.webkit.org/show_bug.cgi?id=96636 - - Reviewed by Kent Tamura. - - * win/WebKit2.def: - * win/WebKit2CFLite.def: +2012-10-12 Ada Chan <adachan@apple.com> -2012-09-14 Grzegorz Czajkowski <g.czajkowski@samsung.com> + Add WKPage API to get whether the main frame is pinned to the top or bottom edge + https://bugs.webkit.org/show_bug.cgi?id=99110 - Add method to get the list of all available dictionaries - https://bugs.webkit.org/show_bug.cgi?id=96518 - - Reviewed by Carlos Garcia Campos. - - * UIProcess/API/gtk/WebKitTextChecker.cpp: - (WebKitTextChecker::getSpellCheckingLanguages): - Update the method name that is called inside getSpellCheckingLanguages. - This replace doesn't affect any on API changes. - -2012-09-13 KwangYong Choi <ky0.choi@samsung.com> - - [WK2] Add color picker API support for WebKit2 - https://bugs.webkit.org/show_bug.cgi?id=95058 - - Reviewed by Gyuyoung Kim. + Reviewed by Beth Dakin. - Add support for color picker API to WebKit2. + This is very similar to r79025 where we add support to do this for the left and right sides. - * CMakeLists.txt: - * GNUmakefile.list.am: - * Shared/API/c/WKBase.h: - * Shared/APIClientTraits.cpp: - (WebKit): - * Shared/APIClientTraits.h: - * Shared/APIObject.h: - * Target.pri: - * UIProcess/API/C/WKAPICast.h: - (WebKit): - * UIProcess/API/C/WKColorPickerResultListener.cpp: Added. - (WKColorPickerResultListenerGetTypeID): - (WKColorPickerResultListenerColorSet): - * UIProcess/API/C/WKColorPickerResultListener.h: Added. + * UIProcess/API/C/WKPage.cpp: + (WKPageIsPinnedToTopSide): + (WKPageIsPinnedToBottomSide): * UIProcess/API/C/WKPage.h: - * UIProcess/API/gtk/WebKitUIClient.cpp: - (attachUIClientToView): - * UIProcess/WebColorChooserProxy.cpp: Added. - (WebKit): - (WebKit::WebColorChooserProxy::WebColorChooserProxy): - (WebKit::WebColorChooserProxy::~WebColorChooserProxy): - (WebKit::WebColorChooserProxy::endChooser): - (WebKit::WebColorChooserProxy::setSelectedColor): - * UIProcess/WebColorChooserProxy.h: - (WebColorChooserProxy): - (WebKit::WebColorChooserProxy::create): - * UIProcess/WebColorPickerResultListenerProxy.cpp: Added. - (WebKit): - (WebKit::WebColorPickerResultListenerProxy::WebColorPickerResultListenerProxy): - (WebKit::WebColorPickerResultListenerProxy::~WebColorPickerResultListenerProxy): - (WebKit::WebColorPickerResultListenerProxy::invalidate): - (WebKit::WebColorPickerResultListenerProxy::setColor): - * UIProcess/WebColorPickerResultListenerProxy.h: Added. - (WebKit): - (WebColorPickerResultListenerProxy): - (WebKit::WebColorPickerResultListenerProxy::create): - (WebKit::WebColorPickerResultListenerProxy::type): + Add new API calls. + * UIProcess/WebPageProxy.cpp: + (WebKit::WebPageProxy::WebPageProxy): (WebKit::WebPageProxy::close): - (WebKit::WebPageProxy::showColorChooser): - (WebKit::WebPageProxy::didEndColorChooser): + (WebKit::WebPageProxy::didCommitLoadForFrame): (WebKit::WebPageProxy::processDidCrash): + (WebKit::WebPageProxy::didChangeScrollOffsetPinningForMainFrame): * UIProcess/WebPageProxy.h: - (WebKit): - (WebPageProxy): - * UIProcess/WebUIClient.cpp: - (WebKit): - (WebKit::WebUIClient::showColorPicker): - (WebKit::WebUIClient::hideColorPicker): - * UIProcess/WebUIClient.h: - (WebKit): - (WebUIClient): - * WebKit2.xcodeproj/project.pbxproj: - * win/WebKit2.vcproj: - * win/WebKit2Generated.make: - -2012-09-13 KwangYong Choi <ky0.choi@samsung.com> - - [EFL][WK2] Implement missing initializeLogChannel function - https://bugs.webkit.org/show_bug.cgi?id=96478 - - Reviewed by Gyuyoung Kim. - - Implemented log channel initialization function for EFL platform in WebKit2. - - * Platform/Logging.cpp: - (WebKit): - * Platform/Logging.h: - (WebKit): - * Platform/efl/LoggingEfl.cpp: Added. - (WebKit): - (WebKit::initializeLogChannel): Channel is initialized if its name is found in WEBKIT_DEBUG. - * PlatformEfl.cmake: - -2012-09-13 Mark Rowe <mrowe@apple.com> - - <rdar://problem/12283706> WebKit looks for some files on the system even when building against an SDK. - - Reviewed by David Kilzer. - - If an SDK is being used, pass it through to our custom invocations of the preprocessor. - - * DerivedSources.make: - -2012-09-13 Brent Fulgham <bfulgham@webkit.org> - - [WinCairo] Unreviewed build fix for export declarations. - - New entries were added to the standard Windows export definition - file, but were not added to the WinCairo version, breaking the build. - - * win/WebKit2CFLite.def: Incoproate changes from WebKit2.def file. - -2012-09-13 Tim Horton <timothy_horton@apple.com> - - Add optional debug logging when we fall into/out of threaded scrolling - https://bugs.webkit.org/show_bug.cgi?id=93898 - <rdar://problem/12089098> - - Reviewed by Simon Fraser. - - Update the scrolling tree's scrollingPerformanceLoggingEnabled preference - before the early-return if we don't have layer debugging borders on. - - * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm: - (WebKit::TiledCoreAnimationDrawingArea::updatePreferences): - -2012-09-13 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com> - - [WK2][WTR] WebKitTestRunner needs testRunner.callShouldCloseOnWebView - https://bugs.webkit.org/show_bug.cgi?id=96366 - - Reviewed by Anders Carlsson. - - Implement testRunner.callShouldCloseOnWebView for WebKitTestRunner - by calling shouldClose() on the FrameLoader. - - * WebProcess/InjectedBundle/API/c/WKBundleFrame.cpp: - (WKBundleFrameCallShouldCloseOnWebView): - * WebProcess/InjectedBundle/API/c/WKBundleFrame.h: - -2012-09-13 Thiago Marcos P. Santos <thiago.santos@intel.com> - - [EFL] Assertion reached on RenderThemeEFL when setting a theme to an invalid path - https://bugs.webkit.org/show_bug.cgi?id=96649 - - Reviewed by Kenneth Rohde Christiansen. - - Updated the alternative test theme file. It is basically - the default theme with extra padding on the button widget as - specified by the comments on the test case. - - * UIProcess/API/efl/tests/resources/big_button_theme.edj: - -2012-09-13 Balazs Kelemen <kbalazs@webkit.org> - - [WK2] LayerTreeCoordinator should release unused UpdatedAtlases - https://bugs.webkit.org/show_bug.cgi?id=95072 - - Reviewed by Jocelyn Turcotte. + (WebKit::WebPageProxy::isPinnedToTopSide): + (WebKit::WebPageProxy::isPinnedToBottomSide): + Declare new data members for keeping track of the pinned states for + top and bottom sides. Initialize, reset, and update these states + at appropriate times. Implement getters for these states. - Release graphic buffers that haven't been used for a while in order to save memory. - This way we can give back memory to the system when no user interaction happens - after a period of time, for example when we are in the background. - - * Shared/ShareableBitmap.h: - * WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp: - (WebKit::LayerTreeCoordinator::LayerTreeCoordinator): - (WebKit::LayerTreeCoordinator::beginContentUpdate): - (WebKit): - (WebKit::LayerTreeCoordinator::scheduleReleaseInactiveAtlases): - (WebKit::LayerTreeCoordinator::releaseInactiveAtlasesTimerFired): - * WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.h: - (LayerTreeCoordinator): - * WebProcess/WebPage/UpdateAtlas.cpp: - (WebKit::UpdateAtlas::UpdateAtlas): - (WebKit::UpdateAtlas::didSwapBuffers): - Don't call buildLayoutIfNeeded here. It's enought to call it in beginPaintingOnAvailableBuffer - and this way we can track whether this atlas is used with m_areaAllocator. - (WebKit::UpdateAtlas::beginPaintingOnAvailableBuffer): - * WebProcess/WebPage/UpdateAtlas.h: - (WebKit::UpdateAtlas::addTimeInactive): - (WebKit::UpdateAtlas::isInactive): - (WebKit::UpdateAtlas::isInUse): - (UpdateAtlas): - -2012-09-13 Lauro Neto <lauro.neto@openbossa.org> - - [Qt][WK2] fast/forms/access-key-for-all-elements.html fails - https://bugs.webkit.org/show_bug.cgi?id=73917 - - Reviewed by Simon Hausmann. - - Access-key tests were failing due to hardcoded Mac OS X in the - Qt WK2 user agent string. This commit moves the WK1 implementation - to a shared one to be used by both versions. - - Use the shared implementation instead of hardcoding the user agent. - - * UIProcess/qt/WebPageProxyQt.cpp: - (WebKit::WebPageProxy::standardUserAgent): - -2012-09-13 Simon Hausmann <simon.hausmann@nokia.com> - - [Qt] Fix build of WTR and the QML2 plugin on Windows - https://bugs.webkit.org/show_bug.cgi?id=96652 - - Reviewed by Tor Arne Vestbø. - - Some components that we build such as WTR or the QML2 plugin include - WebKit2 header files as well as WebKit2's config.h. Only the include - paths of WebKit2 are required for that at the moment (WEBKIT += - webkit2). Only on Windows WebKit2's config.h also includes - WebCore/config.h, which in turn requires to have WebCore/platform in - your include search path. That in turn means that any component that - wants to use WebKit2 headers also needs the WebCore headers, but only - one Windows. It turns out that for the Qt build we don't need it, so - skip it in our configuration and make the include path requirement - the same across all the platforms we build. - - * config.h: - -2012-09-13 Andras Becsi <andras.becsi@nokia.com> - - [Qt][WK2] REGRESSION(r128245): It made zillion API tests fail - https://bugs.webkit.org/show_bug.cgi?id=96531 - - Reviewed by Jocelyn Turcotte. - - Preferences have to be updated after the drawing area was created - for compositing mode to be set. + * UIProcess/WebPageProxy.messages.in: + Change the DidChangeScrollOffsetPinningForMainFrame message to take + the pinned states for top and bottom sides. * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::WebPage): + (WebKit::WebPage::didChangeScrollOffsetForMainFrame): + * WebProcess/WebPage/WebPage.h: + Cache the pinned states for top and bottom sides. Only notify the + UI process if the states have changed. -2012-09-13 Simon Hausmann <simon.hausmann@nokia.com> - - [Qt] Fix UIProcess build with Qt on Windows - https://bugs.webkit.org/show_bug.cgi?id=96635 +2012-10-12 Anders Carlsson <andersca@apple.com> - Reviewed by Csaba Osztrogonác. + Stop using deprecatedSend inside ConnectionMac.cpp + https://bugs.webkit.org/show_bug.cgi?id=99192 - Enabling setShouldCloseConnectionOnProcessTermination on the connection - is something that is only implemented in ConnectionUnix, not - ConnectionWin.cpp, where appears to be built-in functionality. + Reviewed by Andreas Kling. - * UIProcess/WebConnectionToWebProcess.cpp: - (WebKit::WebConnectionToWebProcess::WebConnectionToWebProcess): + The messages that we send are so simple that we can just use sendMessage. -2012-09-13 Oswald Buddenhagen <oswald.buddenhagen@nokia.com> + * Platform/CoreIPC/mac/ConnectionMac.cpp: + (CoreIPC::Connection::open): - [Qt] Fix build against namespaced Qt +2012-10-12 Brady Eidson <beidson@apple.com> - Reviewed by Tor Arne Vestbø. + Add a basic NetworkProcess.app to the WebKit2 build + https://bugs.webkit.org/show_bug.cgi?id=98543 - * UIProcess/qt/PageViewportControllerClientQt.h: + Reviewed by Sam Weinig. -2012-09-13 Michał Pakuła vel Rutka <m.pakula@samsung.com> + This change sets up the Mac build to include a NetworkProcess.app. + It also launches this app when the first WebProcess is created. + It then quits this app when the UIProcess terminates. - [EFL][Qt][WK2] Implement shared undo controller for EFL and Qt port. - https://bugs.webkit.org/show_bug.cgi?id=92504 + The app, it does nothing. + -McBain - Reviewed by Kenneth Rohde Christiansen. - - EFL port needs an undo controller similiar to one from Qt port. Instead of - duplicating the code existing class was renamed and moved to UIProcess - directory. + Pure project file/build system stuff: + * Configurations/NetworkProcess.xcconfig: Added. + * WebKit2.xcodeproj/project.pbxproj: + * WebKit2Prefix.h: - * PlatformEfl.cmake: - * Target.pri: - * UIProcess/API/efl/PageClientImpl.cpp: - (WebKit::PageClientImpl::registerEditCommand): - (WebKit::PageClientImpl::clearAllEditCommands): - (WebKit::PageClientImpl::canUndoRedo): - (WebKit::PageClientImpl::executeUndoRedo): - * UIProcess/API/efl/PageClientImpl.h: - (PageClientImpl): - * UIProcess/API/qt/qquickwebview_p_p.h: - (QQuickWebViewPrivate): - * UIProcess/DefaultUndoController.cpp: Renamed from Source/WebKit2/UIProcess/qt/QtWebUndoController.cpp. + Basic UIProcess side of things: + * UIProcess/Network/NetworkProcessProxy.cpp: Added. + (WebKit): + (WebKit::NetworkProcessProxy::create): + (WebKit::NetworkProcessProxy::NetworkProcessProxy): + (WebKit::NetworkProcessProxy::~NetworkProcessProxy): + (WebKit::NetworkProcessProxy::didReceiveMessage): + (WebKit::NetworkProcessProxy::didClose): + (WebKit::NetworkProcessProxy::didReceiveInvalidMessage): + (WebKit::NetworkProcessProxy::syncMessageSendTimedOut): + (WebKit::NetworkProcessProxy::didFinishLaunching): + * UIProcess/Network/NetworkProcessProxy.h: Added. + (WebKit): + (NetworkProcessProxy): + + Basic NetworkProcess side of things: + * NetworkProcess/Info.plist: Added. + * NetworkProcess/NetworkProcess.cpp: Added. + (WebKit): + (WebKit::NetworkProcess::shared): + (WebKit::NetworkProcess::NetworkProcess): + (WebKit::NetworkProcess::~NetworkProcess): + (WebKit::NetworkProcess::initialize): + (WebKit::NetworkProcess::shouldTerminate): + (WebKit::NetworkProcess::didReceiveMessage): + (WebKit::NetworkProcess::didClose): + (WebKit::NetworkProcess::didReceiveInvalidMessage): + (WebKit::NetworkProcess::syncMessageSendTimedOut): + * NetworkProcess/NetworkProcess.h: Added. + (WebCore): (WebKit): - (WebKit::DefaultUndoController::registerEditCommand): - (WebKit::DefaultUndoController::clearAllEditCommands): - (WebKit::DefaultUndoController::canUndoRedo): - (WebKit::DefaultUndoController::executeUndoRedo): - * UIProcess/DefaultUndoController.h: Renamed from Source/WebKit2/UIProcess/qt/QtWebUndoController.h. + (NetworkProcess): + + Add the main method for the NetworkProcess itself: + * WebProcess/WebKitMain.cpp: + (WebKitMain): + * NetworkProcess/NetworkProcessMain.h: Added. (WebKit): - (DefaultUndoController): - * UIProcess/qt/QtPageClient.cpp: - (WebKit::QtPageClient::initialize): - * UIProcess/qt/QtPageClient.h: + * NetworkProcess/mac/NetworkProcessMainMac.mm: Added. (WebKit): - (QtPageClient): - -2012-09-13 Christophe Dumez <christophe.dumez@intel.com> + (WebKit::NetworkProcessMain): - [EFL][WK2] Make _ref() functions return the object - https://bugs.webkit.org/show_bug.cgi?id=96604 + Teach ProcessLauncher about the new app type: + * UIProcess/Launcher/ProcessLauncher.cpp: + (WebKit::ProcessLauncher::processTypeAsString): + (WebKit::ProcessLauncher::getProcessTypeFromString): + * UIProcess/Launcher/ProcessLauncher.h: + * UIProcess/Launcher/mac/ProcessLauncherMac.mm: + (WebKit::createProcess): - Reviewed by Gyuyoung Kim. + Launch the NetworkProcess when we launch the first WebProcess: + * UIProcess/WebContext.cpp: + (WebKit::WebContext::ensureNetworkProcess): + * UIProcess/WebContext.h: + (WebContext): - Make _ref() functions return the ref'd object to - make them more convenient to use. Also fix their - usage to make use of the newly returned value. +2012-10-12 Sheriff Bot <webkit.review.bot@gmail.com> - This change is consistent with eina_stringshare_ref() - in EFL and g_object_ref() in glib. + Unreviewed, rolling out r131189. + http://trac.webkit.org/changeset/131189 + https://bugs.webkit.org/show_bug.cgi?id=99187 - * UIProcess/API/efl/ewk_back_forward_list.cpp: - (createEinaList): - * UIProcess/API/efl/ewk_back_forward_list_item.cpp: - (ewk_back_forward_list_item_ref): - * UIProcess/API/efl/ewk_back_forward_list_item.h: - * UIProcess/API/efl/ewk_context.cpp: - (ewk_context_download_job_add): - * UIProcess/API/efl/ewk_download_job.cpp: - (ewk_download_job_ref): - (ewk_download_job_response_set): - * UIProcess/API/efl/ewk_download_job.h: - * UIProcess/API/efl/ewk_form_submission_request.cpp: - (ewk_form_submission_request_ref): - * UIProcess/API/efl/ewk_form_submission_request.h: - * UIProcess/API/efl/ewk_intent.cpp: - (ewk_intent_ref): - * UIProcess/API/efl/ewk_intent.h: - * UIProcess/API/efl/ewk_intent_service.cpp: - (ewk_intent_service_ref): - * UIProcess/API/efl/ewk_intent_service.h: - * UIProcess/API/efl/ewk_navigation_policy_decision.cpp: - (ewk_navigation_policy_decision_ref): - * UIProcess/API/efl/ewk_navigation_policy_decision.h: - * UIProcess/API/efl/ewk_url_request.cpp: - (ewk_url_request_ref): - * UIProcess/API/efl/ewk_url_request.h: - * UIProcess/API/efl/ewk_url_response.cpp: - (ewk_url_response_ref): - * UIProcess/API/efl/ewk_url_response.h: - * UIProcess/API/efl/ewk_url_scheme_request.cpp: - (ewk_url_scheme_request_ref): - * UIProcess/API/efl/ewk_url_scheme_request.h: - * UIProcess/API/efl/ewk_view.cpp: - (ewk_view_resource_load_initiated): - * UIProcess/API/efl/ewk_web_resource.cpp: - (ewk_web_resource_ref): - * UIProcess/API/efl/ewk_web_resource.h: + Made inspector http tests crash on WK2. (Requested by rakuco + on #webkit). -2012-09-12 Sheriff Bot <webkit.review.bot@gmail.com> + * PlatformEfl.cmake: + * UIProcess/efl/WebInspectorProxyEfl.cpp: + (WebKit::WebInspectorProxy::inspectorPageURL): + (WebKit::WebInspectorProxy::inspectorBaseURL): - Unreviewed, rolling out r127876. - http://trac.webkit.org/changeset/127876 - https://bugs.webkit.org/show_bug.cgi?id=96600 +2012-10-12 Ryuan Choi <ryuan.choi@samsung.com> - mouse click doesn't work for spin button if spin button in - iframe (Requested by yosin on #webkit). + [EFL] Share resources installed for inspector + https://bugs.webkit.org/show_bug.cgi?id=98991 - * WebProcess/InjectedBundle/InjectedBundleNavigationAction.cpp: - (WebKit::InjectedBundleNavigationAction::InjectedBundleNavigationAction): - * WebProcess/WebPage/WebPage.cpp: - (WebKit::handleContextMenuEvent): - (WebKit::WebPage::highlightPotentialActivation): - (WebKit::WebPage::findZoomableAreaForPoint): - * WebProcess/WebPage/mac/WebPageMac.mm: - (WebKit::WebPage::characterIndexForPoint): - (WebKit::WebPage::performDictionaryLookupAtLocation): - (WebKit::WebPage::shouldDelayWindowOrderingEvent): - (WebKit::WebPage::acceptsFirstMouse): - * win/WebKit2.def: - * win/WebKit2CFLite.def: + Reviewed by Gyuyoung Kim. -2012-09-12 Brady Eidson <beidson@apple.com> + * PlatformEfl.cmake: Removed build script which install resources to share. + * UIProcess/efl/WebInspectorProxyEfl.cpp: + (WebKit::WebInspectorProxy::inspectorPageURL): Modified not to use makeString. + (WebKit::WebInspectorProxy::inspectorBaseURL): Changed resource path. - Assert in NetscapePlugin::destroy() with async plugin init - <rdar://problem/12277595> and https://bugs.webkit.org/show_bug.cgi?id=96576 +2012-10-12 Sheriff Bot <webkit.review.bot@gmail.com> - Reviewed by Anders Carlsson. + Unreviewed, rolling out r131160. + http://trac.webkit.org/changeset/131160 + https://bugs.webkit.org/show_bug.cgi?id=99163 - Most of the NPN_* API calls have a plug-in protector during the calls. - NPN_Invoke and NPN_InvokeDefault do not. + "It should not be landed without it's follow-up because it + break pixal and ref tests without it." (Requested by kbalazs + on #webkit). - * WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp: - (WebKit::NPN_Invoke): Protect the plug-in during this call. - (WebKit::NPN_InvokeDefault): Ditto. + * Shared/API/c/qt/WKImageQt.cpp: + (WKImageCreateQImage): + * Shared/API/c/qt/WKImageQt.h: -2012-09-11 Alexey Proskuryakov <ap@apple.com> +2012-10-12 Balazs Kelemen <kbalazs@webkit.org> - <rdar://problem/12275537> REGRESSION(r127384): Non-existent directories are no longer created for sandbox paths - https://bugs.webkit.org/show_bug.cgi?id=96442 + [WK2] Serialization of Resource[Request,Response,Error] should be shared across ports + https://bugs.webkit.org/show_bug.cgi?id=90142 - Reviewed by Darin Adler. + Unreviewed buildfix 2. - * Shared/SandboxExtension.h: - (WebKit::SandboxExtension::createHandleForReadWriteDirectory): - * Shared/mac/SandboxExtensionMac.mm: - (WebKit::SandboxExtension::createHandleForReadWriteDirectory): - Added a function for read-write configuration directories. It matches - appendReadwriteSandboxDirectory() function behavior from WebProcessMac.mm. + * Shared/soup/WebCoreArgumentCodersSoup.cpp: + (CoreIPC::::encodePlatformData): + (CoreIPC::::decodePlatformData): - * UIProcess/WebContext.cpp: - (WebKit::WebContext::createNewWebProcess): - * UIProcess/mac/WebContextMac.mm: - (WebKit::WebContext::platformInitializeWebProcess): - Use the new function for directories that need to be created if they don't exist. +2012-10-12 Balazs Kelemen <kbalazs@webkit.org> -2012-09-12 Christophe Dumez <christophe.dumez@intel.com> + [WK2] Serialization of Resource[Request,Response,Error] should be shared across ports + https://bugs.webkit.org/show_bug.cgi?id=90142 - [WK2][WKTR] TestRunner needs to implement originsWithApplicationCache - https://bugs.webkit.org/show_bug.cgi?id=96496 + Unreviewed buildfix. - Reviewed by Kenneth Rohde Christiansen. + * Shared/WebCoreArgumentCoders.cpp: + (CoreIPC::::decode): - Add Bundle C API to retrieve security origins with - an application cache. This is needed by WebKitTestRunner - to support originsWithApplicationCache. +2012-10-12 Balazs Kelemen <kbalazs@webkit.org> - * WebProcess/InjectedBundle/API/c/WKBundle.cpp: - (WKBundleCopyOriginsWithApplicationCache): - * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h: - * WebProcess/InjectedBundle/InjectedBundle.cpp: - (WebKit::InjectedBundle::originsWithApplicationCache): - (WebKit): - * WebProcess/InjectedBundle/InjectedBundle.h: - (InjectedBundle): + [WK2] Serialization of Resource[Request,Response,Error] should be shared across ports + https://bugs.webkit.org/show_bug.cgi?id=90142 -2012-09-12 Christophe Dumez <christophe.dumez@intel.com> + Reviewed by Simon Hausmann. - [WK2][WKTR] TestRunner needs to implement dumpApplicationCacheDelegateCallbacks - https://bugs.webkit.org/show_bug.cgi?id=96374 + Share common serialization code across Qt and soup ports. + All of these ports serialize the WebCore representation + of these types. - Reviewed by Kenneth Rohde Christiansen. + * Shared/WebCoreArgumentCoders.cpp: + (CoreIPC::::encode): + (CoreIPC): + (CoreIPC::::decode): + * Shared/WebCoreArgumentCoders.h: + * Shared/mac/WebCoreArgumentCodersMac.mm: + (CoreIPC::::encodePlatformData): + (CoreIPC::::decodePlatformData): + * Shared/qt/WebCoreArgumentCodersQt.cpp: + (CoreIPC::::encodePlatformData): + (CoreIPC::::decodePlatformData): + * Shared/soup/WebCoreArgumentCodersSoup.cpp: + (CoreIPC::::encodePlatformData): + (CoreIPC::::decodePlatformData): + * Shared/win/WebCoreArgumentCodersWin.cpp: + (CoreIPC::::encodePlatformData): + (CoreIPC::::decodePlatformData): - Add Bundle C API to reset the application cache quota - for a given origin. +2012-10-12 Balazs Kelemen <kbalazs@webkit.org> - Add new reachedApplicationCacheOriginQuota callback - to WKBundlePageUIClient which is called from - WebChromeClient::reachedApplicationCacheOriginQuota(). + Unreviewed, rolling out r130389. + http://trac.webkit.org/changeset/130389 + https://bugs.webkit.org/show_bug.cgi?id=98048 - Those are needed by WebKitTestRunner to dump - information about the application cache callbacks - if instructed to. + It broke chromium - * Shared/APIClientTraits.cpp: - (WebKit): - * Shared/APIClientTraits.h: - * WebProcess/InjectedBundle/API/c/WKBundle.cpp: - (WKBundleSetApplicationCacheOriginQuota): - (WKBundleResetApplicationCacheOriginQuota): - * WebProcess/InjectedBundle/API/c/WKBundlePage.h: - * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h: - * WebProcess/InjectedBundle/InjectedBundle.cpp: - (WebKit::InjectedBundle::resetApplicationCacheOriginQuota): - (WebKit): - * WebProcess/InjectedBundle/InjectedBundle.h: - (InjectedBundle): - * WebProcess/InjectedBundle/InjectedBundlePageUIClient.cpp: - (WebKit::InjectedBundlePageUIClient::didReachApplicationCacheOriginQuota): - (WebKit): - * WebProcess/InjectedBundle/InjectedBundlePageUIClient.h: - (WebKit): - (InjectedBundlePageUIClient): - * WebProcess/WebCoreSupport/WebChromeClient.cpp: - (WebKit::WebChromeClient::reachedApplicationCacheOriginQuota): * win/WebKit2.def: * win/WebKit2CFLite.def: -2012-09-12 Sheriff Bot <webkit.review.bot@gmail.com> - - Unreviewed, rolling out r128280. - http://trac.webkit.org/changeset/128280 - https://bugs.webkit.org/show_bug.cgi?id=96498 - - it broke compilation on windows debug bot (Requested by loislo - on #webkit). - - * Shared/APIClientTraits.cpp: - (WebKit): - * Shared/APIClientTraits.h: - * WebProcess/InjectedBundle/API/c/WKBundle.cpp: - (WKBundleSetApplicationCacheOriginQuota): - * WebProcess/InjectedBundle/API/c/WKBundlePage.h: - * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h: - * WebProcess/InjectedBundle/InjectedBundle.cpp: - * WebProcess/InjectedBundle/InjectedBundle.h: - (InjectedBundle): - * WebProcess/InjectedBundle/InjectedBundlePageUIClient.cpp: - * WebProcess/InjectedBundle/InjectedBundlePageUIClient.h: - (WebKit): - (InjectedBundlePageUIClient): - * WebProcess/WebCoreSupport/WebChromeClient.cpp: - (WebKit::WebChromeClient::reachedApplicationCacheOriginQuota): +2012-10-12 Balazs Kelemen <kbalazs@webkit.org> -2012-09-12 Byungwoo Lee <bw80.lee@samsung.com> + [Qt][WTR] Do a forced repaint before generating pixel results + https://bugs.webkit.org/show_bug.cgi?id=98654 - [EFL][WK2] WorkQueue::dispatchAfterDelay() doesn't work properly. - https://bugs.webkit.org/show_bug.cgi?id=91179 - - Reviewed by Gyuyoung Kim. - - When UI Process is crashed and WebProcess's ecore main loop is very - busy or lockup also, watchdocCallback() function in the - ChildProcess.cpp doesn't triggered. And this is because of that - WorkQueue::dispatchAfterDelay() function uses ecore timer for getting - timer event. - - For removing the dependency between the dispatchAfterDelay() and ecore - main loop, new timer event mechanism is added to WorkQueue main loop. - - * Platform/WorkQueue.h: - (TimerWorkItem): - (WorkQueue::TimerWorkItem::dispatch): - (WorkQueue::TimerWorkItem::expireTime): - (WorkQueue::TimerWorkItem::expired): - (WorkQueue): - * Platform/efl/WorkQueueEfl.cpp: - (WorkQueue::TimerWorkItem::create): - (WorkQueue::TimerWorkItem::TimerWorkItem): - (WorkQueue::performFileDescriptorWork): - (WorkQueue::getCurrentTime): - (WorkQueue::getNextTimeOut): - (WorkQueue::performTimerWork): - (WorkQueue::workQueueThread): - (WorkQueue::dispatchAfterDelay): - -2012-09-12 Christophe Dumez <christophe.dumez@intel.com> - - [WK2][WKTR] TestRunner needs to implement dumpApplicationCacheDelegateCallbacks - https://bugs.webkit.org/show_bug.cgi?id=96374 - - Reviewed by Kenneth Rohde Christiansen. + Reviewed by Jocelyn Turcotte. - Add Bundle C API to reset the application cache quota - for a given origin. + Added API to convert a QImage to a WKImage so we can + pass it to cross-platform code. - Add new reachedApplicationCacheOriginQuota callback - to WKBundlePageUIClient which is called from - WebChromeClient::reachedApplicationCacheOriginQuota(). + * Shared/API/c/qt/WKImageQt.cpp: + (WKImageCreateFromQImage): + * Shared/API/c/qt/WKImageQt.h: - Those are needed by WebKitTestRunner to dump - information about the application cache callbacks - if instructed to. +2012-10-12 Sheriff Bot <webkit.review.bot@gmail.com> - * Shared/APIClientTraits.cpp: - (WebKit): - * Shared/APIClientTraits.h: - * WebProcess/InjectedBundle/API/c/WKBundle.cpp: - (WKBundleSetApplicationCacheOriginQuota): - (WKBundleResetApplicationCacheOriginQuota): - * WebProcess/InjectedBundle/API/c/WKBundlePage.h: - * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h: - * WebProcess/InjectedBundle/InjectedBundle.cpp: - (WebKit::InjectedBundle::resetApplicationCacheOriginQuota): - (WebKit): - * WebProcess/InjectedBundle/InjectedBundle.h: - (InjectedBundle): - * WebProcess/InjectedBundle/InjectedBundlePageUIClient.cpp: - (WebKit::InjectedBundlePageUIClient::didReachApplicationCacheOriginQuota): - (WebKit): - * WebProcess/InjectedBundle/InjectedBundlePageUIClient.h: - (WebKit): - (InjectedBundlePageUIClient): - * WebProcess/WebCoreSupport/WebChromeClient.cpp: - (WebKit::WebChromeClient::reachedApplicationCacheOriginQuota): + Unreviewed, rolling out r131121. + http://trac.webkit.org/changeset/131121 + https://bugs.webkit.org/show_bug.cgi?id=99144 -2012-09-12 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> + It made all tests timeout on all WK2 platform (Requested by + ossy on #webkit). - [WK2] [WTR] WebKitTestRunner needs TestRunner.workerThreadCount - https://bugs.webkit.org/show_bug.cgi?id=96388 - - Reviewed by Kenneth Rohde Christiansen. - - Added WKBundleGetWorkerThreadCount() function to Injected Bundle private API. - - * WebProcess/InjectedBundle/API/c/WKBundle.cpp: - (WKBundleGetWorkerThreadCount): - * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h: + * UIProcess/WebProcessProxy.cpp: + * UIProcess/WebProcessProxy.h: + (WebProcessProxy): + * UIProcess/WebProcessProxy.messages.in: * WebProcess/InjectedBundle/InjectedBundle.cpp: - (WebKit::InjectedBundle::workerThreadCount): Returns count of worker threads. - (WebKit): - * WebProcess/InjectedBundle/InjectedBundle.h: - (InjectedBundle): - -2012-09-12 Darin Adler <darin@apple.com> + (WebKit::InjectedBundle::postMessage): + (WebKit::InjectedBundle::postSynchronousMessage): - Make NetscapePlugin::m_timers use HashMap<OwnPtr> instead of deleteAllValues - https://bugs.webkit.org/show_bug.cgi?id=96469 +2012-10-11 Andy Estes <aestes@apple.com> - Reviewed by Dan Bernstein. + Add some basic methods and properties to the injected bundle Objective-C DOM API + https://bugs.webkit.org/show_bug.cgi?id=99137 - * WebProcess/Plugins/Netscape/NetscapePlugin.cpp: - (WebKit::NetscapePlugin::scheduleTimer): Call release rather than leakPtr when - entering a timer into the map. - (WebKit::NetscapePlugin::unscheduleTimer): Take an existing timer from the map - with the take function rather than the roundabout code needed before. - (WebKit::NetscapePlugin::destroy): Remove now-unneeded call to deleteAllValues. - * WebProcess/Plugins/Netscape/NetscapePlugin.h: Change the value type for - TimerMap to OwnPtr<Timer> rather than Timer*. - -2012-09-11 Anders Carlsson <andersca@apple.com> - - Accelerated compositing should always be forced when using the tiled drawing area - https://bugs.webkit.org/show_bug.cgi?id=96449 - - Reviewed by Andy Estes. - - There's code in WebPage::updatePreferences that will turn off accelerated compositing unless accelerated drawing is enabled. - This should only be done in the non-tiled model, so move the code to DrawingAreaImpl::updatePreferences. - - * WebProcess/WebPage/DrawingArea.h: - (WebKit::DrawingArea::updatePreferences): - This now takes a WebPreferencesStore. - - * WebProcess/WebPage/DrawingAreaImpl.cpp: - (WebKit::DrawingAreaImpl::updatePreferences): - Move code here from WebPage::updatePreferences. - - * WebProcess/WebPage/WebPage.cpp: - (WebKit::WebPage::updatePreferences): - Pass the WebPreferencesStore to DrawingArea::updatePreferences. - - * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h: - * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm: - (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea): - Remove call to updatePreferences, it's going to be called by the WebPage object later. - - (WebKit::TiledCoreAnimationDrawingArea::updatePreferences): - This now takes a WebPreferencesStore. - -2012-09-11 Brady Eidson <beidson@apple.com> - - Get rid of the PluginProcessShim for 64-bit plug-ins - <rdar://problem/12068560> and https://bugs.webkit.org/show_bug.cgi?id=96415 + Reviewed by Sam Weinig. - Reviewed by Anders Carlsson. + Add methods and properties that allow for tree traversal, node creation/insertion, + attribute modification, text node retrieval, and range creation. - * PluginProcess/PluginProcess.h: - (PluginProcess): + * WebKit2.xcodeproj/project.pbxproj: + * WebProcess/InjectedBundle/API/mac/WKDOMDocument.h: + * WebProcess/InjectedBundle/API/mac/WKDOMDocument.mm: + (toDocument): + (-[WKDOMDocument createElement:]): + (-[WKDOMDocument createTextNode:]): + (-[WKDOMDocument body]): + * WebProcess/InjectedBundle/API/mac/WKDOMElement.h: + * WebProcess/InjectedBundle/API/mac/WKDOMElement.mm: + (-[WKDOMElement hasAttribute:]): + (-[WKDOMElement getAttribute:]): + (-[WKDOMElement setAttribute:value:]): + (-[WKDOMElement tagName]): + * WebProcess/InjectedBundle/API/mac/WKDOMInternals.h: + * WebProcess/InjectedBundle/API/mac/WKDOMInternals.mm: + (WebKit::WKDOMNodeClass): + (WebKit::toWebCoreText): + (WebKit::toWKDOMText): + (WebKit::toWebCoreRange): + * WebProcess/InjectedBundle/API/mac/WKDOMNode.h: + * WebProcess/InjectedBundle/API/mac/WKDOMNode.mm: + (-[WKDOMNode insertNode:before:]): + (-[WKDOMNode appendChild:]): + (-[WKDOMNode parentNode]): + (-[WKDOMNode firstChild]): + (-[WKDOMNode nextSibling]): + * WebProcess/InjectedBundle/API/mac/WKDOMRange.h: + * WebProcess/InjectedBundle/API/mac/WKDOMRange.mm: + (-[WKDOMRange setStart:offset:]): + (-[WKDOMRange setEnd:offset:]): + (-[WKDOMRange collapse:]): + (-[WKDOMRange selectNode:]): + (-[WKDOMRange selectNodeContents:]): + (-[WKDOMRange isCollapsed]): + * WebProcess/InjectedBundle/API/mac/WKDOMText.h: Added. + * WebProcess/InjectedBundle/API/mac/WKDOMText.mm: Added. + (-[WKDOMText data]): + +2012-10-11 Brady Eidson <beidson@apple.com> + + Add a WKContext call to enable the NetworkProcess. + https://bugs.webkit.org/show_bug.cgi?id=99140 - * PluginProcess/mac/PluginProcessMac.mm: - (WebKit::getCurrentEventButtonState): - (WebKit): - (WebKit::beginModal): Moved from the shim, to be shared with shimmed processes. - (WebKit::endModal): Ditto. - (WebKit::replacedRunModalForWindow): Only used by Cocoa overrides. - (WebKit::PluginProcess::initializeShim): - (WebKit::PluginProcess::initializeCocoaOverrides): + Reviewed by Sam Weinig. - * PluginProcess/mac/PluginProcessMainMac.mm: - (WebKit::PluginProcessMain): Only call initializeShim for 32-bit processes, always call initializeCocoaOverrides + Add the SPI: + * UIProcess/API/C/WKContext.cpp: + (WKContextSetUsesNetworkProcess): + * UIProcess/API/C/WKContextPrivate.h: - * PluginProcess/mac/PluginProcessShim.h: - (PluginProcessShimCallbacks): - * PluginProcess/mac/PluginProcessShim.mm: + Add a member for the flag and the first call site that will be interested in the flag's value: + * UIProcess/WebContext.cpp: + (WebKit::WebContext::WebContext): + (WebKit::WebContext::setUsesNetworkProcess): (WebKit): - (WebKit::shimModalDialog): Call beginModal/endModal from the shim callbacks. - (WebKit::shimAlert): Ditto. - (WebKit::WebKitPluginProcessShimInitialize): Don't do the Cocoa overrides as they are now handled outside the shim. + (WebKit::WebContext::createNewWebProcess): + (WebKit::WebContext::ensureNetworkProcess): + * UIProcess/WebContext.h: + (WebContext): -2012-09-11 Marcelo Lira <marcelo.lira@openbossa.org> +2012-10-11 Andy Estes <aestes@apple.com> - Restore original value of mock scrollbars enabled in InternalSettings - https://bugs.webkit.org/show_bug.cgi?id=87680 + Fix the 32-bit Mac build after r131138. - Reviewed by Adam Barth. + * WebProcess/InjectedBundle/mac/InjectedBundleMac.mm: + (WebKit::InjectedBundle::load): - Added backup support for mock scrollbars state in - InternalSettings::Backup, and removed support for these - from Qt's DumpRenderTree. +2012-10-11 Anders Carlsson <andersca@apple.com> - * win/WebKit2.def: + Stop using Connection::deprecatedSend in WebConnection + https://bugs.webkit.org/show_bug.cgi?id=99130 -2012-09-11 Brady Eidson <beidson@apple.com> + Reviewed by Sam Weinig. - We should wait longer before killing the PluginProcess. - <rdar://problem/12067728> and https://bugs.webkit.org/show_bug.cgi?id=96407 + Instead of using deprecatedSend, just encode the data using a separate ArgumentEncoder and pass it along as a DataReference. - Reviewed by Anders Carlsson. + * DerivedSources.make: + * DerivedSources.pri: + * GNUmakefile.list.am: + Add new files. - Currently we kill the PluginProcess 15 seconds after the last plug-in is destroyed. - This is short enough that most users will have the process killed many times during browsing sessions, - which is painful because relaunching the process is I/O and kernel intensive. + * Platform/CoreIPC/MessageID.h: + Add WebConnectionMessageClass. - In an ideal world we could keep it around forever until the system tells us resources are running low. + * Shared/WebConnection.cpp: + (WebKit::WebConnection::WebConnection): + Make WebConnection hold on to the CoreIPC::Connection. - In reality we do want to kill it occasionally to get a clean slate from any plug-in leaks. + (WebKit::WebConnection::postMessage): + Ask the subclasses to encode the body data, then send it. - A reasonable balance for now is to set a minimum lifetime of 30 minutes on the plug-in process and to - extend the termination timer from 15 seconds to 10 minutes. - - * PluginProcess/PluginProcess.cpp: - (WebKit::PluginProcess::PluginProcess): - (WebKit::PluginProcess::initializePluginProcess): - (WebKit::PluginProcess::setMinimumLifetime): - (WebKit): - (WebKit::PluginProcess::minimumLifetimeTimerFired): - * PluginProcess/PluginProcess.h: - (PluginProcess): + (WebKit::WebConnection::handleMessage): + Ask the subclasses to decode the body data, then call didReceiveClient. - * Shared/Plugins/PluginProcessCreationParameters.cpp: - (WebKit::PluginProcessCreationParameters::encode): - (WebKit::PluginProcessCreationParameters::decode): - * Shared/Plugins/PluginProcessCreationParameters.h: - (PluginProcessCreationParameters): + (WebKit::WebConnection::invalidate): + Null out m_connection. - * UIProcess/Plugins/PluginProcessProxy.cpp: - (WebKit): - (WebKit::PluginProcessProxy::didFinishLaunching): + * Shared/WebConnection.h: + (WebKit::WebConnection::connection): -2012-09-11 Jinwoo Song <jinwoo7.song@samsung.com> + * Shared/WebConnection.messages.in: Added. - Deploy StringBuilder::appendNumber() and StringBuilder::appendLiteral() in more places - https://bugs.webkit.org/show_bug.cgi?id=96344 + * UIProcess/WebConnectionToWebProcess.cpp: + (WebKit::WebConnectionToWebProcess::WebConnectionToWebProcess): + Pass the connection to the WebConnection initializer. - Reviewed by Benjamin Poulain. + (WebKit::WebConnectionToWebProcess::encodeMessageBody): + (WebKit::WebConnectionToWebProcess::decodeMessageBody): + Encode and decode the message body. - Use StringBuilder::appendNumber() instead of String::number(). Also deploy - StringBuilder::appendLiteral() instead of String::append() in the surrounding code. + (WebKit::WebConnectionToWebProcess::didReceiveMessage): + Handle WebConnection messages. - * Shared/WebMemorySampler.cpp: - (WebKit::WebMemorySampler::appendCurrentMemoryUsageToFile): - * UIProcess/InspectorServer/WebSocketServerConnection.cpp: - (WebKit::WebSocketServerConnection::sendHTTPResponseHeader): - * UIProcess/InspectorServer/qt/WebInspectorServerQt.cpp: - (WebKit::WebInspectorServer::inspectorUrlForPageID): - (WebKit::WebInspectorServer::buildPageList): + * WebKit2.xcodeproj/project.pbxproj: + Add new files. -2012-09-11 Anders Carlsson <andersca@apple.com> + * WebProcess/WebConnectionToUIProcess.cpp: + (WebKit::WebConnectionToUIProcess::WebConnectionToUIProcess): + Pass the connection to the WebConnection initializer. - Fix speling error in comment. + (WebKit::WebConnectionToUIProcess::encodeMessageBody): + (WebKit::WebConnectionToUIProcess::decodeMessageBody): + Encode and decode the message body. - * WebProcess/Plugins/Netscape/NetscapePlugin.cpp: - (WebKit::isTransparentSilverlightBackgroundValue): + (WebKit::WebConnectionToUIProcess::didReceiveMessage): + Handle WebConnection messages. -2012-09-11 Raphael Kubo da Costa <rakuco@webkit.org> + * win/WebKit2.vcproj: + Add new files. - [EFL] Rewrite the EFL-related Find modules - https://bugs.webkit.org/show_bug.cgi?id=95237 +2012-10-11 Andy Estes <aestes@apple.com> - Reviewed by Kenneth Rohde Christiansen. + Expose the main frame's document to injected bundles via the Objective-C API + https://bugs.webkit.org/show_bug.cgi?id=99133 - * CMakeLists.txt: Stop setting the LINK_FLAGS property. - * PlatformEfl.cmake: Add libraries and include directories for - each Enlightenment Foundation Library used by the port. + Patch by Sam Weinig. -2012-09-11 Christophe Dumez <christophe.dumez@intel.com> + Reviewed by Anders Carlsson. - [WK2][WKTR] TestRunner needs to implement setApplicationCacheOriginQuota - https://bugs.webkit.org/show_bug.cgi?id=96379 + Allow a bundle to declare a principle class which will be instantiated + by WebKit2 and passed an object to which WKBundleClient calls are + forwarded and which can access the main frame's WKDOMDocument. - Reviewed by Kenneth Rohde Christiansen. + * WebKit2.xcodeproj/project.pbxproj: + * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.h: + * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.mm: Instantiate + the bundle's principle class forward WKBundleClient calls to it. + * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.h: + * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm: + Add a property called mainFrameDocument which returns a WKDOMDocument. + * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextControllerInternal.h: + * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInInternal.h: + * WebProcess/InjectedBundle/mac/InjectedBundleMac.mm: + (WebKit::InjectedBundle::load): Initialize the shared + WKWebProcessPlugInController with the bundle's principle class. + +2012-10-11 Sam Weinig <sam@webkit.org> + + Add a helper function for initializing WebKit2 DOM objects + https://bugs.webkit.org/show_bug.cgi?id=99128 - Add Bundle C API to set the application cache quota for a - given security origin. This is needed by WebKitTestRunner - to implement setApplicationCacheOriginQuota(). + Reviewed by Anders Carlsson. - * WebProcess/InjectedBundle/API/c/WKBundle.cpp: - (WKBundleSetApplicationCacheOriginQuota): - * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h: - * WebProcess/InjectedBundle/InjectedBundle.cpp: - (WebKit::InjectedBundle::setApplicationCacheOriginQuota): - (WebKit): - * WebProcess/InjectedBundle/InjectedBundle.h: - (InjectedBundle): + * WebProcess/InjectedBundle/API/mac/WKDOMInternals.mm: + (WebKit::WKDOMNodeClass): + (WebKit::initWithImpl): + (WebKit::toWKDOMNode): + (WebKit::toWKDOMRange): + (WebKit::toWKDOMType): + Add toWKDOMType which implements the core object initialization and caching. -2012-09-11 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> +2012-10-11 Seokju Kwon <seokju.kwon@samsung.com> - [WK2][WTR] WebKitTestRunner needs testRunner.setSpatialNavigationEnabled - https://bugs.webkit.org/show_bug.cgi?id=96269 + [EFL][WK2] Add support for Inspector + https://bugs.webkit.org/show_bug.cgi?id=98639 Reviewed by Kenneth Rohde Christiansen. - Added a new setter for spacial navigation enabling to Injected Bundle private API. + Support inspector on WebKit2/Efl and add APIs to show and close the inspector. - * WebProcess/InjectedBundle/API/c/WKBundle.cpp: - (WKBundleSetSpatialNavigationEnabled): - * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h: - * WebProcess/InjectedBundle/InjectedBundle.cpp: - (WebKit::InjectedBundle::setSpatialNavigationEnabled): - (WebKit): - * WebProcess/InjectedBundle/InjectedBundle.h: - (InjectedBundle): - -2012-09-11 Marcelo Lira <marcelo.lira@openbossa.org> - - [Qt][WK2] Page loading status API lacks a status for intentionally stopped loading - https://bugs.webkit.org/show_bug.cgi?id=83062 - - Reviewed by Tor Arne Vestbø. - - When the loading of a page is intentionally interrupted, the loading - status is set to the new state LoadStoppedStatus. This reflects - reality more accurately because the page was not fully loaded - (a LoadSucceededStatus), and it wasn't an unexpected error - (a LoadFailedStatus). - - * UIProcess/API/qt/qquickwebview.cpp: - (QQuickWebViewPrivate::loadDidStop): - * UIProcess/API/qt/qquickwebview_p.h: - * UIProcess/API/qt/qquickwebview_p_p.h: - (QQuickWebViewPrivate): - * UIProcess/API/qt/tests/publicapi/tst_publicapi.cpp: - * UIProcess/API/qt/tests/qmltests/WebView/tst_loadUrl.qml: - * UIProcess/API/qt/tests/qmltests/common/TestWebView.qml: - * UIProcess/qt/QtWebPageLoadClient.cpp: - (WebKit::QtWebPageLoadClient::dispatchLoadStopped): + * UIProcess/API/efl/ewk_view.cpp: + (ewk_view_inspector_show): + (ewk_view_inspector_close): + * UIProcess/API/efl/ewk_view.h: + * UIProcess/API/efl/tests/test_ewk2_view.cpp: + (TEST_F): + * UIProcess/WebInspectorProxy.h: + (WebInspectorProxy): + * UIProcess/efl/WebInspectorProxyEfl.cpp: + (WebKit::resizeInspectorWindow): (WebKit): - (WebKit::QtWebPageLoadClient::dispatchLoadFailed): - * UIProcess/qt/QtWebPageLoadClient.h: - (QtWebPageLoadClient): - -2012-09-11 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> - - [Qt] Add a configure step to the Qt build system - - This allows building the Qt port using just 'qmake WebKit.pro'. Using - the build-webkit script is still supported, and will add slightly more - logic to the build, such as detecting the need for clean or incremental - builds. - - Internally, the build system now uses a new variable, WEBKIT_CONFIG, for - all things related to configuring the build, such as use/have/enable flags, - and these are translated to defines in default_post. Project files should - no longer check contains(DEFINES,...) to detect features, but use the new - enable?(), use?(), and have?() functions. The no_webkit1 and no_webkit2 - options have been translated into WEBKIT_CONFIG options as well, and can - be checked using build?(). - - Reviewed by Simon Hausmann. - - * Target.pri: - * UIProcess/API/qt/tests/tests.pri: - * WebKit2.pri: - * config.h: + (WebKit::destroyInspectorWindow): + (WebKit::closeInspectorWindow): + (WebKit::WebInspectorProxy::createInspectorWindow): + (WebKit::WebInspectorProxy::platformCreateInspectorPage): + (WebKit::WebInspectorProxy::platformOpen): -2012-09-11 Christophe Dumez <christophe.dumez@intel.com> +2012-10-11 Anders Carlsson <andersca@apple.com> - [WK2][WKTR] TestRunner needs to implement clearApplicationCacheForOrigin - https://bugs.webkit.org/show_bug.cgi?id=96372 + Stop using deprecatedSend and deprecatedSendSync for sending messages to the UI process + https://bugs.webkit.org/show_bug.cgi?id=99125 - Reviewed by Kenneth Rohde Christiansen. + Reviewed by Andreas Kling. - Add Bundle C API to clear the application cache for a - given origin. This is needed by WebKitTestRunner to - implement clearApplicationCacheForOrigin(). + Instead of using deprecatedSend, just encode the data using a separate ArgumentEncoder and pass it along as a DataReference. - * WebProcess/InjectedBundle/API/c/WKBundle.cpp: - (WKBundleClearApplicationCacheForOrigin): - * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h: - * WebProcess/InjectedBundle/InjectedBundle.cpp: - (WebKit::InjectedBundle::clearApplicationCacheForOrigin): + * UIProcess/WebContext.h: + * UIProcess/WebProcessProxy.cpp: + (WebKit::WebProcessProxy::postMessage): (WebKit): - * WebProcess/InjectedBundle/InjectedBundle.h: - (InjectedBundle): - -2012-09-11 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> - - [WK2][WTR] WebKitTestRunner needs layoutTestController.setMinimumTimerInterval - https://bugs.webkit.org/show_bug.cgi?id=96256 - - Reviewed by Kenneth Rohde Christiansen. - - Added new setter for minimum DOM timer interval to InjectedBundle private API. - - * WebProcess/InjectedBundle/API/c/WKBundle.cpp: - (WKBundleSetMinimumTimerInterval): - * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h: + (WebKit::WebProcessProxy::postSynchronousMessage): + * UIProcess/WebProcessProxy.h: + (WebProcessProxy): + * UIProcess/WebProcessProxy.messages.in: * WebProcess/InjectedBundle/InjectedBundle.cpp: - (WebKit::InjectedBundle::setMinimumTimerInterval): - (WebKit): - * WebProcess/InjectedBundle/InjectedBundle.h: - (InjectedBundle): - -2012-09-11 Kangil Han <kangil.han@samsung.com> - - [WK2][EFL] Fix compile warnings when enable tiled backing store - https://bugs.webkit.org/show_bug.cgi?id=95342 - - Reviewed by Gyuyoung Kim. - - Fixed compile time warning messages when enable tiled backing store. - - * UIProcess/API/efl/ewk_view.cpp: - (ewk_view_accelerated_compositing_mode_enter): Fixed invalid use of 'EINA_SAFETY_ON_NULL_RETURN_VAL' since it used '!' ahead of evasGl value so it is always null. - * WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp: - (WebCore::CoordinatedGraphicsLayer::setChildren): Replaced 'int' i with 'unsigned' because its comparing value is 'size_t'. - * WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp: - (WebKit::LayerTreeCoordinator::renderNextFrame): Replaced 'int' i with 'unsigned' because its comparing value is 'size_t'. - (WebKit::LayerTreeCoordinator::beginContentUpdate): Replaced 'int' i with 'unsigned' because its comparing value is 'size_t'. - -2012-09-11 Byungwoo Lee <bw80.lee@samsung.com> + (WebKit::InjectedBundle::postMessage): + (WebKit::InjectedBundle::postSynchronousMessage): - [EFL][WK2] WKEinaSharedString needs a function to adopt eina stringshare. - https://bugs.webkit.org/show_bug.cgi?id=96201 +2012-10-11 Anders Carlsson <andersca@apple.com> - Reviewed by Kenneth Rohde Christiansen. - - WKEinaSharedString needs a to adopt eina stringshare directly. - - With this adopt function, an instance that is directly created with - eina_stringshare_add() can be easily handled by WKEinaSharedString - without calling eina_stringshare_del() for preventing memory leak. - - * UIProcess/API/cpp/efl/WKEinaSharedString.cpp: - (WKEinaSharedString::adopt): - * UIProcess/API/cpp/efl/WKEinaSharedString.h: - * UIProcess/API/efl/tests/test_ewk2_eina_shared_string.cpp: - (TEST_F): - -2012-09-11 Andras Becsi <andras.becsi@nokia.com> + Stop using deprecatedSend for WebContext::postMessageToInjectedBundle + https://bugs.webkit.org/show_bug.cgi?id=99123 - [Qt][WK2] Fix the build with recent Qt5 - https://bugs.webkit.org/show_bug.cgi?id=96283 + Reviewed by Andreas Kling. - Reviewed by Simon Hausmann. + Instead of using deprecatedSend, just encode the data using a separate ArgumentEncoder and pass it along as a DataReference. - We should not use deprecated Qt API because doing that results - in build failure since all the deprecated API was disabled - in qtbase (https://codereview.qt-project.org/#change,24890). - - * UIProcess/API/qt/qwebnavigationhistory.cpp: - (QWebNavigationListModel::roleNames): - (QWebNavigationListModel::reset): - * UIProcess/API/qt/qwebnavigationhistory_p.h: - * UIProcess/API/qt/tests/qrawwebview/tst_qrawwebview.cpp: - (WebView::load): - * UIProcess/qt/WebPopupMenuProxyQt.cpp: - (PopupMenuItemModel): - (WebKit::PopupMenuItemModel::PopupMenuItemModel): - (WebKit::PopupMenuItemModel::roleNames): - (WebKit): + * Platform/CoreIPC/MessageID.h: + Remove MessageClassInjectedBundle. -2012-09-11 Christophe Dumez <christophe.dumez@intel.com> + * Shared/CoreIPCSupport/InjectedBundleMessageKinds.h: Removed. + * UIProcess/WebContext.cpp: + (WebKit::WebContext::createNewWebProcess): + Stop using deprecatedSend. - WTR needs an implementation of applicationCacheDiskUsageForOrigin - https://bugs.webkit.org/show_bug.cgi?id=87188 + (WebKit::WebContext::postMessageToInjectedBundle): + Stop using deprecatedSend. Remove now invalid FIXMEs. - Reviewed by Kenneth Rohde Christiansen. + * UIProcess/WebPageProxy.cpp: + Remove include. - Add Bundle private C API to retrieve the application cache - usage for a specific security origin. This is needed by - WebKitTestRunner. + * WebKit2.xcodeproj/project.pbxproj: + Remove InjectedBundleMessageKinds.h. - * WebProcess/InjectedBundle/API/c/WKBundle.cpp: - (WKBundleGetAppCacheUsageForOrigin): - * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h: * WebProcess/InjectedBundle/InjectedBundle.cpp: - (WebKit::InjectedBundle::appCacheUsageForOrigin): - (WebKit): * WebProcess/InjectedBundle/InjectedBundle.h: - (InjectedBundle): - -2012-09-11 Zhigang Gong <zhigang.gong@linux.intel.com> - - [EFL][WK2] Add necessary include directory in WebKit2 - https://bugs.webkit.org/show_bug.cgi?id=95173 + The injected bundle is no longer in charge of receiving IPC messages. - Unreviewed build fix. - - revision r126694: Move TextureMapperGL to use - GraphicsContext3D. modify the TextureMapperGL.h to include - GraphicsContext3D.h. And when enable TEXTURE_MAPPER, - file WebKit2/Shared/ShareableSurface.cpp will include - TextureMapperGL.h then depends on GraphicsContext3D.h - thus it need to add ANGLE director. As currently, this - problem only affect EFL platform, according to Gyuyoung Kim's - suggestion, we add this include dir into EFL private file - PlatformEfl.cmake. Otherwise, the build will fail. - - To trigger this problem by using the following command: - ./Tools/Scripts/build-webkit --efl --3d-rendering --tiled-backing-store - - * CMakeLists.txt: - -2012-09-10 Byungwoo Lee <bw80.lee@samsung.com> + * WebProcess/WebProcess.cpp: + (WebKit::WebProcess::didReceiveMessage): + Stop passing messages to the injected bundle. - [EFL][WK2] Build warning : fix warning about extended initializer lists on EWK2UnitTestBase.cpp. - https://bugs.webkit.org/show_bug.cgi?id=95990 + (WebKit::WebProcess::postInjectedBundleMessage): + Decode the message and pass it to the injected bundle. - Reviewed by Gyuyoung Kim. - - Fix build warning about extended initializer lists only available with - -std=c++0x or -std=gnu++0x. + * WebProcess/WebProcess.messages.in: + Add PostInjectedBundleMessage. - * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp: - (EWK2UnitTest::ewk2UnitTestBrowserViewSmartClass): - (EWK2UnitTest): - (EWK2UnitTest::EWK2UnitTestBase::EWK2UnitTestBase): +2012-10-11 Anders Carlsson <andersca@apple.com> -2012-09-10 Beth Dakin <bdakin@apple.com> + Stop using deprecatedSend for WebPageProxy::postMessageToInjectedBundle + https://bugs.webkit.org/show_bug.cgi?id=99120 - https://bugs.webkit.org/show_bug.cgi?id=96158 - Need API to suppress scrollbar animations - -and corresponding- - <rdar://problem/12210972> + Reviewed by Andreas Kling. - Reviewed by Sam Weinig. + Instead of using deprecatedSend, just encode the data using a separate ArgumentEncoder and pass it along as a DataReference. - Add suppressScrollbarAnimations as a WebCreationParameter. - * Shared/WebPageCreationParameters.h: - (WebPageCreationParameters): + * Shared/CoreIPCSupport/InjectedBundleMessageKinds.h: + Remove PostMessageToPage. - New API. Calls into the web process for the setter but not the - getter. - * UIProcess/API/C/WKPage.cpp: - (WKPageSetSuppressScrollbarAnimations): - (WKPageAreScrollbarAnimationsSuppressed): - * UIProcess/API/C/WKPage.h: * UIProcess/WebPageProxy.cpp: - (WebKit::WebPageProxy::WebPageProxy): - (WebKit::WebPageProxy::setSuppressScrollbarAnimations): - (WebKit): - (WebKit::WebPageProxy::creationParameters): - * UIProcess/WebPageProxy.h: - (WebPageProxy): - (WebKit::WebPageProxy::areScrollbarAnimationsSuppressed): - * WebProcess/WebPage/WebPage.messages.in: - - Call into WebCore. - * WebProcess/WebPage/WebPage.cpp: - (WebKit::WebPage::setSuppressScrollbarAnimations): - (WebKit): - * WebProcess/WebPage/WebPage.h: - (WebPage): - - This ScrollableArea area function is re-named by this patch in - WebCore. - * WebProcess/Plugins/PDF/BuiltInPDFView.h: - * WebProcess/Plugins/PDF/BuiltInPDFView.mm: - (WebKit::BuiltInPDFView::scrollbarsCanBeActive): - -2012-09-10 James Robinson <jamesr@chromium.org> - - Unreviewed, rolling out r127837. - http://trac.webkit.org/changeset/127837 - https://bugs.webkit.org/show_bug.cgi?id=93898 - - Broke ScrollingCoordinator on chromium - - * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm: - (WebKit::TiledCoreAnimationDrawingArea::updatePreferences): - -2012-09-10 Jer Noble <jer.noble@apple.com> - - Unreviewed; rolling out r128081. - http://trac.webkit.org/changeset/128081 - https://bugs.webkit.org/show_bug.cgi?id=96134 - - New test http/tests/media/video-donottrack.html fails to run on Apple test bots. + (WebKit::WebPageProxy::postMessageToInjectedBundle): + Stop using deprecatedSend. - * Shared/APIClientTraits.h: - * WebProcess/InjectedBundle/API/c/WKBundlePage.h: - * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp: - * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h: - (InjectedBundlePageLoaderClient): - * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: - * WebProcess/WebCoreSupport/WebFrameLoaderClient.h: - (WebFrameLoaderClient): - * WebProcess/qt/QtBuiltinBundlePage.cpp: - (WebKit::QtBuiltinBundlePage::QtBuiltinBundlePage): + * WebProcess/InjectedBundle/InjectedBundle.cpp: + (WebKit::InjectedBundle::didReceiveMessage): + Remove code to handle PostMessageToPage. -2012-09-07 Jon Lee <jonlee@apple.com> + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::postInjectedBundleMessage): + Decode the APIObject and send it along to the injected bundle. - Update notifications to latest spec - https://bugs.webkit.org/show_bug.cgi?id=91726 - <rdar://problem/11910451> + * WebProcess/WebPage/WebPage.messages.in: + Add PostInjectedBundleMessage message. - Reviewed by Alexey Proskuryakov. +2012-10-11 Regina Chung <heejin.r.chung@samsung.com> - Expose lang and dir. - - * UIProcess/API/C/WKNotification.cpp: - (WKNotificationCopyLang): - (WKNotificationCopyDir): - * UIProcess/API/C/WKNotification.h: - * UIProcess/Notifications/WebNotification.cpp: - (WebKit::WebNotification::WebNotification): - * UIProcess/Notifications/WebNotification.h: - (WebKit::WebNotification::create): - (WebKit::WebNotification::lang): - (WebKit::WebNotification::dir): - (WebNotification): - * UIProcess/Notifications/WebNotificationManagerProxy.cpp: - (WebKit::WebNotificationManagerProxy::show): - * UIProcess/Notifications/WebNotificationManagerProxy.h: - (WebNotificationManagerProxy): - * UIProcess/WebPageProxy.cpp: - (WebKit::WebPageProxy::showNotification): - * UIProcess/WebPageProxy.h: - (WebPageProxy): - * UIProcess/WebPageProxy.messages.in: - * WebProcess/Notifications/WebNotificationManager.cpp: - (WebKit::WebNotificationManager::show): + [EFL][WK2] WebProcess keeps on waiting for UIProcess + https://bugs.webkit.org/show_bug.cgi?id=97646 -2012-09-10 Alexey Proskuryakov <ap@apple.com> + Reviewed by Kenneth Rohde Christiansen. - Build fix. + Set LayerTreeRenderer to active so UIProcess can send RenderNextFrame message to WebProcess + after accelerated compositing(AC) mode is entered, so WebProcess can start flushing changes to UIProcess. - * UIProcess/WebContext.h: Added a default value for relatedPage argment - if - you don't have one, null is fine. + * UIProcess/API/efl/EflViewportHandler.cpp: Added API for setting LayerTreeRenderer's active state. + (WebKit::EflViewportHandler::setActive): + (WebKit): + * UIProcess/API/efl/EflViewportHandler.h: + (EflViewportHandler): + * UIProcess/API/efl/ewk_view.cpp: Sets LayerTreeRenderer's active status to true after entering AC mode. + (ewk_view_accelerated_compositing_mode_enter): -2012-09-10 Alexey Proskuryakov <ap@apple.com> +2012-10-10 Brady Eidson <beidson@apple.com> - [WK2] Add an API to open a page in same process - https://bugs.webkit.org/show_bug.cgi?id=96306 + Switch ResourceLoader::resourceData() from SharedBuffer to ResourceBuffer + https://bugs.webkit.org/show_bug.cgi?id=98976 Reviewed by Anders Carlsson. - The name "related" inspired by <http://wiki.whatwg.org/wiki/Links_to_Unrelated_Browsing_Contexts>. - - * UIProcess/API/mac/WKView.h: Added an API. It's unwieldy, but I blame - WKBrowsingContextGroup, not the related view. - - * UIProcess/API/mac/WKViewPrivate.h: Matching SPI for clients that mostly use - C APIs. - - * UIProcess/API/mac/WKView.mm: - (-[WKView initWithFrame:processGroup:browsingContextGroup:]): Use new back-end - signature. - (-[WKView initWithFrame:processGroup:browsingContextGroup:relatedToView:]): - Get page from WKView, and call back-end. - (-[WKView initWithFrame:contextRef:pageGroupRef:]): Reimplement existing method - by calling new, more powerful one. - (-[WKView initWithFrame:contextRef:pageGroupRef:relatedToPage:]): Just one change, - pass relatedPage to the context. - - * UIProcess/WebContext.cpp: (WebKit::WebContext::createWebPage): If related page - is not null, use its process. - - * UIProcess/WebContext.h: (WebContext): Updated createWebPage signature. - -2012-09-10 Brady Eidson <beidson@apple.com> - - Javascript in foreground tabs should not wait synchronously for plug-ins to load - <rdar://problem/12067415> and https://bugs.webkit.org/show_bug.cgi?id=96167 - - Reviewed by Geoff Garen. - - Synchronously waiting for initialization to complete when javascript accesses the plug-in script object severely - reduces the effectiveness of having an asynchronous NPP_New. - - Such as with background tabs that have never been viewed, we already have cases where JS calls into the plug-in - element fail because we haven't bothered to initialize the plug-in. - - We get a huge win by expanding that to foreground tabs that simply haven't finished initializing their plug-ins. - - * WebProcess/Plugins/PluginView.cpp: - (WebKit::PluginView::scriptObject): If initialization is not complete just return 0 - They can get at the script object later. - - Remove the notion of "wait for asynchronous initialization" altogether: - * WebProcess/Plugins/Netscape/NetscapePlugin.h: - (NetscapePlugin): - * WebProcess/Plugins/PDF/BuiltInPDFView.h: - (BuiltInPDFView): - * WebProcess/Plugins/Plugin.h: - (Plugin): - * WebProcess/Plugins/PluginProxy.cpp: - * WebProcess/Plugins/PluginProxy.h: - (PluginProxy): - -2012-09-07 Jer Noble <jer.noble@apple.com> - - <audio> and <video> should send Do Not Track when appropriate - https://bugs.webkit.org/show_bug.cgi?id=96134 - - Reviewed by Eric Carlson. - - Add support for the shouldSendDoNotTrackHTTPHeader by passing the request - on to the WebFrameLoadDelegate. - - * Shared/APIClientTraits.cpp: Increment the interfaceSizes for - WKBundlePageLoaderClient by the value of the new functions. - * Shared/APIClientTraits.h: Ditto. - * WebProcess/InjectedBundle/API/c/WKBundlePage.h: Add a new API to - WKBundlePageLoaderClient and bump the version number. - * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp: - (WebKit::InjectedBundlePageLoaderClient::shouldSendDoNotTrackHTTPHeader): - Pass the question on to the client. - * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h: * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: - (WebKit::WebFrameLoaderClient::shouldSendDoNotTrackHTTPHeader): - Pass the question on to the bundle. - * WebProcess/WebCoreSupport/WebFrameLoaderClient.h: - * WebProcess/qt/QtBuiltinBundlePage.cpp: - (WebKit::QtBuiltinBundlePage::QtBuiltinBundlePage): - Add an entry for the new function in the Qt loader client. - -2012-09-10 Carlos Garcia Campos <cgarcia@igalia.com> - - [SOUP] Don't convert to UTF-8 the suggestedFilename passed to Download::decideDestinationWithSuggestedFilename() - https://bugs.webkit.org/show_bug.cgi?id=96261 - - Reviewed by Martin Robinson. - - * WebProcess/Downloads/soup/DownloadSoup.cpp: - (WebKit::DownloadClient::didReceiveResponse): - -2012-09-10 Alexander Shalamov <alexander.shalamov@intel.com> - - [EFL][WK2] Add fullscreen enter / exit signals to the ewk_view API - https://bugs.webkit.org/show_bug.cgi?id=92362 - - Reviewed by Gyuyoung Kim. - - Handle WebFullScreenManagerProxy::enterFullScreen and exitFullScreen - methods, so that ewk_view could enter and exit fullscreen mode when requested. - Also, two callbacks were added to ewk_view API, so that UI could customise - behavior when fullscreen mode is requested, e.g. show security dialog. - - * UIProcess/API/efl/ewk_settings.cpp: - (ewk_settings_fullscreen_enabled_set): - (ewk_settings_fullscreen_enabled_get): - * UIProcess/API/efl/ewk_settings.h: - * UIProcess/API/efl/ewk_view.cpp: - (_ewk_view_initialize): - (ewk_view_full_screen_enter): - (ewk_view_full_screen_exit): - * UIProcess/API/efl/ewk_view.h: - * UIProcess/API/efl/ewk_view_private.h: - * UIProcess/API/efl/tests/test_ewk2_settings.cpp: - (TEST_F): - * UIProcess/API/efl/tests/test_ewk2_view.cpp: - (fullScreenCallback): - (checkFullScreenProperty): - (TEST_F): - * UIProcess/efl/WebFullScreenManagerProxyEfl.cpp: - (WebKit::WebFullScreenManagerProxy::enterFullScreen): - (WebKit::WebFullScreenManagerProxy::exitFullScreen): - -2012-09-10 Kevin Funk <kevin.funk@kdab.com> - - [Qt] Fix deprecation failures if QT_NO_DEPRECATED enabled - https://bugs.webkit.org/show_bug.cgi?id=96258 - - Reviewed by Simon Hausmann. - - Sync with latest changes in Qt5. - - * WebProcess/WebCoreSupport/qt/WebErrorsQt.cpp: - * WebProcess/qt/WebProcessQt.cpp: - -2012-09-10 Carlos Garcia Campos <cgarcia@igalia.com> - - [GTK] Sanitize the suggested filename when building the download destination URI - https://bugs.webkit.org/show_bug.cgi?id=96260 - - Reviewed by Gustavo Noronha Silva. - - The suggested filename returned by the server can contain - directory separators so that the filename would be interpreted as - a full path. - - * UIProcess/API/gtk/WebKitDownload.cpp: - (webkitDownloadDecideDestination): Convert any directory separator - contained in the suggested filename to an underscore. - -2012-09-10 Simon Hausmann <simon.hausmann@nokia.com> - - [Qt] Fix generation of forward headers for generated files in WebCore on Windows - https://bugs.webkit.org/show_bug.cgi?id=96245 - - Reviewed by Tor Arne Vestbø. - - We generate the forwarding header files of generated WebCore sources by using - mkdir to ensure the target directory exists, followed by - echo #include "..." > file.h. On Windows mkdir returns with an error if the - target directory exists. For us that is not an error, so work around it with - (mkdir path 2>nul || echo>nul) - - * DerivedSources.pri: - -2012-09-10 Allan Sandfeld Jensen <allan.jensen@nokia.com> + (WebKit::WebFrameLoaderClient::finishedLoading): + * WebProcess/WebPage/WebFrame.cpp: + (WebKit::WebFrame::source): + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::getMainResourceDataOfFrame): - [Qt][WK2] REGRESSION(r127861): It made one test fail and one test crash - https://bugs.webkit.org/show_bug.cgi?id=96243 +2012-10-11 Sam Weinig <sam@webkit.org> - Reviewed by Kenneth Rohde Christiansen. + Add missing WK_EXPORT for WKDOMTextIterator. - Skip the code if QClipboard is not available, and give WebCore a chance to handle the event first. + Rubber-stamped by Brady Eidson. - * WebProcess/WebPage/WebPage.cpp: - (WebKit::handleMouseEvent): - * WebProcess/WebPage/qt/WebPageQt.cpp: - (WebKit::WebPage::handleMouseReleaseEvent): + * WebProcess/InjectedBundle/API/mac/WKDOMTextIterator.h: -2012-09-10 Simon Hausmann <simon.hausmann@nokia.com> +2012-10-11 Zeno Albisser <zeno@webkit.org> - [Qt] WK2 build fixes for MSVC - https://bugs.webkit.org/show_bug.cgi?id=96248 + [Qt] Implement GraphicsSurfaceToken to replace uint64_t as token type. + https://bugs.webkit.org/show_bug.cgi?id=98501 - Reviewed by Tor Arne Vestbø. + Replace the token type for GraphicsSurface with a new class GraphicsSurfaceToken. + This is necessary in order to implement GraphicsSurface for Windows. + Depending on the platform a GraphicsSurfaceToken might contain a + WindowID (Linux/GLX), two IOSurfaceIDs (Mac) or in the future two HANDLEs (Windows). + The simple uint64_t is not sufficient anymore, since a single HANDLE in windows + can be 64bit already. - MSVC is picky when it comes to the use of forward declaration and the use of - such forward declared types in templates. In these instances inline functions were - passed parameters in RefPtrs that were only forward declared, but at compile time - MSVC wants to know what type it is in order to completely instantiate RefPtr (which - needs to call the type destructor for example). Therefore this patch resolves a couple - of forward declarations with direct header file inclusions. + Reviewed by Noam Rosenthal. - * UIProcess/API/qt/raw/qrawwebview_p_p.h: - * UIProcess/InspectorServer/WebSocketServerClient.h: - * UIProcess/qt/QtPageClient.h: + * Shared/ShareableSurface.cpp: + (WebKit::ShareableSurface::Handle::encode): + (WebKit::ShareableSurface::Handle::decode): + (WebKit::ShareableSurface::create): + (WebKit::ShareableSurface::createHandle): + * Shared/ShareableSurface.h: + (WebKit::ShareableSurface::Handle::graphicsSurfaceToken): + (Handle): + * Shared/WebCoreArgumentCoders.cpp: + (CoreIPC): + (CoreIPC::::encode): + (CoreIPC::::decode): + * Shared/WebCoreArgumentCoders.h: + (WebCore): + * UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.cpp: + (WebKit::LayerTreeCoordinatorProxy::updateTileForLayer): + (WebKit::LayerTreeCoordinatorProxy::syncCanvas): + * UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.h: + (LayerTreeCoordinatorProxy): + * UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.messages.in: + * UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp: + (WebKit::LayerTreeRenderer::syncCanvas): + * UIProcess/CoordinatedGraphics/LayerTreeRenderer.h: + (LayerTreeRenderer): + * WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp: + (WebCore::CoordinatedGraphicsLayer::syncCanvas): + * WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.h: + (CoordinatedGraphicsLayerClient): + * WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp: + (WebKit::LayerTreeCoordinator::syncCanvas): + * WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.h: + (LayerTreeCoordinator): -2012-09-10 Andras Becsi <andras.becsi@nokia.com> +2012-10-10 Andras Becsi <andras.becsi@digia.com> - [Qt][WK2] QWebKitTest should retrieve the viewport state from the PageViewportController - https://bugs.webkit.org/show_bug.cgi?id=96106 + [Qt][WK2] Avoid unnecessary calls in PageViewportController + https://bugs.webkit.org/show_bug.cgi?id=98886 - Reviewed by Simon Hausmann. + Reviewed by Jocelyn Turcotte. - The functions in PageViewportControllerClientQt proxying the - viewport state values can be removed if QWebKitTest uses the - PageViewportController to retrieve these values. + Remove leftover and unneeded update guards and visibility update + notifications to avoid unnecessary update cycles between the + controller an the client. + Previously didRenderFrame triggered updates for no reason since + animations on the page cause a lot of DidRenderFrame messages + for which the viewport state does not change. - * UIProcess/API/qt/qquickwebview_p_p.h: - (QQuickWebViewPrivate::viewportController): - * UIProcess/API/qt/qwebkittest.cpp: - (QWebKitTest::viewport): - (QWebKitTest::devicePixelRatio): - (QWebKitTest::contentsScale): + * UIProcess/PageViewportController.cpp: + (WebKit::ViewportUpdateDeferrer::~ViewportUpdateDeferrer): + (WebKit::PageViewportController::didRenderFrame): * UIProcess/PageViewportController.h: - (WebKit::PageViewportController::currentContentsScale): + (PageViewportController): * UIProcess/qt/PageViewportControllerClientQt.cpp: + (WebKit::PageViewportControllerClientQt::setContentsScale): + (WebKit::PageViewportControllerClientQt::didChangeViewportAttributes): + (WebKit::PageViewportControllerClientQt::updateViewportController): * UIProcess/qt/PageViewportControllerClientQt.h: (PageViewportControllerClientQt): -2012-09-10 Simon Hausmann <simon.hausmann@nokia.com> - - [WK2] Make WK2 C API headers compile in the Qt build on Windows - https://bugs.webkit.org/show_bug.cgi?id=96246 +2012-10-11 Mario Sanchez Prada <msanchez@igalia.com> - Reviewed by Kenneth Rohde Christiansen. - - WKBase.h and WKAPICast.h include files that are specific to the Safari/Windows - port if WIN32 or _WIN32 is defined. When building WebKit2 on Windows with Qt, we - do not want to include these files, as they define an API that is different to ours - (the view aspect differs). Therefore guard the inclusion with !defined(BUILDING_QT__) - - * Shared/API/c/WKBase.h: - * UIProcess/API/C/WKAPICast.h: + [GTK] It should be possible to disable favicons in WebKit2 GTK+ API + https://bugs.webkit.org/show_bug.cgi?id=98885 -2012-09-10 Kevin Funk <kevin.funk@kdab.com> - - Replace calls to QString::fromAscii which is deprecated in Qt5 - https://bugs.webkit.org/show_bug.cgi?id=96242 + Reviewed by Carlos Garcia Campos. - Reviewed by Simon Hausmann. + Make support for favicons in WebKit2GTK+ disabled by default, and + allow enabling it even after calling webkit_web_context_get_favicon_database(), + by decoupling opening the IconDatabase, which will happen when + setting the path for the database directory, from creating the + instance of WebKitFaviconDatabase from WebKitWebContext. - Replace with QString::fromLatin1 which does the same. + * UIProcess/API/gtk/WebKitWebContext.cpp: + (_WebKitWebContextPrivate): Renamed faviconDatabasePath to + faviconDatabaseDirectory; + (ensureFaviconDatabase): Makes sure there's an instance of + WebKitFaviconDatabase created and associated to the context. + (webkit_web_context_set_favicon_database_directory): Use the + default path if NULL is passed, or the specified one, creating the + database if needed and opening it by setting it's path. If the + database is already open this method does nothing. + (webkit_web_context_get_favicon_database_directory): Return the + path or NULL if webkit_web_context_set_favicon_database_directory + has not been called yet. + (webkit_web_context_get_favicon_database): Return the instance of + WebKitFaviconDatabase, or create it if it doesn't exist yet, but + never set the path (would cause the icon database to be opened). - * UIProcess/API/qt/tests/qrawwebview/tst_qrawwebview.cpp: + * UIProcess/API/gtk/tests/TestWebKitFaviconDatabase.cpp: + (testNotInitialized): New test to check that a NOT_INITIALIZED + error is got when using the database before setting its path. + (testSetDirectory): Call set_favicon_database_directory() here + instead of doing it in the constructor of FaviconDatabaseTest. + (beforeAll): Add testNotInitialized() to the test suite. -2012-09-10 Christophe Dumez <christophe.dumez@intel.com> +2012-10-11 Jinwoo Song <jinwoo7.song@samsung.com> - [WK2] New fast/forms/number/number-interactive-validation-required.html fails - https://bugs.webkit.org/show_bug.cgi?id=95936 + [EFL][WK2] Revisit setting API names and documentation + https://bugs.webkit.org/show_bug.cgi?id=98793 Reviewed by Kenneth Rohde Christiansen. - Add WKPreference private API for manipulate the interactive form - validation setting. This is now needed by WebKitTestRunner. + Make setting API names to be consistent and revisit the documentation. - * Shared/WebPreferencesStore.h: - (WebKit): - * UIProcess/API/C/WKPreferences.cpp: - (WKPreferencesSetInteractiveFormValidationEnabled): - (WKPreferencesGetInteractiveFormValidationEnabled): - * UIProcess/API/C/WKPreferencesPrivate.h: - * WebProcess/WebPage/WebPage.cpp: - (WebKit::WebPage::updatePreferences): - -2012-09-09 Sam Weinig <sam@webkit.org> - - Simplify WebKit2 XPC service backend now that I know it doesn't need to soft link WebKit2.framework - https://bugs.webkit.org/show_bug.cgi?id=96228 - - Reviewed by Dan Bernstein. - - We soft link the non-XPC service WebProcess backend to the WebKit2 framework to - ensure that we can close all the necessary file descriptors at launch, without - fear that we will be closing one we open while initializing WebKit2 or one of its - dependencies. Since we don't need to close file descriptors in the XPC service - backend, we don't need to soft link! While here, also do some cleanup and code - sharing. - - * UIProcess/Launcher/mac/ProcessLauncherMac.mm: - (WebKit::launchXPCService): - We don't need to send the framework executable path anymore (it was used for the - soft linking), but we do need the client identifier. - - * WebKit2.xcodeproj/project.pbxproj: - Add new files. Link the XPC service to WebKit2.framework. - - * WebKit2Service/MainMacService.mm: - Now that we don't have to soft link, just make this a stub that calls immediately - into the WebKit2 framework. - - * WebProcess/mac/WebProcessInitialization.h: Added. - * WebProcess/mac/WebProcessInitialization.mm: Added. - (WebKit::InitializeWebProcess): - Move initialization that is common between the XPC and non-XPC backends here. - - * WebProcess/mac/WebProcessMainMac.mm: - (WebKit::WebProcessMain): - Remove XPC backend related code. Use new shared InitializeWebProcess function. - - * WebProcess/mac/WebProcessXPCServiceMain.h: Added. - * WebProcess/mac/WebProcessXPCServiceMain.mm: Added. - (WebKit::WebKit2ServiceEventHandler): - (WebProcessXPCServiceMain): - Move XPC service backend initialization here. - -2012-09-09 Emil A Eklund <eae@chromium.org> - - Rename Node::getRect/getPixelSnappedRect and remove ContainerNode::getRect - https://bugs.webkit.org/show_bug.cgi?id=81413 - - Reviewed by David Hyatt. - - Update WebPage to call pixelSnappedBoundingBox. - - * WebProcess/WebPage/WebPage.cpp: - (WebKit::WebPage::editorState): - -2012-09-08 Sam Weinig <sam@webkit.org> - - Switch to entering the sandbox directly from main(), rather than waiting for the initialization message - https://bugs.webkit.org/show_bug.cgi?id=96194 - - Reviewed by Dan Bernstein. - - * UIProcess/Launcher/mac/ProcessLauncherMac.mm: - (WebKit::ProcessLauncher::launchProcess): - Pass a client identifier to WebProcess as a command line argument - so that it can be used to create private temporary and cache directories. - - * WebProcess/WebProcess.h: - (WebProcess): - * WebProcess/mac/WebProcessMac.mm: - (WebKit::WebProcess::initializeSandbox): - (WebKit::WebProcess::platformInitializeWebProcess): - Expose the initializeSandbox() function and stop calling it from platformInitializeWebProcess() - since it is now going to be called from WebProcessMain. Also, move changing the current working - directory to sandbox initialization function and replace use of creation parameters with just - the client identifier. - - * WebProcess/com.apple.WebProcess.sb.in: - Add some new exceptions that come from entering the sandbox earlier in the AppKit - initialization process. Don't allow access to com.apple.coreservices.appleevents. - - * WebProcess/mac/WebProcessMainMac.mm: - (WebKit::WebProcessMainXPC): - (WebKit::WebProcessMain): - Enter the sandbox explicitly, not waiting until the initialization message. Also, - since we now have an extra parameter for the client identifier, make the WebProcess - launches the UIProcess code path work by extracting a client identifier from the - client executable path. - -2012-09-09 Patrick Gansterer <paroga@webkit.org> - - Make the String initialization on the function side of String::number() - https://bugs.webkit.org/show_bug.cgi?id=95940 - - Reviewed by Benjamin Poulain. - - * win/WebKit2.def: - * win/WebKit2CFLite.def: - -2012-09-09 Pierre Rossi <pierre.rossi@gmail.com> - - [WK2] expose element rect for color input type - https://bugs.webkit.org/show_bug.cgi?id=91664 - - Reviewed by Simon Hausmann. + * UIProcess/API/efl/ewk_settings.cpp: + (ewk_settings_frame_flattening_enabled_set): + (ewk_settings_frame_flattening_enabled_get): + (ewk_settings_dns_prefetching_enabled_set): + (ewk_settings_dns_prefetching_enabled_get): + * UIProcess/API/efl/ewk_settings.h: + * UIProcess/API/efl/tests/test_ewk2_settings.cpp: + (TEST_F): - In the same way we do for select elements already. This allows placing the picker - in a sensible location. - - * UIProcess/API/efl/PageClientImpl.cpp: Update the function's signature. - (WebKit::PageClientImpl::createColorChooserProxy): Ditto. - * UIProcess/API/efl/PageClientImpl.h: Ditto. - (PageClientImpl): - * UIProcess/API/gtk/PageClientImpl.cpp: - (WebKit::PageClientImpl::createColorChooserProxy): Ditto. - * UIProcess/API/gtk/PageClientImpl.h: Ditto. - (PageClientImpl): - * UIProcess/API/mac/PageClientImpl.h: Ditto. - (PageClientImpl): - * UIProcess/API/mac/PageClientImpl.mm: - (WebKit::PageClientImpl::createColorChooserProxy): Ditto. - * UIProcess/API/qt/raw/qrawwebview.cpp: - (QRawWebViewPrivate::createColorChooserProxy): Ditto. - * UIProcess/API/qt/raw/qrawwebview_p_p.h: Ditto. - (QRawWebViewPrivate): - * UIProcess/PageClient.h: Ditto. - (PageClient): - * UIProcess/WebPageProxy.cpp: - (WebKit::WebPageProxy::showColorChooser): Compute the rect mapped to the current view's transform. - * UIProcess/WebPageProxy.h: - (WebPageProxy): - * UIProcess/WebPageProxy.messages.in: - * UIProcess/qt/QtPageClient.cpp: - (WebKit::QtPageClient::createColorChooserProxy): - * UIProcess/qt/QtPageClient.h: - (QtPageClient): - * UIProcess/qt/WebColorChooserProxyQt.cpp: - (ColorChooserContextObject): - (WebKit::ColorChooserContextObject::ColorChooserContextObject): - (WebKit::ColorChooserContextObject::elementRect): - (WebKit::ColorChooserContextObject::accept): - (WebKit::WebColorChooserProxyQt::WebColorChooserProxyQt): - * UIProcess/qt/WebColorChooserProxyQt.h: - (WebKit::WebColorChooserProxyQt::create): - (WebColorChooserProxyQt): - * UIProcess/win/WebView.cpp: - (WebKit::WebView::createColorChooserProxy): Update the function's signature. - * UIProcess/win/WebView.h: - (WebView): Ditto. - * WebProcess/WebCoreSupport/WebColorChooser.cpp: - (WebKit::WebColorChooser::WebColorChooser): - -2012-09-09 Simon Hausmann <simon.hausmann@nokia.com> - - [Qt] Add missing files to the WebKit2 build on Windows - https://bugs.webkit.org/show_bug.cgi?id=96177 +2012-10-10 Jer Noble <jer.noble@apple.com> - Reviewed by Kenneth Rohde Christiansen. + Disallow full screen mode keyboard access by default. + https://bugs.webkit.org/show_bug.cgi?id=98971 + <rdar://problem/12474226> - For the build on Windows we can re-use existing functionality from the Safari/Windows - build, such as the IPC implementation. + Reviewed by Sam Weinig. - * Target.pri: + Only support full screen if keyboard access is not requested. -2012-09-09 Simon Hausmann <simon.hausmann@nokia.com> + * UIProcess/WebFullScreenManagerProxy.cpp: + (WebKit::WebFullScreenManagerProxy::supportsFullScreen): - [WK2] Fix PLATFORM(WIN) vs. OS(WINDOWS) in various files - https://bugs.webkit.org/show_bug.cgi?id=96178 +2012-10-10 Sheriff Bot <webkit.review.bot@gmail.com> - Reviewed by Kenneth Rohde Christiansen. + Unreviewed, rolling out r130972 and r130984. + http://trac.webkit.org/changeset/130972 + http://trac.webkit.org/changeset/130984 + https://bugs.webkit.org/show_bug.cgi?id=98986 - PLATFORM(WIN) is used in various places, where it is safe to use OS(WINDOWS) to allow - the re-use of that code path in ports beyond Safari/Windows. + Huge numbers of WK2 crashes (Requested by smfr on #webkit). - * Platform/CoreIPC/BinarySemaphore.h: - (BinarySemaphore): * Platform/CoreIPC/Connection.h: (Connection): - * Platform/SharedMemory.h: - (Handle): - (SharedMemory): - * Platform/WorkQueue.h: - -2012-09-08 Jinwoo Song <jinwoo7.song@samsung.com> - - [EFL][WK2] Minibrowser crashes on right mouse click - https://bugs.webkit.org/show_bug.cgi?id=95955 - - Reviewed by Simon Hausmann. - - Make early return if the PageClient does not create a ContextMenuProxy. - - * UIProcess/WebPageProxy.cpp: - (WebKit::WebPageProxy::internalShowContextMenu): - -2012-09-08 Simon Hausmann <simon.hausmann@nokia.com> - - [Qt] Fix CoreIPC setup between ProcessLauncher and WebProcessMain on Windows - https://bugs.webkit.org/show_bug.cgi?id=96179 - - Reviewed by Kenneth Rohde Christiansen. - - * UIProcess/Launcher/qt/ProcessLauncherQt.cpp: - (WebKit::ProcessLauncher::launchProcess): Hide Unixy platform specific code - and includes behind appropriate platform #ifdefs and use - CoreIPC::Connection::createServerAndClientIdentifiers to set up the IPC pipes. - We also need to tell Windows about our intent of using the client handle in - the child web process. - * WebProcess/qt/WebProcessMainQt.cpp: - (WebKit::WebProcessMainQt): After retrieving the IPC identifier we call - WebKit::WebProcess::shared().initialize with it. That function actually - cares a CIPC::Connection::Identifier as argument, which happens to be an - int on Unix, but it's actually a HANDLE on Windows. Change the parameter - type according to and a reinterpret_cast from the converted unsigned integer, - similar to WebProcessMainWin.cpp. - -2012-09-08 Christophe Dumez <christophe.dumez@intel.com> - - [WK2] New fast/events/tab-focus-link-in-canvas fails from r126908 - https://bugs.webkit.org/show_bug.cgi?id=95329 - - Reviewed by Kenneth Rohde Christiansen. - - Add implementation for overriding the WebKitTabToLinksPreferenceKey - preference as well as the corresponding WKPreferences API that - is needed by WebKitTestRunner. - - * Shared/WebPreferencesStore.h: - (WebKit): - * UIProcess/API/C/WKPreferences.cpp: - (WKPreferencesSetTabToLinksEnabled): - (WKPreferencesGetTabToLinksEnabled): - * UIProcess/API/C/WKPreferencesPrivate.h: - * WebProcess/InjectedBundle/InjectedBundle.cpp: - (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner): - * WebProcess/WebPage/WebPage.h: - (WebKit::WebPage::setTabToLinksEnabled): - (WebKit::WebPage::tabToLinksEnabled): - -2012-09-07 Benjamin Poulain <bpoulain@apple.com> + * Platform/CoreIPC/MessageReceiverMap.cpp: + (CoreIPC::MessageReceiverMap::addMessageReceiver): + (CoreIPC::MessageReceiverMap::clearAllMessageReceivers): + (CoreIPC::MessageReceiverMap::knowsHowToHandleMessage): + (CoreIPC::MessageReceiverMap::dispatchMessage): + (CoreIPC::MessageReceiverMap::dispatchSyncMessage): + * Platform/CoreIPC/MessageReceiverMap.h: + (MessageReceiverMap): + * UIProcess/WebConnectionToWebProcess.h: + (WebConnectionToWebProcess): + * UIProcess/WebContext.cpp: + (WebKit::WebContext::WebContext): + (WebKit::WebContext::~WebContext): + (WebKit::WebContext::knowsHowToHandleMessage): + (WebKit::WebContext::didReceiveMessage): + (WebKit::WebContext::didReceiveSyncMessage): + * UIProcess/WebContext.h: + (WebContext): + * UIProcess/WebProcessProxy.cpp: + (WebKit::WebProcessProxy::didReceiveMessage): + (WebKit::WebProcessProxy::didReceiveSyncMessage): + * UIProcess/WebProcessProxy.h: + (WebProcessProxy): - Rename the ustring() accessor to string() - https://bugs.webkit.org/show_bug.cgi?id=95919 +2012-10-10 Sam Weinig <sam@webkit.org> - Reviewed by Geoffrey Garen. + Add more Objective-C WebKit2 DOM API skeletons. + https://bugs.webkit.org/show_bug.cgi?id=98981 - * WebProcess/Plugins/Netscape/NPJSObject.cpp: - (WebKit::NPJSObject::enumerate): + Reviewed by Anders Carlsson. -2012-09-06 Jeffrey Pfau <jpfau@apple.com> + * WebKit2.xcodeproj/project.pbxproj: + * WebProcess/InjectedBundle/API/mac/WKDOMDocument.h: + * WebProcess/InjectedBundle/API/mac/WKDOMDocument.mm: + * WebProcess/InjectedBundle/API/mac/WKDOMElement.h: + * WebProcess/InjectedBundle/API/mac/WKDOMElement.mm: + Update guards to actually do something. __CLANG__ is never defined, but __clang__ is. + + * WebProcess/InjectedBundle/API/mac/WKDOMInternals.h: + * WebProcess/InjectedBundle/API/mac/WKDOMInternals.mm: + - Abstracts DOM object caching into the DOMCache class which can only be used as a singleton. + - Adds WKDOMRange class extension to allow manipulating its internal pointer for caching purposes. + - Add WKDOMRange conversion functions. + + * WebProcess/InjectedBundle/API/mac/WKDOMNode.h: + * WebProcess/InjectedBundle/API/mac/WKDOMNode.mm: + Rename _node to _impl for consistency. + + * WebProcess/InjectedBundle/API/mac/WKDOMRange.h: + * WebProcess/InjectedBundle/API/mac/WKDOMRange.mm: + (-[WKDOMRange _initWithImpl:WebCore::]): + (-[WKDOMRange initWithDocument:]): + (-[WKDOMRange dealloc]): + (-[WKDOMRange startContainer]): + (-[WKDOMRange startOffset]): + (-[WKDOMRange endContainer]): + (-[WKDOMRange endOffset]): + (-[WKDOMRange text]): + Added. Only offers base range functionality. + + * WebProcess/InjectedBundle/API/mac/WKDOMTextIterator.h: + * WebProcess/InjectedBundle/API/mac/WKDOMTextIterator.mm: + (-[WKDOMTextIterator initWithRange:]): + (-[WKDOMTextIterator advance]): + (-[WKDOMTextIterator atEnd]): + (-[WKDOMTextIterator currentRange]): + (-[WKDOMTextIterator currentTextPointer]): + (-[WKDOMTextIterator currentTextLength]): + Added. Almost identical to WebTextIterator API in WebKit. + +2012-10-10 Anders Carlsson <andersca@apple.com> + + Stop crashing left and right. + + * UIProcess/WebConnectionToWebProcess.h: + (WebKit::WebConnectionToWebProcess::webProcessProxy): + Add a getter. - Extend third-party storage blocking API to optionally allow blocking all storage - https://bugs.webkit.org/show_bug.cgi?id=95915 + * UIProcess/WebProcessProxy.cpp: + (WebKit::WebProcessProxy::fromConnection): + The WebProcessProxy is not the Connection::Client, the WebConnectionToWebProcess is. - Reviewed by Brady Eidson. +2012-10-10 Sam Weinig <sam@webkit.org> - Update WK2 API to use revised Settings API. + Fix the GCC Mac build. Why are we still building with GCC again? - * Shared/WebPreferencesStore.h: - (WebKit): - * UIProcess/API/C/WKAPICast.h: - (WebKit::toStorageBlockingPolicy): - (WebKit): - (WebKit::toAPI): - * UIProcess/API/C/WKPreferences.cpp: - (WKPreferencesSetStorageBlockingPolicy): - (WKPreferencesGetStorageBlockingPolicy): - * UIProcess/API/C/WKPreferences.h: - * WebProcess/WebPage/WebPage.cpp: - (WebKit::WebPage::updatePreferences): + * WebProcess/InjectedBundle/API/mac/WKDOMDocument.h: + * WebProcess/InjectedBundle/API/mac/WKDOMDocument.mm: + * WebProcess/InjectedBundle/API/mac/WKDOMElement.h: + * WebProcess/InjectedBundle/API/mac/WKDOMElement.mm: + * WebProcess/InjectedBundle/API/mac/WKDOMInternals.h: + * WebProcess/InjectedBundle/API/mac/WKDOMInternals.mm: + * WebProcess/InjectedBundle/API/mac/WKDOMNode.h: + * WebProcess/InjectedBundle/API/mac/WKDOMNode.mm: -2012-09-07 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com> +2012-10-10 Christophe Dumez <christophe.dumez@intel.com> - [EFL] [WK2] Set theme for the inspector view - https://bugs.webkit.org/show_bug.cgi?id=96108 + [EFL][WK2] Add toolbar buttons to MiniBrowser + https://bugs.webkit.org/show_bug.cgi?id=98883 Reviewed by Kenneth Rohde Christiansen. - Set the theme for the inspector view when it is created. - - * UIProcess/efl/WebInspectorProxyEfl.cpp: - (WebKit::WebInspectorProxy::platformCreateInspectorPage): + Add "back,forward,list,changed" signal on the Ewk_View + to notify the client when the view's back / forward + list has changed. This is useful for the UI to update + its back / forward buttons disabled state. -2012-09-07 Christophe Dumez <christophe.dumez@intel.com> - - [EFL] Use same default minimum logical font size in DRT and WTR - https://bugs.webkit.org/show_bug.cgi?id=96116 - - Reviewed by Martin Robinson. - - Add private bundle C API to set the minimum logicial font - size setting. This is needed by WebKitTestRunner. - - * WebProcess/InjectedBundle/API/c/WKBundle.cpp: - (WKBundleSetMinimumLogicalFontSize): - * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h: - * WebProcess/InjectedBundle/InjectedBundle.cpp: - (WebKit::InjectedBundle::setMinimumLogicalFontSize): - (WebKit): - * WebProcess/InjectedBundle/InjectedBundle.h: - (InjectedBundle): + * UIProcess/API/efl/ewk_view.cpp: + (ewk_view_back_forward_list_changed): + * UIProcess/API/efl/ewk_view.h: + * UIProcess/API/efl/ewk_view_loader_client.cpp: + (didChangeBackForwardList): + * UIProcess/API/efl/ewk_view_private.h: -2012-09-07 Allan Sandfeld Jensen <allan.jensen@nokia.com> +2012-10-10 Jon Lee <jonlee@apple.com> - Simplify hitTestResultAtPoint and nodesFromRect APIs - https://bugs.webkit.org/show_bug.cgi?id=95720 + [WK2] Activate plugins when user clicks on snapshot + https://bugs.webkit.org/show_bug.cgi?id=98328 + <rdar://problem/12426681> - Reviewed by Antonio Gomes. + Reviewed by Brady Eidson. - Update calls to new API and update exported symbols. + Implement the recreation of the plugin. - * WebProcess/InjectedBundle/InjectedBundleNavigationAction.cpp: - (WebKit::InjectedBundleNavigationAction::InjectedBundleNavigationAction): - * WebProcess/WebPage/WebPage.cpp: - (WebKit::handleContextMenuEvent): - (WebKit::WebPage::highlightPotentialActivation): Corrects the misplaced arguments while converting them. - (WebKit::WebPage::findZoomableAreaForPoint): - * WebProcess/WebPage/mac/WebPageMac.mm: - (WebKit::WebPage::characterIndexForPoint): - (WebKit::WebPage::performDictionaryLookupAtLocation): - (WebKit::WebPage::shouldDelayWindowOrderingEvent): - (WebKit::WebPage::acceptsFirstMouse): - * win/WebKit2.def: - * win/WebKit2CFLite.def: + * WebProcess/Plugins/PluginView.cpp: + (WebKit::PluginView::recreateAndInitialize): We can run into a situation where the user + decided to run the plugin before the snapshot was ready to be taken. In this case, the + plugin member variable is non-null, and the timer is still active. Turn off the timer, and + destroy that instance of the plugin. We set the plugin to the instance provided in the + first parameter to this function, and reset the member variables so that the PluginView is + in a state similar to when it was first created. We also immediately initialize the plugin, + which may happen synchronously or asynchronously. -2012-09-07 Allan Sandfeld Jensen <allan.jensen@nokia.com> + * WebProcess/Plugins/PluginView.h: + (WebKit::PluginView::initialParameters): Expose the initial parameters. Used to recreate + the plugin. + (WebKit::PluginView::pluginElement): Expose the element associated with the widget. Used to + recreate the plugin. - X11 Global Selection - https://bugs.webkit.org/show_bug.cgi?id=88238 + * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: + (WebKit::WebFrameLoaderClient::recreatePlugin): Create a new Plugin instance using the same + parameters used to create the plugin for snapshotting. Forward that instance to the widget. + * WebProcess/WebCoreSupport/WebFrameLoaderClient.h: + (WebFrameLoaderClient): Implement recreatePlugin(). - Reviewed by Tony Chang. +2012-10-10 Sam Weinig <sam@webkit.org> - Implements the hooks for supporting global selections in Qt WebKit2. + Fix 32-bit build. - * WebProcess/WebCoreSupport/WebEditorClient.cpp: - (WebKit::WebEditorClient::respondToChangedSelection): - (WebKit::WebEditorClient::updateGlobalSelection): - (WebKit::WebEditorClient::supportsGlobalSelection): - * WebProcess/WebCoreSupport/WebEditorClient.h: - * WebProcess/WebCoreSupport/gtk/WebEditorClientGtk.cpp: - (WebKit::WebEditorClient::updateGlobalSelection): - * WebProcess/WebPage/WebPage.cpp: - (WebKit::handleMouseEvent): - * WebProcess/WebPage/WebPage.h: - (WebPage): - * WebProcess/WebPage/qt/WebPageQt.cpp: - (WebKit::WebPage::handleMouseReleaseEvent): + * WebProcess/InjectedBundle/API/mac/WKDOMDocument.h: + * WebProcess/InjectedBundle/API/mac/WKDOMDocument.mm: + * WebProcess/InjectedBundle/API/mac/WKDOMElement.h: + * WebProcess/InjectedBundle/API/mac/WKDOMElement.mm: + * WebProcess/InjectedBundle/API/mac/WKDOMInternals.h: + * WebProcess/InjectedBundle/API/mac/WKDOMInternals.mm: + * WebProcess/InjectedBundle/API/mac/WKDOMNode.h: + * WebProcess/InjectedBundle/API/mac/WKDOMNode.mm: -2012-09-07 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> +2012-10-10 Anders Carlsson <andersca@apple.com> - [WK2] APIClientTraits<WKPageLoaderClient> and APIClientTraits<WKBundlePageLoaderClient> are not initialized properly - https://bugs.webkit.org/show_bug.cgi?id=96079 + WebContext should be a MessageReceiver + https://bugs.webkit.org/show_bug.cgi?id=98958 - Reviewed by Kenneth Rohde Christiansen. + Reviewed by Sam Weinig. - APIClientTraits<WKPageLoaderClient> was missing offset for version number 2 and - APIClientTraits<WKBundlePageLoaderClient> was missing offset for version number 3. + Make WebContext be a MessageReceiver that lives in its own map. This allows us to get rid of the + knowsHowToHandleMessage functions on MessageReceiverMap and WebContext. - * Shared/APIClientTraits.cpp: + * Platform/CoreIPC/Connection.h: + (CoreIPC::Connection::client): + (Connection): + * Platform/CoreIPC/MessageReceiverMap.cpp: + (CoreIPC::MessageReceiverMap::addMessageReceiver): + (CoreIPC::MessageReceiverMap::invalidate): + (CoreIPC::MessageReceiverMap::knowsHowToHandleMessage): + (CoreIPC::MessageReceiverMap::dispatchMessage): + (CoreIPC::MessageReceiverMap::dispatchSyncMessage): + * Platform/CoreIPC/MessageReceiverMap.h: + (MessageReceiverMap): + * UIProcess/WebContext.cpp: + (WebKit::WebContext::WebContext): + (WebKit::WebContext::~WebContext): + (WebKit::WebContext::dispatchMessage): + (WebKit::WebContext::dispatchSyncMessage): + (WebKit::WebContext::didReceiveMessage): + (WebKit::WebContext::didReceiveSyncMessage): + * UIProcess/WebContext.h: + (WebContext): + * UIProcess/WebProcessProxy.cpp: + (WebKit::WebProcessProxy::fromConnection): (WebKit): + (WebKit::WebProcessProxy::didReceiveMessage): + (WebKit::WebProcessProxy::didReceiveSyncMessage): + * UIProcess/WebProcessProxy.h: + (WebProcessProxy): -2012-09-07 Eunmi Lee <eunmi15.lee@samsung.com> - - [EFL][WK2] Add APIs to enable or disable the mouse events of the ewk_view. - https://bugs.webkit.org/show_bug.cgi?id=88631 - - Reviewed by Gyuyoung Kim. - - We can turn on/off the mouse events of the ewk_view using the mouse - events enabling API. This API can be used when we want to turn off the - mouse events on the touchscreen device to process the touch events - instead of the mouse events. - - * UIProcess/API/efl/ewk_view.cpp: - (_Ewk_View_Private_Data): - (_Ewk_View_Private_Data::_Ewk_View_Private_Data): - (_ewk_view_smart_add): - (ewk_view_mouse_events_enabled_set): - (ewk_view_mouse_events_enabled_get): - * UIProcess/API/efl/ewk_view.h: - * UIProcess/API/efl/tests/test_ewk2_view.cpp: - (TEST_F): - -2012-09-07 Tim Horton <timothy_horton@apple.com> - - Add optional debug logging when we fall into/out of threaded scrolling - https://bugs.webkit.org/show_bug.cgi?id=93898 - <rdar://problem/12089098> - - Reviewed by Simon Fraser. - - Update the scrolling tree's scrollingPerformanceLoggingEnabled preference - before the early-return if we don't have layer debugging borders on. - - * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm: - (WebKit::TiledCoreAnimationDrawingArea::updatePreferences): - -2012-09-06 Jinwoo Song <jinwoo7.song@samsung.com> - - Deploy StringBuilder in more places in WebKit2 - https://bugs.webkit.org/show_bug.cgi?id=95924 - - Reviewed by Benjamin Poulain. - - Deploy StringBuilder to concatenate strings more efficiently. +2012-10-10 Sam Weinig <sam@webkit.org> - * Shared/WebMemorySampler.cpp: - (WebKit): - (WebKit::WebMemorySampler::WebMemorySampler): - (WebKit::WebMemorySampler::stop): - (WebKit::WebMemorySampler::writeHeaders): - (WebKit::WebMemorySampler::appendCurrentMemoryUsageToFile): - * Shared/WebMemorySampler.h: - (WebMemorySampler): - * WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp: - (WebKit::capitalizeRFC822HeaderFieldName): - * WebProcess/WebCoreSupport/WebContextMenuClient.cpp: - (WebKit::WebContextMenuClient::searchWithGoogle): + Add skeleton of a WebKit2 ObjC DOM SPI (not intended to be the full DOM) + https://bugs.webkit.org/show_bug.cgi?id=98955 -2012-09-06 Ryuan Choi <ryuan.choi@samsung.com> + Reviewed by Anders Carlsson. - [EFL][WK2] Add API unit tests for ewk_view_theme_set. - https://bugs.webkit.org/show_bug.cgi?id=94670 + Add a skeleton DOM implementation only exposing Node, Element and Document + for now. It is currently only available in 64-bit as it relies on the non-fragile + ABI for now. - Reviewed by Gyuyoung Kim. + * WebKit2.xcodeproj/project.pbxproj: + * WebProcess/InjectedBundle/API/mac/WKDOMDocument.h: Added. + * WebProcess/InjectedBundle/API/mac/WKDOMDocument.mm: Added. + * WebProcess/InjectedBundle/API/mac/WKDOMElement.h: Added. + * WebProcess/InjectedBundle/API/mac/WKDOMElement.mm: Added. + * WebProcess/InjectedBundle/API/mac/WKDOMInternals.h: Added. + * WebProcess/InjectedBundle/API/mac/WKDOMInternals.mm: Added. + * WebProcess/InjectedBundle/API/mac/WKDOMNode.h: Added. + * WebProcess/InjectedBundle/API/mac/WKDOMNode.mm: Added. - Added unit tests for ewk_view_theme_set. +2012-10-04 Andy Estes <aestes@apple.com> - * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestEnvironment.cpp: - (EWK2UnitTest::EWK2UnitTestEnvironment::pathForResource): - Added to get path of resource. - * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestEnvironment.h: - Ditto. - * UIProcess/API/efl/tests/resources/big_button_theme.edj: - Added test theme file which has text_confinement of button as - rel1 { ... offset : 150 8; } rel2 { ... offset : -150 -11; }. - * UIProcess/API/efl/tests/resources/empty_theme.edj: - Added test theme file which includes nothing. - * UIProcess/API/efl/tests/test_ewk2_view.cpp: - Added unit test for ewk_view_theme_set. + [WebKit2] Create an API for adding and removing user stylesheets from a page group + https://bugs.webkit.org/show_bug.cgi?id=98432 -2012-09-06 Csaba Osztrogonác <ossy@webkit.org> + Reviewed by Sam Weinig. - Move RenderView::setFixedPositionedObjectsNeedLayout to FrameView - https://bugs.webkit.org/show_bug.cgi?id=96017 + This patch adds the following API to WKBrowsingContextGroup: + + - (void)addUserStyleSheet:(NSString *)source baseURL:(NSURL *)baseURL whitelist:(NSArray *)whitelist blacklist:(NSArray *)blacklist mainFrameOnly:(BOOL)mainFrameOnly; + - (void)removeAllUserStyleSheets; + + Sheets added via this API are sent to all processes that contain a page + in the given page group. Sheets are also cached in the UI process in a + new object called UserContentContainer, which is a property of each + group's WebPageGroupData and is sent to new web processes during page + initialization. + + This is less than ideal, since new pages added to a pre-existing + process / page group combination will send redundant user stylesheet + strings over the wire. To avoid this we'd have to keep track track of + the groups that currently exist in each process and only send user + content during page creation if it is the first time a process has seen + the page's group. I decided to not add this complexity for the time + being, but we might need to consider it if we find that the current + approach impacts performance for clients that heavily utilize user + content. + + * Shared/API/c/WKArray.cpp: + (WKArrayCreateAdoptingValues): Add a WKArray creation function that + adopts the incoming WKTypeRefs rather than refing them. + * Shared/API/c/WKArray.h: + * Shared/API/c/WKBase.h: Move WKUserContentInjectedFrames out of + WKBundlePrivate.h so it can be used in WKPageGroup, too. + * Shared/API/c/cf/WKURLCF.cpp: + (WKURLCreateWithCFURL): Return 0 for null CFURLRefs instead of crashing + inside CFURLGetString(). + * Shared/ImmutableArray.cpp: + (WebKit::ImmutableArray::ImmutableArray): Add a tag to differentiate + between the adopting and refing ctors. + * Shared/ImmutableArray.h: + (WebKit::ImmutableArray::create): Call the refing ctor. + (WebKit::ImmutableArray::adopt): Call the adopting ctor. + * Shared/UserContentContainer.cpp: Added. + (UserContentItemMessageEncoder): Create a UserMessageEncoder for + serializing UserContentContainer::Item's APIObjects. + (WebKit::UserContentItemMessageEncoder::UserContentItemMessageEncoder): + (WebKit::UserContentItemMessageEncoder::encode): + (UserContentItemMessageDecoder): Create a UserMessageEncoder for + deserializing UserContentContainer::Item's APIObjects. + (WebKit::UserContentItemMessageDecoder::UserContentItemMessageDecoder): + (WebKit::UserContentItemMessageDecoder::decode): + (WebKit::UserContentContainer::Item::Item): + (WebKit::encodeStringArray): Add a helper function for encoding + ImmutableArrays of WebStrings. + (WebKit::UserContentContainer::Item::encode): Encode the item's + properties using UserContentItemMessageEncoder. + (WebKit::decodeStringArray): Add a helper function for decoding + ImmutableArrays of WebStrings. + (WebKit::UserContentContainer::Item::decode): Decode the item's + properties using UserContentItemMessageDecoder. + (WebKit::toStringVector): Add a helper function for converting an + ImmutableArray of WebStrings to a Vector of Strings. + (WebKit::UserContentContainer::Item::whitelist): Use toStringVector(). + (WebKit::UserContentContainer::Item::blacklist): Ditto. + (WebKit::UserContentContainer::encode): Encode the Vector of UserContentContainer::Items. + (WebKit::UserContentContainer::decode): Decode the Vector of UserContentContainer::Items. + * Shared/UserContentContainer.h: Added. + * Shared/WebPageGroupData.cpp: + (WebKit::WebPageGroupData::encode): Include userStyleSheets when encoding. + (WebKit::WebPageGroupData::decode): Include userStyleSheets when decoding. + * Shared/WebPageGroupData.h: + (WebPageGroupData): Add a UserContentContainer called userStyleSheets + to WebPageGroupData. + * UIProcess/API/C/WKPageGroup.cpp: Add the C SPI version of the Objective-C API. + (WKPageGroupAddUserStyleSheet): + (WKPageGroupRemoveAllUserStyleSheets): + * UIProcess/API/C/WKPageGroup.h: + * UIProcess/API/mac/WKBrowsingContextGroup.h: Add the Objective-C API. + * UIProcess/API/mac/WKBrowsingContextGroup.mm: + (createWKArray): Add a helper function that converts an NSArray of NSStrings to a WKArray of WKStrings. + (-[WKBrowsingContextGroup addUserStyleSheet:baseURL:whitelist:blacklist:mainFrameOnly:]): + Implement the Objective-C API in terms of the C SPI. + (-[WKBrowsingContextGroup removeAllUserStyleSheets]): Ditto. + * UIProcess/WebPageGroup.cpp: + (WebKit::WebPageGroup::addUserStyleSheet): Add the new sheet to the + group's WebPageGroupData, which ensures that the group's sheets are + sent to new web processes. + (WebKit::WebPageGroup::removeAllUserStyleSheets): Ditto for removal. + * UIProcess/WebPageGroup.h: + (WebKit::WebPageGroup::sendToAllProcessesInGroup): Add a helper message + that sends a message to all processes that have a page in the current + group. This is used to add new user sheets to already-initialized page + groups in the UI processes. + * WebKit2.xcodeproj/project.pbxproj: + * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h: Moved + WKUserContentInjectedFrames from here to WKBase.h. + * WebProcess/WebPage/WebPageGroupProxy.cpp: + (WebKit::WebPageGroupProxy::WebPageGroupProxy): Add each sheet in the + WebPageGroupData to WebCore's page group. + (WebKit::WebPageGroupProxy::addUserStyleSheet): Add the sheet received + from the UI process to WebCore's page group. + (WebKit::WebPageGroupProxy::removeAllUserStyleSheets): Remove all + sheets from WebCore's page group. + * WebProcess/WebPage/WebPageGroupProxy.h: + * WebProcess/WebPage/WebPageGroupProxy.messages.in: Define + AddUserStyleSheet and RemoveAllUserStyleSheets, two messages sent from + the UI process to a web process's WebPageGroupProxy. + +2012-10-10 Sam Weinig <sam@webkit.org> + + Make all of the WebContext sub objects MessageReceivers + https://bugs.webkit.org/show_bug.cgi?id=98661 - Unreviewed Qt-WK2 buildfix after r127783. + Reviewed by Anders Carlsson. - * WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp: - (WebKit::LayerTreeCoordinator::syncFixedLayers): + Start work towards simplified message dispatch. -2012-09-05 Alexey Proskuryakov <ap@apple.com> + * Platform/CoreIPC/MessageReceiverMap.cpp: + (CoreIPC::MessageReceiverMap::clearAllMessageReceivers): + (CoreIPC::MessageReceiverMap::knowsHowToHandleMessage): + (CoreIPC::MessageReceiverMap::dispatchSyncMessage): + * Platform/CoreIPC/MessageReceiverMap.h: + Add additional helper methods. - [WK2] Annotate multi-process FIXMEs with bug numbers - https://bugs.webkit.org/show_bug.cgi?id=95916 + * UIProcess/WebContext.cpp: + (WebKit::WebContext::~WebContext): + (WebKit::WebContext::addMessageReceiver): + (WebKit::WebContext::knowsHowToHandleMessage): + (WebKit::WebContext::didReceiveMessage): + (WebKit::WebContext::didReceiveSyncMessage): + * UIProcess/WebContext.h: + Add a MessageReceiverMap that chains to the main on in WebProcessProxy. Simplifies + didReceiveMessage and didReceiveSyncMessage. - Reviewed by Eric Carlson. + * UIProcess/WebProcessProxy.cpp: + (WebKit::WebProcessProxy::didReceiveMessage): + (WebKit::WebProcessProxy::didReceiveSyncMessage): + Use the new WebContext methods to simplify dispatch. - * UIProcess/WebContext.cpp: - (WebKit::WebContext::setProcessModel): Ensure that plug-in process is enabled. - Comments in WebPluginSiteDataManager said that it's required for multi-process. - (WebKit::WebContext::createNewWebProcess): Added a bug number. - (WebKit::WebContext::disconnectProcess): Ditto. - (WebKit::WebContext::createWebPage): Ditto. - (WebKit::WebContext::download): Ditto. - (WebKit::WebContext::getWebCoreStatistics): Ditto. - - * UIProcess/Plugins/WebPluginSiteDataManager.cpp: - (WebKit::WebPluginSiteDataManager::getSitesWithData): - (WebKit::WebPluginSiteDataManager::clearSiteData): - Removed FIXMEs - some ports haven't switched to plugin process yet, but that - doesn't stop others from having a multi-process model. Added an ASSERT to document - this requirement (in addition to the check in WebContext). - - * UIProcess/Downloads/DownloadProxy.cpp: - (WebKit::DownloadProxy::cancel): - (WebKit::DownloadProxy::didReceiveAuthenticationChallenge): - (WebKit::DownloadProxy::startTransfer): + * UIProcess/Notifications/WebNotificationManagerProxy.cpp: + (WebKit::WebNotificationManagerProxy::WebNotificationManagerProxy): + * UIProcess/Notifications/WebNotificationManagerProxy.h: + (WebNotificationManagerProxy): * UIProcess/WebApplicationCacheManagerProxy.cpp: - (WebKit::WebApplicationCacheManagerProxy::getApplicationCacheOrigins): - (WebKit::WebApplicationCacheManagerProxy::deleteEntriesForOrigin): - (WebKit::WebApplicationCacheManagerProxy::deleteAllEntries): + (WebKit::WebApplicationCacheManagerProxy::WebApplicationCacheManagerProxy): + * UIProcess/WebApplicationCacheManagerProxy.h: + (WebApplicationCacheManagerProxy): + * UIProcess/WebBatteryManagerProxy.cpp: + (WebKit::WebBatteryManagerProxy::WebBatteryManagerProxy): + * UIProcess/WebBatteryManagerProxy.h: + (WebBatteryManagerProxy): * UIProcess/WebCookieManagerProxy.cpp: - (WebKit::WebCookieManagerProxy::getHostnamesWithCookies): - (WebKit::WebCookieManagerProxy::getHTTPCookieAcceptPolicy): + (WebKit::WebCookieManagerProxy::WebCookieManagerProxy): + * UIProcess/WebCookieManagerProxy.h: + (WebCookieManagerProxy): * UIProcess/WebDatabaseManagerProxy.cpp: - (WebKit::WebDatabaseManagerProxy::getDatabasesByOrigin): - (WebKit::WebDatabaseManagerProxy::getDatabaseOrigins): - (WebKit::WebDatabaseManagerProxy::deleteDatabaseWithNameForOrigin): - (WebKit::WebDatabaseManagerProxy::deleteDatabasesForOrigin): - (WebKit::WebDatabaseManagerProxy::deleteAllDatabases): - (WebKit::WebDatabaseManagerProxy::setQuotaForOrigin): + (WebKit::WebDatabaseManagerProxy::WebDatabaseManagerProxy): + (WebKit::WebDatabaseManagerProxy::didReceiveMessage): + (WebKit): + * UIProcess/WebDatabaseManagerProxy.h: + (WebDatabaseManagerProxy): + * UIProcess/WebGeolocationManagerProxy.cpp: + (WebKit::WebGeolocationManagerProxy::WebGeolocationManagerProxy): + * UIProcess/WebGeolocationManagerProxy.h: + (WebGeolocationManagerProxy): * UIProcess/WebIconDatabase.cpp: - (WebKit::WebIconDatabase::getLoadDecisionForIconURL): - (WebKit::WebIconDatabase::didFinishURLImport): + (WebKit::WebIconDatabase::WebIconDatabase): + * UIProcess/WebIconDatabase.h: + (WebIconDatabase): + (WebKit::WebIconDatabase::type): * UIProcess/WebKeyValueStorageManagerProxy.cpp: - (WebKit::WebKeyValueStorageManagerProxy::getKeyValueStorageOrigins): - (WebKit::WebKeyValueStorageManagerProxy::deleteEntriesForOrigin): - (WebKit::WebKeyValueStorageManagerProxy::deleteAllEntries): + (WebKit::WebKeyValueStorageManagerProxy::WebKeyValueStorageManagerProxy): + * UIProcess/WebKeyValueStorageManagerProxy.h: + (WebKeyValueStorageManagerProxy): * UIProcess/WebMediaCacheManagerProxy.cpp: - (WebKit::WebMediaCacheManagerProxy::getHostnamesWithMediaCache): + (WebKit::WebMediaCacheManagerProxy::WebMediaCacheManagerProxy): + * UIProcess/WebMediaCacheManagerProxy.h: + (WebMediaCacheManagerProxy): + * UIProcess/WebNetworkInfoManagerProxy.cpp: + (WebKit::WebNetworkInfoManagerProxy::WebNetworkInfoManagerProxy): + (WebKit::WebNetworkInfoManagerProxy::didReceiveSyncMessage): + * UIProcess/WebNetworkInfoManagerProxy.h: + (WebNetworkInfoManagerProxy): * UIProcess/WebResourceCacheManagerProxy.cpp: - (WebKit::WebResourceCacheManagerProxy::getCacheOrigins): - (WebKit::WebResourceCacheManagerProxy::clearCacheForOrigin): - (WebKit::WebResourceCacheManagerProxy::clearCacheForAllOrigins): - Added bug numbers. - -2012-09-06 Michael Saboff <msaboff@apple.com> - - WebKit2 IPC always sends strings using 16 bit data format - https://bugs.webkit.org/show_bug.cgi?id=95811 - - Reviewed by Benjamin Poulain. - - Changed string encoding to pass an 8bit flag and then send either 8 or 16 bit - character data. - - * Platform/CoreIPC/ArgumentCoders.cpp: - (CoreIPC::::encode): - (CoreIPC::decodeStringText): New templatized string creation and decoder method. - (CoreIPC::::decode): - -2012-09-06 Carlos Garcia Campos <cgarcia@igalia.com> - - [GTK] [WK2] Crash when navigating between pages - https://bugs.webkit.org/show_bug.cgi?id=95949 - - Reviewed by Martin Robinson. - - Do not trust isMainResource parameter in - webkitWebViewResourceLoadStarted(), because it's always true for - all subresources of pages loaded from the history cache. We can - simply assume that the first resource loaded for the main frame - is the main web view resource. - - * UIProcess/API/gtk/WebKitResourceLoadClient.cpp: - (didInitiateLoadForResource): - * UIProcess/API/gtk/WebKitWebView.cpp: - (webkitWebViewResourceLoadStarted): - * UIProcess/API/gtk/WebKitWebViewPrivate.h: - -2012-09-06 Balazs Kelemen <kbalazs@webkit.org> - - [WK2] Crash in WebPageProxy::showPopupMenu if PageClient does not implement createPopupMenuProxy - https://bugs.webkit.org/show_bug.cgi?id=95862 - - Reviewed by Simon Hausmann. - - Bail out early if the PageClient does not create a PopupMenuProxy for us. - - * UIProcess/WebPageProxy.cpp: - (WebKit::WebPageProxy::showPopupMenu): - -2012-09-06 Christophe Dumez <christophe.dumez@intel.com> - - [EFL][WK2] Provide implementation for WebPage::performDefaultBehaviorForKeyEvent() - https://bugs.webkit.org/show_bug.cgi?id=95943 - - Reviewed by Kenneth Rohde Christiansen. + (WebKit::WebResourceCacheManagerProxy::WebResourceCacheManagerProxy): + (WebKit::WebResourceCacheManagerProxy::didReceiveMessage): + (WebKit): + * UIProcess/WebResourceCacheManagerProxy.h: + (WebResourceCacheManagerProxy): + * UIProcess/WebVibrationProxy.cpp: + (WebKit::WebVibrationProxy::WebVibrationProxy): + * UIProcess/WebVibrationProxy.h: + (WebVibrationProxy): + * UIProcess/soup/WebSoupRequestManagerProxy.cpp: + (WebKit::WebSoupRequestManagerProxy::WebSoupRequestManagerProxy): + (WebKit::WebSoupRequestManagerProxy::didReceiveMessage): + (WebKit): + * UIProcess/soup/WebSoupRequestManagerProxy.h: + (WebSoupRequestManagerProxy): + * WebProcess/Authentication/AuthenticationManager.h: + (AuthenticationManager): + * WebProcess/Geolocation/WebGeolocationManager.h: + (WebGeolocationManager): + Make all the WebContext sub-objects MessageReceivers to simplify dispatch. - Provide implementation for WebPage::performDefaultBehaviorForKeyEvent() - in EFL WK2. +2012-10-10 Simon Fraser <simon.fraser@apple.com> - * WebProcess/WebPage/efl/WebPageEfl.cpp: - (WebKit::WebPage::performDefaultBehaviorForKeyEvent): + Add the mangled symbol name for Frame::layerTreeAsText() to the confusingly named + Windows export file. -2012-09-06 Patrick Gansterer <paroga@webkit.org> + * win/WebKit2.def: - Remove String::operator+=() from windows platform code - https://bugs.webkit.org/show_bug.cgi?id=95904 +2012-10-10 Simon Fraser <simon.fraser@apple.com> - Reviewed by Benjamin Poulain. + Store a visible rect in GraphicsLayers, and optionally dump it in layerTreeAsText + https://bugs.webkit.org/show_bug.cgi?id=98839 - Use StringBuilder and operator+() to concatenate strings instead of operator+=(). + Reviewed by Sam Weinig. - * UIProcess/win/WebView.cpp: - (WebKit::imeCompositionArgumentNames): + Add a flag to layerTreeAsText() so that tests can optionally include this visible rect in + layer tree dumps. This output will be platform-specific, so we don't want to do it unconditionally. -2012-09-06 Kihong Kwon <kihong.kwon@samsung.com> + * WebProcess/WebPage/WebFrame.cpp: + (WebKit::WebFrame::layerTreeAsText): - [CMake] Add notifications path to the WebKit2/CMakeLists.txt - https://bugs.webkit.org/show_bug.cgi?id=95843 +2012-10-10 Shinya Kawanaka <shinyak@chromium.org> - Reviewed by Laszlo Gombos. + Needs internal API to return distributed nodes for InsertionPoint + https://bugs.webkit.org/show_bug.cgi?id=98868 - Add WebCore/Modules/Notifications to the WebKit2_INCLUDE_DIRECTORIES of WebKit2/CMakeLists.txt. - There are some build errors when ENABLE_NOTIFICATIONS feature is enabled. + Reviewed by Hajime Morita. - * CMakeLists.txt: + * win/WebKit2.def: + * win/WebKit2CFLite.def: -2012-09-06 Simon Hausmann <simon.hausmann@nokia.com> +2012-10-10 Jocelyn Turcotte <jocelyn.turcotte@digia.com> - [Qt] Various small Windows / MSVC build fixes - https://bugs.webkit.org/show_bug.cgi?id=95934 + [Qt][WK2] REGRESSION(r130879): It made fast/events/touch/* tests crash + https://bugs.webkit.org/show_bug.cgi?id=98888 Reviewed by Kenneth Rohde Christiansen. - * Shared/LayerTreeContext.h: Include stdint.h due to the use of uint32_t as layer id. - * UIProcess/API/qt/qquickwebview_p.h: - (WebKit): Fix struct vs. class forward declaration mismatch, causing linking errors. - * UIProcess/API/qt/tests/bytearraytestdata.h: Remove export macro from internal test class - that is not used anymore. Using the export macro from a DLL when the code in question is not - part of the DLL results in the export macro expanding to dllimport, giving incorrect linkage - for the unit test. - * WebProcess/qt/WebProcessMainQt.cpp: - (WebKit::WebProcessMainQt): Removed explicit call to srandom(), which is not available on Windows. - The call appears to be unnecessary in the light of the WTF::initializeThreading() call below, which - in turn calls WTF::initializeRandomNumberGenerator(), which does the same thing already (and isn't - needed on Windows, as per comment in wtf/RandomNumberSeed.h) + Add null-checks in the gesture recognizers to allow them working without a PageViewportController. + The pinch and pan gesture recognizers aren't used in that case yet, but they could eventually + be used to send pinch and pan gesture events to the web process. They are currently kept active + because we need the tap gesture recognizer and its logic is bound to those other recognizers. -2012-09-06 Simon Hausmann <simon.hausmann@nokia.com> - - [Qt] Fix build with ANGLE on platforms that provide EGL/GLESv2 - https://bugs.webkit.org/show_bug.cgi?id=95965 - - Reviewed by Tor Arne Vestbø. - - Depend on ANGLE if necessary, due to the use WebCore types that pull in ANGLE - headers (GraphicsContext3D.h in particular). - - * Target.pri: - -2012-09-06 Andras Becsi <andras.becsi@nokia.com> - - [WK2] Make [Qt]ViewportHandler cross platform - https://bugs.webkit.org/show_bug.cgi?id=91257 - - Reviewed by Kenneth Rohde Christiansen and Simon Hausmann. - - Since QtViewportHandler includes behaviour that is not platform - specific together with hooks to the QtQuick API layer, a platform - independent implementation would allow other ports to use the - viewport controlling functionality provided. - - This patch removes QtViewportHandler and introduces a platform - independent PageViewportController class that is responsible - for handling requests from the web process (eg. content size - changes, viewport attributes changes and scroll position requests). - Requests from the web process are acted on by a platform specific - client class which implements the PageViewportControllerClient - interface which provides hooks to the platform specific API layer. - - The PageViewportController is also responsible to notify the web - process about changes in the viewport state (eg. viewport size, - visible rect, content scale and movement trajectory). - The client is responsible to delegate these UI changes to the - PageViewportController. - - For now only PageViewportControllerClientQt implements the client - interface besides providing other QQuick specific functionality - (gestures, animations, etc). - - * Target.pri: - * UIProcess/API/qt/qquickwebpage_p_p.h: - * UIProcess/API/qt/qquickwebview.cpp: - (QQuickWebViewPrivate::onComponentComplete): - (QQuickWebViewFlickablePrivate::~QQuickWebViewFlickablePrivate): - (QQuickWebViewFlickablePrivate::didChangeViewportProperties): - (QQuickWebViewFlickablePrivate::updateViewportSize): - (QQuickWebViewFlickablePrivate::pageDidRequestScroll): - (QQuickWebViewFlickablePrivate::didChangeContentsSize): - * UIProcess/API/qt/qquickwebview_p.h: - (WebKit): - * UIProcess/API/qt/qquickwebview_p_p.h: - (WebKit): - (QQuickWebViewPrivate::pageViewportControllerClient): - (QQuickWebViewPrivate): - (QQuickWebViewFlickablePrivate): - * UIProcess/API/qt/qwebkittest.cpp: - (QWebKitTest::viewport): - (QWebKitTest::devicePixelRatio): - (QWebKitTest::contentsScale): - * UIProcess/PageViewportController.cpp: Added. - (WebKit): - (WebKit::bound): - (WebKit::fuzzyCompare): - (WebKit::boundPosition): - (WebKit::ViewportUpdateDeferrer::ViewportUpdateDeferrer): - (WebKit::ViewportUpdateDeferrer::~ViewportUpdateDeferrer): - (WebKit::PageViewportController::PageViewportController): - (WebKit::PageViewportController::convertFromViewport): - (WebKit::PageViewportController::convertToViewport): - (WebKit::PageViewportController::innerBoundedContentsScale): - (WebKit::PageViewportController::outerBoundedContentsScale): - (WebKit::PageViewportController::didChangeContentsSize): - (WebKit::PageViewportController::pageDidRequestScroll): - (WebKit::PageViewportController::setViewportSize): - (WebKit::PageViewportController::setVisibleContentsRect): - (WebKit::PageViewportController::syncVisibleContents): - (WebKit::PageViewportController::didChangeViewportAttributes): - (WebKit::PageViewportController::suspendContent): - (WebKit::PageViewportController::resumeContent): - (WebKit::PageViewportController::positionRangeForContentAtScale): - * UIProcess/PageViewportController.h: Added. - (WebCore): - (WebKit): - (ViewportUpdateDeferrer): - (PageViewportController): - (WebKit::PageViewportController::~PageViewportController): - (WebKit::PageViewportController::hasSuspendedContent): - (WebKit::PageViewportController::hadUserInteraction): - (WebKit::PageViewportController::allowsUserScaling): - (WebKit::PageViewportController::contentsLayoutSize): - (WebKit::PageViewportController::devicePixelRatio): - (WebKit::PageViewportController::minimumContentsScale): - (WebKit::PageViewportController::maximumContentsScale): - (WebKit::PageViewportController::setHadUserInteraction): - * UIProcess/PageViewportControllerClient.h: Added. - (WebKit): - (PageViewportControllerClient): - (WebKit::PageViewportControllerClient::PageViewportControllerClient): - (WebKit::PageViewportControllerClient::~PageViewportControllerClient): - * UIProcess/qt/PageViewportControllerClientQt.cpp: Added. - (WebKit): - (WebKit::PageViewportControllerClientQt::PageViewportControllerClientQt): - (WebKit::PageViewportControllerClientQt::ScaleAnimation::updateCurrentValue): - (WebKit::PageViewportControllerClientQt::~PageViewportControllerClientQt): - (WebKit::PageViewportControllerClientQt::setContentRectVisiblePositionAtScale): - (WebKit::PageViewportControllerClientQt::animateContentRectVisible): - (WebKit::PageViewportControllerClientQt::flickMoveStarted): - (WebKit::PageViewportControllerClientQt::flickMoveEnded): - (WebKit::PageViewportControllerClientQt::pageItemPositionChanged): - (WebKit::PageViewportControllerClientQt::scaleAnimationStateChanged): - (WebKit::PageViewportControllerClientQt::touchBegin): - (WebKit::PageViewportControllerClientQt::touchEnd): - (WebKit::PageViewportControllerClientQt::focusEditableArea): - (WebKit::PageViewportControllerClientQt::zoomToAreaGestureEnded): - (WebKit::PageViewportControllerClientQt::nearestValidVisibleContentsRect): - (WebKit::PageViewportControllerClientQt::setContentsPosition): - (WebKit::PageViewportControllerClientQt::setContentsScale): - (WebKit::PageViewportControllerClientQt::setContentsRectToNearestValidBounds): - (WebKit::PageViewportControllerClientQt::didResumeContent): - (WebKit::PageViewportControllerClientQt::allowsUserScaling): - (WebKit::PageViewportControllerClientQt::devicePixelRatio): - (WebKit::PageViewportControllerClientQt::minimumContentsScale): - (WebKit::PageViewportControllerClientQt::maximumContentsScale): - (WebKit::PageViewportControllerClientQt::currentContentsScale): - (WebKit::PageViewportControllerClientQt::contentsLayoutSize): - (WebKit::PageViewportControllerClientQt::scrollAnimationActive): - (WebKit::PageViewportControllerClientQt::panGestureActive): - (WebKit::PageViewportControllerClientQt::panGestureStarted): - (WebKit::PageViewportControllerClientQt::panGestureRequestUpdate): - (WebKit::PageViewportControllerClientQt::panGestureEnded): - (WebKit::PageViewportControllerClientQt::panGestureCancelled): - (WebKit::PageViewportControllerClientQt::scaleAnimationActive): - (WebKit::PageViewportControllerClientQt::cancelScrollAnimation): - (WebKit::PageViewportControllerClientQt::interruptScaleAnimation): - (WebKit::PageViewportControllerClientQt::pinchGestureActive): - (WebKit::PageViewportControllerClientQt::pinchGestureStarted): - (WebKit::PageViewportControllerClientQt::pinchGestureRequestUpdate): - (WebKit::PageViewportControllerClientQt::pinchGestureEnded): - (WebKit::PageViewportControllerClientQt::pinchGestureCancelled): - (WebKit::PageViewportControllerClientQt::visibleContentsRect): - (WebKit::PageViewportControllerClientQt::didChangeContentsSize): - (WebKit::PageViewportControllerClientQt::didChangeVisibleContents): - (WebKit::PageViewportControllerClientQt::didChangeViewportAttributes): - (WebKit::PageViewportControllerClientQt::updateViewportController): - (WebKit::PageViewportControllerClientQt::scaleContent): - (WebKit::PageViewportControllerClientQt::viewportScaleForRect): - * UIProcess/qt/PageViewportControllerClientQt.h: Added. - (WebKit): - (PageViewportControllerClientQt): - (WebKit::PageViewportControllerClientQt::setController): - (ScaleAnimation): - (WebKit::PageViewportControllerClientQt::ScaleAnimation::ScaleAnimation): - (WebKit::PageViewportControllerClientQt::ScaleStackItem::ScaleStackItem): - (ScaleStackItem): - * UIProcess/qt/QtGestureRecognizer.cpp: - (WebKit::QtGestureRecognizer::viewportController): - * UIProcess/qt/QtGestureRecognizer.h: - (WebKit): * UIProcess/qt/QtPanGestureRecognizer.cpp: (WebKit::QtPanGestureRecognizer::update): (WebKit::QtPanGestureRecognizer::finish): @@ -4724,1589 +1821,728 @@ (WebKit::QtPinchGestureRecognizer::update): (WebKit::QtPinchGestureRecognizer::finish): (WebKit::QtPinchGestureRecognizer::cancel): - * UIProcess/qt/QtViewportHandler.cpp: Removed. - * UIProcess/qt/QtWebPageEventHandler.cpp: - (WebKit::QtWebPageEventHandler::QtWebPageEventHandler): - (WebKit::QtWebPageEventHandler::setViewportController): - (WebKit::QtWebPageEventHandler::inputPanelVisibleChanged): - (WebKit::QtWebPageEventHandler::handleInputEvent): - (WebKit::QtWebPageEventHandler::doneWithTouchEvent): - (WebKit::QtWebPageEventHandler::didFindZoomableArea): - * UIProcess/qt/QtWebPageEventHandler.h: - (WebKit): - (QtWebPageEventHandler): - (WebKit::QtWebPageEventHandler::viewportController): - -2012-09-06 Ryuan Choi <ryuan.choi@samsung.com> - - [EFL][WK2] WebMemorySampler.cpp is included twice. - https://bugs.webkit.org/show_bug.cgi?id=95910 - - Reviewed by Kentaro Hara. - - Now WebMemorySampler.cpp is in CMakeLists.txt and PlatformEfl.cmake. - * PlatformEfl.cmake: Removed WebMemorySampler.cpp from source lists. +2012-10-10 Carlos Garcia Campos <cgarcia@igalia.com> -2012-09-05 Ryuan Choi <ryuan.choi@samsung.com> + [GTK] Test /webkit2/WebKitWebView/history-cache asserts in debug bot + https://bugs.webkit.org/show_bug.cgi?id=98731 - [EFL][WK2] Implement missing feature to support <select> tag - https://bugs.webkit.org/show_bug.cgi?id=95708 + Reviewed by Martin Robinson. - Reviewed by Gyuyoung Kim. + The problem is in the test itself that is using + SingleResourceLoadTest class to load a multiresource document. - Added missing APIs for select tag. - - This patch provides all functionality of current WebPopupItem to applications. - - * UIProcess/API/efl/ewk_popup_menu_item.cpp: - (_Ewk_Popup_Menu_Item): - (_Ewk_Popup_Menu_Item::_Ewk_Popup_Menu_Item): - (ewk_popup_menu_item_new): - (ewk_popup_menu_item_text_direction_get): - (ewk_popup_menu_item_text_direction_override_get): - (ewk_popup_menu_item_tooltip_get): - (ewk_popup_menu_item_accessibility_text_get): - (ewk_popup_menu_item_enabled_get): - (ewk_popup_menu_item_is_label_get): - (ewk_popup_menu_item_selected_get): - * UIProcess/API/efl/ewk_popup_menu_item.h: - * UIProcess/API/efl/ewk_popup_menu_item_private.h: - * UIProcess/API/efl/ewk_view.cpp: - (ewk_view_popup_menu_request): - * UIProcess/API/efl/tests/test_ewk2_view.cpp: - (checkBasicPopupMenuItem): - (showPopupMenu): Updated test case to cover new APIs. - (TEST_F): + * UIProcess/API/gtk/tests/TestResources.cpp: + (testWebViewResourcesHistoryCache): Load only single resource + documents and check also that the main resource given is the + expected one. + (serverCallback): Add another single resource document. -2012-09-05 Christophe Dumez <christophe.dumez@intel.com> +2012-10-10 Christophe Dumez <christophe.dumez@intel.com> - [EFL][WK2] Provide implementation for WebProcess functions - https://bugs.webkit.org/show_bug.cgi?id=95857 + [WK2][SOUP] ResourceError.isCancellation() is not carried over IPC + https://bugs.webkit.org/show_bug.cgi?id=98882 Reviewed by Kenneth Rohde Christiansen. - Rename WebProcessGtk to WebProcessSoup and reuse it in - EFL port since all the code is soup-related. We now - have a proper implementation for the WebProcess - platform methods. - - * GNUmakefile.list.am: - * PlatformEfl.cmake: - * WebProcess/efl/WebProcessEfl.cpp: Removed. - * WebProcess/efl/WebProcessMainEfl.cpp: - (WebKit::WebProcessMainEfl): Enable soup cache for the soup session similarly to GTK port. - * WebProcess/soup/WebProcessSoup.cpp: Renamed from Source/WebKit2/WebProcess/gtk/WebProcessGtk.cpp. - (WebKit): - (WebKit::getCacheDiskFreeSize): - (WebKit::getMemorySize): - (WebKit::WebProcess::platformSetCacheModel): - (WebKit::WebProcess::platformClearResourceCaches): - (WebKit::buildAcceptLanguages): - (WebKit::setSoupSessionAcceptLanguage): - (WebKit::languageChanged): - (WebKit::WebProcess::platformInitializeWebProcess): - (WebKit::WebProcess::platformTerminate): - -2012-09-05 Benjamin Poulain <bpoulain@apple.com> - - More fixes for String::operator+=() on Mac - https://bugs.webkit.org/show_bug.cgi?id=95880 + Properly serialize / deserialize ResourceError.isCancellation + boolean so that it can be used in UIProcess. - Reviewed by Adam Barth. - - * UIProcess/WebInspectorProxy.cpp: - (WebKit::WebInspectorProxy::createInspectorPage): This is a legitimate use of append(), - there is no other concatenation outside that branch. - * WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp: - (WebKit::parseRFC822HeaderFields): Use string operators instead of +=. - * WebProcess/Plugins/Netscape/NetscapePlugin.cpp: - (WebKit::NetscapePlugin::userAgent): Another legitimate use of append(). - -2012-09-05 Alexey Proskuryakov <ap@apple.com> - - [WK2] Make visited link tracking work in multi-process mode - https://bugs.webkit.org/show_bug.cgi?id=95869 - - Reviewed by Dan Bernstein. - - * UIProcess/VisitedLinkProvider.h: - * UIProcess/VisitedLinkProvider.cpp: - (WebKit::VisitedLinkProvider::VisitedLinkProvider): m_webProcessHasVisitedLinkState - was making no sense in multi-process world, so it was let go. - (WebKit::VisitedLinkProvider::processDidFinishLaunching): Track new processes. - (WebKit::VisitedLinkProvider::processDidClose): Clean up pointers that are going - to become stale. - (WebKit::VisitedLinkProvider::pendingVisitedLinksTimerFired): Added comments. Fixed - a bug where we would churn table size in some cases. Added debug logging in failure - case. Re-implemented messaging code to work with multiple web processes. - - * UIProcess/WebContext.cpp: - (WebKit::WebContext::processDidFinishLaunching): Pass process proxy pointer to - m_visitedLinkProvider, as it now needs to track processes. - (WebKit::WebContext::disconnectProcess): Ditto. Also re-enabled visited link provider - cleanup in multi-process mode. - -2012-09-05 Brady Eidson <beidson@apple.com> + * Shared/soup/WebCoreArgumentCodersSoup.cpp: + (CoreIPC::::encode): + (CoreIPC::::decode): - Frequent crashes in PluginView::scriptObject under runtimeObjectCustomGetOwnPropertySlot - <rdar://problem/12142226> and https://bugs.webkit.org/show_bug.cgi?id=95026 +2012-10-10 Jinwoo Song <jinwoo7.song@samsung.com> - Patch partially by Andras Becsi <andras.becsi@nokia.com> + [EFL][WK2] Add APIs to get/set the DNS prefetching + https://bugs.webkit.org/show_bug.cgi?id=98790 - Reviewed by Andy Estes. + Reviewed by Laszlo Gombos. - If a plug-in fails to initialize then the m_plugin pointer is cleared out. - When accessing the script object it is appropriate to unconditionally null check m_plugin. + Add setting APIs for DNS prefetching and a unit test. - * WebProcess/Plugins/PluginView.cpp: - (WebKit::PluginView::scriptObject): Null check m_plugin before trying to use it. + * UIProcess/API/efl/ewk_settings.cpp: + (ewk_settings_DNS_prefetching_enabled_set): + (ewk_settings_DNS_prefetching_enabled_get): + * UIProcess/API/efl/ewk_settings.h: + * UIProcess/API/efl/tests/test_ewk2_settings.cpp: + (TEST_F): -2012-09-05 Christophe Dumez <christophe.dumez@intel.com> +2012-10-09 Jocelyn Turcotte <jocelyn.turcotte@digia.com> - [EFL][WK2] Provide implementation for WebFrameNetworkingContext - https://bugs.webkit.org/show_bug.cgi?id=95826 + [Qt][WK2] REGRESSION(r130629): It made touchadjustment/focusout-on-touch.html fai1 + https://bugs.webkit.org/show_bug.cgi?id=98642 Reviewed by Kenneth Rohde Christiansen. - Remove EFL-specific and empty implementation for WebFrameNetworkingContext - and use the existing soup implementation instead. - - * PlatformEfl.cmake: - * WebProcess/WebCoreSupport/efl/WebFrameNetworkingContext.h: Removed. - -2012-09-05 Kaustubh Atrawalkar <kaustubh@motorola.com> - - [DRT] LTC:: Move printing related APIs from LayoutTestController to Internals - https://bugs.webkit.org/show_bug.cgi?id=92735 - - Reviewed by Hajime Morita. - - Move numberOfPages, pageProperty & pageSizeAndMarginsInPixels in Internals and remove duplicated code from DumprenderTree & WebkitTestRunner. - Add symbols for Mac Win builds for corresponding newly added APIs. - - * win/WebKit2.def: - * win/WebKit2CFLite.def: - -2012-09-05 Balazs Kelemen <kbalazs@webkit.org> - - [Qt] QRawWebViewPrivate does not initialize some members - https://bugs.webkit.org/show_bug.cgi?id=95709 - - Reviewed by Luiz Agostini. - - Don't miss initializing the bool flags. - - * UIProcess/API/qt/raw/qrawwebview.cpp: - (QRawWebViewPrivate::QRawWebViewPrivate): - -2012-09-04 Kangil Han <kangil.han@samsung.com> - - [WK2] Use explicit constructor in InjectedBundle. - https://bugs.webkit.org/show_bug.cgi?id=95746 - - Reviewed by Sam Weinig. - - Added explicit keyword in constructor of InjectedBundle in order to avoid implicit type conversion. - - * WebProcess/InjectedBundle/InjectedBundle.h: - (InjectedBundle): - -2012-09-03 Sam Weinig <sam@webkit.org> - - Part 1 of removing PlatformString.h, move remaining functions to new homes - https://bugs.webkit.org/show_bug.cgi?id=95702 - - Reviewed by Beth Dakin. - - * UIProcess/WebPageProxy.h: - Forward declare SharedBuffer. + There was an early return that would prevent gesture recognition if no PageViewportController + has been set on QtWebPageEventHandler. The gesture recognizer are also used to send + GestureEvents to WebCore which this layout test is using. -2012-09-04 Jeffrey Pfau <jpfau@apple.com> - - Make plugins respect third-party storage blocking setting - https://bugs.webkit.org/show_bug.cgi?id=94888 - - Reviewed by Brady Eidson. - - Plugins that are in a third-party context should be put into private browsing mode so their storage is temporary. - - * WebProcess/Plugins/PluginView.cpp: - (WebKit::PluginView::isPrivateBrowsingEnabled): Put the plugin into private browsing mode if it is in a third-party context. - (WebKit::PluginView::privateBrowsingStateChanged): Make sure a plugin doesn't leave private browsing mode if it's in a third-party context. - -2012-09-04 Pekka Vuorela <pvuorela@iki.fi> - - [Qt] Remove use of deprecated QInputMethod method - https://bugs.webkit.org/show_bug.cgi?id=95741 - - Reviewed by Simon Hausmann. - - Adapt from deprecated QInputMethod::visible() to isVisible(). + Make sure that the gesture recognition is done even when no PageViewportController is present. * UIProcess/qt/QtWebPageEventHandler.cpp: - (WebKit::setInputPanelVisible): - (WebKit::QtWebPageEventHandler::inputPanelVisibleChanged): - -2012-09-04 Allan Sandfeld Jensen <allan.jensen@nokia.com> - - Allow child-frame content in hit-tests. - https://bugs.webkit.org/show_bug.cgi?id=95204 - - Reviewed by Antonio Gomes. - - Update symbols for the Windows build-system. - - * win/WebKit2.def: - * win/WebKit2CFLite.def: - -2012-09-04 Ryuan Choi <ryuan.choi@samsung.com> - - [EFL] Drop default theme concept - https://bugs.webkit.org/show_bug.cgi?id=94778 - - Reviewed by Gyuyoung Kim. - - * PlatformEfl.cmake: Removed DEFAULT_THEME_PATH definitions. - * UIProcess/API/efl/ewk_view.cpp: - (_ewk_view_initialize): Removed default theme concept. - * UIProcess/API/efl/ewk_view.h: - Updated doxygen document not to mention default theme. - -2012-09-03 Kangil Han <kangil.han@samsung.com> - - [WK2][WTR] Implement WebKitEnableCaretBrowsing attribute in testRunner.overridePreference - https://bugs.webkit.org/show_bug.cgi?id=95576 - - Reviewed by Maciej Stachowiak. - - Added a line of macro to implement WebKitEnableCaretBrowsing attribute in testRunner.overridePreference + (WebKit::QtWebPageEventHandler::handleInputEvent): + (WebKit::QtWebPageEventHandler::doneWithTouchEvent): - * WebProcess/InjectedBundle/InjectedBundle.cpp: - (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner): +2012-10-10 Zeno Albisser <zeno@webkit.org> -2012-09-03 Allan Sandfeld Jensen <allan.jensen@nokia.com> + [Qt] ProcessLauncherQt should use QStringLiteral for serviceName. + https://bugs.webkit.org/show_bug.cgi?id=98398 - [Qt] Not all activated elements highlighted, but some frames are - https://bugs.webkit.org/show_bug.cgi?id=95683 + QString(const char*) is deprecated, we should use QStringLiteral instead. Reviewed by Kenneth Rohde Christiansen. - Use the new function Node::willRespondToMouseClickEvents to better determine if the element - can be tap-activated and avoid documents and frames completely. - - * WebProcess/WebPage/WebPage.cpp: - (WebKit::WebPage::highlightPotentialActivation): + * UIProcess/Launcher/qt/ProcessLauncherQt.cpp: + (WebKit::ProcessLauncher::launchProcess): -2012-09-03 Eunmi Lee <eunmi15.lee@samsung.com> +2012-10-10 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> - [EFL][WK2] Add ewk_settings. - https://bugs.webkit.org/show_bug.cgi?id=91206 + [EFL][WK2] Add History callbacks API + https://bugs.webkit.org/show_bug.cgi?id=98594 - Reviewed by Gyuyoung Kim. + Reviewed by Kenneth Rohde Christiansen. - Add the ewk_settings which wraps the WKPreferencesRef. - The ewk_settings will be created by the ewk_view and it will be - destroyed when the ewk_view is destroyed. I make each view to have - its own group to make one ewk_settings sets preferences only for - one ewk_view. - The application can get the ewk_settings from ewk_view using - ewk_view_settings_get() API. + Added History callbacks API to Ewk Context. Added unit tests. + * PlatformEfl.cmake: * UIProcess/API/efl/EWebKit2.h: - * UIProcess/API/efl/ewk_settings.cpp: Added. - (ewk_settings_enable_scripts_set): - (ewk_settings_enable_scripts_get): - (ewk_settings_auto_load_images_set): - (ewk_settings_auto_load_images_get): - * UIProcess/API/efl/ewk_settings.h: Added. - * UIProcess/API/efl/ewk_settings_private.h: Added. - (_Ewk_Settings): - (_Ewk_Settings::_Ewk_Settings): - * UIProcess/API/efl/ewk_view.cpp: - (_Ewk_View_Private_Data): + * UIProcess/API/efl/ewk_context.cpp: + (_Ewk_Context): + (_Ewk_Context::_Ewk_Context): + (ewk_context_history_callbacks_set): New public function which lets the client to set History callbacks. + (ewk_context_history_client_get): + (ewk_context_add_visited_link): New public function to mark a URL as visited link. + * UIProcess/API/efl/ewk_context.h: + * UIProcess/API/efl/ewk_context_history_client.cpp: Added. + (getEwkHistoryDelegate): + (didNavigateWithNavigationData): + (didPerformClientRedirect): + (didPerformServerRedirect): + (didUpdateHistoryTitle): + (populateVisitedLinks): + (ewk_context_history_client_attach): + * UIProcess/API/efl/ewk_context_history_client_private.h: Added. + * UIProcess/API/efl/ewk_context_private.h: + * UIProcess/API/efl/ewk_navigation_data.cpp: Added. + (_Ewk_Navigation_Data): + (_Ewk_Navigation_Data::_Ewk_Navigation_Data): + (_Ewk_Navigation_Data::~_Ewk_Navigation_Data): + (ewk_navigation_data_ref): + (ewk_navigation_data_unref): + (ewk_navigation_data_title_get): + (ewk_navigation_data_original_request_get): + (ewk_navigation_data_url_get): + (ewk_navigation_data_new): + * UIProcess/API/efl/ewk_navigation_data.h: Added. + * UIProcess/API/efl/ewk_navigation_data_private.h: Added. + * UIProcess/API/efl/ewk_view.cpp: + (addToPageViewMap): + (removeFromPageViewMap): + (_ewk_view_smart_del): (_ewk_view_initialize): - (ewk_view_settings_get): - * UIProcess/API/efl/ewk_view.h: - * UIProcess/API/efl/tests/test_ewk2_settings.cpp: Added. - (TEST_F): - * UIProcess/API/efl/tests/test_ewk2_view.cpp: + (ewk_view_from_page_get): + * UIProcess/API/efl/ewk_view_private.h: + * UIProcess/API/efl/tests/test_ewk2_context_history_delegate.cpp: Added. + (httpServer): + (navigateWithNavigationData): + (performClientRedirect): + (performServerRedirect): + (updateHistoryTitle): + (populateVisitedLinks): + (onLoadFinishedForRedirection): + (serverCallbackRedirection): (TEST_F): -2012-09-03 Allan Sandfeld Jensen <allan.jensen@nokia.com> +2012-10-09 Byungwoo Lee <bw80.lee@samsung.com> - Wheel-events fails temporarily after reload - https://bugs.webkit.org/show_bug.cgi?id=94934 - - Reviewed by Kenneth Rohde Christiansen. - - Set fixed visible content rect using visibleContentBounds instead of WebPage::size. Otherwise the - content rect will be incorrectly set to the entire document size, when resizesToContents is active. - - Test: UIProcess/API/qt/tests/qmltests/WebView/tst_wheelEventHandling.qml - - * UIProcess/API/qt/tests/qmltests/WebView/tst_wheelEventHandling.qml: - * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: - (WebKit::WebFrameLoaderClient::transitionToCommittedForNewPage): - -2012-09-03 Jinwoo Song <jinwoo7.song@samsung.com> - - [EFL] Use WebKitVersion.h to get version information - https://bugs.webkit.org/show_bug.cgi?id=95669 + [EFL][WK2] Change parameter and return type of loadUrlSync(). + https://bugs.webkit.org/show_bug.cgi?id=97920 Reviewed by Gyuyoung Kim. - Use WEBKIT_MAJOR_VERSION and WEBKIT_MINOR_VERSION - in the WebKitVersion.h - - * UIProcess/efl/WebPageProxyEfl.cpp: - (WebKit::WebPageProxy::standardUserAgent): + loadUrlSync() uses waitUntilLoadFinished() internally, and it has + a parameter and return value for timeout. + To set and check timeout, loadUrlSync() should have those. -2012-09-03 Christophe Dumez <christophe.dumez@intel.com> + A parameter for timeout interval is added to loadUrlSync() and it + returns the result of waitUntilLoadFinished() for checking timeout. - [EFL][WK2] Skip EWK2UnitTestBase.ewk_cookie_manager_permanent_storage API test - https://bugs.webkit.org/show_bug.cgi?id=95671 - - Reviewed by Kenneth Rohde Christiansen. - - Skip EWK2UnitTestBase.ewk_cookie_manager_permanent_storage - API test since it is flaky on the bots. + And I added codes to check the result of all the LoadUrlSync() + function calls with ASSERT_TRUE() macro. + * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp: + (EWK2UnitTest::EWK2UnitTestBase::loadUrlSync): + * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h: + (EWK2UnitTestBase): + * UIProcess/API/efl/tests/test_ewk2_back_forward_list.cpp: + (TEST_F): + * UIProcess/API/efl/tests/test_ewk2_context.cpp: + (TEST_F): * UIProcess/API/efl/tests/test_ewk2_cookie_manager.cpp: (TEST_F): + * UIProcess/API/efl/tests/test_ewk2_intents.cpp: + (TEST_F): + * UIProcess/API/efl/tests/test_ewk2_view.cpp: + (TEST_F): -2012-09-02 Kenichi Ishibashi <bashi@chromium.org> - - WK2: Build failure on SnowLeopard after r127384 - https://bugs.webkit.org/show_bug.cgi?id=95665 - - Reviewed by Dan Bernstein. - - Add SandboxExtension::consumePermanently(const Handle&) for !ENABLE(WEB_PROCESS_SANDBOX) to fix link error. - - * Shared/SandboxExtension.h: - (WebKit::SandboxExtension::consumePermanently): - -2012-09-02 Ryuan Choi <ryuan.choi@samsung.com> - - [EFL][WK2] Keep activePopupMenu to call valueChangedForPopupMenu() outside showPopupMenu() - https://bugs.webkit.org/show_bug.cgi?id=95355 - - Reviewed by Gyuyoung Kim. - - Efl does not have a proper way to support nested loop so that applications - may change value after showPopupMenu() is finished. - - * UIProcess/API/efl/tests/test_ewk2_view.cpp: Improved test case to cover this bug. - (selectItemAfterDelayed): - (showPopupMenu): - * UIProcess/WebPageProxy.cpp: - (WebKit::WebPageProxy::showPopupMenu): - Guard with !PLATFORM(EFL) to keep the activePopupMenu valid to call valueChangedForPopupMenu - outside showPopupMenu(). - -2012-09-02 Byungwoo Lee <bw80.lee@gmail.com> +2012-10-09 Byungwoo Lee <bw80.lee@samsung.com> - [EFL] Add missing semicolon at the end of some lines. - https://bugs.webkit.org/show_bug.cgi?id=95640 + [EFL][WK2] Move timeout callback to the CallbackDataTimer class. + https://bugs.webkit.org/show_bug.cgi?id=97861 Reviewed by Gyuyoung Kim. - EWK_VIEW_PRIV_GET_OR_RETURN macro and other related macro can be used - without semicolon, because it ends with a semicolon or complete block. - This can make a human mistake about missing semicolon. - - Fixed the macros to require semicolon, and added missing semicolons. - - * UIProcess/API/efl/ewk_view.cpp: - (_ewk_view_smart_focus_in): - (_ewk_view_smart_focus_out): - (_ewk_view_smart_mouse_wheel): - (_ewk_view_smart_mouse_down): - (_ewk_view_smart_mouse_up): - (_ewk_view_smart_mouse_move): - (_ewk_view_smart_key_down): - (_ewk_view_smart_key_up): - (_ewk_view_initialize): - -2012-09-01 Sam Weinig <sam@webkit.org> - - Remove unused member variable from WebProcess. - - Rubber-stamped by Dan Bernstein. - - * WebProcess/WebProcess.h: - (WebProcess): - Remove m_applicationCachePathExtension. - -2012-09-01 Sam Weinig <sam@webkit.org> - - Use dynamic sandbox extension rather than sandbox parameters for paths provided by the UIProcess - https://bugs.webkit.org/show_bug.cgi?id=95651 - - Reviewed by Dan Bernstein. - - This is the first step to not relying on the initialization message to initialize - the sandbox. - - * Shared/SandboxExtension.h: - (SandboxExtension): - * Shared/mac/SandboxExtensionMac.mm: - (WebKit::SandboxExtension::consumePermanently): - Add static version of SandboxExtension::consumePermanently which takes a - SandboxExtension::Handle. There is no reason to create a SandboxExtension - just to consume it forever. - - * Shared/WebProcessCreationParameters.cpp: - (WebKit::WebProcessCreationParameters::encode): - (WebKit::WebProcessCreationParameters::decode): - * Shared/WebProcessCreationParameters.h: - (WebProcessCreationParameters): - Add SandboxExtension::Handles for paths we need access to, and remove - webInspectorBaseDirectory, which is unused. - - * UIProcess/WebContext.cpp: - (WebKit::WebContext::createNewWebProcess): - * UIProcess/mac/WebContextMac.mm: - (WebKit::WebContext::platformInitializeWebProcess): - Create SandboxExtension::Handles for paths we need access to, and move - getting the presenterApplicationPid to platformInitializeWebProcess, since - it is Mac only. - - * WebProcess/WebProcess.cpp: - (WebKit::WebProcess::initializeWebProcess): - Move setting the presenterApplicationPid to platformInitializeWebProcess. - - * WebProcess/mac/WebProcessMac.mm: - (WebKit::initializeSandbox): - (WebKit::WebProcess::platformInitializeWebProcess): - Replace the use of sandbox parameters for opening access for necessary paths - with permanent consumption of sandbox extensions. - - * WebProcess/com.apple.WebProcess.sb.in: - Remove sandbox rules that are now handled via extensions. - -2012-08-31 Byungwoo Lee <bw80.lee@samsung.com> + Timeout callbacks for waitUntil{LoadFinished,TitleChanged,URIChanged} + can be moved to the CallbackDataTimer class. - Build warning : -Wformat on WebMemorySampler.cpp. - https://bugs.webkit.org/show_bug.cgi?id=95550 + Moved the callback implementation to the CallbackDataTimer class. - Reviewed by Darin Adler. - - Fix build warning. - Use String::number instead of String::format. - - * Shared/WebMemorySampler.cpp: - (WebKit::WebMemorySampler::appendCurrentMemoryUsageToFile): - -2012-08-31 Alexey Proskuryakov <ap@apple.com> + * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp: + (EWK2UnitTest::CallbackDataTimer::CallbackDataTimer): + (CallbackDataTimer): + (EWK2UnitTest::CallbackDataTimer::timeOutCallback): + (EWK2UnitTest::CallbackDataExpectedValue::CallbackDataExpectedValue): + (EWK2UnitTest::EWK2UnitTestBase::waitUntilLoadFinished): + (EWK2UnitTest::EWK2UnitTestBase::waitUntilTitleChangedTo): + (EWK2UnitTest::EWK2UnitTestBase::waitUntilURIChangedTo): - [WK2] Use initial process in multi-process mode, too - https://bugs.webkit.org/show_bug.cgi?id=95612 +2012-10-09 Jian Li <jianli@chromium.org> - Reviewed by Sam Weinig. + Update the CSS property used to support draggable regions. + https://bugs.webkit.org/show_bug.cgi?id=97156 - * UIProcess/WebContext.cpp: - (WebKit::WebContext::WebContext): - (WebKit::WebContext::warmInitialProcess): - (WebKit::WebContext::disconnectProcess): - (WebKit::WebContext::createWebPage): - * UIProcess/WebContext.h: - Added a boolean telling whether the last (normally, the only) process in m_processes - is available for use in a new page. + Reviewed by Adam Barth. -2012-08-31 Alexey Proskuryakov <ap@apple.com> + The CSS property to support draggable regions, guarded under + WIDGET_REGION is now disabled from Mac WebKit, in order not to cause + confusion with DASHBOARD_SUPPORT feature. - [WK2] WebProcesses should not wait 60 seconds to close in multi-process mode - https://bugs.webkit.org/show_bug.cgi?id=95616 + Also update the code to use the new name annotatedRegions to work for + both features. - Reviewed by Darin Adler. + * Configurations/FeatureDefines.xcconfig: Disable WIDGET_REGION feature. + * WebProcess/WebCoreSupport/WebChromeClient.cpp: Rename dashboardRegions to annotatedRegions. + (WebKit::WebChromeClient::annotatedRegionsChanged): + * WebProcess/WebCoreSupport/WebChromeClient.h: Rename dashboardRegions to annotatedRegions. + (WebChromeClient): - * Shared/ChildProcess.cpp: (WebKit::ChildProcess::ChildProcess): - * Shared/ChildProcess.h: (WebKit::ChildProcess::setTerminationTimeout): - Expose a setter for timeout instead of taking it at construction time. If a derived - class doesn't call the setter, default to 0. +2012-10-09 Sheriff Bot <webkit.review.bot@gmail.com> - * PluginProcess/PluginProcess.cpp: - (WebKit::PluginProcess::PluginProcess): - (WebKit::PluginProcess::initializePluginProcess): - Use timeout from initialization message. + Unreviewed, rolling out r130811 and r130821. + http://trac.webkit.org/changeset/130811 + http://trac.webkit.org/changeset/130821 + https://bugs.webkit.org/show_bug.cgi?id=98831 - * WebProcess/WebProcess.cpp: - (WebKit::WebProcess::WebProcess): - (WebKit::WebProcess::initializeWebProcess): - Ditto. + Broke date-suggestion-picker-appearance-with-scroll-bar.html + (Requested by abarth|gardening on #webkit). - * Shared/Plugins/PluginProcessCreationParameters.cpp: - (WebKit::PluginProcessCreationParameters::encode): - (WebKit::PluginProcessCreationParameters::decode): - * Shared/Plugins/PluginProcessCreationParameters.h: - * Shared/WebProcessCreationParameters.cpp: - (WebKit::WebProcessCreationParameters::encode): - (WebKit::WebProcessCreationParameters::decode): - * Shared/WebProcessCreationParameters.h: - Funnel timeout across process boundary. + * Shared/WebRenderObject.cpp: + (WebKit::WebRenderObject::WebRenderObject): + * WebProcess/FullScreen/WebFullScreenManager.cpp: + (WebKit::screenRectOfContents): - * UIProcess/Plugins/PluginProcessProxy.cpp: (WebKit::PluginProcessProxy::didFinishLaunching): - Pass timeout as initialization message after launch. +2012-10-09 Jon Lee <jonlee@apple.com> - * UIProcess/WebContext.cpp: - (WebKit::WebContext::createNewWebProcess): Pass timeout as initialization message - (unlike plugin process proxy, web process proxy doesn't wait, and relies on the message - being queued). - (WebKit::WebContext::disconnectProcess): Skip invalidating global managers when - one process quits. We still need to do something, but running this code would just - result in assertion failures any time a page was closed. + [WK2] Have plugins render offscreen to capture snapshot + https://bugs.webkit.org/show_bug.cgi?id=98326 + <rdar://problem/12426658> -2012-08-31 Brady Eidson <beidson@apple.com> + Reviewed by Simon Fraser. - REGRESSION (r127252): incomplete repaint on Flash element after pinch to zoom - <rdar://problem/12217897> and https://bugs.webkit.org/show_bug.cgi?id=95607 + Keep the plugin rendering without compositing to easily grab the snapshot. - Reviewed by Simon Fraser. + PluginView now has two variables referring to snapshots, but are unrelated. The timer + is used to capture a snapshot that acts as a poster for a plugin. The ShareableBitmap + variable m_snapshot is used whenever the plugin paints in software, to avoid side effects + should the plugin run JS during painting. - * WebProcess/Plugins/PluginView.cpp: - (WebKit::PluginView::viewGeometryDidChange): Only give the window coordinate clip rect a chance - to override the boundsRect() if the page scale factor is 1. + * WebProcess/Plugins/PluginView.cpp: + (WebKit): Add a named constant for the time delay before a snapshot is taken. + (WebKit::PluginView::PluginView): Initialize a 3-second timer to get the snapshot. + (WebKit::PluginView::~PluginView): Refactor part of the destructor code out into + destroyPluginAndReset() for reuse. + (WebKit::PluginView::destroyPluginAndReset): Contains part of the destructor code. + In addition to destroying the plugin, the destructor cancels pending loads and streams. + (WebKit::PluginView::didInitializePlugin): If the plugin is in a state where it needs + to generate or display a poster, don't setup the compositing layer and start the timer. + (WebKit::PluginView::paint): Avoid painting if the plugin is not running. + (WebKit::PluginView::invalidateRect): Avoid painting if the plugin is not running. + (WebKit::PluginView::isAcceleratedCompositingEnabled): Don't enable accelerated compositing + until the plugin is running. + (WebKit::PluginView::pluginSnapshotTimerFired): When the timer fires, get a snapshot, generate + an Image that WebCore can render, and destroy the plugin. + + Rename m_snapshot to m_transientPaintingSnapshot. + * WebProcess/Plugins/PluginView.h: + * WebProcess/Plugins/PluginView.cpp: + (WebKit::PluginView::paint): + (WebKit::PluginView::notifyWidget): + (WebKit::PluginView::pluginSnapshotTimerFired): -2012-08-31 Tony Chang <tony@chromium.org> +2012-10-09 Rik Cabanier <cabanier@adobe.com> - Remove ENABLE_CSS3_FLEXBOX compile time flag - https://bugs.webkit.org/show_bug.cgi?id=95382 + Add missing compile flag for compositing + https://bugs.webkit.org/show_bug.cgi?id=98681 - Reviewed by Ojan Vafai. + Reviewed by Dirk Schulze. - Everyone is already enabling this by default and the spec has stablized. + This flag is needed in case there is a difference in API + when compositing is enabled * Configurations/FeatureDefines.xcconfig: -2012-08-31 Pratik Solanki <psolanki@apple.com> - - objc_msgSend and IMP should be cast appropriately before using - https://bugs.webkit.org/show_bug.cgi?id=95242 - - Reviewed by Benjamin Poulain. - - Follow on fix for Mac EWS - use objc-runtime.h instead of runtime.h so - that it finds the declaration for objc_msgSend. - - * UIProcess/API/mac/PDFViewController.mm: - -2012-08-31 Jon Lee <jonlee@apple.com> - - [Tests] Add basic tests to http/tests/notifications - https://bugs.webkit.org/show_bug.cgi?id=95493 - <rdar://problem/12209303> - - Reviewed by Alexey Proskuryakov. - - Simplify the passing of the permission policy to just a boolean instead of converting it - back and forth from the NotificationClient::Permission enum. - - * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h: Move the declaration to the section - of functions that are TestRunner SPI. - * WebProcess/InjectedBundle/InjectedBundle.cpp: - (WebKit::InjectedBundle::setWebNotificationPermission): Use a boolean. - * WebProcess/Notifications/NotificationPermissionRequestManager.cpp: - (WebKit::NotificationPermissionRequestManager::setPermissionLevelForTesting): - * WebProcess/Notifications/NotificationPermissionRequestManager.h: - (NotificationPermissionRequestManager): - - * win/WebKit2.vcproj: Add WKNotificationPermissionRequest.{h,cpp}. - * win/WebKit2Generated.make: Export WKNotificationPermissionRequest.h. +2012-10-09 Sheriff Bot <webkit.review.bot@gmail.com> -2012-08-31 Balazs Kelemen <kbalazs@webkit.org> + Unreviewed, rolling out r130680. + http://trac.webkit.org/changeset/130680 + https://bugs.webkit.org/show_bug.cgi?id=98720 - [Qt] ASSERT(m_useFixedLayout) in WebPage when using QRawWebView without setting fixed layout - https://bugs.webkit.org/show_bug.cgi?id=95557 + this patch has a typo so was ineffective (Requested by + cabanier on #webkit). - Reviewed by Noam Rosenthal. - - Let QRawWebView work with non-fixed layout size. - - * UIProcess/API/qt/raw/qrawwebview.cpp: - (QRawWebView::setSize): Also put the member assigment into - the point where the new size is ensured to be committed. + * Configurations/FeatureDefines.xcconfig: -2012-08-31 Balazs Kelemen <kbalazs@webkit.org> +2012-10-09 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com> - [Qt] LayerTreeRenderer::callOnMainTread method name is misleading - https://bugs.webkit.org/show_bug.cgi?id=95558 + [EFL][WK2] Inform the PageProxy about visibility changes when the view is shown/hidden. + https://bugs.webkit.org/show_bug.cgi?id=98757 Reviewed by Kenneth Rohde Christiansen. - Fix the typo in the function name so callers will really call this - and not WTF::callOnMainThread. Renamed to dispatchOnMainThread to - make it clear that these things are not the same. - - * UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp: - (WebKit::LayerTreeRenderer::dispatchOnMainThread): - (WebKit::LayerTreeRenderer::flushLayerChanges): - (WebKit::LayerTreeRenderer::purgeGLResources): - * UIProcess/CoordinatedGraphics/LayerTreeRenderer.h: - (LayerTreeRenderer): - -2012-08-31 Brady Eidson <beidson@apple.com> - - REGRESSION (127047): Crash in PluginProxy::windowVisibilityChanged when changing tabs - <rdar://problem/12211180> and https://bugs.webkit.org/show_bug.cgi?id=95515 - - Reviewed by Dan Bernstein. - - Plug-ins created in background tabs don't get initialized until they first become visible, - so telling them they are now invisible leads to messaging on behalf of an uninitialized plug-in. - - Many other methods related to visibility and focus only call through if the plug-in is initialized, - so setWindowIsVisible should do the same. + SVN r130720 exposed a bug in our code: the PageProxy is not + notified when one calls evas_object_show() or evas_object_hide() + on the view, so the visibility it has when the WebPageProxy is + constructed remained set forever. - * WebProcess/Plugins/PluginView.cpp: - (WebKit::PluginView::setWindowIsVisible): Only tell initialized plug-ins of window visibility changes. - -2012-08-31 Milian Wolff <milian.wolff@kdab.com> - - [Qt] QNX does not support SOCK_SEQPACKET socket type for socketpair in ProcessLauncherQt - https://bugs.webkit.org/show_bug.cgi?id=95553 - - Reviewed by Simon Hausmann. - - Calling socketpair with SOCK_SEQPACKET socket type fails on QNX with an error 241 (EPROTOTYPE), - as can be seen by the following debug output: "Creation of socket failed with errno: 241". - A test app shows that SOCK_DGRAM works properly on QNX, thus use it instead of SOCK_SEQPACKET. - - * UIProcess/Launcher/qt/ProcessLauncherQt.cpp: + This made the ewk_context_vibration_client_callbacks_set unit test + start running forever, because WebPageProxy's constructor now sets + the page's visibility to hidden by the default for us, since it is + called from within ewk_view_smart_add() and before + evas_object_show(). -2012-08-30 Mark Hahnenberg <mhahnenberg@apple.com> + We now listen to the EVAS_CALLBACK_SHOW and EVAS_CALLBACK_HIDE + callbacks and update the WebPageProxy accordingly. Note that we + could not do this from the smart_show and smart_hide functions we + already had, since they are called before the object's actual + visibility is updated. - ~JSNPObject should call invalidate() if it hasn't been called already - https://bugs.webkit.org/show_bug.cgi?id=95497 - - Reviewed by Geoffrey Garen. - - Finalization is no longer eager, just like destruction, so the original intent behind - this ASSERT in ~JSNPObject is no longer relevant. Therefore, we can just call invalidate() - ourselves in ~JSNPObject. - - * WebProcess/Plugins/Netscape/JSNPObject.cpp: - (WebKit::JSNPObject::~JSNPObject): + * UIProcess/API/efl/ewk_view.cpp: + (_ewk_view_on_show): + (_ewk_view_on_hide): + (_ewk_view_smart_add): -2012-08-30 Sam Weinig <sam@webkit.org> +2012-10-09 Simon Pena <spena@igalia.com> - Allow dynamic mach-lookup extensions in the WebProcess - <rdar://problem/12207996> + [GTK] Add support for running JavaScript from GResources + https://bugs.webkit.org/show_bug.cgi?id=98488 - Reviewed by Gavin Barraclough. + Reviewed by Carlos Garcia Campos. - Like we allow file read/write dynamic sandbox extensions, we should allow - mach-lookup extensions. + GResources allow embedding certain resources, frequently used, in a "bundle" + which can be kept separated or stored in the binary. This patch adds + support for running JavaScript from GResources. - * WebProcess/com.apple.WebProcess.sb.in: + For this, methods run_javascript_from_gresource and + run_javascript_from_gresource_finish are added, which load the resource + asynchronously and, when it is ready, run the JavaScript. -2012-08-30 Geoffrey Garen <ggaren@apple.com> + * UIProcess/API/gtk/WebKitWebView.cpp: Include the new methods. + (resourcesStreamReadCallback): + (webkit_web_view_run_javascript_from_gresource): + (webkit_web_view_run_javascript_from_gresource_finish): + * UIProcess/API/gtk/WebKitWebView.h: + * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Include the new + methods in the documentation. + * UIProcess/API/gtk/tests/GNUmakefile.am: Add the test resources to the + build infrastructure. + * UIProcess/API/gtk/tests/TestMain.cpp: Register the resources in the tests, + so that they can be accessed in all of them. + (register_gresource): + (main): + * UIProcess/API/gtk/tests/TestWebKitWebView.cpp: Test the + run_javascript_from_gresource method. + (testWebViewRunJavaScript): + * UIProcess/API/gtk/tests/WebViewTest.cpp: Add a method for testing the + new run_javascript_from_gresource method. + (runJavaScriptFromGResourceReadyCallback): + (WebViewTest::runJavaScriptFromGResourceAndWaitUntilFinished): + * UIProcess/API/gtk/tests/WebViewTest.h: + * UIProcess/API/gtk/tests/resources/webkit2gtk-tests.gresource.xml: Added. + Resource bundle containing the resources. + * UIProcess/API/gtk/tests/resources/webkit2gtk-tests.test.js: Added. + Example JavaScript file to test the GResources support. - Use one object instead of two for closures, eliminating ScopeChainNode - https://bugs.webkit.org/show_bug.cgi?id=95501 - Reviewed by Filip Pizlo. +2012-10-08 Kiran Muppala <cmuppala@apple.com> - Mechanical changes to update for JSC interface change. + Throttle DOM timers on hidden pages. + https://bugs.webkit.org/show_bug.cgi?id=98474 -2012-08-30 JungJik Lee <jungjik.lee@samsung.com> + Reviewed by Maciej Stachowiak. - [EFL][WK2] Add WebMemorySampler feature. - https://bugs.webkit.org/show_bug.cgi?id=91214 + Add HIDDEN_PAGE_DOM_TIMER_THROTTLING feature define. Use existing code of + PAGE_VISIBILITY_API to detect changes to page visibility state. - Reviewed by Kenneth Rohde Christiansen. + * Configurations/FeatureDefines.xcconfig: + * UIProcess/WebPageProxy.cpp: + (WebKit::WebPageProxy::WebPageProxy): + Check visibility state on construction. + (WebKit::WebPageProxy::initializeWebPage): + Send initial visibility state message if HIDDEN_PAGE_DOM_TIMER_THROTTLING + is enabled or if PAGE_VISIBILITY_API is enabled. + (WebKit::WebPageProxy::viewStateDidChange): + When PAGE_VISIBILITY_API is not enabled, compare new visibility against + WebPageProxy::m_isVisible, to minimize number of messages sent. + Remove unnecessary second call to PageClient::isViewVisible for updating + visibility state. - Add WebMemorySampler feature to EFL port. WebMemorySampler records memory usage of - WebProcess and UI Process and also it records application memory status in real time. - Included items on the result are JIT, JS heap, fastmalloc bytes and - application memory info from /proc/process_id/statm. + * WebProcess/InjectedBundle/InjectedBundle.cpp: + (WebKit::InjectedBundle::setPageVisibilityState): + WebKitTestRunner uses this method to implement testRunner.setPageVisibility(), + hence enable it for testing hidden page timer throttling as well. - * PlatformEfl.cmake: - * Shared/linux/WebMemorySamplerLinux.cpp: Added. + * WebProcess/WebPage/WebPage.cpp: (WebKit): - (ApplicationMemoryStats): - (WebKit::nextToken): - (WebKit::appendKeyValuePair): - (WebKit::sampleMemoryAllocatedForApplication): - (WebKit::WebMemorySampler::processName): - (WebKit::WebMemorySampler::sampleWebKit): - (WebKit::WebMemorySampler::sendMemoryPressureEvent): - * UIProcess/API/efl/ewk_context.cpp: - (_Ewk_Context::_Ewk_Context): - -2012-08-30 Pratik Solanki <psolanki@apple.com> - - objc_msgSend and IMP should be cast appropriately before using - https://bugs.webkit.org/show_bug.cgi?id=95242 - - Reviewed by Benjamin Poulain. + (WebKit::WebPage::setVisibilityState): + Ensure Page::setVisibilityState is called either if PAGE_VISIBILITY_API is + enabled or if HIDDEN_PAGE_DOM_TIMER_THROTTLING is enabled. - Use wtfObjcMsgSend and wtfCallIMP templates which do appropriate casts - to a function pointer with right types when calling objc_msgSend and an - IMP method directly. - - * UIProcess/API/mac/PDFViewController.mm: - (WebKit::PDFViewScrollView_scrollWheel): - -2012-08-30 Benjamin Poulain <bpoulain@apple.com> - - Replace JSC::UString by WTF::String - https://bugs.webkit.org/show_bug.cgi?id=95271 + * WebProcess/WebPage/WebPage.h: + (WebPage): + * WebProcess/WebPage/WebPage.messages.in: - Reviewed by Geoffrey Garen. +2012-10-08 Simon Fraser <simon.fraser@apple.com> - Update to code to switch from UString to String. + Try to fix Windows build by exporting Frame::layerTreeAsText(). - * WebProcess/Plugins/Netscape/JSNPMethod.cpp: - (WebKit::JSNPMethod::finishCreation): - * WebProcess/Plugins/Netscape/JSNPMethod.h: - (WebKit::JSNPMethod::create): - (JSNPMethod): - * WebProcess/Plugins/Netscape/JSNPObject.cpp: - (WebKit::npIdentifierFromIdentifier): - * WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp: - (WebKit::NPRuntimeObjectMap::evaluate): - (WebKit::NPRuntimeObjectMap::moveGlobalExceptionToExecState): + * win/WebKit2.def: -2012-08-29 Mark Hahnenberg <mhahnenberg@apple.com> +2012-10-08 Rik Cabanier <cabanier@adobe.com> - JSNPObject doesn't always protect its data when calling into plugin code - https://bugs.webkit.org/show_bug.cgi?id=95394 + Add missing compile flag for compositing + https://bugs.webkit.org/show_bug.cgi?id=98681 - Reviewed by Brady Eidson. + Reviewed by Dirk Schulze. - We need to use NPRuntimeObjectMap::PluginProtector when calling into plugin code since - there's no telling what the plugin will do, including destroying itself. + This flag is needed in case there is a difference in API + when compositing is enabled - * WebProcess/Plugins/Netscape/JSNPObject.cpp: - (WebKit::JSNPObject::getOwnPropertySlot): - (WebKit::JSNPObject::getOwnPropertyDescriptor): + * Configurations/FeatureDefines.xcconfig: -2012-08-30 Mike Sierra <mike.sierra@nokia.com> +2012-10-08 Christophe Dumez <christophe.dumez@intel.com> - [QT][WK2] webview API doc - https://bugs.webkit.org/show_bug.cgi?id=81701 + [EFL][WK2] EWK2UnitTestBase.ewk_cookie_manager_accept_policy unit test is failing + https://bugs.webkit.org/show_bug.cgi?id=98663 - Reviewed by Simon Hausmann. + Reviewed by Laszlo Gombos. - Various improvements and additions to the documentation of the QML WebView element. + EWK2UnitTestBase.ewk_cookie_manager_accept_policy unit test was + failing because the elements of a list were checked in a given + order but the list was not sorted beforehand. - * UIProcess/API/qt/qquickwebview.cpp: + * UIProcess/API/efl/tests/test_ewk2_cookie_manager.cpp: + (sortHostNames): + (TEST_F): -2012-08-29 Kangil Han <kangil.han@samsung.com> +2012-10-08 Jinwoo Song <jinwoo7.song@samsung.com> - [EFL][WK2] Replace PageClientImpl with ewk view in constructor of EflViewportHandler. - https://bugs.webkit.org/show_bug.cgi?id=95408 + [EFL][WK2] Avoid useless converting to WKPage + https://bugs.webkit.org/show_bug.cgi?id=98516 - Reviewed by Gyuyoung Kim. + Reviewed by Eric Seidel. - To keep consistency of implementation, derived classes(from ewk view) should have view reference. - From this, derived classes would have less interference from changes that would happen in port specific classes, i.e. PageClientImpl. + Use priv->pageProxy->findString() and priv->pageProxy->hideFindUI() + to avoid useless converting to WK. - * UIProcess/API/efl/EflViewportHandler.cpp: - (WebKit::EflViewportHandler::EflViewportHandler): - (WebKit::EflViewportHandler::drawingArea): - (WebKit): - (WebKit::EflViewportHandler::updateViewportSize): - * UIProcess/API/efl/EflViewportHandler.h: - (WebKit::EflViewportHandler::create): - (EflViewportHandler): * UIProcess/API/efl/ewk_view.cpp: - (_ewk_view_initialize): - -2012-08-29 Gyuyoung Kim <gyuyoung.kim@samsung.com> - - [WK2] Use ASCIILiteral hotness for DEFINE_STATIC_LOCAL string - https://bugs.webkit.org/show_bug.cgi?id=95318 - - Reviewed by Benjamin Poulain. - - As recommended by http://trac.webkit.org/wiki/EfficientStrings, - WebKit2 needs to use ASCIILiteral for the string of DEFINE_STATIC_LOCAL. - - * Shared/WebError.cpp: - (WebKit::WebError::webKitErrorDomain): - * Shared/WebPreferencesStore.cpp: - (WebPreferencesKey): - * UIProcess/InspectorServer/WebInspectorServer.cpp: - (WebKit::WebInspectorServer::didReceiveWebSocketUpgradeHTTPRequest): - * UIProcess/InspectorServer/qt/WebInspectorServerQt.cpp: - (WebKit::remoteInspectorPagePath): - * UIProcess/WebDatabaseManagerProxy.cpp: - (WebKit::WebDatabaseManagerProxy::originKey): - (WebKit::WebDatabaseManagerProxy::originQuotaKey): - (WebKit::WebDatabaseManagerProxy::originUsageKey): - (WebKit::WebDatabaseManagerProxy::databaseDetailsKey): - (WebKit::WebDatabaseManagerProxy::databaseDetailsNameKey): - (WebKit::WebDatabaseManagerProxy::databaseDetailsDisplayNameKey): - (WebKit::WebDatabaseManagerProxy::databaseDetailsExpectedUsageKey): - (WebKit::WebDatabaseManagerProxy::databaseDetailsCurrentUsageKey): - * UIProcess/WebPageProxy.cpp: - (WebKit::WebPageProxy::executeEditCommand): - * WebProcess/WebCoreSupport/WebEditorClient.cpp: - (WebKit::WebEditorClient::didBeginEditing): - (WebKit::WebEditorClient::respondToChangedContents): - (WebKit::WebEditorClient::respondToChangedSelection): - (WebKit::WebEditorClient::didEndEditing): - * WebProcess/WebProcess.cpp: - (WebKit::getWebCoreMemoryCacheStatistics): - -2012-08-29 Luciano Wolf <luciano.wolf@openbossa.org> - - [Qt][WK2] ApplicationCache LayoutTests failed - https://bugs.webkit.org/show_bug.cgi?id=69541 - - Reviewed by Kenneth Rohde Christiansen. - - Returns defaultDiskCacheDirectory when no cache directory was provided. - It's used by setOfflineWebApplicationCacheEnabled method that won't work - with an invalid cache directory. - - * UIProcess/qt/WebContextQt.cpp: - (WebKit::WebContext::applicationCacheDirectory): - -2012-08-29 José Dapena Paz <jdapena@igalia.com> - - [Gtk] Process Gtk 3.4 smooth scroll events properly. - https://bugs.webkit.org/show_bug.cgi?id=88070 - - Gtk 3.3.18 added smooth scroll events, adding a new scroll direction that - provides detailed delta information. - - Added GDK_SMOOTH_SCROLL_MASK to the events listened, and added - code to process properly the new direction GDK_SCROLL_SMOOTH and - its deltas. - - Reviewed by Martin Robinson. - - * Shared/gtk/WebEventFactory.cpp: - (WebKit::WebEventFactory::createWebWheelEvent): - * UIProcess/API/gtk/WebKitWebViewBase.cpp: - (webkitWebViewBaseRealize): - -2012-08-29 Brady Eidson <beidson@apple.com> - - REGRESSION: Not sending NPP_SetWindow is causing Flash to not throttle itself - <rdar://problem/12133021> and https://bugs.webkit.org/show_bug.cgi?id=95274 - - Reviewed by Sam Weinig. - - * UIProcess/API/mac/WKView.mm: - (-[WKView viewDidMoveToWindow]): Previously we'd only update window visibility when the window is hidden. - Now we also update window visibility when the window is shown. - - * WebProcess/Plugins/Netscape/NetscapePlugin.cpp: - (WebKit::NetscapePlugin::callSetWindowInvisible): Call set window with a manufactured empty clip rect to tell - the plug-in that it is complete hidden. - (WebKit): - * WebProcess/Plugins/Netscape/NetscapePlugin.h: - (NetscapePlugin): - * WebProcess/Plugins/Netscape/mac/NetscapePluginMac.mm: - (WebKit::NetscapePlugin::windowVisibilityChanged): Call "callSetWindow" or "callSetWindowInvisible" as appropriate. - - * WebProcess/Plugins/PluginView.cpp: - (WebKit::PluginView::setWindowIsVisible): Tell the plugin that its visibility changed. - (WebKit::PluginView::viewGeometryDidChange): Grab a clip rect that - although incorrect - at least is correct if - the PluginView is completely hidden. - -2012-08-29 Jon Lee <jonlee@apple.com> - - Build patch for Qt - - * Target.pri: Missing WKMutableArray.cpp. - -2012-08-29 Jon Lee <jonlee@apple.com> - - Build patch for Qt. - - * Target.pri: Export WKArray and WKMutableArray for Qt. - -2012-08-29 Jon Lee <jonlee@apple.com> - - Added missing exports for Windows. - - * win/WebKit2Generated.make: - -2012-08-29 Jon Lee <jonlee@apple.com> - - Windows build fix. - - * win/WebKit2Generated.make: Export WKNotificationManager.h. - -2012-08-29 Jon Lee <jonlee@apple.com> + (ewk_view_text_find): + (ewk_view_text_find_highlight_clear): - [WK2] Add SPI to retrieve internal IDs for web notifications - https://bugs.webkit.org/show_bug.cgi?id=95100 - <rdar://problem/12180208> +2012-10-08 Sudarsana Nagineni <sudarsana.nagineni@intel.com> - Reviewed by Alexey Proskuryakov. + [WK2][WTR] WebKitTestRunner needs testRunner.dispatchPendingLoadRequests + https://bugs.webkit.org/show_bug.cgi?id=98638 - This is work toward providing Mac support for web notifications in DRT and WTR (77969). + Reviewed by Eric Seidel. - Add function to retrieve the internal ID for a notification. This is needed by tests to support simulating - a user click on a notification. + Add implementation for testRunner.dispatchPendingLoadRequests in + WebKitTestRunner. - * DerivedSources.pri: Expose JSNotification.h as private header. * WebProcess/InjectedBundle/API/c/WKBundle.cpp: - (WKBundleGetWebNotificationID): Calls into notification manager to get internal ID. - * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h: Add WKBundleGetWebNotificationID() to be able - retrieve notification ID. + (WKBundleDispatchPendingLoadRequests): + * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h: * WebProcess/InjectedBundle/InjectedBundle.cpp: - (WebKit::InjectedBundle::webNotificationID): + (WebKit::InjectedBundle::dispatchPendingLoadRequests): (WebKit): * WebProcess/InjectedBundle/InjectedBundle.h: (InjectedBundle): - * WebProcess/Notifications/WebNotificationManager.cpp: - (WebKit::WebNotificationManager::notificationIDForTesting): - (WebKit): - * WebProcess/Notifications/WebNotificationManager.h: - (WebNotificationManager): - -2012-08-28 Martin Robinson <mrobinson@igalia.com> - - [GTK] Enable the edge distance anti-aliasing for accelerated compositing layers - https://bugs.webkit.org/show_bug.cgi?id=95272 - - Reviewed by No'am Rosenthal. - - Turn on edge-distance anti-aliasing for GTK+ WebKit2. This - improves the quality of layer rendering. - - * WebProcess/WebPage/gtk/LayerTreeHostGtk.cpp: - (WebKit::LayerTreeHostGtk::initialize): - -2012-08-28 Kangil Han <kangil.han@samsung.com> - - [WK2] Use explicit constructor in PageClientImpl. - https://bugs.webkit.org/show_bug.cgi?id=95170 - - Reviewed by Darin Adler. - Added explicit keyword in constructor of PageClientImpl in order to avoid implicit type conversion. +2012-10-08 Carlos Garcia Campos <cgarcia@igalia.com> - * UIProcess/API/gtk/PageClientImpl.h: - (PageClientImpl): - * UIProcess/API/mac/PageClientImpl.h: - (PageClientImpl): + [GTK] Add a setting to enable/disable smooth scrolling to WebKit2 GTK+ API + https://bugs.webkit.org/show_bug.cgi?id=98646 -2012-08-28 Rik Cabanier <cabanier@adobe.com> - - Add ENABLE_CSS_COMPOSITING flag to WebKit2 project - https://bugs.webkit.org/show_bug.cgi?id=95227 - - Reviewed by Dirk Schulze. + Reviewed by Xan Lopez. - The WebKit2 project was not updated to compile with the CSS_COMPOSITING flag. - This caused crashes when the webkit2 code had to use that flag. + * UIProcess/API/gtk/WebKitSettings.cpp: + (webKitSettingsSetProperty): Implement setter for new property. + (webKitSettingsGetProperty): Implement getter for new property. + (webkit_settings_class_init): Add new property + enable-smooth-scrolling. + (webkit_settings_get_enable_smooth_scrolling): + (webkit_settings_set_enable_smooth_scrolling): + * UIProcess/API/gtk/WebKitSettings.h: + * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Add new symbols. + * UIProcess/API/gtk/tests/TestWebKitSettings.cpp: + (testWebKitSettings): Test smooth scrolling setting API. - * Configurations/FeatureDefines.xcconfig: +2012-10-08 Christophe Dumez <christophe.dumez@intel.com> -2012-08-28 Sheriff Bot <webkit.review.bot@gmail.com> + [EFL][WK2] Use URL instead of URI in the API + https://bugs.webkit.org/show_bug.cgi?id=98643 - Unreviewed, rolling out r126914. - http://trac.webkit.org/changeset/126914 - https://bugs.webkit.org/show_bug.cgi?id=95239 + Reviewed by Kenneth Rohde Christiansen. - it breaks everything and fixes nothing (Requested by pizlo on - #webkit). + Use URL instead of URI in WebKit2 EFL API. This change + was discussed on the mailing list and aims at making + the API more consistent. - * Platform/CoreIPC/ArgumentCoders.h: - * Platform/CoreIPC/Connection.cpp: - (CoreIPC::Connection::SyncMessageState::getOrCreate): - (CoreIPC::Connection::waitForMessage): - (CoreIPC::Connection::processIncomingMessage): - * Platform/gtk/WorkQueueGtk.cpp: - (WorkQueue::registerEventSourceHandler): - (WorkQueue::unregisterEventSourceHandler): - * Platform/mac/WorkQueueMac.cpp: - (WorkQueue::unregisterMachPortEventHandler): - * Shared/Plugins/NPRemoteObjectMap.cpp: - (WebKit::NPRemoteObjectMap::pluginDestroyed): - * Shared/UserMessageCoders.h: - (WebKit::UserMessageEncoder::baseEncode): - * Shared/WebPreferencesStore.cpp: - (WebKit::valueForKey): - (WebKit::WebPreferencesStore::getBoolValueForKey): - * Shared/mac/WebCoreArgumentCodersMac.mm: - (CoreIPC::::decode): - * Shared/qt/ArgumentCodersQt.cpp: - (CoreIPC::::decode): - * Shared/soup/WebCoreArgumentCodersSoup.cpp: - (CoreIPC::::decode): - * UIProcess/API/efl/ewk_back_forward_list.cpp: - (_Ewk_Back_Forward_List::~_Ewk_Back_Forward_List): + * UIProcess/API/efl/ewk_back_forward_list_item.cpp: + (_Ewk_Back_Forward_List_Item): + (ewk_back_forward_list_item_url_get): + (ewk_back_forward_list_item_original_url_get): + * UIProcess/API/efl/ewk_back_forward_list_item.h: * UIProcess/API/efl/ewk_context.cpp: - (_Ewk_Context::~_Ewk_Context): + (ewk_context_url_scheme_register): + * UIProcess/API/efl/ewk_context.h: + * UIProcess/API/efl/ewk_context_download_client.cpp: + (decideDestinationWithSuggestedFilename): + * UIProcess/API/efl/ewk_download_job.h: + * UIProcess/API/efl/ewk_resource_private.h: * UIProcess/API/efl/ewk_view.cpp: - (_ewk_view_priv_loading_resources_clear): - * UIProcess/API/gtk/WebKitWebView.cpp: - (webkit_web_view_get_subresources): - * UIProcess/API/gtk/WebKitWebViewBase.cpp: - (webkitWebViewBaseContainerForall): - * UIProcess/API/mac/WKPrintingView.mm: - (-[WKPrintingView _expectedPreviewCallbackForRect:]): - (pageDidDrawToPDF): - (-[WKPrintingView _drawPreview:]): - * UIProcess/API/mac/WKView.mm: - (commandNameForSelector): - (-[WKView validateUserInterfaceItem:]): - * UIProcess/CoordinatedGraphics/CoordinatedBackingStore.cpp: - (WebKit::CoordinatedBackingStore::updateTile): - (WebKit::CoordinatedBackingStore::texture): - (WebKit::CoordinatedBackingStore::paintToTextureMapper): - (WebKit::CoordinatedBackingStore::commitTileOperations): - * UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.cpp: - (WebKit::LayerTreeCoordinatorProxy::updateTileForLayer): - * UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp: - (WebKit::LayerTreeRenderer::adjustPositionForFixedLayers): - (WebKit::LayerTreeRenderer::syncCanvas): - (WebKit::LayerTreeRenderer::setLayerChildren): - (WebKit::LayerTreeRenderer::setLayerFilters): - (WebKit::LayerTreeRenderer::setLayerState): - (WebKit::LayerTreeRenderer::assignImageToLayer): - * UIProcess/GeolocationPermissionRequestManagerProxy.cpp: - (WebKit::GeolocationPermissionRequestManagerProxy::invalidateRequests): - * UIProcess/InspectorServer/WebInspectorServer.cpp: - (WebKit::WebInspectorServer::~WebInspectorServer): - (WebKit::WebInspectorServer::registerPage): - * UIProcess/InspectorServer/WebSocketServerConnection.cpp: - (WebKit::WebSocketServerConnection::sendHTTPResponseHeader): - * UIProcess/InspectorServer/qt/WebInspectorServerQt.cpp: - (WebKit::WebInspectorServer::buildPageList): - * UIProcess/Notifications/NotificationPermissionRequestManagerProxy.cpp: - (WebKit::NotificationPermissionRequestManagerProxy::invalidateRequests): - * UIProcess/Plugins/PluginProcessProxy.cpp: - (WebKit::PluginProcessProxy::pluginProcessCrashedOrFailedToLaunch): - * UIProcess/WebContext.cpp: - (WebKit::createDictionaryFromHashMap): - * UIProcess/WebIconDatabase.cpp: - (WebKit::WebIconDatabase::didFinishURLImport): - * UIProcess/WebIntentData.cpp: - (WebKit::WebIntentData::extras): - * UIProcess/WebProcessProxy.cpp: - (WebKit::WebProcessProxy::checkURLReceivedFromWebProcess): - (WebKit::WebProcessProxy::addBackForwardItem): - (WebKit::WebProcessProxy::frameCountInPage): - * WebProcess/Geolocation/GeolocationPermissionRequestManager.cpp: - (WebKit::GeolocationPermissionRequestManager::cancelRequestForGeolocation): - (WebKit::GeolocationPermissionRequestManager::didReceiveGeolocationPermissionDecision): - * WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp: - (WebKit::InjectedBundleNodeHandle::getOrCreate): - * WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp: - (WebKit::InjectedBundleRangeHandle::getOrCreate): - * WebProcess/InjectedBundle/InjectedBundleIntent.cpp: - (WebKit::InjectedBundleIntent::extras): - * WebProcess/Notifications/WebNotificationManager.cpp: - (WebKit::WebNotificationManager::policyForOrigin): - (WebKit::WebNotificationManager::show): - (WebKit::WebNotificationManager::clearNotifications): - (WebKit::WebNotificationManager::removeNotificationFromContextMap): - * WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp: - (WebKit::NPRuntimeObjectMap::invalidate): - * WebProcess/Plugins/Netscape/NetscapePlugin.cpp: - (WebKit::NetscapePlugin::destroyStream): - (WebKit::NetscapePlugin::unscheduleTimer): - (WebKit::NetscapePlugin::frameDidFinishLoading): - (WebKit::NetscapePlugin::frameDidFail): - * WebProcess/Plugins/PluginView.cpp: - (WebKit::buildHTTPHeaders): - (WebKit::PluginView::~PluginView): - * WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp: - (WebCore::CoordinatedGraphicsLayer::layerByID): - * WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp: - (WebKit::LayerTreeCoordinator::adoptImageBackingStore): - (WebKit::LayerTreeCoordinator::releaseImageBackingStore): - * WebProcess/WebPage/WebBackForwardListProxy.cpp: - (WebKit::WebBackForwardListProxy::removeItem): - * WebProcess/WebPage/mac/WebPageMac.mm: - (WebKit::commandNameForSelectorName): - * WebProcess/WebProcess.cpp: - (WebKit::WebProcess::visitedLinkStateChanged): - (WebKit::WebProcess::allVisitedLinkStateChanged): - (WebKit::WebProcess::focusedWebPage): - (WebKit::WebProcess::createWebPage): - (WebKit::WebProcess::webPageGroup): - (WebKit::fromCountedSetToHashMap): - (WebKit::WebProcess::setTextCheckerState): - -2012-08-28 Alexey Proskuryakov <ap@apple.com> - - [WK2] Expose process model as API - https://bugs.webkit.org/show_bug.cgi?id=95228 - - Reviewed by Jon Honeycutt. + (_Ewk_View_Private_Data): + (ewk_view_url_update): + (ewk_view_url_set): + (ewk_view_url_get): + (ewk_view_reload): + (ewk_view_reload_bypass_cache): + (ewk_view_load_finished): + (ewk_view_load_provisional_redirect): + (ewk_view_load_provisional_started): + (ewk_view_html_string_load): + * UIProcess/API/efl/ewk_view.h: + * UIProcess/API/efl/ewk_view_loader_client.cpp: + (didSameDocumentNavigationForFrame): + * UIProcess/API/efl/ewk_view_private.h: + * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp: + (EWK2UnitTest::EWK2UnitTestBase::loadUrlSync): + (EWK2UnitTest::onURLChanged): + (EWK2UnitTest::timeOutWhileWaitingUntilURLChangedTo): + (EWK2UnitTest::EWK2UnitTestBase::waitUntilURLChangedTo): + * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h: + (EWK2UnitTestBase): + * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestServer.cpp: + (EWK2UnitTestServer::EWK2UnitTestServer): + (EWK2UnitTestServer::~EWK2UnitTestServer): + (EWK2UnitTestServer::getURLForPath): + * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestServer.h: + (EWK2UnitTestServer): + * UIProcess/API/efl/tests/resources/redirect_url_to_default.html: Renamed from Source/WebKit2/UIProcess/API/efl/tests/resources/redirect_uri_to_default.html. + * UIProcess/API/efl/tests/test_ewk2_back_forward_list.cpp: + (checkItem): + (urlFromTitle): + * UIProcess/API/efl/tests/test_ewk2_context.cpp: + (TEST_F): + * UIProcess/API/efl/tests/test_ewk2_cookie_manager.cpp: + (TEST_F): + * UIProcess/API/efl/tests/test_ewk2_download_job.cpp: + (TEST_F): + * UIProcess/API/efl/tests/test_ewk2_settings.cpp: + (TEST_F): + * UIProcess/API/efl/tests/test_ewk2_view.cpp: + (TEST_F): - * UIProcess/API/C/WKAPICast.h: - (WebKit::toProcessModel): - (WebKit::toAPI): - Convert ProcessModel values. +2012-10-08 Zoltan Horvath <zoltan@webkit.org> - * UIProcess/API/C/WKContext.cpp: - (WKContextSetProcessModel): - (WKContextGetProcessModel): - * UIProcess/API/C/WKContext.h: - * UIProcess/WebContext.cpp: (WebKit::WebContext::setProcessModel): - * UIProcess/WebContext.h: - Added a setter and a getter. Setting process model is only allowed when there are - no processes yet - that's checked with a CRASH to guarantee that clients using - production builds of WebKit2 don't misstep. + [Qt] r122720 causes performance regression with DirectFB on ARMv7 + https://bugs.webkit.org/show_bug.cgi?id=97548 -2012-08-28 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org> + Reviewed by Jocelyn Turcotte. - Rename first/second to key/value in HashMap iterators - https://bugs.webkit.org/show_bug.cgi?id=82784 + Revert the rest of r122720. This change modifies the NativeImagePtr from QImage* to QPixmap*. - Reviewed by Eric Seidel. + Covered by existing tests. - * Platform/CoreIPC/ArgumentCoders.h: - * Platform/CoreIPC/Connection.cpp: - (CoreIPC::Connection::SyncMessageState::getOrCreate): - (CoreIPC::Connection::waitForMessage): - (CoreIPC::Connection::processIncomingMessage): - * Platform/gtk/WorkQueueGtk.cpp: - (WorkQueue::registerEventSourceHandler): - (WorkQueue::unregisterEventSourceHandler): - * Platform/mac/WorkQueueMac.cpp: - (WorkQueue::unregisterMachPortEventHandler): - * Shared/Plugins/NPRemoteObjectMap.cpp: - (WebKit::NPRemoteObjectMap::pluginDestroyed): - * Shared/UserMessageCoders.h: - (WebKit::UserMessageEncoder::baseEncode): - * Shared/WebPreferencesStore.cpp: - (WebKit::valueForKey): - (WebKit::WebPreferencesStore::getBoolValueForKey): - * Shared/mac/WebCoreArgumentCodersMac.mm: - (CoreIPC::::decode): - * Shared/qt/ArgumentCodersQt.cpp: - (CoreIPC::::decode): - * Shared/soup/WebCoreArgumentCodersSoup.cpp: - (CoreIPC::::decode): - * UIProcess/API/efl/ewk_back_forward_list.cpp: - (_Ewk_Back_Forward_List::~_Ewk_Back_Forward_List): - * UIProcess/API/efl/ewk_context.cpp: - (_Ewk_Context::~_Ewk_Context): - * UIProcess/API/efl/ewk_view.cpp: - (_ewk_view_priv_loading_resources_clear): - * UIProcess/API/gtk/WebKitWebView.cpp: - (webkit_web_view_get_subresources): - * UIProcess/API/gtk/WebKitWebViewBase.cpp: - (webkitWebViewBaseContainerForall): - * UIProcess/API/mac/WKPrintingView.mm: - (-[WKPrintingView _expectedPreviewCallbackForRect:]): - (pageDidDrawToPDF): - (-[WKPrintingView _drawPreview:]): - * UIProcess/API/mac/WKView.mm: - (commandNameForSelector): - (-[WKView validateUserInterfaceItem:]): - * UIProcess/CoordinatedGraphics/CoordinatedBackingStore.cpp: - (WebKit::CoordinatedBackingStore::updateTile): - (WebKit::CoordinatedBackingStore::texture): - (WebKit::CoordinatedBackingStore::paintToTextureMapper): - (WebKit::CoordinatedBackingStore::commitTileOperations): - * UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.cpp: - (WebKit::LayerTreeCoordinatorProxy::updateTileForLayer): - * UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp: - (WebKit::LayerTreeRenderer::adjustPositionForFixedLayers): - (WebKit::LayerTreeRenderer::syncCanvas): - (WebKit::LayerTreeRenderer::setLayerChildren): - (WebKit::LayerTreeRenderer::setLayerFilters): - (WebKit::LayerTreeRenderer::setLayerState): - (WebKit::LayerTreeRenderer::assignImageToLayer): - * UIProcess/GeolocationPermissionRequestManagerProxy.cpp: - (WebKit::GeolocationPermissionRequestManagerProxy::invalidateRequests): - * UIProcess/InspectorServer/WebInspectorServer.cpp: - (WebKit::WebInspectorServer::~WebInspectorServer): - (WebKit::WebInspectorServer::registerPage): - * UIProcess/InspectorServer/WebSocketServerConnection.cpp: - (WebKit::WebSocketServerConnection::sendHTTPResponseHeader): - * UIProcess/InspectorServer/qt/WebInspectorServerQt.cpp: - (WebKit::WebInspectorServer::buildPageList): - * UIProcess/Notifications/NotificationPermissionRequestManagerProxy.cpp: - (WebKit::NotificationPermissionRequestManagerProxy::invalidateRequests): - * UIProcess/Plugins/PluginProcessProxy.cpp: - (WebKit::PluginProcessProxy::pluginProcessCrashedOrFailedToLaunch): - * UIProcess/WebContext.cpp: - (WebKit::createDictionaryFromHashMap): - * UIProcess/WebIconDatabase.cpp: - (WebKit::WebIconDatabase::didFinishURLImport): - * UIProcess/WebIntentData.cpp: - (WebKit::WebIntentData::extras): - * UIProcess/WebProcessProxy.cpp: - (WebKit::WebProcessProxy::checkURLReceivedFromWebProcess): - (WebKit::WebProcessProxy::addBackForwardItem): - (WebKit::WebProcessProxy::frameCountInPage): - * WebProcess/Geolocation/GeolocationPermissionRequestManager.cpp: - (WebKit::GeolocationPermissionRequestManager::cancelRequestForGeolocation): - (WebKit::GeolocationPermissionRequestManager::didReceiveGeolocationPermissionDecision): - * WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp: - (WebKit::InjectedBundleNodeHandle::getOrCreate): - * WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp: - (WebKit::InjectedBundleRangeHandle::getOrCreate): - * WebProcess/InjectedBundle/InjectedBundleIntent.cpp: - (WebKit::InjectedBundleIntent::extras): - * WebProcess/Notifications/WebNotificationManager.cpp: - (WebKit::WebNotificationManager::policyForOrigin): - (WebKit::WebNotificationManager::show): - (WebKit::WebNotificationManager::clearNotifications): - (WebKit::WebNotificationManager::removeNotificationFromContextMap): - * WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp: - (WebKit::NPRuntimeObjectMap::invalidate): - * WebProcess/Plugins/Netscape/NetscapePlugin.cpp: - (WebKit::NetscapePlugin::destroyStream): - (WebKit::NetscapePlugin::unscheduleTimer): - (WebKit::NetscapePlugin::frameDidFinishLoading): - (WebKit::NetscapePlugin::frameDidFail): - * WebProcess/Plugins/PluginView.cpp: - (WebKit::buildHTTPHeaders): - (WebKit::PluginView::~PluginView): - * WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp: - (WebCore::CoordinatedGraphicsLayer::layerByID): + * Shared/qt/ShareableBitmapQt.cpp: + (WebKit::ShareableBitmap::createImage): + * UIProcess/qt/QtWebIconDatabaseClient.cpp: + (WebKit::QtWebIconDatabaseClient::iconImageForPageURL): + * WebProcess/WebCoreSupport/qt/WebDragClientQt.cpp: + (WebKit::convertQPixmapToShareableBitmap): + (WebKit::WebDragClient::startDrag): * WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp: (WebKit::LayerTreeCoordinator::adoptImageBackingStore): - (WebKit::LayerTreeCoordinator::releaseImageBackingStore): - * WebProcess/WebPage/WebBackForwardListProxy.cpp: - (WebKit::WebBackForwardListProxy::removeItem): - * WebProcess/WebPage/mac/WebPageMac.mm: - (WebKit::commandNameForSelectorName): - * WebProcess/WebProcess.cpp: - (WebKit::WebProcess::visitedLinkStateChanged): - (WebKit::WebProcess::allVisitedLinkStateChanged): - (WebKit::WebProcess::focusedWebPage): - (WebKit::WebProcess::createWebPage): - (WebKit::WebProcess::webPageGroup): - (WebKit::fromCountedSetToHashMap): - (WebKit::WebProcess::setTextCheckerState): - -2012-08-28 Jon Lee <jonlee@apple.com> - [WK2] Bugs in maintenance of internal state when user decides whether to grant notification permissions - https://bugs.webkit.org/show_bug.cgi?id=95220 - <rdar://problem/12189895> +2012-10-08 Jocelyn Turcotte <jocelyn.turcotte@digia.com> - Reviewed by Jessie Berlin. + Unreviewed build fix after r130630 - A couple of the maps maintained by the request manager should have been cleaned up when the user decided on - whether to grant a website permission to post notifications. + Explicit convertion is required from QSizeF to FloatSize. - Also, the web process' copy of the permissions was not updated appropriately. This meant that in the - permission callback, Notification.permission was not the same value as the permission value included as - the first parameter of the callback. + * UIProcess/API/qt/qquickwebview.cpp: + (QQuickWebViewLegacyPrivate::updateViewportSize): - This first surfaced as part of the work to bring Mac support for web notifications. I have a test that - will check for regressions in this area, once all of that has been checked in (bug 77969). +2012-10-04 Jocelyn Turcotte <jocelyn.turcotte@digia.com> - * WebProcess/Notifications/NotificationPermissionRequestManager.cpp: - (WebKit::NotificationPermissionRequestManager::didReceiveNotificationPermissionDecision): + [Qt] Fix the mouse hover events transformation when devicePixelRatio != 1 + https://bugs.webkit.org/show_bug.cgi?id=98429 -2012-08-28 Jon Lee <jonlee@apple.com> + Reviewed by Kenneth Rohde Christiansen. - [WK2] Add SPI for injected bundle to manually set permissions - https://bugs.webkit.org/show_bug.cgi?id=95127 - <rdar://problem/12182635> + This prevents the events from being transformed two or three times. + This is only noticeable in desktop mode. - Reviewed by Jessie Berlin. + * UIProcess/qt/QtWebPageEventHandler.cpp: + (WebKit::QtWebPageEventHandler::handleHoverLeaveEvent): + (WebKit::QtWebPageEventHandler::handleHoverMoveEvent): - This is work toward providing Mac support for web notifications in DRT and WTR (77969). +2012-10-04 Jocelyn Turcotte <jocelyn.turcotte@digia.com> - Add support functions to WebKit2 which maintain the map of permissions to origins for web notifications. - For WebKit1 the map is managed by DumpRenderTree. + [Qt] Apply QQuickWebViewExperimental::devicePixelRatio to the desktop mode as well + https://bugs.webkit.org/show_bug.cgi?id=98428 - * WebProcess/InjectedBundle/InjectedBundle.h: Add TestRunner SPI. - * WebProcess/InjectedBundle/InjectedBundle.cpp: - (WebKit::InjectedBundle::setWebNotificationPermission): - (WebKit::InjectedBundle::removeAllWebNotificationPermissions): + Reviewed by Kenneth Rohde Christiansen. - * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h: Expose as WK API. Also, rearrange the ordering of the - functions so that it reflects the same order found in InjectedBundle.h. - * WebProcess/InjectedBundle/API/c/WKBundle.cpp: + This is handled by the PageViewportController when in flickable mode. - * WebProcess/Notifications/NotificationPermissionRequestManager.cpp: - (WebKit::NotificationPermissionRequestManager::setPermissionLevelForTesting): Manually set the permission - level for an origin. - (WebKit::NotificationPermissionRequestManager::removeAllPermissionsForTesting): - * WebProcess/Notifications/NotificationPermissionRequestManager.h: - (NotificationPermissionRequestManager): - * WebProcess/Notifications/WebNotificationManager.cpp: - (WebKit::WebNotificationManager::removeAllPermissionsForTesting): Clear the permission map. - * WebProcess/Notifications/WebNotificationManager.h: Promote didUpdateNotificationDecision message as public - function, so that NotificationPermissionRequestManager can update the permission map. + * UIProcess/API/qt/qquickwebview.cpp: + (QQuickWebViewLegacyPrivate::updateViewportSize): -2012-08-28 Christophe Dumez <christophe.dumez@intel.com> +2012-10-04 Jocelyn Turcotte <jocelyn.turcotte@digia.com> - [EFL] WebKit EFL updates view on HTTP 204 response - https://bugs.webkit.org/show_bug.cgi?id=95199 + [Qt] Prevent the PageViewportController from affecting the viewport in desktop mode + https://bugs.webkit.org/show_bug.cgi?id=98427 Reviewed by Kenneth Rohde Christiansen. - Ignore HTTP responses which have status code equal - to 204 (No Content). + QQuickFlickable isn't tightly bound to it anymore, we can avoid creating it + completely in this case. - * UIProcess/API/efl/ewk_view_policy_client.cpp: - (decidePolicyForResponseCallback): + * UIProcess/API/qt/qquickwebview.cpp: + (QQuickWebViewFlickablePrivate::onComponentComplete): + * UIProcess/API/qt/qquickwebview_p_p.h: + (QQuickWebViewPrivate::onComponentComplete): + (QQuickWebViewPrivate::viewportController): + (QQuickWebViewPrivate): + (QQuickWebViewFlickablePrivate::viewportController): + (QQuickWebViewFlickablePrivate): + * UIProcess/qt/QtPageClient.cpp: + (WebKit::QtPageClient::didRenderFrame): + (WebKit::QtPageClient::didChangeContentsSize): + (WebKit::QtPageClient::pageTransitionViewportReady): + * UIProcess/qt/QtWebPageLoadClient.cpp: + (WebKit::QtWebPageLoadClient::didCommitLoad): -2012-08-28 Zeno Albisser <zeno@webkit.org> +2012-10-04 Jocelyn Turcotte <jocelyn.turcotte@digia.com> - LayerTreeCoordinatorProxy should use uint64_t for surface key. - https://bugs.webkit.org/show_bug.cgi?id=95175 + [Qt] Fix a QSocketNotifier warning at startup + https://bugs.webkit.org/show_bug.cgi?id=98411 - GraphicsSurface tokens are of type uint64_t. - Therefore LayerTreeCoordinatorProxy must use the same type to - identify a GraphicsSurface/ShareableSurface. + Reviewed by Simon Hausmann. - Reviewed by Noam Rosenthal. + The actual warning: + QSocketNotifier: socket notifiers cannot be enabled from another thread - * Shared/ShareableSurface.h: - (WebKit::ShareableSurface::Handle::graphicsSurfaceToken): - * UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.cpp: - (WebKit::LayerTreeCoordinatorProxy::updateTileForLayer): - * UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.h: - (LayerTreeCoordinatorProxy): + The problem was that QSocketNotifier::setEnabled was called on the main thread + after moveToThread was called. This hasn't had any effect since Connection + would dispatch a readyReadHandler call right after which would then call + setEnabled again from the correct thread from ~SocketNotifierResourceGuard. -2012-08-28 Ryuan Choi <ryuan.choi@samsung.com> + Replace the call with a queued invoke to shut the warning. - [EFL][WK2] Implement WebPopupMenuProxyEfl to support <select> - https://bugs.webkit.org/show_bug.cgi?id=88616 + * Platform/qt/WorkQueueQt.cpp: + (WorkQueue::registerSocketEventHandler): - Reviewed by Gyuyoung Kim. +2012-10-08 Carlos Garcia Campos <cgarcia@igalia.com> - Implemented popup menu proxy and interface for Efl. + [GTK] Test /webkit2/WebKitWebView/populate-menu asserts in debug bots + https://bugs.webkit.org/show_bug.cgi?id=98507 - Applications should implement popup menu by overriding - smart class function to support select tag. + Reviewed by Martin Robinson. - * PlatformEfl.cmake: - * UIProcess/API/efl/EWebKit2.h: Included ewk_popup_menu_item.h - * UIProcess/API/efl/PageClientImpl.cpp: - (WebKit::PageClientImpl::createPopupMenuProxy): - * UIProcess/API/efl/ewk_popup_menu_item.cpp: Added. - (_Ewk_Popup_Menu_Item): - (_Ewk_Popup_Menu_Item::_Ewk_Popup_Menu_Item): - (ewk_popup_menu_item_new): - (ewk_popup_menu_item_free): - (ewk_popup_menu_item_type_get): Added API to retrieve type of item. - (ewk_popup_menu_item_text_get): Added API to retrieve text of item. - * UIProcess/API/efl/ewk_popup_menu_item.h: Added. - * UIProcess/API/efl/ewk_popup_menu_item_private.h: Added. - * UIProcess/API/efl/ewk_view.cpp: - (_Ewk_View_Private_Data): - (_Ewk_View_Private_Data::_Ewk_View_Private_Data): - (_Ewk_View_Private_Data::~_Ewk_View_Private_Data): - (ewk_view_popup_menu_request): Added to call popup_menu_show, smart class function. - (ewk_view_popup_menu_close): Added API to call popup_menu_hide, smart class function. - (ewk_view_popup_menu_select): Added API to change selected index. - * UIProcess/API/efl/ewk_view.h: - Added smart class function for applications to override. - * UIProcess/API/efl/ewk_view_private.h: - * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp: - (EWK2UnitTest::EWK2UnitTestBase::EWK2UnitTestBase): - (EWK2UnitTest::EWK2UnitTestBase::SetUp): - (EWK2UnitTest::EWK2UnitTestBase::loadUrlSync): - (EWK2UnitTest::EWK2UnitTestBase::waitUntilLoadFinished): - Extracted from loadUrlSync for tests using ewk_view_html_string_load to - share onLoadFinished. - * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h: - (EWK2UnitTest::EWK2UnitTestBase::ewkViewClass): - Added ewkViewClass to test smart methods such as popup_menu_show. - * UIProcess/API/efl/tests/test_ewk2_view.cpp: - (popup_menu_show): - (TEST_F): Added a test case for ewk_view_popup_menu_select and related codes. - * UIProcess/efl/WebPopupMenuProxyEfl.cpp: Added. - (WebKit): - (WebKit::WebPopupMenuProxyEfl::WebPopupMenuProxyEfl): - (WebKit::WebPopupMenuProxyEfl::showPopupMenu): - (WebKit::WebPopupMenuProxyEfl::hidePopupMenu): - (WebKit::WebPopupMenuProxyEfl::valueChanged): - * UIProcess/efl/WebPopupMenuProxyEfl.h: Added. - (WebPopupMenuProxyEfl): - (WebKit::WebPopupMenuProxyEfl::create): + Make sure we retain the page URL before asking for the icon. -2012-08-27 Kangil Han <kangil.han@samsung.com> + * UIProcess/API/gtk/WebKitFaviconDatabase.cpp: + (getIconSurfaceSynchronously): Retain the page URL before asking + for the icon, and release it if we fail to get an icon. + (processPendingIconsForPageURL): Renamed to make it clear it + receives a Sring and not a char* and moved + getIconSurfaceSynchronously() call out of the loop to call it only + once even if there are multiple requests pending. + (iconDataReadyForPageURLCallback): Do not retain the page URL + here. - [EFL][WK2] Fix PageClientImpl layer violation - https://bugs.webkit.org/show_bug.cgi?id=94906 +2012-10-08 Carlos Garcia Campos <cgarcia@igalia.com> - Reviewed by Gyuyoung Kim. + [GTK] Don't use the C API internally in WebKitWebContext + https://bugs.webkit.org/show_bug.cgi?id=96768 - Given WK2 hierarchy, current PageClientImpl has violated API layer by having WebPageProxy. - Subsequently, it has been given WebContext, static singleton object, in its argument unnecessarily. - Therefore, this patch moved WebPageProxy from PageClientImpl to Ewk_View_Private_Data. - Plus, WebContext was removed from PageClientImpl since it is not needed anymore. - As a result, EFL has same form of PageClientImpl with other ports, i.e. gtk+ and mac. - From API point of view, nothing has been changed because all things done locally. + Reviewed by Martin Robinson. - * UIProcess/API/efl/PageClientImpl.cpp: - (WebKit::PageClientImpl::PageClientImpl): - (WebKit::PageClientImpl::createDrawingAreaProxy): - * UIProcess/API/efl/PageClientImpl.h: - (WebKit::PageClientImpl::create): - (PageClientImpl): - * UIProcess/API/efl/ewk_view.cpp: - (_Ewk_View_Private_Data): - (_ewk_view_smart_focus_in): - (_ewk_view_smart_focus_out): - (_ewk_view_smart_mouse_wheel): - (_ewk_view_smart_mouse_down): - (_ewk_view_smart_mouse_up): - (_ewk_view_smart_mouse_move): - (_ewk_view_smart_key_down): - (_ewk_view_smart_key_up): - (_ewk_view_smart_calculate): - (_ewk_view_smart_color_set): - (_ewk_view_initialize): - (ewk_view_uri_update): - (ewk_view_uri_set): - (ewk_view_reload): - (ewk_view_reload_bypass_cache): - (ewk_view_stop): - (ewk_view_title_get): - (ewk_view_load_progress_get): - (ewk_view_scale_set): - (ewk_view_scale_get): - (ewk_view_device_pixel_ratio_set): - (ewk_view_device_pixel_ratio_get): - (ewk_view_theme_set): - (ewk_view_back): - (ewk_view_forward): - (ewk_view_intent_deliver): - (ewk_view_back_possible): - (ewk_view_forward_possible): - (ewk_view_html_string_load): - (ewk_view_page_get): - (ewk_view_setting_encoding_custom_get): - (ewk_view_setting_encoding_custom_set): - (ewk_view_text_find): - (ewk_view_text_find_highlight_clear): + Using the C++ classes directly instead of the C API wrappers we + avoid a lot of toImpl/toAPI casts, string conversions and + allocations. The code is also a lot simpler and easier to read. + + * UIProcess/API/gtk/WebKitDownloadClient.cpp: + (didStart): + (didReceiveResponse): + (didReceiveData): + (decideDestinationWithSuggestedFilename): + (didCreateDestination): + (didFail): + (didCancel): + (didFinish): + (attachDownloadClientToContext): + * UIProcess/API/gtk/WebKitRequestManagerClient.cpp: + (attachRequestManagerClientToContext): + * UIProcess/API/gtk/WebKitSecurityManager.cpp: + (registerSecurityPolicyForURIScheme): + * UIProcess/API/gtk/WebKitWebContext.cpp: + (_WebKitWebContextPrivate): + (createDefaultWebContext): + (webkit_web_context_set_cache_model): + (webkit_web_context_get_cache_model): + (webkit_web_context_clear_cache): + (webkit_web_context_download_uri): + (webkit_web_context_get_cookie_manager): + (webkit_web_context_get_favicon_database_directory): + (webkit_web_context_get_favicon_database): + (webkit_web_context_set_additional_plugins_directory): + (webkitWebContextGetPluginThread): + (webkit_web_context_register_uri_scheme): + (webkitWebContextGetOrCreateDownload): + (webkitWebContextRemoveDownload): + (webkitWebContextGetContext): + (webkitWebContextGetRequestManager): + * UIProcess/API/gtk/WebKitWebContextPrivate.h: + * UIProcess/API/gtk/WebKitWebView.cpp: + (webkitWebViewConstructed): -2012-08-27 Sheriff Bot <webkit.review.bot@gmail.com> +2012-10-07 Kangil Han <kangil.han@samsung.com> - Unreviewed, rolling out r126836. - http://trac.webkit.org/changeset/126836 - https://bugs.webkit.org/show_bug.cgi?id=95163 + [EFL][WK2] Fix unused parameter compile warning. + https://bugs.webkit.org/show_bug.cgi?id=98610 - Broke all Apple ports, EFL, and Qt. (Requested by tkent on - #webkit). + Reviewed by Laszlo Gombos. - * Platform/CoreIPC/ArgumentCoders.h: - * Platform/CoreIPC/Connection.cpp: - (CoreIPC::Connection::SyncMessageState::getOrCreate): - (CoreIPC::Connection::waitForMessage): - (CoreIPC::Connection::processIncomingMessage): - * Platform/gtk/WorkQueueGtk.cpp: - (WorkQueue::registerEventSourceHandler): - (WorkQueue::unregisterEventSourceHandler): - * Platform/mac/WorkQueueMac.cpp: - (WorkQueue::unregisterMachPortEventHandler): - * Shared/Plugins/NPRemoteObjectMap.cpp: - (WebKit::NPRemoteObjectMap::pluginDestroyed): - * Shared/UserMessageCoders.h: - (WebKit::UserMessageEncoder::baseEncode): - * Shared/WebPreferencesStore.cpp: - (WebKit::valueForKey): - (WebKit::WebPreferencesStore::getBoolValueForKey): - * Shared/mac/WebCoreArgumentCodersMac.mm: - (CoreIPC::::decode): - * Shared/qt/ArgumentCodersQt.cpp: - (CoreIPC::::decode): - * Shared/soup/WebCoreArgumentCodersSoup.cpp: - (CoreIPC::::decode): - * UIProcess/API/efl/ewk_back_forward_list.cpp: - (_Ewk_Back_Forward_List::~_Ewk_Back_Forward_List): - * UIProcess/API/efl/ewk_context.cpp: - (_Ewk_Context::~_Ewk_Context): - * UIProcess/API/efl/ewk_view.cpp: - (_ewk_view_priv_loading_resources_clear): - * UIProcess/API/gtk/WebKitWebView.cpp: - (webkit_web_view_get_subresources): - * UIProcess/API/gtk/WebKitWebViewBase.cpp: - (webkitWebViewBaseContainerForall): - * UIProcess/API/mac/WKPrintingView.mm: - (-[WKPrintingView _expectedPreviewCallbackForRect:]): - (pageDidDrawToPDF): - (-[WKPrintingView _drawPreview:]): - * UIProcess/API/mac/WKView.mm: - (commandNameForSelector): - (-[WKView validateUserInterfaceItem:]): - * UIProcess/CoordinatedGraphics/CoordinatedBackingStore.cpp: - (WebKit::CoordinatedBackingStore::updateTile): - (WebKit::CoordinatedBackingStore::texture): - (WebKit::CoordinatedBackingStore::paintToTextureMapper): - (WebKit::CoordinatedBackingStore::commitTileOperations): - * UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.cpp: - (WebKit::LayerTreeCoordinatorProxy::updateTileForLayer): - * UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp: - (WebKit::LayerTreeRenderer::adjustPositionForFixedLayers): - (WebKit::LayerTreeRenderer::syncCanvas): - (WebKit::LayerTreeRenderer::setLayerChildren): - (WebKit::LayerTreeRenderer::setLayerFilters): - (WebKit::LayerTreeRenderer::setLayerState): - (WebKit::LayerTreeRenderer::assignImageToLayer): - * UIProcess/GeolocationPermissionRequestManagerProxy.cpp: - (WebKit::GeolocationPermissionRequestManagerProxy::invalidateRequests): - * UIProcess/InspectorServer/WebInspectorServer.cpp: - (WebKit::WebInspectorServer::~WebInspectorServer): - (WebKit::WebInspectorServer::registerPage): - * UIProcess/InspectorServer/WebSocketServerConnection.cpp: - (WebKit::WebSocketServerConnection::sendHTTPResponseHeader): - * UIProcess/InspectorServer/qt/WebInspectorServerQt.cpp: - (WebKit::WebInspectorServer::buildPageList): - * UIProcess/Notifications/NotificationPermissionRequestManagerProxy.cpp: - (WebKit::NotificationPermissionRequestManagerProxy::invalidateRequests): - * UIProcess/Plugins/PluginProcessProxy.cpp: - (WebKit::PluginProcessProxy::pluginProcessCrashedOrFailedToLaunch): - * UIProcess/WebContext.cpp: - (WebKit::createDictionaryFromHashMap): - * UIProcess/WebIconDatabase.cpp: - (WebKit::WebIconDatabase::didFinishURLImport): - * UIProcess/WebIntentData.cpp: - (WebKit::WebIntentData::extras): - * UIProcess/WebProcessProxy.cpp: - (WebKit::WebProcessProxy::checkURLReceivedFromWebProcess): - (WebKit::WebProcessProxy::addBackForwardItem): - (WebKit::WebProcessProxy::frameCountInPage): - * WebProcess/Geolocation/GeolocationPermissionRequestManager.cpp: - (WebKit::GeolocationPermissionRequestManager::cancelRequestForGeolocation): - (WebKit::GeolocationPermissionRequestManager::didReceiveGeolocationPermissionDecision): - * WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp: - (WebKit::InjectedBundleNodeHandle::getOrCreate): - * WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp: - (WebKit::InjectedBundleRangeHandle::getOrCreate): - * WebProcess/InjectedBundle/InjectedBundleIntent.cpp: - (WebKit::InjectedBundleIntent::extras): - * WebProcess/Notifications/WebNotificationManager.cpp: - (WebKit::WebNotificationManager::policyForOrigin): - (WebKit::WebNotificationManager::show): - (WebKit::WebNotificationManager::clearNotifications): - (WebKit::WebNotificationManager::removeNotificationFromContextMap): - * WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp: - (WebKit::NPRuntimeObjectMap::invalidate): - * WebProcess/Plugins/Netscape/NetscapePlugin.cpp: - (WebKit::NetscapePlugin::destroyStream): - (WebKit::NetscapePlugin::unscheduleTimer): - (WebKit::NetscapePlugin::frameDidFinishLoading): - (WebKit::NetscapePlugin::frameDidFail): - * WebProcess/Plugins/PluginView.cpp: - (WebKit::buildHTTPHeaders): - (WebKit::PluginView::~PluginView): - * WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp: - (WebCore::CoordinatedGraphicsLayer::layerByID): - * WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp: - (WebKit::LayerTreeCoordinator::adoptImageBackingStore): - (WebKit::LayerTreeCoordinator::releaseImageBackingStore): - * WebProcess/WebPage/WebBackForwardListProxy.cpp: - (WebKit::WebBackForwardListProxy::removeItem): - * WebProcess/WebPage/mac/WebPageMac.mm: - (WebKit::commandNameForSelectorName): - * WebProcess/WebProcess.cpp: - (WebKit::WebProcess::visitedLinkStateChanged): - (WebKit::WebProcess::allVisitedLinkStateChanged): - (WebKit::WebProcess::focusedWebPage): - (WebKit::WebProcess::createWebPage): - (WebKit::WebProcess::webPageGroup): - (WebKit::fromCountedSetToHashMap): - (WebKit::WebProcess::setTextCheckerState): + Fixed unused parameter compile warning by removing initiatingPageRef parameter name. -2012-08-27 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org> + * UIProcess/API/efl/ewk_context_request_manager_client.cpp: + (didReceiveURIRequest): + +2012-10-07 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org> Rename first/second to key/value in HashMap iterators https://bugs.webkit.org/show_bug.cgi?id=82784 @@ -6408,7 +2644,6 @@ (WebKit::NPRuntimeObjectMap::invalidate): * WebProcess/Plugins/Netscape/NetscapePlugin.cpp: (WebKit::NetscapePlugin::destroyStream): - (WebKit::NetscapePlugin::unscheduleTimer): (WebKit::NetscapePlugin::frameDidFinishLoading): (WebKit::NetscapePlugin::frameDidFail): * WebProcess/Plugins/PluginView.cpp: @@ -6432,13969 +2667,1119 @@ (WebKit::fromCountedSetToHashMap): (WebKit::WebProcess::setTextCheckerState): -2012-08-27 Simon Fraser <simon.fraser@apple.com> - - Make Force Repaint work with tiled backing store - https://bugs.webkit.org/show_bug.cgi?id=95102 - - Reviewed by Dan Bernstein. - - Have forceRepaint() call down to the tiled backing of each FrameView, - so they can repaint. - - * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm: - (WebKit::TiledCoreAnimationDrawingArea::forceRepaint): - -2012-08-27 Rafael Brandao <rafael.lobo@openbossa.org> - - [Qt] Fix typo in CoordinatedGraphicsLayer::syncAnimatedProperties - https://bugs.webkit.org/show_bug.cgi?id=95085 - - Reviewed by Noam Rosenthal. - - * WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp: The flag should be disabled - once we process the sync for animated properties. Previously, it was never disabling it once enabled. - -2012-08-27 Philippe Normand <pnormand@igalia.com> - - [GStreamer][Qt] WebAudio support - https://bugs.webkit.org/show_bug.cgi?id=94806 - - Reviewed by Simon Hausmann. - - New boolean webAudioEnabled WebSetting to be used at runtime to - toggle WebAudio support on or off. - - * UIProcess/API/qt/qwebpreferences.cpp: - (QWebPreferencesPrivate::testAttribute): - (QWebPreferencesPrivate::setAttribute): - (QWebPreferences::webAudioEnabled): - (QWebPreferences::setWebAudioEnabled): - * UIProcess/API/qt/qwebpreferences_p.h: - * UIProcess/API/qt/qwebpreferences_p_p.h: - -2012-08-27 Simon Hausmann <simon.hausmann@nokia.com> - - [Qt][WK2] REGRESSION(r126067): It made qmltests::DoubleTapToZoom::test_basic() fail - https://bugs.webkit.org/show_bug.cgi?id=94949 - - Reviewed by Kenneth Rohde Christiansen. - - Use JSON to serialize the client rect for the async evaluateJavaScript call. - - * UIProcess/API/qt/tests/qmltests/WebView/tst_doubleTapToZoom.qml: - -2012-08-27 Simon Hausmann <simon.hausmann@nokia.com> - - [Qt] Fix failing QML2 auto tests due to conflicting signal declaration - https://bugs.webkit.org/show_bug.cgi?id=95059 - - Reviewed by Kenneth Rohde Christiansen. - - Don't define a scaleChanged signal when QQuickItem already declares one to notify about changes - in the scale property. As it turns out there is not need for declaring a signal in the test case - at all. - - * UIProcess/API/qt/tests/qmltests/WebView/tst_doubleTapToZoom.qml: - * UIProcess/API/qt/tests/qmltests/WebView/tst_fitToView.qml: - -2012-08-27 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> - - Rename RegisterProtocolHandler API to NavigatorContentUtils - https://bugs.webkit.org/show_bug.cgi?id=94920 - - Reviewed by Adam Barth. +2012-10-07 Dan Bernstein <mitz@apple.com> - Renaming whatever RegisterProtocolHandler-prefixed to NavigatorContentUtils-prefixed. + Web process XPC services don't have correct version information in their Info.plist files + https://bugs.webkit.org/show_bug.cgi?id=98619 - * Configurations/FeatureDefines.xcconfig: - * WebProcess/WebCoreSupport/WebNavigatorContentUtilsClient.h: Renamed from Source/WebKit2/WebProcess/WebCoreSupport/WebRegisterProtocolHandlerClient.h. - (WebKit): - (WebNavigatorContentUtilsClient): - (WebKit::WebNavigatorContentUtilsClient::~WebNavigatorContentUtilsClient): - (WebKit::WebNavigatorContentUtilsClient::isProtocolHandlerRegistered): - (WebKit::WebNavigatorContentUtilsClient::unregisterProtocolHandler): - -2012-08-25 Vivek Galatage <vivekgalatage@gmail.com> - - WinCairo Build Broken due to missing export definitions - https://bugs.webkit.org/show_bug.cgi?id=95007 - - Reviewed by Ryosuke Niwa. - - Export symbols were missing from the def file for WinCairo port. Added - these missing symbols to avoid build break - - * win/WebKit2CFLite.def: - -2012-08-24 Alexey Proskuryakov <ap@apple.com> - - <rdar://problem/12157689> REGRESSION: WebProcessProxy destructor is sometimes called recursively - https://bugs.webkit.org/show_bug.cgi?id=94997 - - Reviewed by Dan Bernstein. - - * UIProcess/WebContext.cpp: (WebKit::WebContext::disconnectProcess): Make sure that - we don't try to delete WebProcessProxy while the vector still contains it. Previously, - we used RefPtr::clear, which zeroes out the value before destructing, but doing that - in every RefPtr destructor would be bad for performance. - -2012-08-24 Benjamin Poulain <bpoulain@apple.com> - - Unify Number to StringImpl conversion - https://bugs.webkit.org/show_bug.cgi?id=94879 - - Reviewed by Geoffrey Garen. - - * win/WebKit2.def: Update the exported symbols. - -2012-08-24 Andras Becsi <andras.becsi@nokia.com> - - [Qt][WK2] Fix custom device pixel ratio propagation and add QML API tests - https://bugs.webkit.org/show_bug.cgi?id=88531 - - Reviewed by Kenneth Rohde Christiansen. - - Defer setting the custom device pixel ratio until the page item has - a valid size to make sure that the scale factor reaches the web process. - - QML test based on patch by Alexander Færøy. - - * UIProcess/API/qt/qquickwebview.cpp: - (QQuickWebViewPrivate::QQuickWebViewPrivate): - (QQuickWebViewPrivate::didRelaunchProcess): - (QQuickWebViewPrivate::didChangeContentsSize): - (QQuickWebViewFlickablePrivate::didChangeContentsSize): - (QQuickWebViewExperimental::devicePixelRatio): - (QQuickWebViewExperimental::setDevicePixelRatio): - * UIProcess/API/qt/qquickwebview_p.h: - * UIProcess/API/qt/qquickwebview_p_p.h: - (QQuickWebViewPrivate): - * UIProcess/API/qt/tests/qmltests/WebView/tst_devicePixelRatio.qml: Added. - Test case for the QML device pixel ratio API. - -2012-08-24 Kangil Han <kangil.han@samsung.com> - - [EFL] Fix compile warning - https://bugs.webkit.org/show_bug.cgi?id=94930 - - Reviewed by Kenneth Rohde Christiansen. - - Fixed compile warning. - - * UIProcess/API/efl/ewk_back_forward_list.cpp: - (ewk_back_forward_list_n_back_items_copy): NULL used in arithmetic [-Wpointer-arith] - (ewk_back_forward_list_n_forward_items_copy): NULL used in arithmetic [-Wpointer-arith] - -2012-08-24 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> - - [EFL][WK2] Back-forward list API needs extension - https://bugs.webkit.org/show_bug.cgi?id=94582 - - Reviewed by Kenneth Rohde Christiansen. - - Added several new functions wrapping existing WK2 C back-forward list API - and returning list of items preceding or following the current one. - Corresponding API unit tests are also added. - - * UIProcess/API/efl/ewk_back_forward_list.cpp: - (createEinaList): - (ewk_back_forward_list_n_back_items_copy): - (ewk_back_forward_list_n_forward_items_copy): - * UIProcess/API/efl/ewk_back_forward_list.h: - * UIProcess/API/efl/tests/test_ewk2_back_forward_list.cpp: - (freeEinaList): - (TEST_F): - -2012-08-24 Michael Brüning <michaelbruening@gmail.com> - - [Qt][WK2] Make viewport related experimental.test properties encapsulated. - https://bugs.webkit.org/show_bug.cgi?id=88320 - - Reviewed by Kenneth Rohde Christiansen. - - Introducing a new viewport attribute to QWebKitTest to group the viewport related - attributes into one QJsonObject. Also adding a static method to convert a QSizeF to - a QJsonObject. - - * UIProcess/API/qt/qwebkittest.cpp: - (qSizeFToJsonObject): - (QWebKitTest::viewport): - (QWebKitTest::devicePixelRatio): - (QWebKitTest::contentsScale): - * UIProcess/API/qt/qwebkittest_p.h: - * UIProcess/qt/QtViewportHandler.cpp: - (WebKit::QtViewportHandler::viewportAttributesChanged): - -2012-08-23 Frederik Gladhorn <gladhorn@kde.org> - - Make it possible to build WebKit with Python 3 (and 2) - https://bugs.webkit.org/show_bug.cgi?id=94814 - - Reviewed by Ryosuke Niwa. - - Exceptions need a hack to work with both. - string.join was already deprecated in Python 2. - Relative imports are no longer supported, use package name instead. - - * Scripts/webkit2/messages.py: - * Scripts/webkit2/parser.py: - -2012-08-24 Mark Rowe <mrowe@apple.com> - - <http://webkit.org/b/94910> Copy the entire webkit2 module in to the WebKit2 framework wrapper. - - Reviewed by Dan Bernstein. - - This will allow relative imports within the webkit2 module to be removed in the future without - requiring future changes to clients of the module. - - * WebKit2.xcodeproj/project.pbxproj: Remove the webkit2 group from the project, and add it back - as a folder reference. This allows the directory and its contents to be copied in to the PrivateHeaders - directory. We also need to add a script phase to clean up any .pyc files that may be present in - the module. - -2012-08-23 Sheriff Bot <webkit.review.bot@gmail.com> - - Unreviewed, rolling out r126542. - http://trac.webkit.org/changeset/126542 - https://bugs.webkit.org/show_bug.cgi?id=94907 - - Broke WK2 build on OS X (Requested by tronical_ on #webkit). - - * Scripts/webkit2/messages.py: - * Scripts/webkit2/parser.py: - -2012-08-23 Frederik Gladhorn <gladhorn@kde.org> - - Make it possible to build WebKit with Python 3 (and 2) - https://bugs.webkit.org/show_bug.cgi?id=94814 - - Reviewed by Ryosuke Niwa. - - Exceptions need a hack to work with both. - string.join was already deprecated in Python 2. - Relative imports are no longer supported, use package name instead. - - * Scripts/webkit2/messages.py: - * Scripts/webkit2/parser.py: + Reviewed by Anders Carlsson. -2012-08-23 Mark Hahnenberg <mhahnenberg@apple.com> + * WebProcessService/Info.plist: Added CFBundleGetInfoString, and changed + CFBundleShortVersionString and CFBundleVersion to report the source version. + * WebProcessServiceForWebKitDevelopment/Info.plist: Ditto. - Change behavior of MasqueradesAsUndefined to better accommodate DFG changes - https://bugs.webkit.org/show_bug.cgi?id=93884 +2012-10-06 Dan Bernstein <mitz@apple.com> - Reviewed by Filip Pizlo. + WebKit2 part of <rdar://problem/12446507> [mac] WebKit clients cannot change the behavior of text-rendering: auto + https://bugs.webkit.org/show_bug.cgi?id=98601 - With some upcoming changes to the DFG to remove uses of ClassInfo, we will be changing the behavior of - MasqueradesAsUndefined. In order to make this change consistent across all of our execution engines, - we will make this change to MasqueradesAsUndefined as a separate patch. After this patch, MasqueradesAsUndefined - objects will only masquerade as undefined in their original context (i.e. their original JSGlobalObject). - For example, if an object that masquerades as undefined in frame A is passed to frame B, it will not - masquerade as undefined within frame B, but it will continue to masquerade in frame A. + Reviewed by Darin Adler. - * WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp: - (WebKit::NPRuntimeObjectMap::convertJSValueToNPVariant): Passing ExecState to toBoolean call. + * Shared/WebProcessCreationParameters.cpp: + (WebKit::WebProcessCreationParameters::WebProcessCreationParameters): Added initializer for + to shouldEnableKerningAndLigaturesByDefault. The initial value is false. + (WebKit::WebProcessCreationParameters::encode): Added encoding of + shouldEnableKerningAndLigaturesByDefault. + (WebKit::WebProcessCreationParameters::decode): Added decoding of + shouldEnableKerningAndLigaturesByDefault. + * Shared/WebProcessCreationParameters.h: + (WebProcessCreationParameters): Added shouldEnableKerningAndLigaturesByDefault boolean + member variable. + * UIProcess/mac/WebContextMac.mm: + (WebKit::WebContext::platformInitializeWebProcess): Changed to set + shouldEnableKerningAndLigaturesByDefault in the process creation parameters according to + the value of the WebKitKerningAndLigaturesEnabledByDefault user defaults key. + * WebProcess/mac/WebProcessMac.mm: + (WebKit::WebProcess::platformInitializeWebProcess): Added a call to + Font::setDefaultTypesettingFeatures() to enable kerning and ligatures if requested in the + process creation parameters. -2012-08-23 Brady Eidson <beidson@apple.com> +2012-10-05 Sudarsana Nagineni <sudarsana.nagineni@intel.com> - REGRESSION (r124815): PDF in frame does not display any more - <rdar://problem/12063306> and https://bugs.webkit.org/show_bug.cgi?id=94869 + [WK2][WTR] WebKitTestRunner needs testRunner.setSerializeHTTPLoads + https://bugs.webkit.org/show_bug.cgi?id=98524 Reviewed by Alexey Proskuryakov. - * WebProcess/Plugins/PDF/BuiltInPDFView.mm: - (WebKit::BuiltInPDFView::initialize): Tell the controller that initialization was successful. - -2012-08-23 Mark Rowe <mrowe@apple.com> - - Make WebKit2 build with the latest version of clang. - - Reviewed by Dan Bernstein. - - * Configurations/Base.xcconfig: Ensure that operator new isn't exported as a weak external symbol. - -2012-08-22 Jesus Sanchez-Palencia <jesus.palencia@openbossa.org> - - [EFL] Use WTF_USE_SOUP instead BUILDING_SOUP__ - https://bugs.webkit.org/show_bug.cgi?id=94744 - - Reviewed by Gustavo Noronha Silva. - - Use #if defined(WTF_USE_SOUP) instead of #if defined(BUILDING_SOUP__) - since the former is used everywhere. - - * Shared/API/c/WKBase.h: - -2012-08-23 Christophe Dumez <christophe.dumez@intel.com> - - [EFL][WK2] Free ewk context data on program exit. - https://bugs.webkit.org/show_bug.cgi?id=94808 - - Reviewed by Kenneth Rohde Christiansen. - - Make sure the default Ewk_Context gets freed - on program exit. - - The patch also fixes leaking of WKContextRef - inside Ewk_Context which should have been - adopted. - - * UIProcess/API/efl/ewk_context.cpp: - (_Ewk_Context::_Ewk_Context): - (ewk_context_default_get): - -2012-08-23 Adrienne Walker <enne@google.com> - - Convert ScrollableArea ASSERT_NOT_REACHED virtuals - https://bugs.webkit.org/show_bug.cgi?id=93306 - - Reviewed by Darin Adler. - - Add implementations where necessary to make derived classes concrete. - Add OVERRIDE for ScrollableArea functions. + Add implementation for testRunner.setSerializeHTTPLoads in + WebKitTestRunner. - * UIProcess/win/WebPopupMenuProxyWin.cpp: - (WebKit::WebPopupMenuProxyWin::visibleHeight): + * WebProcess/InjectedBundle/API/c/WKBundle.cpp: + (WKBundleSetSerialLoadingEnabled): + * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h: + * WebProcess/InjectedBundle/InjectedBundle.cpp: + (WebKit::InjectedBundle::setSerialLoadingEnabled): (WebKit): - (WebKit::WebPopupMenuProxyWin::visibleWidth): - (WebKit::WebPopupMenuProxyWin::contentsSize): - (WebKit::WebPopupMenuProxyWin::scrollableAreaBoundingBox): - * UIProcess/win/WebPopupMenuProxyWin.h: - (WebPopupMenuProxyWin): - * WebProcess/Plugins/PDF/BuiltInPDFView.h: - -2012-08-23 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> - - [EFL][WK2] ewk_intent_request API test does not free Eina_List - https://bugs.webkit.org/show_bug.cgi?id=94809 - - Reviewed by Kenneth Rohde Christiansen. - - The used Eina_List should be freed due to ewk_intent_suggestions_get() documentation. - - * UIProcess/API/efl/tests/test_ewk2_intents.cpp: - (onIntentReceived): - -2012-08-23 Andras Becsi <andras.becsi@nokia.com> - - [Qt][WK2] Helper functions used by the raw webview tests should not be guarded by HAVE_QTQUICK - - Reviewed by Simon Hausmann. - - This fixes the build if the QtQuick module is not present. - - * UIProcess/API/qt/tests/util.cpp: - (messageHandler): - (suppressDebugOutput): - * UIProcess/API/qt/tests/util.h: - -2012-08-23 Carlos Garcia Campos <cgarcia@igalia.com> - - REGRESSION(r126306): it broke the plugin process - https://bugs.webkit.org/show_bug.cgi?id=94797 - - Reviewed by Xan Lopez. - - * GNUmakefile.am: - -2012-08-23 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> - - [WK2] Refactoring: WebBackForwardList getters should be const - https://bugs.webkit.org/show_bug.cgi?id=94711 - - Reviewed by Kenneth Rohde Christiansen. - - Before the change were not consistent with each other - (WebBackForwardList::entries() was const but WebBackForwardList::currentIndex() was not). - Besides having not const getters is not a good practice in C++. (Please read - Scott Meyers. Effective C++ (3rd edition). ISBN: 0-321-33487-6. - Item 3: 'Use const whenever possible'). - - * UIProcess/WebBackForwardList.cpp: - (WebKit::WebBackForwardList::backListCount): - (WebKit::WebBackForwardList::forwardListCount): - (WebKit::WebBackForwardList::backListAsImmutableArrayWithLimit): - (WebKit::WebBackForwardList::forwardListAsImmutableArrayWithLimit): - * UIProcess/WebBackForwardList.h: - (WebKit::WebBackForwardList::currentIndex): - (WebBackForwardList): - -2012-08-22 Nikhil Bhargava <nbhargava@google.com> - - Reduce Font.h includes across project -- improves RenderObject.h compile time - https://bugs.webkit.org/show_bug.cgi?id=93629 + * WebProcess/InjectedBundle/InjectedBundle.h: + (InjectedBundle): - Reviewed by Eric Seidel. +2012-10-05 Sheriff Bot <webkit.review.bot@gmail.com> - Adds includes due to change in RenderStyle.h + Unreviewed, rolling out r130556 and r130564. + http://trac.webkit.org/changeset/130556 + http://trac.webkit.org/changeset/130564 + https://bugs.webkit.org/show_bug.cgi?id=98572 - * WebProcess/WebPage/mac/WebPageMac.mm: + The patch wasn't reviewed by a reviewer and it is breaking + Chromium Windows (Requested by jchaffraix on #webkit). -2012-08-22 Beth Dakin <bdakin@apple.com> - - https://bugs.webkit.org/show_bug.cgi?id=94401 - Add support for making a web site become paginated using overflow: - paged-x | paged-y - -and corresponding- - <rdar://problem/11831783> + * WebProcess/WebCoreSupport/mac/WebSystemInterface.mm: + (InitWebCoreSystemInterface): - Reviewed by Dave Hyatt. +2012-10-05 Sam Weinig <sam@webkit.org> - WebCore::Page::Pagination is now just WebCore::Pagination. - * Shared/WebPageCreationParameters.h: - (WebPageCreationParameters): - * UIProcess/API/C/WKPage.cpp: - (WKPageSetPaginationMode): - (WKPageGetPaginationMode): - * UIProcess/WebPageProxy.cpp: - (WebKit::WebPageProxy::WebPageProxy): - (WebKit::WebPageProxy::setPaginationMode): - * UIProcess/WebPageProxy.h: - (WebPageProxy): - (WebKit::WebPageProxy::paginationMode): - * WebProcess/WebPage/WebPage.cpp: - (WebKit::WebPage::setPaginationMode): - (WebKit::WebPage::setPaginationBehavesLikeColumns): - (WebKit::WebPage::setPageLength): - (WebKit::WebPage::setGapBetweenPages): - * WebProcess/WebPage/WebPage.h: - (WebPage): + Set the current working directory to TMPDIR when entering the sandbox in the plug-in process. + Based on a patch by Ivan Krstić. -2012-08-22 Jer Noble <jer.noble@apple.com> + Reviewed by Anders Carlsson. - Browser menu visible when calling webkitRequestFullscreen after user manually enters full screen mode - https://bugs.webkit.org/show_bug.cgi?id=93892 + * WebProcess/Plugins/Netscape/mac/NetscapeSandboxFunctions.mm: + (enterSandbox): - Reviewed by Eric Carlson. +2012-10-05 Tim Horton <timothy_horton@apple.com> - Allow the full screen window to "Join All Spaces", so that once it's original full screen space is destroyed, - it can join the new one. + [cg] GraphicsContextCG should ask CG whether the shadow offset workaround is required + https://bugs.webkit.org/show_bug.cgi?id=98565 + <rdar://problem/12436468> - * UIProcess/mac/WKFullScreenWindowController.mm: - (-[WKFullScreenWindowController _startEnterFullScreenAnimationWithDuration:]): + Reviewed by Simon Fraser. -2012-08-22 Alexey Proskuryakov <ap@apple.com> + Add wkCGContextDrawsWithCorrectShadowOffsets. - [WK2] Support posting injected bundle messages to a page - https://bugs.webkit.org/show_bug.cgi?id=94630 + * WebProcess/WebCoreSupport/mac/WebSystemInterface.mm: + (InitWebCoreSystemInterface): - Reviewed by Sam Weinig. +2012-10-04 Eric Carlson <eric.carlson@apple.com> - * Shared/APIClientTraits.cpp: - * Shared/APIClientTraits.h: - * Shared/CoreIPCSupport/InjectedBundleMessageKinds.h: - * UIProcess/API/C/WKPage.cpp: - (WKPagePostMessageToInjectedBundle): - * UIProcess/API/C/WKPage.h: - * UIProcess/WebPageProxy.cpp: - (WebKit::WebPageProxy::postMessageToInjectedBundle): - * UIProcess/WebPageProxy.h: - * WebProcess/InjectedBundle/API/c/WKBundle.h: - * WebProcess/InjectedBundle/InjectedBundle.cpp: - (WebKit::InjectedBundle::didReceiveMessageToPage): - (WebKit::InjectedBundle::didReceiveMessage): - * WebProcess/InjectedBundle/InjectedBundle.h: - * WebProcess/InjectedBundle/InjectedBundleClient.cpp: - (WebKit::InjectedBundleClient::didReceiveMessageToPage): - * WebProcess/InjectedBundle/InjectedBundleClient.h: - (InjectedBundleClient): - Added a PostMessageToPage injected bundle message type, with all associated - machinery. API is WKPagePostMessageToInjectedBundle(), and an associated - didReceiveMessageToPage() injected bundle client function. + Allow ports to override text track rendering style + https://bugs.webkit.org/show_bug.cgi?id=97800 + <rdar://problem/12044964> - * WebProcess/qt/QtBuiltinBundle.cpp: (WebKit::QtBuiltinBundle::initialize): - Updated for new client API. + Reviewed by Silvia Pfeiffer. - * UIProcess/WebContext.cpp: (WebKit::WebContext::postMessageToInjectedBundle): - Implemented multiple process model case. + * WebProcess/WebCoreSupport/mac/WebSystemInterface.mm: + (InitWebCoreSystemInterface): Initialize new WKSI function pointers. -2012-08-22 Gustavo Noronha Silva <gns@gnome.org> +2012-10-05 José Dapena Paz <jdapena@igalia.com> - [GTK] Split WebCore/platform into a separate library - https://bugs.webkit.org/show_bug.cgi?id=94435 + [GTK] Add support for creating EGL contexts + https://bugs.webkit.org/show_bug.cgi?id=77921 Reviewed by Martin Robinson. - More people have been reporting problems when linking WebCore because - the command line limit is being exceeded. Splitting WebCore a bit more - is in order. - - * GNUmakefile.am: link libWebCorePlatform into libwebkit2gtk - -2012-08-22 Carlos Garcia Campos <cgarcia@igalia.com> - - [GTK] Preferred languages and spellchecker APIs are not consistent in WebKit2 - https://bugs.webkit.org/show_bug.cgi?id=94683 + This patch adds support for EGL, using OpenGL and OpenGL ES 2. Both + options are set up on compile time, with the configure options + --enable-egl and --enable-gles2. - Reviewed by Alejandro G. Castro. + The implementation only adds support for EGL on top of X11, to + isolate the changes to the minimum. More changes should come + later to enable EGL for other targets (as Wayland). - Change spell-checker and preferred languages API to use a GStrv - instead of a comma-separated string and GList. This makes the API - more consistent and convenient to use. - - * UIProcess/API/gtk/WebKitTextChecker.cpp: - (WebKitTextChecker::getSpellCheckingLanguages): Return a - Vector<String> instead of a String. - (WebKitTextChecker::setSpellCheckingLanguages): Receive a - Vector<String> instead of a String. - * UIProcess/API/gtk/WebKitTextChecker.h: - (WebKitTextChecker): Use a GPtrArray to cache languages. - * UIProcess/API/gtk/WebKitWebContext.cpp: - (webkit_web_context_get_spell_checking_languages): - (webkit_web_context_set_spell_checking_languages): - (webkit_web_context_set_preferred_languages): - * UIProcess/API/gtk/WebKitWebContext.h: - * UIProcess/API/gtk/tests/TestWebKitWebContext.cpp: - (testWebContextSpellChecker): - (testWebContextLanguages): - -2012-08-22 Csaba Osztrogonác <ossy@webkit.org> - - [Qt][WK2] Enable runtime enabled features: DeviceMotion and DeviceOrientation - https://bugs.webkit.org/show_bug.cgi?id=94692 - - Reviewed by Kenneth Rohde Christiansen. - - * WebProcess/qt/WebProcessQt.cpp: - (WebKit::WebProcess::platformInitializeWebProcess): - -2012-08-22 Allan Sandfeld Jensen <allan.jensen@nokia.com> - - Wrong default for new ScrollAnimatorEnabled preference. - - Reviewed by Simon Hausmann. + * WebProcess/WebPage/gtk/LayerTreeHostGtk.cpp: - ScrollAnimatorEnabled introduced in r126291, should default to 'true' - to preserve existing behaviour on WK2 platforms that already enabled - SMOOTH_SCROLLING unconditionally. +2012-10-04 Jon Lee <jonlee@apple.com> - * Shared/WebPreferencesStore.h: - (WebKit): + Add a setting to enable plugin snapshotting + https://bugs.webkit.org/show_bug.cgi?id=98319 + <rdar://problem/12426480> -2012-08-22 Allan Sandfeld Jensen <allan.jensen@nokia.com> + Reviewed by Brady Eidson. - Unreviewed, build fixup for r126291. + Expose plugInSnapshottingEnabled preference to WebKit clients. * Shared/WebPreferencesStore.h: (WebKit): - -2012-08-22 Allan Sandfeld Jensen <allan.jensen@nokia.com> - - [Qt] Optionally support smooth-scrolling on all platforms - https://bugs.webkit.org/show_bug.cgi?id=74926 - - Reviewed by Simon Hausmann. - - Expose scroll-animator preference, but ensure animated smooth scrolling - on the web process side is disabled when scrolling has been delegated - to the UI process. - - * Shared/WebPreferencesStore.h: + * UIProcess/API/C/WKPreferences.cpp: + (WKPreferencesSetPlugInSnapshottingEnabled): + (WKPreferencesGetPlugInSnapshottingEnabled): + * UIProcess/API/C/WKPreferences.h: * WebProcess/WebPage/WebPage.cpp: - (WebKit::WebPage::setResizesToContentsUsingLayoutSize): - (WebKit::WebPage::updatePreferences): - -2012-08-22 Luiz Agostini <luiz.agostini@nokia.com> - - [Qt] Avoid using WebKit macros in qrawwebview_p.h - https://bugs.webkit.org/show_bug.cgi?id=94648 - - Reviewed by Noam Rosenthal. - - ENABLE(FEATURE) should not be used in qrawwebview_p.h because it is an API header file. - - * UIProcess/API/qt/raw/qrawwebview.cpp: - (QRawWebView::sendTouchEvent): - * UIProcess/API/qt/raw/qrawwebview_p.h: - -2012-08-21 Sheriff Bot <webkit.review.bot@gmail.com> - - Unreviewed, rolling out r126216. - http://trac.webkit.org/changeset/126216 - https://bugs.webkit.org/show_bug.cgi?id=94661 - - "Broke many Mac-WK2 tests" (Requested by bradee-oh on - #webkit). - - * WebProcess/com.apple.WebProcess.sb.in: - -2012-08-21 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com> - - [GTK] [WK2] Memory leaks in TestWebKitFindController - https://bugs.webkit.org/show_bug.cgi?id=94627 - - Reviewed by Martin Robinson. - - Fix memory leaks in TestWebKitFindController by using adoptGRef - instead of just getting new reference of GdkPixbuf. - - * UIProcess/API/gtk/tests/TestWebKitFindController.cpp: - (testFindControllerHide): - -2012-08-21 Alexey Proskuryakov <ap@apple.com> - - <rdar://problem/11241850> Block access to xpcd in WebProcess.sb - - Reviewed by Sam Weinig and Jon Honeycutt. - - * WebProcess/com.apple.WebProcess.sb.in: + (WebKit::WebPage::updatePreferences): Update preference based on store. -2012-08-21 Alexey Proskuryakov <ap@apple.com> +2012-10-05 Balazs Kelemen <kbalazs@webkit.org> - <rdar://problem/8900275> Remove PubSub access from WebProcess, since it is no longer necessary - - Reviewed by Mark Rowe. - - * WebProcess/com.apple.WebProcess.sb.in: - -2012-08-21 Thiago Marcos P. Santos <thiago.santos@intel.com> - - [EFL] Some public API functions don't have their symbols exported - https://bugs.webkit.org/show_bug.cgi?id=94589 - - Reviewed by Kenneth Rohde Christiansen. - - Added missing export symbol macro to these public API functions. - - * UIProcess/API/efl/ewk_view.h: - -2012-08-21 Martin Robinson <mrobinson@igalia.com> - - [GTK] Using a native window for the WebView breaks GtkOverlay - https://bugs.webkit.org/show_bug.cgi?id=90085 - - Reviewed by Alejandro G. Castro. - - Add XComposite libraries to the linker list for WebKit2. - - * GNUmakefile.am: Add XComposite - -2012-08-21 Jesse van den Kieboom <jessevdk@gnome.org> and Carlos Garcia Campos <cgarcia@igalia.com> - - [GTK] Add destroy notify for register_uri_scheme - https://bugs.webkit.org/show_bug.cgi?id=94315 - - Reviewed by Philippe Normand. - - For introspection to work correctly, a destroy notify needs to be - added to register_uri_scheme so that bindings know when to - finalize the user_data. - - * UIProcess/API/gtk/WebKitWebContext.cpp: - (webkit_web_context_register_uri_scheme): - (webkitWebContextReceivedURIRequest): - * UIProcess/API/gtk/WebKitWebContext.h: - * UIProcess/API/gtk/tests/TestWebKitWebContext.cpp: - -2012-08-21 Simon Hausmann <simon.hausmann@nokia.com> - - Unreviewed build fix for newer Qt 5: QT += qmltest does not imply QT += testlib anymore, but - the code here needs QSignalSpy from QTestLib - - * UIProcess/API/qt/tests/qmltests/DesktopBehavior.pro: - * UIProcess/API/qt/tests/qmltests/WebView.pro: - -2012-08-18 John Sullivan <sullivan@apple.com> - - <https://bugs.webkit.org/show_bug.cgi?id=94486> - <rdar://problem/12128557> - REGRESSION (r121482, Lion-only): Closing a popover containing a WKView can crash - - Reviewed by Darin Adler. - - * UIProcess/API/mac/WKView.mm: - (-[WKView viewWillMoveToWindow:]): - Avoid calling the code added in 121482 that ensures that the undo stack is cleaned up - before the WKView is moved from one window to another when the WKView is being moved - out of a popover window. This avoids a bug in OS X 10.7 that was fixed in 10.8. - While this technically reopens a potentially crashing code path that 121482 closed, - it only reopens it for WKViews that are used for text editing and that are removed - from an NSPopover at some time earlier than tear-down of the NSPopover. - -2012-08-20 Allan Sandfeld Jensen <allan.jensen@nokia.com> - - [Qt] Custom tap-highlight-color renders fully opaque - https://bugs.webkit.org/show_bug.cgi?id=94468 + [Qt][WK2] Plugins are completely broken with a custom device pixel ratio + https://bugs.webkit.org/show_bug.cgi?id=98518 Reviewed by Kenneth Rohde Christiansen. - Draw tap-highlight-color at 50% transparency, to better match how - existing WebKit browsers act on custom tap-highlight colors. - - * WebProcess/WebPage/TapHighlightController.cpp: - (WebKit::TapHighlightController::drawRect): - -2012-08-20 Carlos Garcia Campos <cgarcia@igalia.com> - - [GTK] Replace webkit_web_view_replace_content with webkit_web_view_load_alternate_html - https://bugs.webkit.org/show_bug.cgi?id=94471 - - Reviewed by Martin Robinson. - - In WebKit1 there's code to prevent that load signals are emitted - when loading internal custom error pages. We added - webkit_web_view_replace_content() with the same idea, but it has - ended up being problematic, because it allows to add any HTML - content (in WebKit1 we assumed internal error pages never failed - and always loaded) and it's impossible to know when the load has - finished. It also required a lot of logic to handle - replace_content as an especial case, in order to hide the fact - that it loads content. This patch renames - webkit_web_view_replace_content() as - webkit_web_view_load_alternate_html() and emit load events - normally. + Implement painting with scale factor in ShareableBitmap. + The backing store of the plugin are still overscaled in MiniBrowser + with this patch but this is only the effect of the fake device scale + factor defined in qml (1.5). We should probably remove it on desktop. - * UIProcess/API/gtk/WebKitWebView.cpp: - (_WebKitWebViewPrivate): - (webkitWebViewLoadChanged): - (webkitWebViewLoadFailed): - (webkitWebViewSetEstimatedLoadProgress): - (webkitWebViewResourceLoadStarted): - (webkitWebViewGetLoadingWebResource): - (webkitWebViewRemoveLoadingWebResource): - (webkitWebViewResourceLoadFinished): - (webkit_web_view_load_alternate_html): - * UIProcess/API/gtk/WebKitWebView.h: - * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: - * UIProcess/API/gtk/tests/TestLoaderClient.cpp: - (testLoadAlternateHTML): - (beforeAll): - * UIProcess/API/gtk/tests/TestResources.cpp: - (beforeAll): - * UIProcess/API/gtk/tests/TestWebKitWebView.cpp: - (beforeAll): - * UIProcess/API/gtk/tests/WebViewTest.cpp: - (WebViewTest::loadAlternateHTML): - * UIProcess/API/gtk/tests/WebViewTest.h: + * Shared/qt/ShareableBitmapQt.cpp: + (WebKit::ShareableBitmap::paint): -2012-08-20 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> +2012-10-05 Christophe Dumez <christophe.dumez@intel.com> - [EFL][WK2] Add unit tests for WKEinaSharedString - https://bugs.webkit.org/show_bug.cgi?id=94104 + [EFL] Unskip fullscreen unit tests for EwkView + https://bugs.webkit.org/show_bug.cgi?id=98509 Reviewed by Kenneth Rohde Christiansen. - Added unit tests for WKEinaSharedString class. + Update 2 fullscreen unit tests for EwkView so that + they don't require a call to ecore_evas_fullscreen_set() + to succeed. ecore_evas_fullscreen_set() does not + seem to work in Xvfb and causes the tests to hang. + With this update, we can now run those tests again. - * PlatformEfl.cmake: - * UIProcess/API/efl/tests/test_ewk2_eina_shared_string.cpp: Added. - (checkString): + * UIProcess/API/efl/tests/test_ewk2_view.cpp: (TEST_F): -2012-08-20 Carlos Garcia Campos <cgarcia@igalia.com> +2012-10-05 Carlos Garcia Campos <cgarcia@igalia.com> - [GTK] Add API to set preferred languages to WebKit2 GTK+ - https://bugs.webkit.org/show_bug.cgi?id=90878 + [GTK] Test /webkit2/WebKitPrintOperation/print-errors gives runtime critical warnings + https://bugs.webkit.org/show_bug.cgi?id=98497 Reviewed by Martin Robinson. - * UIProcess/API/gtk/WebKitWebContext.cpp: - (webkit_web_context_set_preferred_languages): Public API to set a - list of preferred languages sorted from most desirable to least - desirable. - * UIProcess/API/gtk/WebKitWebContext.h: - * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Add new symbol. - * UIProcess/API/gtk/tests/TestWebKitWebContext.cpp: - (testWebContextLanguages): - (serverCallback): - (beforeAll): - (afterAll): - * UIProcess/API/gtk/tests/WebViewTest.cpp: - (resourceGetDataCallback): - (WebViewTest::mainResourceData): Moved from TestWebKitWebContext - to make it available to all WebViewTests. - * UIProcess/API/gtk/tests/WebViewTest.h: - * WebProcess/WebProcess.cpp: - (WebKit::WebProcess::userPreferredLanguagesChanged): Notify our - observer that the languages have been overriden. - * WebProcess/gtk/WebProcessGtk.cpp: - (WebKit::buildAcceptLanguages): Helper function to build the - accept languages as specified in RFC 2616. - (WebKit::setSoupSessionAcceptLanguage): Set the accept-language - property of the default SoupSession. - (WebKit::languageChanged): Update the preferred languages in - SoupSession. - (WebKit::WebProcess::platformInitializeWebProcess): Add an - observer to be notified when the list of preferred languages is - updated. - (WebKit::WebProcess::platformTerminate): Remove the observer added - in platformInitializeWebProcess(). - -2012-08-19 Dan Bernstein <mitz@apple.com> - - WebPageProxy::setCursor does not check that the view is still in an active window - https://bugs.webkit.org/show_bug.cgi?id=94427 - - Reviewed by Alexey Proskuryakov. + The problem is that GTK+ tries to write in the IO channel that has + already been closed. - The Web process may ask to change the cursor when the view is in an active window, but - if by the time the UI process receives the message, the view is no longer in a window or the - window is not active , then the cursor should not change. + * WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp: + (WebKit::WebPrintOperationGtk::print): Finish the surface when + printing fails because printing data is invalid. - * UIProcess/WebPageProxy.cpp: - (WebKit::WebPageProxy::setCursor): Added a check that the view is in an active window before - allowing the page to change the cursor. +2012-10-05 Carlos Garcia Campos <cgarcia@igalia.com> -2012-08-19 Sheriff Bot <webkit.review.bot@gmail.com> - - Unreviewed, rolling out r125972. - http://trac.webkit.org/changeset/125972 - https://bugs.webkit.org/show_bug.cgi?id=94431 - - Breaks AppleMac builds (Requested by pfeldman on #webkit). - - * UIProcess/API/gtk/WebKitWebContext.cpp: - * UIProcess/API/gtk/WebKitWebContext.h: - * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: - * UIProcess/API/gtk/tests/TestWebKitWebContext.cpp: - (beforeAll): - (afterAll): - * UIProcess/API/gtk/tests/WebViewTest.cpp: - (WebViewTest::WebViewTest): - * UIProcess/API/gtk/tests/WebViewTest.h: - * WebProcess/WebProcess.cpp: - (WebKit::WebProcess::userPreferredLanguagesChanged): - * WebProcess/gtk/WebProcessGtk.cpp: - (WebKit::WebProcess::platformInitializeWebProcess): - (WebKit::WebProcess::platformTerminate): - -2012-08-19 Christophe Dumez <christophe.dumez@intel.com> - - [EFL][WK2] Add API unit tests for Web Intents - https://bugs.webkit.org/show_bug.cgi?id=90454 - - Reviewed by Kenneth Rohde Christiansen. - - Add unit testing for Web intent requests, - including the "intent,request,new" signal on - the Ewk_View and the Ewk_Intent API. - - * UIProcess/API/efl/ewk_view.h: Fix documentation for argument type of "intent,request,new" signal. - * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp: - (EWK2UnitTest::EWK2UnitTestBase::mouseClick): Add utility method to simulate a click at given - coordinates. This is needed for testing functionality that requires a user gesture. - (EWK2UnitTest): - * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h: - (EWK2UnitTestBase): - * UIProcess/API/efl/tests/resources/intent-request.html: Added. - * UIProcess/API/efl/tests/test_ewk2_intents.cpp: - (stringSortCb): - (onIntentReceived): - (TEST_F): - -2012-08-18 Carlos Garcia Campos <cgarcia@igalia.com> - - [GTK] Add API to set preferred languages to WebKit2 GTK+ - https://bugs.webkit.org/show_bug.cgi?id=90878 + [GTK] Test /webkit2/WebKitWebResource/response fails + https://bugs.webkit.org/show_bug.cgi?id=98511 Reviewed by Martin Robinson. - * UIProcess/API/gtk/WebKitWebContext.cpp: - (webkit_web_context_set_preferred_languages): Public API to set a - list of preferred languages sorted from most desirable to least - desirable. - * UIProcess/API/gtk/WebKitWebContext.h: - * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Add new symbol. - * UIProcess/API/gtk/tests/TestWebKitWebContext.cpp: - (testWebContextLanguages): - (serverCallback): - (beforeAll): - (afterAll): - * UIProcess/API/gtk/tests/WebViewTest.cpp: - (resourceGetDataCallback): - (WebViewTest::mainResourceData): Moved from TestWebKitWebContext - to make it available to all WebViewTests. - * UIProcess/API/gtk/tests/WebViewTest.h: - * WebProcess/WebProcess.cpp: - (WebKit::WebProcess::userPreferredLanguagesChanged): Notify our - observer that the languages have been overriden. - * WebProcess/gtk/WebProcessGtk.cpp: - (WebKit::buildAcceptLanguages): Helper function to build the - accept languages as specified in RFC 2616. - (WebKit::setSoupSessionAcceptLanguage): Set the accept-language - property of the default SoupSession. - (WebKit::languageChanged): Update the preferred languages in - SoupSession. - (WebKit::WebProcess::platformInitializeWebProcess): Add an - observer to be notified when the list of preferred languages is - updated. - (WebKit::WebProcess::platformTerminate): Remove the observer added - in platformInitializeWebProcess(). - -2012-08-18 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> - - [EFL][WK2] ewk_back_forward_list_item properties should be in sync with WebProcessProxy::m_backForwardListItemMap - https://bugs.webkit.org/show_bug.cgi?id=94248 + Do not consider the favicon as a resource for the web resources + unit tests. - Reviewed by Kenneth Rohde Christiansen. - - Currently ewk_back_forward_list_item properties are initialized from - WKBackForwardListItemRef once in the constructor and then just stored. - This is erroneous approach as back forward items can be initialized within - several iterations, meaning several ipc calls to UI process and several updates - of WebProcessProxy::m_backForwardListItemMap where the items are stored. - Hence the values of ewk_back_forward_list_item properties should be updated - with the corresponding WKBackForwardListItem function invokes every time - they are called. - - * UIProcess/API/efl/ewk_back_forward_list_item.cpp: - (_Ewk_Back_Forward_List_Item): Data members have to be mutable as assigned being const pointers. - (_Ewk_Back_Forward_List_Item::_Ewk_Back_Forward_List_Item): - (ewk_back_forward_list_item_uri_get): - (ewk_back_forward_list_item_title_get): - (ewk_back_forward_list_item_original_uri_get): - -2012-08-17 Enrica Casucci <enrica@apple.com> - - Adding back the first statement of WebProcessMain accidentally - removed in r125358. - - Reviewed by Sam Weinig. - - * WebProcess/mac/WebProcessMainMac.mm: Adding back the stripping - of DYLD_INSERT_LIBRARIES. - -2012-08-17 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com> - - [EFL] REGRESSION(r125923): Breaks EFL build - https://bugs.webkit.org/show_bug.cgi?id=94376 - - Reviewed by Alexey Proskuryakov. - - Fix EFL build break after r125923. - - * UIProcess/WebPageProxy.cpp: - (WebKit::WebPageProxy::didReceiveIntentForFrame): - -2012-08-17 Alexey Proskuryakov <ap@apple.com> - - Access m_process directly in WebPageProxy.cpp - https://bugs.webkit.org/show_bug.cgi?id=94363 - - Reviewed by John Sullivan. - - Consistency fix - we don't use accessors when we don't have to, and there is a mix in this file. - - * UIProcess/WebPageProxy.cpp: - -2012-08-17 Claudio Saavedra <csaavedra@igalia.com> - - [GTK] Add WK2 API to get suggested filename for URI responses - https://bugs.webkit.org/show_bug.cgi?id=92967 - - Reviewed by Carlos Garcia Campos. - - Webcore has API to get the suggested filename for a response, add - a property and getter for it in WebKitURIResponse. - - * UIProcess/API/gtk/WebKitURIResponse.cpp: - (_WebKitURIResponsePrivate): Add a CString holding the value. - (webkitURIResponseGetProperty): Add the gobject bits for the - property. - (webkit_uri_response_class_init): Install the property. - (webkit_uri_response_get_suggested_filename): New getter. - * UIProcess/API/gtk/WebKitURIResponse.h: Declare the public - method. - * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Add the new API - symbols. * UIProcess/API/gtk/tests/TestResources.cpp: - (testWebResourceSuggestedFilename): Test the new API. - (serverCallback): Add the the content-disposition header - in one case, in order to test it. - (beforeAll): Add the new test. - -2012-08-17 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> - - [EFL][wk2] Add unit tests for back-forward list API - https://bugs.webkit.org/show_bug.cgi?id=92617 - - Reviewed by Kenneth Rohde Christiansen. - - Added unit tests covering the existing EFL WK2 back-forward list API. - - * PlatformEfl.cmake: - * UIProcess/API/efl/tests/resources/default_test_page.html: - * UIProcess/API/efl/tests/test_ewk2_back_forward_list.cpp: Added. - (serverCallbackNavigation): - (checkItem): - (urlFromTitle): - (TEST_F): - -2012-08-17 Jeff Miller <jeffm@apple.com> - UserMessageEncoder::baseEncode() should ASSERT when attempting to encode a non-shareable image - https://bugs.webkit.org/show_bug.cgi?id=94245 +2012-10-05 Carlos Garcia Campos <cgarcia@igalia.com> - Reviewed by Alexey Proskuryakov. - - It's a programming error if a client attempts to encode an image that has an - allocated bitmap, but isn't shareable, so we should assert in this case. - - * Shared/UserMessageCoders.h: - (WebKit::UserMessageEncoder::baseEncode): - Assert if we're trying to encode valid non-shareable image. - -2012-08-17 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com> - - [EFL] [WK2] Add unit tests for vibration_client_callbacks_set API - https://bugs.webkit.org/show_bug.cgi?id=93890 - - Reviewed by Kenneth Rohde Christiansen. - - This patch covers unit testing of the Vibration API as delivered. - - * UIProcess/API/efl/tests/test_ewk2_context.cpp: - (VibrationCbData): - (vibrateCallback): - (cancelVibrationCallback): - (loadVibrationHTMLString): - (TEST_F): - -2012-08-17 Carlos Garcia Campos <cgarcia@igalia.com> - - [GTK] Rename WebKitWebView print-requested signal to print - https://bugs.webkit.org/show_bug.cgi?id=94306 + REGRESSION (r129989 - r130019): [WK2] TestResources test is failing + https://bugs.webkit.org/show_bug.cgi?id=98342 Reviewed by Martin Robinson. - WebKitWebView::print-requested is inconsistent with the rest of - the API. It's a true_handled signal that allows users to implement - their own print dialog, or block printing, or rely on - defaults. The signal should be WebKitWebView::print like other - signals (create, close, decide_policy, etc.) + Return 404 error in unit tests using a HTTP server for paths not + handled by the test. This way all tests should return now a 404 + for /favicon.ico. - * UIProcess/API/gtk/WebKitWebView.cpp: - (webkit_web_view_class_init): - (webkitWebViewPrintFrame): - * UIProcess/API/gtk/WebKitWebView.h: - (_WebKitWebViewClass): - * UIProcess/API/gtk/tests/TestPrinting.cpp: - (webViewPrintCallback): - (testWebViewPrint): - (beforeAll): - -2012-08-17 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com> - - [EFL] [WK2] Free Eina Strbuf with eina_strbuf_free() instead of eina_strbuf_string_free() - https://bugs.webkit.org/show_bug.cgi?id=94312 - - Reviewed by Kenneth Rohde Christiansen. - - eina_strbuf_string_free() frees the contents of a string buffer but not the - buffer, so eina_strbuf_free() must be used to free the buffer. - - Contents of the buffer has already been take care by stealing it with - eina_strbuf_string_steal(), so no reason to call eina_strbuf_string_free(). - - * UIProcess/API/efl/tests/test_ewk2_cookie_manager.cpp: + * UIProcess/API/gtk/tests/TestBackForwardList.cpp: + (serverCallback): + * UIProcess/API/gtk/tests/TestCookieManager.cpp: + (serverCallback): + * UIProcess/API/gtk/tests/TestLoaderClient.cpp: + (serverCallback): + * UIProcess/API/gtk/tests/TestResources.cpp: + (serverCallback): + * UIProcess/API/gtk/tests/TestSSL.cpp: + (serverCallback): + * UIProcess/API/gtk/tests/TestWebKitPolicyClient.cpp: + (serverCallback): + * UIProcess/API/gtk/tests/TestWebKitSettings.cpp: + (serverCallback): + * UIProcess/API/gtk/tests/TestWebKitWebContext.cpp: (serverCallback): -2012-08-17 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> - - [EFL][WK2] Getting unnecessary EINA_SAFETY_ON_NULL_RETURN_VAL warnings while page navigation - https://bugs.webkit.org/show_bug.cgi?id=94308 - - Reviewed by Kenneth Rohde Christiansen. - - The reason is that loadClient.didChangeBackForwardList callback is invoked with zero - arguments which is valid case while page back-forward navigation and means basically - that the back-froward list has changed but items were not added or deleted. - - * UIProcess/API/efl/ewk_back_forward_list.cpp: - (ewk_back_forward_list_changed): - -2012-08-16 Lauro Neto <lauro.neto@openbossa.org> - - [Qt] Failure to build with --no-inspector - https://bugs.webkit.org/show_bug.cgi?id=94148 - - Reviewed by Noam Rosenthal. - - Add guards around usage of inspector functions. - - * UIProcess/API/qt/qquickwebview.cpp: - (QQuickWebViewExperimental::remoteInspectorUrl): - -2012-08-16 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> - - [Qt] Remove an unused variable - - Reviewed by Simon Hausmann. - - * UIProcess/API/qt/qquickwebpage.cpp: - (QQuickWebPagePrivate::QQuickWebPagePrivate): - * UIProcess/API/qt/qquickwebpage_p_p.h: - (QQuickWebPagePrivate): - -2012-08-16 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> - - [Qt][WK2] Change the default cache model to enable the page cache - https://bugs.webkit.org/show_bug.cgi?id=94221 - - Reviewed by Simon Hausmann. - - The default CacheModelDocumentViewer disables the memory back-forward page cache. - As uses of applications using QQuickWebView might vary, I'm setting the default to - CacheModelDocumentBrowser. - We should eventually expose this in the API to allow serious Web browsers setting it - to CacheModelPrimaryWebBrowser or to CacheModelDocumentViewer for application tight - on memory with limited page navigations. - - * UIProcess/qt/QtWebContext.cpp: - (WebKit::QtWebContext::defaultContext): - -2012-08-15 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> - - [Qt] Make sure that we don't prematurely force the first layout during loading. - https://bugs.webkit.org/show_bug.cgi?id=94106 - - Reviewed by Kenneth Rohde Christiansen. - - This would have the nasty effect that the frame loader would report the first layout - before loadCommitted was reported. This would resume the rendering engine prematurely, - showing blank content and reporting an empty contents size. - - * WebProcess/WebPage/WebPage.cpp: - (WebKit::WebPage::setFixedLayoutSize): - -2012-08-16 Marcelo Lira <marcelo.lira@openbossa.org> - - [Qt] Input method hints are not being set. - https://bugs.webkit.org/show_bug.cgi?id=92386 - - Reviewed by Kenneth Rohde Christiansen. - - Input method hints for an editable element must be obtained from a proper - HTML element. If the editable element is a complex one, it will have elements - in the Shadow DOM, and it's one of those that will be returned as the root - editable element. This works for editable DIVs, but not for INPUT elements. - Using Element::shadowHost() on the root editable element will provide the - needed HTML element, and for further clarity a method that does this was added - to FrameSelection. - - Added an API test to the Qt port regarding the correct setting - of input method hints information on INPUT HTML tags. - - * UIProcess/API/qt/tests/html/inputmethod.html: - * UIProcess/API/qt/tests/qquickwebview/tst_qquickwebview.cpp: - (tst_QQuickWebView): - (tst_QQuickWebView::inputMethodHints): - * WebProcess/WebPage/WebPage.cpp: - (WebKit::WebPage::editorState): - -2012-08-16 Zeno Albisser <zeno@webkit.org> - - Make GraphicsSurface double buffered by default. - https://bugs.webkit.org/show_bug.cgi?id=93252 - - Create only a single GraphicsSurface per canvas - on both supported platforms Mac/Linux. - The GraphicsSurface on Mac internally uses two IOSurface - to provide a front and a back buffer. - The GLX implementation of GraphicsSurface uses - an XWindow which already provides a front and a back buffer. - - Reviewed by Noam Rosenthal. - - * Shared/ShareableSurface.h: - (Handle): - Change the type of GraphicsSurface token to uint64_t. - * UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.cpp: - (WebKit::LayerTreeCoordinatorProxy::syncCanvas): - Add a parameter that denotes the current front buffer of the - GraphicsSurface. - * UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.h: - (LayerTreeCoordinatorProxy): - * UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.messages.in: - * UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp: - (WebKit::LayerTreeRenderer::syncCanvas): - * UIProcess/CoordinatedGraphics/LayerTreeRenderer.h: - (LayerTreeRenderer): - * WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp: - (WebCore::CoordinatedGraphicsLayer::syncCanvas): - * WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.h: - (CoordinatedGraphicsLayerClient): - * WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp: - (WebKit::LayerTreeCoordinator::syncCanvas): - * WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.h: - (LayerTreeCoordinator): - -2012-08-16 Pierre Rossi <pierre.rossi@gmail.com> - - [Qt] Remove FontQt4, HAVE_QRAWFONT flag and the related dead code - https://bugs.webkit.org/show_bug.cgi?id=93960 - - Reviewed by Simon Hausmann. +2012-10-05 Carlos Garcia Campos <cgarcia@igalia.com> - Following the removal of Qt 4 support from trunk in r124879. + [WK2][SOUP] Assertion hit in WebKit::DownloadManager::downloadFinished() when download fails + https://bugs.webkit.org/show_bug.cgi?id=97565 - * WebProcess/WebProcess.cpp: - (WebKit::WebProcess::getWebCoreStatistics): + Reviewed by Gustavo Noronha Silva. -2012-08-16 Christophe Dumez <christophe.dumez@intel.com> + Make sure to notify the downlaod client that the response has been + received when the newly created download has already been added to + the DownloadManager downloads map. - [EFL][WK2] Add unit tests for Web intent registration - https://bugs.webkit.org/show_bug.cgi?id=94133 + * WebProcess/Downloads/soup/DownloadSoup.cpp: + (WebKit::DownloadClient::DownloadClient): Initialize + m_handleResponseLaterID. + (WebKit::DownloadClient::~DownloadClient): Remove the source for + the delayed response notification if it hasn't been triggered. + (WebKit::DownloadClient::didReceiveData): If response hasn't been + handled yet, remove the source for the delayed response + notification and handle the resource before start writing the data + received to the output stream. + (WebKit::DownloadClient::handleResponse): Call + didReceiveResponse() with the delayed response. + (WebKit::DownloadClient::handleResponseLaterCallback): Call + handleResponse(). + (WebKit::DownloadClient::handleResponseLater): Schedule an idle + callback to handle the response later, to make sure the download + has been added to the downloads map. + (WebKit::Download::startWithHandle): Call handleResponseLater() + with the given response to handle the response when the download + has been added to the downloads map. + +2012-10-05 Jongseok Yang <js45.yang@samsung.com> + + [EFL][WK2] Remove "web" word from ewk_web_error APIs + https://bugs.webkit.org/show_bug.cgi?id=97886 - Reviewed by Kenneth Rohde Christiansen. + Reviewed by Gyuyoung Kim. - Add unit tests for Web Intent service registration. - This tests the "intent,service,register" signaling - on the Ewk_View as well as Ewk_Intent_Service. + Remove "web" word from ewk_web_error APIs. + "web" word was redundant because "ewk" means "EFL WebKit" and WK APIs for error does not have "web" word. * PlatformEfl.cmake: - * UIProcess/API/efl/tests/resources/intent-service.html: Added. - * UIProcess/API/efl/tests/test_ewk2_intents.cpp: Added. - (onIntentServiceRegistration): - (TEST_F): - -2012-08-16 Marja Hölttä <marja@chromium.org> - - FormController, WebHistoryItem: Enable reading selected file names from document state - https://bugs.webkit.org/show_bug.cgi?id=91231 - - Reviewed by Jochen Eisinger. - - This change enables Chromium to set up file permissions properly when - the session restore feature restores a page with selected files. - - * win/WebKit2.def: Exported FormController::getReferencedFilePaths and HistoryController::saveDocumentAndScrollState. - -2012-08-15 Ryosuke Niwa <rniwa@webkit.org> - - Update manual tests and comments to refer to TestRunner instead of LayoutTestController - https://bugs.webkit.org/show_bug.cgi?id=94168 - - Reviewed by Kent Tamura. - - * Shared/WebPreferencesStore.cpp: - (WebKit::WebPreferencesStore::getBoolValueForKey): - -2012-08-15 Bruno de Oliveira Abinader <bruno.abinader@basyskom.com> - - [css3-text] Add CSS3 Text decoration compile flag - https://bugs.webkit.org/show_bug.cgi?id=93863 - - Reviewed by Julien Chaffraix. - - This patch handles the compile flag implementation, which will come disabled by - default, thus not exposing the CSS3 text decoration features to the web, unless - when explicitly enabling it with "--css3-text-decoration" build parameter. - - * Configurations/FeatureDefines.xcconfig: - -2012-08-15 Sheriff Bot <webkit.review.bot@gmail.com> - - Unreviewed, rolling out r125687. - http://trac.webkit.org/changeset/125687 - https://bugs.webkit.org/show_bug.cgi?id=94147 - - It broke the whole world (Requested by Ossy_night on #webkit). - - * WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp: - (WebKit::NPRuntimeObjectMap::convertJSValueToNPVariant): - -2012-08-15 Beth Dakin <bdakin@apple.com> - - https://bugs.webkit.org/show_bug.cgi?id=93693 - [WK2] REGRESSION(125091): pixel results don't sow scrollbars - anymore - - Reviewed by Sam Weinig. - - This is a regression from http://trac.webkit.org/changeset/125091 - in which I failed to noticed that - WKBundlePageCreateSnapshotInViewCoordinates() did actually do - something different than - WKBundlePageCreateSnapshotInDocumentCoordinates(). Specifically, - it used ScrollView::paint() to paint instead of - FrameView::paintContents(). So this patch restores that - functionality by adding a value to SnapshotOptions indicating - whether the snapshot should be taken in ViewCoordinates - (otherwise it defaults to DocumentCoordinates). - - * Shared/API/c/WKImage.h: - * Shared/API/c/WKSharedAPICast.h: - (WebKit::toSnapshotOptions): - * Shared/ImageOptions.h: - * WebProcess/WebPage/WebPage.cpp: - (WebKit::WebPage::scaledSnapshotWithOptions): - - Even though we plan to deprecate this API, it should keep doing - the right thing until it's gone. - * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp: - (WKBundlePageCreateSnapshotInViewCoordinates): - -2012-08-15 Brady Eidson <beidson@apple.com> - - Removing a plug-in element from a page opened in a background tab in Safari crashes - <rdar://problem/12057991> and https://bugs.webkit.org/show_bug.cgi?id=93913 - - Reviewed by Beth Dakin. - - This only happens in WebKit2 with asynchronous plug-in initialization enabled. - - * WebProcess/Plugins/PluginProxy.cpp: - (WebKit::PluginProxy::destroy): Null-check m_connection, as it might not have been created yet. - - * win/WebKit2.def: Export Page::setCanStartMedia for InternalSettings/DRT use. - -2012-08-14 Mark Hahnenberg <mhahnenberg@apple.com> - - Change behavior of MasqueradesAsUndefined to better accommodate DFG changes - https://bugs.webkit.org/show_bug.cgi?id=93884 - - Reviewed by Geoffrey Garen. - - With some upcoming changes to the DFG to remove uses of ClassInfo, we will be changing the behavior of - MasqueradesAsUndefined. In order to make this change consistent across all of our execution engines, - we will make this change to MasqueradesAsUndefined as a separate patch. After this patch, MasqueradesAsUndefined - objects will only masquerade as undefined in their original context (i.e. their original JSGlobalObject). - For example, if an object that masquerades as undefined in frame A is passed to frame B, it will not - masquerade as undefined within frame B, but it will continue to masquerade in frame A. - - * WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp: - (WebKit::NPRuntimeObjectMap::convertJSValueToNPVariant): Passing ExecState to toBoolean call. - -2012-08-15 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> - - [EFL][WK2] Refactoring: start using WKEinaSharedString in ewk_ classes - https://bugs.webkit.org/show_bug.cgi?id=93964 - - Reviewed by Kenneth Rohde Christiansen. - - Started using WKEinaSharedString where it is advisable. - - * UIProcess/API/cpp/efl/WKEinaSharedString.cpp: - (WKEinaSharedString::operator==): - * UIProcess/API/cpp/efl/WKEinaSharedString.h: - * UIProcess/API/efl/ewk_download_job.cpp: - (_Ewk_Download_Job): - (_Ewk_Download_Job::_Ewk_Download_Job): - (_Ewk_Download_Job::~_Ewk_Download_Job): - (ewk_download_job_destination_set): - (ewk_download_job_suggested_filename_set): - * UIProcess/API/efl/ewk_intent.cpp: - (_Ewk_Intent): - (_Ewk_Intent::_Ewk_Intent): - (_Ewk_Intent::~_Ewk_Intent): - (ewk_intent_action_get): - (ewk_intent_type_get): - (ewk_intent_service_get): - * UIProcess/API/efl/ewk_intent_service.cpp: - (_Ewk_Intent_Service): - (_Ewk_Intent_Service::_Ewk_Intent_Service): - (_Ewk_Intent_Service::~_Ewk_Intent_Service): - (ewk_intent_service_action_get): - (ewk_intent_service_type_get): - (ewk_intent_service_href_get): - (ewk_intent_service_title_get): - (ewk_intent_service_disposition_get): - * UIProcess/API/efl/ewk_navigation_policy_decision.cpp: - (_Ewk_Navigation_Policy_Decision): - (_Ewk_Navigation_Policy_Decision::_Ewk_Navigation_Policy_Decision): - (_Ewk_Navigation_Policy_Decision::~_Ewk_Navigation_Policy_Decision): - * UIProcess/API/efl/ewk_url_request.cpp: - (_Ewk_Url_Request): - (_Ewk_Url_Request::_Ewk_Url_Request): - (_Ewk_Url_Request::~_Ewk_Url_Request): - (ewk_url_request_url_get): - (ewk_request_cookies_first_party_get): - (ewk_url_request_http_method_get): - * UIProcess/API/efl/ewk_url_response.cpp: - (_Ewk_Url_Response): - (_Ewk_Url_Response::_Ewk_Url_Response): - (_Ewk_Url_Response::~_Ewk_Url_Response): - (ewk_url_response_url_get): - (ewk_url_response_mime_type_get): + * UIProcess/API/efl/EWebKit2.h: + * UIProcess/API/efl/ewk_context_download_client.cpp: + (didFail): + * UIProcess/API/efl/ewk_cookie_manager.cpp: + (getAcceptPolicyCallback): + (getHostnamesWithCookiesCallback): + * UIProcess/API/efl/ewk_cookie_manager.h: + * UIProcess/API/efl/ewk_download_job_private.h: + * UIProcess/API/efl/ewk_error.cpp: Renamed from Source/WebKit2/UIProcess/API/efl/ewk_web_error.cpp. + (_Ewk_Error): + (_Ewk_Error::_Ewk_Error): + (_Ewk_Error::~_Ewk_Error): + (ewk_error_free): + (ewk_error_type_get): + (ewk_error_url_get): + (ewk_error_code_get): + (ewk_error_description_get): + (ewk_error_cancellation_get): + (ewk_error_new): + * UIProcess/API/efl/ewk_error.h: Renamed from Source/WebKit2/UIProcess/API/efl/ewk_web_error.h. + * UIProcess/API/efl/ewk_error_private.h: Renamed from Source/WebKit2/UIProcess/API/efl/ewk_web_error_private.h. * UIProcess/API/efl/ewk_view.cpp: - (_Ewk_View_Private_Data): - (_Ewk_View_Private_Data::_Ewk_View_Private_Data): - (_Ewk_View_Private_Data::~_Ewk_View_Private_Data): - (ewk_view_uri_update): - (ewk_view_title_get): - (ewk_view_theme_set): - (ewk_view_setting_encoding_custom_get): - (ewk_view_setting_encoding_custom_set): - * UIProcess/API/efl/ewk_web_error.cpp: - (_Ewk_Web_Error): - (_Ewk_Web_Error::_Ewk_Web_Error): - (_Ewk_Web_Error::~_Ewk_Web_Error): - (ewk_web_error_url_get): - (ewk_web_error_description_get): - * UIProcess/API/efl/ewk_web_resource.cpp: - (_Ewk_Web_Resource): - (_Ewk_Web_Resource::_Ewk_Web_Resource): - (_Ewk_Web_Resource::~_Ewk_Web_Resource): - -2012-08-15 Christophe Dumez <christophe.dumez@intel.com> - - [WK2] Add support for Web Intents MessagePorts - https://bugs.webkit.org/show_bug.cgi?id=89072 - - Reviewed by Kenneth Rohde Christiansen. - - Add support for WebIntents MessagePorts in WebKit2. - MessagePorts can be passed with a Web Intent in - order to open a direct communication channel - between the Web application and the intent service. - - This functionality is already supported by WebKit 1. - - This patch introduces a new InjectedBundleIntent - class which wraps a WebCore::Intent. This way - information regarding the MessagePorts in a Web - Intent is kept when using an injected bundle. - - For the UIProcess, WebIntentData now carries - identifiers for the MessagePorts which can go over - IPC. Those identifiers map to actual MessagePorts - stored in the Web process. This way, when the UI - delivers an intent to a frame, we can get back the - corresponding MessagePorts from the Web process - before delivering the intent to the DOMWindow. - - This functionality is already tested by: - - - webintents/web-intents-invoke-port.html - - webintents/web-intents-obj-constructor.html - - * CMakeLists.txt: - * GNUmakefile.list.am: - * Shared/API/c/WKBase.h: - * Shared/APIObject.h: - * Shared/IntentData.cpp: Add MessagePort identifiers. - (WebKit::IntentData::IntentData): - (WebKit::IntentData::encode): - (WebKit::IntentData::decode): - * Shared/IntentData.h: - (IntentData): - * Target.pri: - * UIProcess/API/C/WKIntentData.cpp: Rename WKIntentDataCopyExtra() to - WKIntentDataCopyExtraValue() for clarity. - (WKIntentDataCopyExtraValue): - * UIProcess/API/C/WKIntentData.h: Remove WKIntentDataCreate() function now - that WTR uses WKBundleIntentCreate() instead. - * UIProcess/API/efl/ewk_intent.cpp: - (ewk_intent_extra_get): Use WKIntentDataCopyExtraValue() instead of - WKIntentDataCopyExtra() since it was renamed. - * UIProcess/WebIntentData.cpp: - (WebKit::WebIntentData::WebIntentData): - (WebKit::WebIntentData::~WebIntentData): Remove MessagePorts from WebProcess upon - WebIntentData destruction. - (WebKit): - (WebKit::WebIntentData::extras): - * UIProcess/WebIntentData.h: - (WebKit): - (WebKit::WebIntentData::create): - (WebIntentData): - * UIProcess/WebPageProxy.cpp: - (WebKit::WebPageProxy::didReceiveIntentForFrame): - * UIProcess/WebProcessProxy.cpp: - (WebKit): - (WebKit::WebProcessProxy::removeMessagePortChannel): - * UIProcess/WebProcessProxy.h: - (WebProcessProxy): - * WebProcess/InjectedBundle/API/c/WKBundleAPICast.h: - (WebKit): - * WebProcess/InjectedBundle/API/c/WKBundleIntent.cpp: Copied from Source/WebKit2/UIProcess/API/C/WKIntentData.cpp. - (WKBundleIntentGetTypeID): - (WKBundleIntentCreate): - (WKBundleIntentCopyAction): - (WKBundleIntentCopyType): - (WKBundleIntentCopyService): - (WKBundleIntentCopySuggestions): - (WKBundleIntentCopyExtraValue): - (WKBundleIntentCopyExtras): - (WKBundleIntentMessagePortCount): - * WebProcess/InjectedBundle/API/c/WKBundleIntent.h: Copied from Source/WebKit2/UIProcess/API/C/WKIntentData.h. - * WebProcess/InjectedBundle/API/c/WKBundleIntentRequest.cpp: - (WKBundleIntentRequestCopyIntent): - * WebProcess/InjectedBundle/API/c/WKBundleIntentRequest.h: - * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp: - (WKBundlePageDeliverIntentToFrame): - * WebProcess/InjectedBundle/API/c/WKBundlePage.h: - * WebProcess/InjectedBundle/InjectedBundleIntent.cpp: Copied from Source/WebKit2/UIProcess/WebIntentData.cpp. - (WebKit): - (WebKit::InjectedBundleIntent::create): - (WebKit::InjectedBundleIntent::InjectedBundleIntent): - (WebKit::InjectedBundleIntent::action): - (WebKit::InjectedBundleIntent::payloadType): - (WebKit::InjectedBundleIntent::service): - (WebKit::InjectedBundleIntent::data): - (WebKit::InjectedBundleIntent::extra): - (WebKit::InjectedBundleIntent::extras): - (WebKit::InjectedBundleIntent::suggestions): - * WebProcess/InjectedBundle/InjectedBundleIntent.h: Copied from Source/WebKit2/UIProcess/WebIntentData.h. - (WebKit): - (InjectedBundleIntent): - (WebKit::InjectedBundleIntent::coreIntent): - (WebKit::InjectedBundleIntent::type): - * WebProcess/InjectedBundle/InjectedBundleIntentRequest.cpp: - (WebKit::InjectedBundleIntentRequest::intent): - * WebProcess/InjectedBundle/InjectedBundleIntentRequest.h: - (WebKit): - (InjectedBundleIntentRequest): - * WebProcess/WebPage/WebFrame.cpp: - (WebKit::WebFrame::deliverIntent): - (WebKit): - * WebProcess/WebPage/WebFrame.h: - (WebCore): - (WebFrame): - * WebProcess/WebPage/WebPage.cpp: - (WebKit): - (WebKit::WebPage::deliverCoreIntentToFrame): - * WebProcess/WebPage/WebPage.h: - (WebCore): - (WebPage): - * WebProcess/WebProcess.cpp: Store MessagePorts in WebProcess and keep mapping with - their identifiers. - (WebKit): - (WebKit::WebProcess::addMessagePortChannel): - (WebKit::WebProcess::messagePortChannel): - (WebKit::WebProcess::removeMessagePortChannel): - * WebProcess/WebProcess.h: - (WebCore): - (WebProcess): - * WebProcess/WebProcess.messages.in: - -2012-08-14 Adam Barth <abarth@webkit.org> - - Delete Frame::domWindow() and Frame::existingDOMWindow() - https://bugs.webkit.org/show_bug.cgi?id=93990 - - Reviewed by Eric Seidel. - - * WebProcess/WebPage/WebFrame.cpp: - (WebKit::WebFrame::deliverIntent): - (WebKit::WebFrame::pendingUnloadCount): - -2012-08-14 Lauro Neto <lauro.neto@openbossa.org> - - Convert signals/slots to Q_* macros. - - [Qt] Use Q_SLOTS and Q_SIGNALS instead of slots and signals - https://bugs.webkit.org/show_bug.cgi?id=93996 - - Reviewed by Kenneth Rohde Christiansen. - - Change usage of keyword-conflicting 'signals' and 'slots' for - Q_SIGNALS and Q_SLOTS macro. - - * UIProcess/API/qt/qwebkittest_p.h: - * UIProcess/API/qt/tests/inspectorserver/tst_inspectorserver.cpp: - (tst_InspectorServer): - * UIProcess/API/qt/tests/publicapi/tst_publicapi.cpp: - (tst_publicapi): - * UIProcess/API/qt/tests/qquickwebview/tst_qquickwebview.cpp: - (tst_QQuickWebView): - * UIProcess/API/qt/tests/qrawwebview/tst_qrawwebview.cpp: - (WebView): - (tst_qrawwebview): - * UIProcess/API/qt/tests/util.cpp: - (LoadSpy): - * UIProcess/API/qt/tests/util.h: - (LoadStartedCatcher): - * UIProcess/InspectorServer/qt/WebSocketServerQt.h: - (QtTcpServerHandler): - * UIProcess/qt/QtDialogRunner.cpp: - (DialogContextBase): - (DialogContextObject): - (BaseAuthenticationContextObject): - (CertificateVerificationDialogContextObject): - (FilePickerContextObject): - (DatabaseQuotaDialogContextObject): - * UIProcess/qt/QtDialogRunner.h: - (QtDialogRunner): - * UIProcess/qt/QtWebPageEventHandler.h: - (QtWebPageEventHandler): - * WebProcess/Downloads/qt/QtFileDownloader.h: - -2012-08-14 Alexey Proskuryakov <ap@apple.com> - - [WK2] Track multiple Web Processes per context - https://bugs.webkit.org/show_bug.cgi?id=93915 - - Reviewed by Sam Weinig. - - * UIProcess/Downloads/DownloadProxy.cpp: - (WebKit::DownloadProxy::didReceiveAuthenticationChallenge): Downloads don't work - yet, added a FIXME. - - * UIProcess/WebContext.cpp: - (WebKit::WebContext::deprecatedSharedProcess): Renamed from process(), added an - assertion that this is only used in single proces mode. - (WebKit::WebContext::textCheckerStateChanged): Abstract out access to web processes. - (WebKit::WebContext::ensureSharedWebProcess): Renamed ensureWebProcess() for clarity. - (WebKit::WebContext::createNewWebProcess): Extracted code for creating a process - from ensureWebProcess(). - (WebKit::WebContext::warmInitialProcess): Create the process more explicitly. - (WebKit::WebContext::enableProcessTermination): Iterate over all processes. - (WebKit::WebContext::shouldTerminate): Updated assertion. - (WebKit::WebContext::processDidFinishLaunching): Changed to use process argument - instead of m_process. - (WebKit::WebContext::disconnectProcess): Updated code forto use m_processes. - (WebKit::WebContext::createWebPage): Handle both process policies (initial support - for multi-process). - (WebKit::WebContext::relaunchProcessIfNecessary): Added cases for both policies. - (WebKit::WebContext::download): Ditto. - (WebKit::WebContext::postMessageToInjectedBundle): Ditto. - (WebKit::WebContext::didReceiveSyncMessage): Fixed whitespace. - (WebKit::WebContext::getWebCoreStatistics): Added cases for both policies. - - * UIProcess/WebContext.h: - (WebKit::WebContext::sendToAllProcesses): - (WebKit::WebContext::sendToAllProcessesRelaunchingThemIfNecessary): - Send to all processes. Changed return type to void, since no caller checked it. - - * UIProcess/WebProcessProxy.cpp: (WebKit::WebProcessProxy::createWebPage): Removed - an assertion that assumed one process per context. - - * UIProcess/WebTextChecker.cpp: (WebKit::updateStateForAllWebProcesses): Updated - to use a WebContext method. - -2012-08-14 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> - - WebKitTestRunner needs layoutTestController.dumpResourceLoadCallbacks - https://bugs.webkit.org/show_bug.cgi?id=42332 - - Reviewed by Kenneth Rohde Christiansen. - - Added new getters to WKURL, WKURLRequest, WKURLResponse so that it is possible - to dump information necessary for the tests passing. - - * Shared/API/c/WKURL.cpp: - (WKURLCopyPath): - * Shared/API/c/WKURL.h: - * Shared/API/c/WKURLRequest.cpp: - (WKURLRequestCopyFirstPartyForCookies): - (WKURLRequestCopyHTTPMethod): - * Shared/API/c/WKURLRequest.h: - * Shared/API/c/WKURLResponse.cpp: - (WKURLResponseHTTPStatusCode): - * Shared/API/c/WKURLResponse.h: - * Shared/WebURL.h: - (WebKit::WebURL::path): - (WebURL): - -2012-08-14 Allan Sandfeld Jensen <allan.jensen@nokia.com> - - [Qt] UpdateAtlas is wasting memory - https://bugs.webkit.org/show_bug.cgi?id=93606 - - Reviewed by Jocelyn Turcotte. - - Imported and QAreaAllocator from Qt3D and ported it to WebCore style, - and use this new area allocator to replace old one from UpdateAtlas. - - * CMakeLists.txt: - * Target.pri: - * WebProcess/WebPage/AreaAllocator.cpp: Added. - (WebKit::AreaAllocator::AreaAllocator): - (WebKit::AreaAllocator::~AreaAllocator): - (WebKit::AreaAllocator::expand): - (WebKit::AreaAllocator::expandBy): - (WebKit::AreaAllocator::release): - (WebKit::AreaAllocator::overhead): - (WebKit::AreaAllocator::roundAllocation): - (WebKit::GeneralAreaAllocator::GeneralAreaAllocator): - (WebKit::GeneralAreaAllocator::~GeneralAreaAllocator): - (WebKit::GeneralAreaAllocator::freeNode): - (WebKit::GeneralAreaAllocator::expand): - (WebKit::fitsWithin): - (WebKit::GeneralAreaAllocator::allocate): - (WebKit::GeneralAreaAllocator::allocateFromNode): - (WebKit::GeneralAreaAllocator::splitNode): - (WebKit::GeneralAreaAllocator::updateLargestFree): - (WebKit::GeneralAreaAllocator::release): - (WebKit::GeneralAreaAllocator::overhead): - * WebProcess/WebPage/AreaAllocator.h: Added. - (WebCore::nextPowerOfTwo): - (AreaAllocator): - (WebKit::AreaAllocator::size): - (WebKit::AreaAllocator::minimumAllocation): - (WebKit::AreaAllocator::setMinimumAllocation): - (WebKit::AreaAllocator::margin): - (WebKit::AreaAllocator::setMargin): - (GeneralAreaAllocator): - (Node): - * WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp: - (WebKit::LayerTreeCoordinator::renderNextFrame): - (WebKit::LayerTreeCoordinator::beginContentUpdate): - * WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.h: - (LayerTreeCoordinator): - * WebProcess/WebPage/UpdateAtlas.cpp: - (WebKit::UpdateAtlas::UpdateAtlas): - (WebKit::UpdateAtlas::buildLayoutIfNeeded): - (WebKit::UpdateAtlas::didSwapBuffers): - (WebKit::UpdateAtlas::beginPaintingOnAvailableBuffer): - * WebProcess/WebPage/UpdateAtlas.h: - (UpdateAtlas): - -2012-08-14 Sergio Villar Senin <svillar@igalia.com> - - [GTK] REGRESSION (r122428) WebKit2APITests/TestWebKitFindController fails "next" test - https://bugs.webkit.org/show_bug.cgi?id=91083 - - Reviewed by Carlos Garcia Campos. - - After r122428 search_next()/search_prev() should return just 1 match - if the text is found. - - * UIProcess/API/gtk/tests/TestWebKitFindController.cpp: - (testFindControllerNext): - (testFindControllerPrevious): - -2012-08-13 Carlos Garcia Campos <cgarcia@igalia.com> - - [GTK] Implement smart separators for context menu in WebKit2 GTK+ - https://bugs.webkit.org/show_bug.cgi?id=90449 - - Reviewed by Martin Robinson. - - Don't add to the context menu separators that are at the very - beginning or end of the menu. Once the context menu is shown, - monitor menu items visibility to hide or show separators to make - sure they never appear in the context menu unless they are between - two visible items. - - * UIProcess/API/gtk/tests/TestContextMenu.cpp: - (testContextMenuSmartSeparators): - (beforeAll): - * UIProcess/gtk/WebContextMenuProxyGtk.cpp: - (WebKit::contextMenuItemVisibilityChanged): - (WebKit): - (WebKit::WebContextMenuProxyGtk::append): - (WebKit::WebContextMenuProxyGtk::populate): - -2012-08-14 Kihong Kwon <kihong.kwon@samsung.com> - - [WK2] Add getter for capture attribute of input element - https://bugs.webkit.org/show_bug.cgi?id=93710 - - Reviewed by Antonio Gomes. - - Add getter for capture attribute to WKOpenPanelParameters to support HTML Media Capture. - - * Shared/WebCoreArgumentCoders.cpp: - (CoreIPC::::encode): - (CoreIPC::::decode): - * Shared/WebOpenPanelParameters.cpp: - (WebKit): - (WebKit::WebOpenPanelParameters::capture): - * Shared/WebOpenPanelParameters.h: - (WebOpenPanelParameters): - * UIProcess/API/C/WKOpenPanelParameters.cpp: - (WKOpenPanelParametersCopyCapture): - * UIProcess/API/C/WKOpenPanelParameters.h: - -2012-08-13 Tom Sepez <tsepez@chromium.org> - - [chromium] release FrameLoaderClientImpl::m_pluginWidget refptr upon Plugin Document detach. - https://bugs.webkit.org/show_bug.cgi?id=93283 - - Reviewed by Eric Seidel. - - Chromium has a refptr that needs to be NULLed at this point. - - Change the client redirectDataToPlugin method(s) to expect the possibility of - a NULL argument, keeping existing behaviour otherwise. - - * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: - (WebKit::WebFrameLoaderClient::redirectDataToPlugin): - -2012-08-13 Raphael Kubo da Costa <rakuco@webkit.org> - - [EFL] Unreviewed bot fix after r125467. - - * PlatformEfl.cmake: Make the WK2 tests link against glib, gobject - and gio as well. - -2012-08-13 Raphael Kubo da Costa <rakuco@webkit.org> - - [EFL] Unreviewed attempt at fixing the bots after r125467. - - * PlatformEfl.cmake: Link against GIO and GObject due to the usage - of libsoup. - -2012-08-11 Raphael Kubo da Costa <rakuco@webkit.org> - - [CMake] Rewrite FindLibSoup2.cmake. - https://bugs.webkit.org/show_bug.cgi?id=93191 - - Reviewed by Rob Buis. - - * PlatformEfl.cmake: Use LIBSOUP_FOO instead of LIBSOUP24_FOO, and - do not use LIBSOUP24_LDFLAGS, as it is not needed anymore. - -2012-08-13 Alexey Proskuryakov <ap@apple.com> - - [WK2] Move a remaining per-process message from WebContext to WebProcessProxy - https://bugs.webkit.org/show_bug.cgi?id=93883 - - More Windows build fixing. - - * UIProcess/WebContext.cpp: - (WebKit::WebContext::dummy): - -2012-08-13 Alexey Proskuryakov <ap@apple.com> - - [WK2] Move a remaining per-process message from WebContext to WebProcessProxy - https://bugs.webkit.org/show_bug.cgi?id=93883 - - More Windows build fix - - * UIProcess/WebContext.cpp: - (WebKit::WebPage::dummy): - * UIProcess/WebContext.h: (WebContext): - * UIProcess/WebContext.messages.in: - Add a dummy sync message - the same workaround is already used in WebPage. - -2012-08-13 Brady Eidson <beidson@apple.com> - - With asynchronous plug-in initialization, WebProcess and PluginProcess can deadlock - <rdar://problem/12062125> and https://bugs.webkit.org/show_bug.cgi?id=93894 - - Reviewed by Alexey Proskuryakov. - - A few things were in play here: - - The WebProcess thought the plug-in was done initializing but it wasn't. - - The sync message out from the PluginProcess was not being handled by the WebProcess. - - Expose the ability for the PluginProcess to act as if it is handling a sync message and needs messages dispatched: - * Platform/CoreIPC/Connection.h: - (CoreIPC::Connection::incrementDispatchMessageMarkedDispatchWhenWaitingForSyncReplyCount): - (CoreIPC::Connection::decrementDispatchMessageMarkedDispatchWhenWaitingForSyncReplyCount): - - * PluginProcess/PluginControllerProxy.cpp: - (WebKit::PluginControllerProxy::PluginControllerProxy): - (WebKit::PluginControllerProxy::setInitializationReply): Save the delayed reply for synchronous initialization. - (WebKit::PluginControllerProxy::takeInitializationReply): Give back the delayed reply for initialization completion. - (WebKit::PluginControllerProxy::initialize): - * PluginProcess/PluginControllerProxy.h: - (WebKit::PluginControllerProxy::isInitializing): Accessor so WebProcessConnection knows whether or not to store the - delayed reply for later. - - * PluginProcess/WebProcessConnection.messages.in: Make the synchronous form of "CreatePlugin" have a delayed reply. - * PluginProcess/WebProcessConnection.cpp: - (WebKit::WebProcessConnection::createPlugin): Store away the delayed reply message so it can be responded to after - asynchronous initialization completes. - (WebKit::WebProcessConnection::createPluginAsynchronously): If there is a stored away delayed reply message, respond to - it instead of sending the asynchronously reply. - * PluginProcess/WebProcessConnection.h: - (WebProcessConnection): - -2012-08-13 Alexey Proskuryakov <ap@apple.com> - - [WK2] Move a remaining per-process message from WebContext to WebProcessProxy - https://bugs.webkit.org/show_bug.cgi?id=93883 - - Windows build fix. - - * WebProcess/WebProcess.cpp: - (WebKit::WebProcess::getSitesWithPluginData): - (WebKit::WebProcess::clearPluginSiteData): - Use WebProcessProxy for the message here, too. - -2012-08-13 Alexey Proskuryakov <ap@apple.com> - - [WK2] Move a remaining per-process message from WebContext to WebProcessProxy - https://bugs.webkit.org/show_bug.cgi?id=93883 - - Reviewed by Sam Weinig. - - There was one plug-in message renaming. Moving it, and also other plug-in messages - for consistency. - - * UIProcess/WebContext.cpp: - (WebKit): Got rid of the last MESSAGE_CHECK in this file. - (WebKit::WebContext::WebContext): Moved m_pluginWorkQueue to a singleton. - We don't need more than one queue (all it does is read plug-in info), and if we - needed, it would have been per-process, not per-context. - (WebKit::WebContext::~WebContext): No more work queue. - (WebKit::WebContext::processDidFinishLaunching): Ditto. - - * UIProcess/WebContext.h: No longer needs to be a QueueClient. - - * UIProcess/WebContext.messages.in: - * UIProcess/WebProcessProxy.messages.in: - Moved plug-in related messages. - - * UIProcess/WebProcessProxy.cpp: - (WebKit::pluginWorkQueue): Moved from WebContext to a singleton. - (WebKit::WebProcessProxy::sendDidGetPlugins): Moved from WebContext. - (WebKit::WebProcessProxy::handleGetPlugins): Ditto. - (WebKit::WebProcessProxy::getPlugins): Ditto. - (WebKit::WebProcessProxy::getPluginPath): Ditto. - (WebKit::WebProcessProxy::getPluginProcessConnection): Ditto. - (WebKit::WebProcessProxy::didGetSitesWithPluginData): Ditto. - (WebKit::WebProcessProxy::didClearPluginSiteData): Ditto. - - * UIProcess/WebProcessProxy.h: Process proxy needs to be thread safe ref counted - now, since it sends messages to itself on a work queue and back. - - * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp: - (WebKit::WebPlatformStrategies::populatePluginCache): Updated for new receiver. - - * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::createPlugin): Ditto. - - * WebProcess/WebProcess.cpp: (WebKit::canPluginHandleResponse): Ditto. - -2012-08-13 Raphael Kubo da Costa <rakuco@webkit.org> - - [CMake] Remove glib-related Find modules and write single new one instead. - https://bugs.webkit.org/show_bug.cgi?id=93786 - - Reviewed by Rob Buis. - - * PlatformEfl.cmake: Use GLIB_* instead of Glib_*. - -2012-08-13 Christophe Dumez <christophe.dumez@intel.com> - - [SOUP][WK2] Missing LocalTerminationDisabler in WebCookieManager::setCookiePersistentStorage() - https://bugs.webkit.org/show_bug.cgi?id=93837 - - Reviewed by Carlos Garcia Campos. - - Add missing WebCore::LocalTerminationDisabler in - WebCookieManager::setCookiePersistentStorage() to - temporarily disable process termination. - - * WebProcess/Cookies/soup/WebCookieManagerSoup.cpp: - (WebKit::WebCookieManager::setCookiePersistentStorage): - -2012-08-12 Nuno Lopes <nlopes@apple.com> - - Fix build with recent clang. - https://bugs.webkit.org/show_bug.cgi?id=90701 - - Reviewed by Eric Seidel. - - * Shared/CommandLine.h: - (CommandLine): - * WebProcess/Notifications/NotificationPermissionRequestManager.cpp: - (WebKit::NotificationPermissionRequestManager::NotificationPermissionRequestManager): - * WebProcess/Notifications/NotificationPermissionRequestManager.h: - (NotificationPermissionRequestManager): - -2012-08-11 Sam Weinig <sam@webkit.org> - - Fix the build. - - * Platform/CoreIPC/Connection.h: - Add missing include. - -2012-08-11 Sam Weinig <sam@webkit.org> - - [WK2] Get rid of ProcessModelSharedSecondaryThread - https://bugs.webkit.org/show_bug.cgi?id=93652 - - Reviewed by Dan Bernstein. - - The threaded model for WebKit2 has been broken a long time and its continued existence in - the code only serves to confuse. It's time to say good bye to it. - - * UIProcess/API/C/WKContext.cpp: - * UIProcess/API/C/WKContextPrivate.h: - Remove WKContextGetSharedThreadContext(). - - * UIProcess/ProcessModel.h: - Remove ProcessModelSharedSecondaryThread from the ProcessModel enum. - - * UIProcess/WebContext.cpp: - * UIProcess/WebContext.h: - Remove WebContext::sharedThreadContext(). - - * UIProcess/WebProcessProxy.cpp: - (WebKit::WebProcessProxy::~WebProcessProxy): - (WebKit::WebProcessProxy::connect): - (WebKit::WebProcessProxy::isLaunching): - * UIProcess/WebProcessProxy.h: - Remove the ThreadLauncher member and stop deriving from ThreadLauncher::Client. - - * UIProcess/Launcher/ThreadLauncher.cpp: Removed. - * UIProcess/Launcher/ThreadLauncher.h: Removed. - * UIProcess/Launcher/efl/ThreadLauncherEfl.cpp: Removed. - * UIProcess/Launcher/gtk/ThreadLauncherGtk.cpp: Removed. - * UIProcess/Launcher/mac/ThreadLauncherMac.mm: Removed. - * UIProcess/Launcher/qt/ThreadLauncherQt.cpp: Removed. - * UIProcess/Launcher/win/ThreadLauncherWin.cpp: Removed. - * WebKit2.xcodeproj/project.pbxproj: - * win/WebKit2.vcproj: - * CMakeLists.txt: - * GNUmakefile.list.am: - * PlatformEfl.cmake: - * Target.pri: - Remove ThreadLauncher files. - -2012-08-11 Sam Weinig <sam@webkit.org> - - Enable XPC Service based WebProcess with runtime flag - https://bugs.webkit.org/show_bug.cgi?id=93773 - - Reviewed by Dan Bernstein. - - Use the XPC Service for WebProcess code path if WEBKIT_USE_XPC_SERVICE_FOR_WEB_PROCESS - is set in the environment. - - * UIProcess/Launcher/mac/ProcessLauncherMac.mm: - (WebKit::launchXPCService): - Fix issue that was causing this code not to compile. This was not caught before since - the code was not being built. - - * UIProcess/WebProcessProxy.cpp: - (WebKit::WebProcessProxy::connect): - Switch from hard coding always using the XPC Service code path if - HAVE(XPC) was true, to doing it conditionally on an environment variable. - -2012-08-11 Sam Weinig <sam@webkit.org> - - Make it possible to run the WebProcess as an XPC service - https://bugs.webkit.org/show_bug.cgi?id=92814 - - Reviewed by Anders Carlsson. - - In this initial implementation, we are only using the XPC service - to launch the WebProcess, and then using the xpc_connection to send - over a mach_port to the WebProcess which is then used for creating - the CoreIPC connection. In the future, we will switch to using the - xpc_connection for all messaging. - - When the XPC service is enabled (it is compiled out by default for now), both - the XPC service and the old spawned process are runtime choosable. This allows - the connect to pre-existing process workflow to continue to work. - - There are a few additional caveats of this initial implementation: - - It is only set up for the WebProcess (not for the PluginProcess) - - The WebProcess shim does not work. - - It requires a new environment variable to be set when launching - to find the right service to launch (__XPC_DYLD_FRAMEWORK_PATH). - - * Configurations/WebKit2Service.xcconfig: Added. - Add new configuration file for the service. - - * Platform/CoreIPC/Connection.h: - (CoreIPC::Connection::Identifier::Identifier): - (CoreIPC::Connection::identifierIsNull): - Added to encapsulate the concept of a null identifier, now that it - is not possible to just compare to null. - - * Platform/CoreIPC/mac/ConnectionMac.cpp: - (CoreIPC::Connection::platformInvalidate): - (CoreIPC::Connection::platformInitialize): - Change Connection::Identifier on the Mac to be a struct instead of - a typedef to a mach_port. This allows for the Connection to get both - the listening port and a reference to the xpc_connection (if it - compiled in). For now, all we do is retain the xpc_connection when it - is given to us, and release on Connection invalidation. - - * PluginProcess/PluginProcess.cpp: - (WebKit::PluginProcess::createWebProcessConnection): - * PluginProcess/mac/PluginProcessMainMac.mm: - (WebKit::PluginProcessMain): - * WebProcess/Plugins/PluginProcessConnectionManager.cpp: - (WebKit::PluginProcessConnectionManager::getPluginProcessConnection): - Use the Connection::Identifier constructor. - - * UIProcess/Launcher/ProcessLauncher.h: - (LaunchOptions): - Add a UseXPC option to the LaunchOptions so we can dynamically choose whether to use it. - - (ProcessLauncher): - Make processTypeAsString public to allow better factoring in the implementation file - using static functions. - - * UIProcess/Launcher/mac/ProcessLauncherMac.mm: - Factor out the different launching options into helper functions. Always start by - trying to connect to a pre-existing process. - - (WebKit::launchXPCService): - Create a new xpc_connection to our service, and give it a unique instance UUID. - Then, send a bootstrap message with a mach_port and wait for a reply to complete - the launch procedure. - - (WebKit::tryPreexistingProcess): - Move the code to connect to a preexisting process to its own helper function. - - (WebKit::ProcessLauncher::launchProcess): - Clean up a bit, calling the helper functions and adding call to launch the XPC service - if it is enabled. - - * UIProcess/Launcher/mac/ThreadLauncherMac.mm: - (WebKit::webThreadBody): - (WebKit::ThreadLauncher::createWebThread): - Switch to using the constructor version of Identifier. - - * UIProcess/Plugins/PluginProcessProxy.cpp: - (WebKit::PluginProcessProxy::PluginProcessProxy): - Don't try to use the XPC service for plugins yet. - - (WebKit::PluginProcessProxy::didFinishLaunching): - Use Connection::identifierIsNull instead of explicit null check. - - * UIProcess/WebProcessProxy.cpp: - (WebKit::WebProcessProxy::connect): - If XPC is compiled in (it currently is not) enable it by default. - - * WebKit2.xcodeproj/project.pbxproj: - Add the new files and targets. - - * WebKit2Service: Added. - * WebKit2Service/Info.plist: Added. - Add the paper work needed for an XPC service. Importantly, set up the XPC - service to be an Application service type, use NSApplicationMain as its run - loop, and allow for multiple instantiations. Also make sure the service acts - like the WebProcess binary by making it a LSUIElement, enabling LSFileQuarantine, - and setting the principle class to NSApplication. - - * WebKit2Service/MainMacService.mm: Added. - (WebKit2ServiceEventHandler): - (main): - The initialization of the XPC service is quite a bit different than the - WebProcess version, since we don't get passed parameters in argv. Instead, - we initiate the XPC service via xpc_main, and wait for the bootstrap message - we sent in ProcessLauncherMac.mm. When we receive that message we can load - WebKit2 framework and initialize the WebProcess normally (we also get the mach_port - for the CoreIPC connection in that bootstrap message). - - * WebProcess/mac/WebProcessMainMac.mm: - (WebKit::WebProcessMainXPC): - Add a variant of WebProcessMain that is used for the XPC service case, where we don't - have command line arguments and don't need to talk to the mach bootstrap server. - - (WebKit::WebProcessMain): - * mac/MainMac.cpp: Removed. - * mac/MainMacProcess.cpp: Copied from Source/WebKit2/mac/MainMac.cpp. - Rename MainMac to MainMacProcess to signify that it is different from the XPC - service main. - -2012-08-09 Jer Noble <jer.noble@apple.com> - - Crash exiting from HTML5 FS mode to normal mode via ESC key - https://bugs.webkit.org/show_bug.cgi?id=93663 - - Reviewed by Eric Carlson. - - Crash is due to a refcount underrun with _watchdogTimer due to adopting an autoreleased NSTimer. - Use the non-autoreleased NSTimer creation method and manually add to the main NSRunLoop. - - * UIProcess/mac/WKFullScreenWindowController.mm: - (-[WKFullScreenWindowController cancelOperation:]): - -2012-08-10 Rafael Brandao <rafael.lobo@openbossa.org> - - [Qt] WebViewLoadFavIcon::test_favIconLoad() fails - https://bugs.webkit.org/show_bug.cgi?id=91888 - - Reviewed by Simon Hausmann. - - * UIProcess/API/qt/tests/qmltests/WebView/tst_favIconLoad.qml: - We should wait for iconChanged signal instead of loadFinished, - there was no guarantee that at that point we would get it already. - -2012-08-10 Allan Sandfeld Jensen <allan.jensen@nokia.com> - - [Qt] Uninitialized flags in CoordinatedGraphicsLayer - https://bugs.webkit.org/show_bug.cgi?id=93719 - - Reviewed by Kenneth Rohde Christiansen. - - * WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp: - (WebCore::CoordinatedGraphicsLayer::CoordinatedGraphicsLayer): + (ewk_view_resource_load_failed): + (ewk_view_download_job_failed): + (ewk_view_load_error): + (ewk_view_load_provisional_failed): + * UIProcess/API/efl/ewk_view.h: + * UIProcess/API/efl/ewk_view_loader_client.cpp: + (didFailLoadWithErrorForFrame): + (didFailProvisionalLoadWithErrorForFrame): + * UIProcess/API/efl/ewk_view_private.h: + * UIProcess/API/efl/ewk_view_resource_load_client.cpp: + (didFailLoadForResource): + * UIProcess/API/efl/tests/test_ewk2_cookie_manager.cpp: + (getAcceptPolicyCallback): + (getHostnamesWithCookiesCallback): + * UIProcess/API/efl/tests/test_ewk2_download_job.cpp: + (on_download_failed): -2012-08-10 Mario Sanchez Prada <msanchez@igalia.com> +2012-10-05 Sudarsana Nagineni <sudarsana.nagineni@intel.com> - [WK2][GTK] Implement new API to save a web page using MHTML - https://bugs.webkit.org/show_bug.cgi?id=89873 + [WK2][GTK] WebPageAccessibilityObject leaking + https://bugs.webkit.org/show_bug.cgi?id=98502 Reviewed by Carlos Garcia Campos. - Implemented new asynchronous API in WebKitWebView for saving a web - page to a GInputStream or to a file, using MHTML as the only - supported method at the moment. - - * UIProcess/API/gtk/WebKitWebView.cpp: - (ViewSaveAsyncData): - (webViewFileSavedCallback): - (webViewMHTMLDataGotCallback): - (webkit_web_view_save): - (webkit_web_view_save_finish): - (webkit_web_view_save_to_file): - (webkit_web_view_save_to_file_finish): - * UIProcess/API/gtk/WebKitWebView.h: - - Added new unit test. - - * UIProcess/API/gtk/tests/TestWebKitWebView.cpp: - (testWebViewSave): - (beforeAll): - (afterAll): - - Updated documentation files with new symbols. - - * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: - -2012-08-09 Carlos Garcia Campos <cgarcia@igalia.com> - - Handle SSL errors for SOUP - https://bugs.webkit.org/show_bug.cgi?id=90267 - - Reviewed by Martin Robinson. - - Ignore SSL errors by default for compatibility. - - * WebProcess/efl/WebProcessMainEfl.cpp: - (WebKit::WebProcessMainEfl): - * WebProcess/gtk/WebProcessMainGtk.cpp: - (WebKit::WebProcessMainGtk): - -2012-08-09 Alexey Proskuryakov <ap@apple.com> - - [WK2] Add a process model constant for multiple processes - https://bugs.webkit.org/show_bug.cgi?id=93642 - - Reviewed by Anders Carlsson. - - * UIProcess/ProcessModel.h: Added ProcessModelMultipleSecondaryProcesses. - Deleted ProcessModelSecondaryProcess in favor of more descriptive ProcessModelSharedSecondaryProcess - - these used to behave the same. - - * UIProcess/WebContext.cpp: (WebKit::WebContext::create): Changed to use ProcessModelSharedSecondaryProcess. - - * UIProcess/WebProcessProxy.h: Removed an unncessary include of ProcessModel.h. - -2012-08-09 Dan Bernstein <mitz@apple.com> - - <rdar://problem/12035637> 32-bit PluginProcess launches without appropriate DYLD environment variables if UI process is 64-bit only - https://bugs.webkit.org/show_bug.cgi?id=93596 - - Reviewed by Mark Rowe. - - * UIProcess/Launcher/mac/ProcessLauncherMac.mm: - (WebKit::ProcessLauncher::launchProcess): Changed to pass the current architecture, rather than - the intended child process architecture, to the DynamicLinkerEnvironmentExtractor constructor. - -2012-08-09 Tim Horton <timothy_horton@apple.com> - - Add optional debug logging for tiled scrolling - https://bugs.webkit.org/show_bug.cgi?id=93305 - - Reviewed by Simon Fraser. - - Add a new boolean preference, ScrollingPerformanceLoggingEnabled, which will be used to toggle - the WebCore parts of this change. + Use GRefPtr on the accessibility object to fix the leak. - * Shared/WebPreferencesStore.h: Add ScrollingPerformanceLoggingEnabled. - * UIProcess/API/C/WKPreferences.cpp: - (WKPreferencesSetScrollingPerformanceLoggingEnabled): Added. - (WKPreferencesGetScrollingPerformanceLoggingEnabled): Added. - * UIProcess/API/C/WKPreferencesPrivate.h: Add getters and setters for ScrollingPerformanceLoggingEnabled. - * WebProcess/WebPage/WebPage.cpp: - (WebKit::WebPage::WebPage): Add ScrollingPerformanceLoggingEnabled. - (WebKit::WebPage::updatePreferences): Add ScrollingPerformanceLoggingEnabled. - (WebKit::WebPage::setScrollingPerformanceLoggingEnabled): Propagate settings changes through to FrameView. - * WebProcess/WebPage/WebPage.h: - (WebKit::WebPage::scrollingPerformanceLoggingEnabled): Add a getter for the setting so that TiledCoreAnimationDrawingArea can access it. - * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm: - (WebKit::TiledCoreAnimationDrawingArea::updatePreferences): Pass ScrollingPerformanceLoggingEnabled down into the scrolling thread. - -2012-08-08 Shane Stephens <shanestephens@google.com> - - Compile flag for CSS Hierarchies - https://bugs.webkit.org/show_bug.cgi?id=92433 - - Reviewed by Tony Chang. - - * Configurations/FeatureDefines.xcconfig: - -2012-08-08 Anders Carlsson <andersca@apple.com> - - REGRESSION: Crash when plug-in initialization fails - https://bugs.webkit.org/show_bug.cgi?id=93534 - <rdar://problem/12059786> - - Reviewed by Simon Fraser. - - Protect the PluginProxy while calling out to functions that could cause it to be destroyed. - - * WebProcess/Plugins/PluginProxy.cpp: - (WebKit::PluginProxy::didFailToCreatePluginInternal): - -2012-08-08 Anders Carlsson <andersca@apple.com> - - Make isTransparentSilverlightBackgroundValue handle all the possible transparent colors - https://bugs.webkit.org/show_bug.cgi?id=93532 - - Reviewed by Simon Fraser. - - * WebProcess/Plugins/Netscape/NetscapePlugin.cpp: - (WebKit::isTransparentSilverlightBackgroundValue): - Check for all the possible transparent colors and assume that the color is opaque otherwise. - - (WebKit::NetscapePlugin::initialize): - Pass the lowercase string to isTransparentSilverlightBackgroundValue. - -2012-08-08 Beth Dakin <bdakin@apple.com> - - https://bugs.webkit.org/show_bug.cgi?id=92275 - Need a way to get a snapshot image that does not show the selection - -and corresponding- - <rdar://problem/11956802> - - Reviewed by Anders Carlsson. - - Added new API WKBundlePageCreateSnapshotWithOptions() - - New enum SnapshotOptions tracks whether snapshots should exclude - selection highlighting in addition to tracking whether the image is - sharable like the original ImageOptions. - * Shared/API/c/WKImage.h: - * Shared/API/c/WKSharedAPICast.h: - (WebKit::snapshotOptionsFromImageOptions): - (WebKit): - (WebKit::toSnapshotOptions): - * Shared/ImageOptions.h: - - New API. - * WebProcess/InjectedBundle/API/c/WKBundlePage.h: - * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp: - (WKBundlePageCreateSnapshotWithOptions): - - These existing APIs all now call - WebPage::scaledSnapshotWithOptions(). - (WKBundlePageCreateSnapshotInViewCoordinates): - (WKBundlePageCreateSnapshotInDocumentCoordinates): - (WKBundlePageCreateScaledSnapshotInDocumentCoordinates): - - This patch removes WebPage::snapshotInViewCoordinates(), - WebPage::snapshotInDocumentCoordinates(), and - WebPage::scaledSnapshotInDocumentCoordinates(). All of the logic is - now consolidated into WebPage::scaledSnapshotWithOptions(). It turns - out that we never did anything different for document coordinates - versus view coordinates, so that complexity could just be eliminated - outright. - * WebProcess/WebPage/WebPage.cpp: - (WebKit::snapshotOptionsToImageOptions): - (WebKit::WebPage::scaledSnapshotWithOptions): - (WebKit): * WebProcess/WebPage/WebPage.h: (WebPage): + * WebProcess/WebPage/gtk/WebPageGtk.cpp: + (WebKit::WebPage::platformInitialize): + (WebKit::WebPage::updateAccessibilityTree): -2012-08-08 Anders Carlsson <andersca@apple.com> - - Make the Silverlight CAOpenGLLayer opaque if we know the plug-in contents is opaque to reduce blending - https://bugs.webkit.org/show_bug.cgi?id=93508 - <rdar://problem/12056765> - - Reviewed by Simon Fraser. - - * Shared/Plugins/Netscape/mac/NetscapePluginModuleMac.mm: - (WebKit::NetscapePluginModule::determineQuirks): - * Shared/Plugins/PluginQuirks.h: - Rename the MakeTransparentIfBackgroundAttributeExists quirk to MakeOpaqueUnlessTransparentSilverlightBackgroundAttributeExists - since we'll explicitly check for opaque background colors (at least one opaque background color for now), instead of just making the - plug-in transparent whenever there's a background specified. - - * WebProcess/Plugins/Netscape/NetscapePlugin.cpp: - (WebKit::isTransparentSilverlightBackgroundValue): - Helper function for determining if a background value is transparent. Just check for opaque black now and treat everything else as transparent. - - (WebKit::NetscapePlugin::initialize): - Call isTransparentSilverlightBackgroundValue. - - * WebProcess/Plugins/Netscape/mac/NetscapePluginMac.mm: - (WebKit::makeCGLPresentLayerOpaque): - Helper function for grabbing the CGLPresentLayer from the layer hierarchy and setting it to be opaque. - - (WebKit::NetscapePlugin::updatePluginLayer): - Call makeCGLPresentLayerOpaque if the plug-in has the MakeOpaqueUnlessTransparentSilverlightBackgroundAttributeExists quirk and - the plug-in is not transparent. - -2012-08-08 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> - - [WK2] Coding style violation was brought with r125031 - https://bugs.webkit.org/show_bug.cgi?id=93503 - - Reviewed by Alexey Proskuryakov. - - WKURLResponseCopyMimeType is corrected to WKURLResponseCopyMIMEType. - - * Shared/API/c/WKURLResponse.cpp: - (WKURLResponseCopyMIMEType): - * Shared/API/c/WKURLResponse.h: - -2012-08-08 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> - - [EFL] EFL Webkit needs a class wrapping eina stringshare - https://bugs.webkit.org/show_bug.cgi?id=93229 - - Reviewed by Kenneth Rohde Christiansen. - - Added a new auxiliary class wrapping Eina Stringshare and providing - more convenient C++ interface for using it. - - * PlatformEfl.cmake: - * UIProcess/API/cpp/efl/WKEinaSharedString.cpp: Added. - (:m_string): - (WKEinaSharedString::~WKEinaSharedString): - (WKEinaSharedString::operator=): - * UIProcess/API/cpp/efl/WKEinaSharedString.h: Added. - (WebKit): - -2012-08-08 Balazs Kelemen <kbalazs@webkit.org> - - [Qt] Snowshoe desktop crashes when opening a new tab - https://bugs.webkit.org/show_bug.cgi?id=92753 - - Reviewed by Jocelyn Turcotte. - - Change back forceRepaint to consider the UI process state. - It has been tweaked to satisfy the needs of WKPageForceRepaint but - it has other callers so this new behavior was not safe. This patch - implements WebPage::forceRepaintAsync for testing purposes. It is - done by LayerTreeCoordinator that holds the callback and sends the - reply message in the next flushPendingLayerChanges. In theory it - could be implemented for the non conposited path in DrawingAreaImpl - as well but neither it is needed nor can I test it. - - * WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp: - (WebKit::LayerTreeCoordinator::LayerTreeCoordinator): - (WebKit::LayerTreeCoordinator::forceRepaintAsync): - (WebKit): - (WebKit::LayerTreeCoordinator::flushPendingLayerChanges): - * WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.h: - (LayerTreeCoordinator): - * WebProcess/WebPage/DrawingAreaImpl.cpp: - (WebKit::DrawingAreaImpl::forceRepaintAsync): - (WebKit): - * WebProcess/WebPage/DrawingAreaImpl.h: - (DrawingAreaImpl): - * WebProcess/WebPage/LayerTreeHost.h: - (WebKit::LayerTreeHost::forceRepaintAsync): - -2012-08-08 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> - - [WK2] [WTR] Provide Resource Response dumping. - https://bugs.webkit.org/show_bug.cgi?id=93454 - - Reviewed by Kenneth Rohde Christiansen. - - Several new getter functions were added to WKURLResponse and WKURL, so that WTR has - necessary data for dumping. - - * Shared/API/c/WKURL.cpp: - (WKURLCopyLastPathComponent): - * Shared/API/c/WKURL.h: - * Shared/API/c/WKURLResponse.cpp: - (WKURLResponseCopyURL): Returns URL of the response. - (WKURLResponseCopyMimeType): Returns MIME type of the response. - * Shared/API/c/WKURLResponse.h: - * Shared/WebURL.h: - (WebKit::WebURL::lastPathComponent): Returns last path component of the URL. - (WebURL): +2012-10-05 Jinwoo Song <jinwoo7.song@samsung.com> -2012-08-08 Eunmi Lee <eunmi15.lee@samsung.com> + [EFL][WK2] Add API to count the matching text + https://bugs.webkit.org/show_bug.cgi?id=97873 - [EFL][WK2] Make ewk_view inheritable in the WebKit2. - https://bugs.webkit.org/show_bug.cgi?id=90054 + Reviewed by Gyuyoung Kim. - Reviewed by Kenneth Rohde Christiansen. + Add an API, ewk_view_text_matches_count(), to count the matched text in the document. + This API does not highlight the matched text in the document unlike ewk_view_text_find(). - Make the ewk_view inheritable by exposing ewk_view_smart_class_set() - API. Additionally, the ewk_view_smart_add() API is added to create - Evas_Object for WebKit2 EFL. The default initialization is done in the - ewk_view_smart_add(), so the object which inherits the ewk_view should - use ewk_view_smart_add() instead of evas_object_smart_add() to create - Evas_Object. + ewk_view_text_find() finds the matching text and but also update the UI view, + but some applications may not want to affect the view, and just want to know the count. - * UIProcess/API/efl/ewk_context.cpp: - (ewk_context_new_from_WKContext): - * UIProcess/API/efl/ewk_context_private.h: * UIProcess/API/efl/ewk_view.cpp: - (ewk_view_smart_class_set): - (_ewk_view_smart_class_new): - (_ewk_view_initialize): - (_ewk_view_add_with_smart): - (ewk_view_base_add): - (ewk_view_smart_add): - (ewk_view_add_with_context): + (ewk_view_text_matches_count): * UIProcess/API/efl/ewk_view.h: + * UIProcess/API/efl/tests/test_ewk2_view.cpp: + (TEST_F): -2012-08-08 Allan Sandfeld Jensen <allan.jensen@nokia.com> - - [Qt] WebProcess hangs on plugin initialization. - https://bugs.webkit.org/show_bug.cgi?id=93272 - - Reviewed by Kenneth Rohde Christiansen. - - * UIProcess/Plugins/PluginProcessProxy.cpp: - (WebKit::PluginProcessProxy::didFinishLaunching): Ensure PluginProcessConnectionManager is informed of plugin crashes. - * WebProcess/WebPage/WebPage.cpp: - (WebKit::WebPage::WebPage): Let setIsInWindow set canStartMedia asynchronously. - -2012-08-08 Andras Becsi <andras.becsi@nokia.com> - - [Qt][WK2] Set the fixed layout setting before creating the page - https://bugs.webkit.org/show_bug.cgi?id=93374 - - Reviewed by Noam Rosenthal. - - Any page setting should preferrable be set before creating the page - but fixed layout was set after the initialization of the web page. - - * UIProcess/API/qt/qquickwebview.cpp: - (QQuickWebViewPrivate::initialize): - (QQuickWebViewFlickablePrivate::initialize): - -2012-08-08 Mario Sanchez Prada <msanchez@igalia.com> - - [WK2] Add new C API to generate MHTML data from the UI process - https://bugs.webkit.org/show_bug.cgi?id=89872 - - Reviewed by Anders Carlsson. - - Add new C API in the UI Process, using ENABLE(MHTML) guards as needed. - - * UIProcess/API/C/WKPage.cpp: - (WKPageGetContentsAsMHTMLData): - * UIProcess/API/C/WKPage.h: +2012-10-05 Sudarsana Nagineni <sudarsana.nagineni@intel.com> - Implementation in the UI Process's WebPage proxy object. + [WK2][GTK][EFL] standard_output returned by g_spawn_sync must be freed + https://bugs.webkit.org/show_bug.cgi?id=98384 - * UIProcess/WebPageProxy.cpp: - (WebKit): - (WebKit::WebPageProxy::getContentsAsMHTMLData): - * UIProcess/WebPageProxy.h: - (WebPageProxy): + Reviewed by Gyuyoung Kim. - Implementation in the WebProcess, relying in WebCore::MHTMLArchive. + Free the standard_output returned by g_spawn_sync() to avoid + a memory leak. - * WebProcess/WebPage/WebPage.cpp: - (WebKit): - (WebKit::WebPage::getContentsAsMHTMLData): - * WebProcess/WebPage/WebPage.h: - (WebPage): - * WebProcess/WebPage/WebPage.messages.in: + * UIProcess/Plugins/unix/PluginProcessProxyUnix.cpp: + (WebKit::PluginProcessProxy::scanPlugin): -2012-08-07 YoungTaeck Song <youngtaeck.song@samsung.com> +2012-10-05 Jongseok Yang <js45.yang@samsung.com> - [WK2][EFL] Implement accelerated compositing on WK2 Efl port - https://bugs.webkit.org/show_bug.cgi?id=89840 + [EFL][WK2] Remove "web" word from ewk_resource APIs + https://bugs.webkit.org/show_bug.cgi?id=97887 - Reviewed by Noam Rosenthal. + Reviewed by Gyuyoung Kim. - Implement accelerated composition with TiledBackingStore on WK2 Efl port. - This implementation is based on COORDINATED_GRAPHICS. + Remove "web" word from ewk_web_resource APIs. + "web" word was redundant because "ewk" means "EFL WebKit" and enough to understand the meaning with ewk_resource_XXX. - * CMakeLists.txt: * PlatformEfl.cmake: - * Shared/ShareableSurface.cpp: - * Shared/WebCoreArgumentCoders.cpp: - * Shared/WebCoreArgumentCoders.h: - * UIProcess/API/efl/PageClientImpl.cpp: - (WebKit::PageClientImpl::PageClientImpl): - (WebKit::PageClientImpl::didChangeContentsSize): - (WebKit): - * UIProcess/API/efl/PageClientImpl.h: - (PageClientImpl): - * UIProcess/API/efl/ViewportProcessor.cpp: Added. - (WebKit): - (WebKit::ViewportProcessor::ViewportProcessor): - (WebKit::ViewportProcessor::~ViewportProcessor): - (WebKit::ViewportProcessor::display): - (WebKit::ViewportProcessor::updateViewportSize): - (WebKit::ViewportProcessor::setVisibleContentsRect): - (WebKit::ViewportProcessor::didChangeContentsSize): - * UIProcess/API/efl/ViewportProcessor.h: Added. - (WebKit): - (ViewportProcessor): - (WebKit::ViewportProcessor::create): - (WebKit::ViewportProcessor::drawingArea): - (WebKit::ViewportProcessor::viewSize): + * UIProcess/API/efl/EWebKit2.h: + * UIProcess/API/efl/ewk_resource.cpp: Renamed from Source/WebKit2/UIProcess/API/efl/ewk_web_resource.cpp. + (_Ewk_Resource): + (_Ewk_Resource::_Ewk_Resource): + (_Ewk_Resource::~_Ewk_Resource): + (ewk_resource_ref): + (ewk_resource_unref): + (ewk_resource_url_get): + (ewk_resource_new): + (ewk_resource_main_resource_get): + * UIProcess/API/efl/ewk_resource.h: Renamed from Source/WebKit2/UIProcess/API/efl/ewk_web_resource.h. + * UIProcess/API/efl/ewk_resource_private.h: Renamed from Source/WebKit2/UIProcess/API/efl/ewk_web_resource_private.h. * UIProcess/API/efl/ewk_view.cpp: - (_Ewk_View_Private_Data): - (_ewk_view_smart_calculate): - (ewk_view_base_add): - (ewk_view_display): - (ewk_view_contents_size_changed): + (_ewk_view_priv_loading_resources_clear): + (ewk_view_resource_load_initiated): + (ewk_view_resource_load_response): + (ewk_view_resource_load_failed): + (ewk_view_resource_load_finished): + (ewk_view_resource_request_sent): + * UIProcess/API/efl/ewk_view.h: * UIProcess/API/efl/ewk_view_private.h: - * UIProcess/PageClient.h: - (PageClient): - * UIProcess/WebPageProxy.cpp: - (WebKit): - (WebKit::WebPageProxy::didChangeContentsSize): - * UIProcess/WebPageProxy.h: - (WebPageProxy): - * UIProcess/WebPageProxy.messages.in: - * WebProcess/WebPage/LayerTreeCoordinator/LayerTreeCoordinator.cpp: - * WebProcess/WebPage/LayerTreeCoordinator/LayerTreeCoordinator.h: - * WebProcess/WebPage/LayerTreeHost.cpp: - (WebKit::LayerTreeHost::create): - * WebProcess/WebPage/LayerTreeHost.h: - (WebKit): - * WebProcess/efl/WebProcessMainEfl.cpp: - (WebKit::WebProcessMainEfl): - -2012-08-07 Csaba Osztrogonác <ossy@webkit.org> - - [Qt] New API tests introuduced in r119723 marked as fail, but pass - https://bugs.webkit.org/show_bug.cgi?id=88870 - - Reviewed by Alexis Menard. - - Revert r119723, because there are 2 failing tests, and the author and - the reviewer of the original patch ignore the bug report long time ago. - - * UIProcess/API/qt/tests/qmltests/WebView/tst_devicePixelRatio.qml: Removed. - -2012-08-07 No'am Rosenthal <noam.rosenthal@nokia.com> - - GraphicsLayerAnimation shouldn't use HashMap<String> - https://bugs.webkit.org/show_bug.cgi?id=93284 - - Reviewed by Kenneth Rohde Christiansen. - - Apply the changes to GraphicsLayerAnimation API. - - * WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp: - (WebCore::CoordinatedGraphicsLayer::addAnimation): - -2012-08-07 No'am Rosenthal <noam.rosenthal@nokia.com> - - [Qt] Make it possible to build without QtQuick - - Reviewed by Simon Hausmann. - - * Target.pri: - * UIProcess/API/qt/tests/tests.pri: - * UIProcess/API/qt/tests/util.cpp: - * UIProcess/API/qt/tests/util.h: - * UIProcess/qt/WebFullScreenManagerProxyQt.cpp: - (WebKit::WebFullScreenManagerProxy::invalidate): - (WebKit::WebFullScreenManagerProxy::enterFullScreen): - (WebKit::WebFullScreenManagerProxy::exitFullScreen): - * UIProcess/qt/WebPageProxyQt.cpp: - (WebKit::WebPageProxy::resolveApplicationSchemeRequest): - (WebKit::WebPageProxy::sendApplicationSchemeReply): - * WebKit2.pri: - -2012-07-19 Simon Hausmann <simon.hausmann@nokia.com> - - [Qt] Remove Qt 4 specific code paths - https://bugs.webkit.org/show_bug.cgi?id=88161 - - Reviewed by Kenneth Rohde Christiansen. + * UIProcess/API/efl/ewk_view_resource_load_client.cpp: + (didInitiateLoadForResource): - * UIProcess/API/qt/qquickwebview.cpp: - * UIProcess/API/qt/tests/publicapi/tst_publicapi.cpp: - (gatherAPI): - * WebKit2.pri: +2012-10-04 Ryuan Choi <ryuan.choi@samsung.com> -2012-08-07 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> + [EFL][WK2] ewk_web_error_free is not a public API + https://bugs.webkit.org/show_bug.cgi?id=98482 - [EFL][WK2] Add back forward list API - https://bugs.webkit.org/show_bug.cgi?id=92345 + Reviewed by Gyuyoung Kim. - Reviewed by Kenneth Rohde Christiansen. + Because Ewk_Web_Error is just passed as a parameter of callback function + and maintained internally, ewk_web_error_free should not be a public API. - Added new Back Forward list API to EFL WK2. Ewk_Back_Forward_List and - Ewk_Back_Forward_List_Item structures were added. The new API is - mostly the same as one from UIProcess/API/C/{ WKBackForwardList.h, WKBackForwardListItem.h }. + This patch moves ewk_web_error_free from public header to private header. - * PlatformEfl.cmake: - * UIProcess/API/efl/ewk_back_forward_list.cpp: Added. - (_Ewk_Back_Forward_List): - (_Ewk_Back_Forward_List::_Ewk_Back_Forward_List): - (getOrCreateItem): - (webkit_back_forward_list_current_item_get): - (webkit_back_forward_list_back_item_get): - (webkit_back_forward_list_forward_item_get): - (webkit_back_forward_list_item_at_index_get): - (webkit_back_forward_list_length_get): - (ewk_back_forward_list_changed): - (ewk_back_forward_list_new): - (ewk_back_forward_list_free): - * UIProcess/API/efl/ewk_back_forward_list.h: Added. - * UIProcess/API/efl/ewk_back_forward_list_item.cpp: Added. - (getItemProperty): - (_Ewk_Back_Forward_List_Item): - (_Ewk_Back_Forward_List_Item::_Ewk_Back_Forward_List_Item): - (_Ewk_Back_Forward_List_Item::~_Ewk_Back_Forward_List_Item): - (ewk_back_forward_list_item_ref): - (ewk_back_forward_list_item_unref): - (ewk_back_forward_list_item_uri_get): - (ewk_back_forward_list_item_title_get): - (ewk_back_forward_list_item_original_uri_get): - (ewk_back_forward_list_item_new): - * UIProcess/API/efl/ewk_back_forward_list_item.h: Added. - * UIProcess/API/efl/ewk_back_forward_list_item_private.h: Added. - * UIProcess/API/efl/ewk_back_forward_list_private.h: Added. - * UIProcess/API/efl/ewk_view.cpp: - (_Ewk_View_Private_Data): - (_Ewk_View_Private_Data::_Ewk_View_Private_Data): - (_Ewk_View_Private_Data::~_Ewk_View_Private_Data): - (ewk_view_back_forward_list_get): New function to get back-forward list. - * UIProcess/API/efl/ewk_view.h: + * UIProcess/API/efl/ewk_context_download_client.cpp: * UIProcess/API/efl/ewk_view_loader_client.cpp: - (didChangeBackForwardList): The callback added to update back-forward list items cache. - (ewk_view_loader_client_attach): - -2012-08-07 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> - - CUSTOM_SCHEME_HANDLER flag should depend on REGISTER_PROTOCOL_HANDLER - https://bugs.webkit.org/show_bug.cgi?id=93081 - - Reviewed by Adam Barth. - - CUSTOM_SCHEME_HANDLER #if guards are enclosed in the REGISTER_PROTOCOL_HANDLER guards. - - * WebProcess/WebCoreSupport/WebRegisterProtocolHandlerClient.h: - (WebRegisterProtocolHandlerClient): - -2012-08-07 Hyerim Bae <hyerim.bae@samsung.com> - - [EFL][WK2] Add ewk_view_find_client.h / cpp for wrapping WKPageSetPageFindClient. - https://bugs.webkit.org/show_bug.cgi?id=90927 - - Reviewed by Kentaro Hara. - - Add ewk_view_find_client.h / files for wrapping WKPageSetPageFindClient, - add didFindString callback member of WKPageSetPageFindClient. - - * PlatformEfl.cmake: - * UIProcess/API/efl/ewk_view.cpp: - (ewk_view_base_add): - (ewk_view_text_found): - (ewk_view_text_find): - (ewk_view_text_find_highlight_clear): - * UIProcess/API/efl/ewk_view.h: - * UIProcess/API/efl/ewk_view_find_client.cpp: Added. - (toEwkView): - (didFindString): - (ewk_view_find_client_attach): - * UIProcess/API/efl/ewk_view_find_client_private.h: Added. - * UIProcess/API/efl/ewk_view_private.h: - -2012-08-06 Sheriff Bot <webkit.review.bot@gmail.com> - - Unreviewed, rolling out r124816. - http://trac.webkit.org/changeset/124816 - https://bugs.webkit.org/show_bug.cgi?id=93311 - - made some tests crash (Requested by noamr on #webkit). - - * WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp: - (WebCore::CoordinatedGraphicsLayer::addAnimation): + * UIProcess/API/efl/ewk_view_resource_load_client.cpp: + * UIProcess/API/efl/ewk_web_error.cpp: + * UIProcess/API/efl/ewk_web_error.h: + * UIProcess/API/efl/ewk_web_error_private.h: -2012-08-06 No'am Rosenthal <noam.rosenthal@nokia.com> +2012-10-04 Christophe Dumez <christophe.dumez@intel.com> - GraphicsLayerAnimation shouldn't use HashMap<String> - https://bugs.webkit.org/show_bug.cgi?id=93284 + [EFL][WK2] Implement window frame callbacks in UIClient + https://bugs.webkit.org/show_bug.cgi?id=98280 Reviewed by Kenneth Rohde Christiansen. - Apply the changes to GraphicsLayerAnimation API. - - * WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp: - (WebCore::CoordinatedGraphicsLayer::addAnimation): + Implement callbacks to set and query window geometry + in EwkView's UIClient. -2012-08-03 Brady Eidson <beidson@apple.com> + * UIProcess/API/efl/ewk_view_ui_client.cpp: + (getWindowFrame): + (setWindowFrame): + (ewk_view_ui_client_attach): + * UIProcess/API/efl/tests/resources/window_move_resize.html: Added. + * UIProcess/API/efl/tests/test_ewk2_view.cpp: + (windowMoveResizeTimedOut): + (TEST_F): Add corresponding unit test. - Out-of-process plug-ins should support asynchronous initialization - <rdar://problem/10598594> and https://bugs.webkit.org/show_bug.cgi?id=92919 +2012-10-04 Rik Cabanier <cabanier@adobe.com> - Reviewed by Anders Carlsson. + Turn Compositing on by default in WebKit build + https://bugs.webkit.org/show_bug.cgi?id=98315 - If a plug-in has been deemed capable of asynchronous initialization when run out of process... - ...then do that! - - Add flags to communicate that this plugin create is meant to create a plug-in already requested asynchronously and - to include whether or not the initialize call should include an artificial delay (for testing): - * PluginProcess/PluginCreationParameters.cpp: - (WebKit::PluginCreationParameters::PluginCreationParameters): - (WebKit::PluginCreationParameters::encode): - (WebKit::PluginCreationParameters::decode): - * PluginProcess/PluginCreationParameters.h: - (PluginCreationParameters): - - Add a flag for the UI Process to tell the PluginProcess that it supports asynchronous initialization: - * Shared/Plugins/PluginProcessCreationParameters.cpp: - (WebKit::PluginProcessCreationParameters::PluginProcessCreationParameters): - (WebKit::PluginProcessCreationParameters::encode): - (WebKit::PluginProcessCreationParameters::decode): - * Shared/Plugins/PluginProcessCreationParameters.h: - (PluginProcessCreationParameters): - - Allow the UI Process to pass along whether the plug-on supports asynchronous initialization: - * UIProcess/Plugins/PluginProcessProxy.cpp: - (WebKit::PluginProcessProxy::pluginProcessCrashedOrFailedToLaunch): - (WebKit::PluginProcessProxy::didCreateWebProcessConnection): - * UIProcess/Plugins/PluginProcessProxy.h: - (PluginProcessProxy): - * UIProcess/Plugins/mac/PluginProcessProxyMac.mm: - (WebKit::PluginProcessProxy::platformInitializePluginProcess): - * UIProcess/WebProcessProxy.messages.in: - - Allow the Plugin Process to pass whether or not it supports asynchronous initialization, originally determined - in the UI Process, along to the WebProcess: - * PluginProcess/PluginProcess.cpp: - (WebKit::PluginProcess::PluginProcess): - (WebKit::PluginProcess::initializePluginProcess): - (WebKit::PluginProcess::createWebProcessConnection): - * PluginProcess/PluginProcess.h: - (PluginProcess): - * UIProcess/Plugins/PluginProcessProxy.messages.in: - - Add a flag so PluginProcessConnections remember whether or not they support asynchronous initialization: - * WebProcess/Plugins/PluginProcessConnection.cpp: - (WebKit::PluginProcessConnection::PluginProcessConnection): - (WebKit::PluginProcessConnection::setSupportsAsynchronousPluginInitialization): - (WebKit): - * WebProcess/Plugins/PluginProcessConnection.h: - (WebKit::PluginProcessConnection::create): - (WebKit::PluginProcessConnection::supportsAsynchronousPluginInitialization): - (PluginProcessConnection): + Reviewed by Simon Fraser. - Create PluginProcessConnections with the flag passed down from the PluginProcess about whether or not they - support asynchronous initialization: - * WebProcess/Plugins/PluginProcessConnectionManager.cpp: - (WebKit::PluginProcessConnectionManager::getPluginProcessConnection): + enable -webkit-blend-mode on trunk. - Responding to messages from the WebProcess, most of the heavy decision making in asynchronous initialization is here: - * PluginProcess/WebProcessConnection.cpp: - (WebKit::asynchronousInstanceIDsToIgnore): A set of instance IDs to *not* create asynchronously later because we know - we no longer need to. - (WebKit): - (WebKit::WebProcessConnection::didReceiveMessage): - (WebKit::WebProcessConnection::destroyPlugin): If the plug-in doesn't exist but is awaiting asynchronous creation, flag - this instance ID in the "asynchronous ignore set". - (WebKit::WebProcessConnection::createPluginInternal): Renamed from createPlugin, actually does the plug-in creation. - (WebKit::WebProcessConnection::createPlugin): Adds the instance ID to the "asynchronous ignore set" then calls createPluginInternal. - (WebKit::WebProcessConnection::createPluginAsynchronously): If the instance ID is in the "asynchronous ignore set", remove it from the - set and do nothing else. Otherwise, perform the initialization and then send the asynchronous result back to the WebProcess. - * PluginProcess/WebProcessConnection.h: - (WebProcessConnection): - * PluginProcess/WebProcessConnection.messages.in: - - Add helpers for asynchronous initialization that all plug-in types must implement: - * WebProcess/Plugins/Plugin.h: - (Plugin): + * Configurations/FeatureDefines.xcconfig: - Add helpers for asynchronous initialization that plug-in controllers can override: - * WebProcess/Plugins/PluginController.h: - (PluginController): - (WebKit::PluginController::asynchronousPluginInitializationEnabled): - (WebKit::PluginController::asynchronousPluginInitializationEnabledForAllPlugins): - (WebKit::PluginController::artificialPluginInitializationDelayEnabled): +2012-10-04 Simon Fraser <simon.fraser@apple.com> - Give PluginProxys the ability to initialize either asynchronously or synchronously, and also the ability to synchronously - wait for previously asynchronous initialization (in case their PluginScriptObject is required): - * WebProcess/Plugins/PluginProxy.cpp: - (WebKit::PluginProxy::PluginProxy): - (WebKit::PluginProxy::initialize): Store the plugin creation parameters as a member, and decide whether to try synchronous - or asynchronous initialization. - (WebKit): - (WebKit::PluginProxy::canInitializeAsynchronously): Answer based on preferences and what the PluginProcessConnection says - that it supports. - (WebKit::PluginProxy::waitForAsynchronousInitialization): Synchronously wait on initialization when asynchronous initialization - was previously requested. - (WebKit::PluginProxy::initializeSynchronously): - (WebKit::PluginProxy::didCreatePlugin): Double-check that we're still expecting asynchronous initialization, then call - through to didCreatePluginInternal. - (WebKit::PluginProxy::didCreatePluginInternal): Handle completion of initialization (both synchronously and asynchronously) - (WebKit::PluginProxy::didFailToCreatePlugin): Double-check that we're still expecting asynchronous initialization, then call - through to didFailToCreatePluginInternal. - (WebKit::PluginProxy::didFailToCreatePluginInternal): Handle failure to initialize (both synchronously and asynchronously) - (WebKit::PluginProxy::destroy): - * WebProcess/Plugins/PluginProxy.h: - (WebKit): - (WebKit::PluginProxy::isInitializingAsynchronously): - (PluginProxy): - * WebProcess/Plugins/PluginProxy.messages.in: + Fix the Qt build by removing an errant paste at the top of the file. - * WebProcess/Plugins/PluginView.cpp: - (WebKit::PluginView::PluginView): - (WebKit::PluginView::~PluginView): Always destroy the plug-in even if it hasn't been initialized yet, as it might be initializing - right now. - (WebKit::PluginView::initializePlugin): Don't handle the result of initialization immediately. Break that out in to two - methods that will be called later. - (WebKit): - (WebKit::PluginView::didFailToInitializePlugin): - (WebKit::PluginView::didInitializePlugin): - (WebKit::PluginView::scriptObject): If we truly need the script object, then wait for a synchronous initialization of the plug-in. - (WebKit::PluginView::asynchronousPluginInitializationEnabled): - (WebKit::PluginView::asynchronousPluginInitializationEnabledForAllPlugins): - (WebKit::PluginView::artificialPluginInitializationDelayEnabled): - * WebProcess/Plugins/PluginView.h: - (PluginView): + * WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.h: - These methods shouldn't be called in the PluginProcess, only in the WebProcess: - * PluginProcess/PluginControllerProxy.cpp: - (WebKit::PluginControllerProxy::didInitializePlugin): - (WebKit): - (WebKit::PluginControllerProxy::didFailToInitializePlugin): - * PluginProcess/PluginControllerProxy.h: - (PluginControllerProxy): +2012-10-04 Ryuan Choi <ryuan.choi@samsung.com> - NetscapePlugin is for in-process plug-ins: - * WebProcess/Plugins/Netscape/NetscapePlugin.h: - (NetscapePlugin): - (WebKit::NetscapePlugin::waitForAsynchronousInitialization): - (WebKit::NetscapePlugin::isInitializingAsynchronously): + [EFL][WK2] Add APIs to get/set the frame flattening. + https://bugs.webkit.org/show_bug.cgi?id=95982 - Built-in PDFView is currently only in-process: - * WebProcess/Plugins/PDF/BuiltInPDFView.h: - (BuiltInPDFView): - (WebKit::BuiltInPDFView::waitForAsynchronousInitialization): - (WebKit::BuiltInPDFView::isInitializingAsynchronously): + Reviewed by Gyuyoung Kim. -2012-08-06 Luciano Wolf <luciano.wolf@openbossa.org> + Added new APIs and test case to support frame flattening. - [Qt] Default sizes for input-text and text-area are different when running DRT/WTR - https://bugs.webkit.org/show_bug.cgi?id=91990 + * UIProcess/API/efl/ewk_settings.cpp: + (ewk_settings_enable_frame_flattening_set): + (ewk_settings_enable_frame_flattening_get): + * UIProcess/API/efl/ewk_settings.h: + * UIProcess/API/efl/tests/resources/frame_flattening_test.html: Added. + * UIProcess/API/efl/tests/resources/frame_flattening_test_subframe.html: Added. + * UIProcess/API/efl/tests/test_ewk2_settings.cpp: + (TEST_F): - Reviewed by Kenneth Rohde Christiansen. +2012-10-04 Simon Fraser <simon.fraser@apple.com> - WTR wasn't using the proper font types provided by testfonts directory. - The same approach as DRT was applied and now it takes info from QFont to - update the store variable. + TiledCoreAnimationDrawingArea.mm should not include RenderLayerCompositor.h + https://bugs.webkit.org/show_bug.cgi?id=98471 - * UIProcess/qt/WebPreferencesQt.cpp: - (WebKit::setStringValueIfInUserDefaults): - (WebKit): - (WebKit::WebPreferences::platformInitializeStore): + Reviewed by Dean Jackson. -2012-08-06 No'am Rosenthal <noam.rosenthal@nokia.com> + Remove #import of <WebCore/RenderLayerCompositor.h> from this file. + It is not required. - [Qt] Use GraphicsLayerAnimation in LayerTreeCoordinator - https://bugs.webkit.org/show_bug.cgi?id=93147 + * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm: - Reviewed by Kenneth Rohde Christiansen +2012-10-04 Simon Fraser <simon.fraser@apple.com> - Allow controlling animations outside of WebCore. This is an intermediate step before moving - to threaded animations. + Final part of "sync" to "flush" renaming + https://bugs.webkit.org/show_bug.cgi?id=98430 - CoordinatedGraphicsLayer maintains the GraphicsLayerAnimation structures, and applies the - animation interpolation at the right time, before syncing the rest of the layer info and - the visible contents rect. + Reviewed by Tim Horton. - This also allows sending shorter IPC messages for animated opacity/transform changes, - without the rest of the layer info. + Change method names on GraphicsLayer and GraphicsLayerClient that + refer to "sync" to use the term "flush" instead, to be consistent + with the rest of the code. - * UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.cpp: - (WebKit::LayerTreeCoordinatorProxy::setLayerAnimatedOpacity): - (WebKit): - (WebKit::LayerTreeCoordinatorProxy::setLayerAnimatedTransform): - * UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.h: - (LayerTreeCoordinatorProxy): - * UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.messages.in: * UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp: - (WebKit::LayerTreeRenderer::setAnimatedOpacity): - (WebKit): - (WebKit::LayerTreeRenderer::setAnimatedTransform): + (WebKit::LayerTreeRenderer::paintToCurrentGLContext): + (WebKit::LayerTreeRenderer::flushLayerChanges): * UIProcess/CoordinatedGraphics/LayerTreeRenderer.h: - (LayerTreeRenderer): + (WebKit::LayerTreeRenderer::notifyFlushRequired): * WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp: + (WebCore::CoordinatedGraphicsLayer::didChangeLayerState): (WebCore::CoordinatedGraphicsLayer::didChangeAnimatedProperties): - (WebCore): - (WebCore::CoordinatedGraphicsLayer::CoordinatedGraphicsLayer): - (WebCore::CoordinatedGraphicsLayer::syncLayerState): - (WebCore::CoordinatedGraphicsLayer::syncAnimatedProperties): - (WebCore::CoordinatedGraphicsLayer::syncCompositingStateForThisLayerOnly): - (WebCore::CoordinatedGraphicsLayer::computeTransformedVisibleRect): - account for the animated transform in the visible rect. - - (WebCore::CoordinatedGraphicsLayer::addAnimation): - (WebCore::CoordinatedGraphicsLayer::pauseAnimation): - (WebCore::CoordinatedGraphicsLayer::removeAnimation): - (WebCore::CoordinatedGraphicsLayer::animationStartedTimerFired): - (WebCore::CoordinatedGraphicsLayer::setAnimatedTransform): - (WebCore::CoordinatedGraphicsLayer::setAnimatedOpacity): + (WebCore::CoordinatedGraphicsLayer::didChangeChildren): + (WebCore::CoordinatedGraphicsLayer::didChangeFilters): + (WebCore::CoordinatedGraphicsLayer::setContentsNeedsDisplay): + (WebCore::CoordinatedGraphicsLayer::setContentsToCanvas): + (WebCore::CoordinatedGraphicsLayer::flushCompositingState): + (WebCore::CoordinatedGraphicsLayer::flushCompositingStateForThisLayerOnly): * WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.h: - (CoordinatedGraphicsLayerClient): (CoordinatedGraphicsLayer): * WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp: - (WebKit): - (WebKit::LayerTreeCoordinator::setLayerAnimatedOpacity): - (WebKit::LayerTreeCoordinator::setLayerAnimatedTransform): + (WebKit::LayerTreeCoordinator::flushPendingLayerChanges): + (WebKit::LayerTreeCoordinator::notifyFlushRequired): * WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.h: (LayerTreeCoordinator): + * WebProcess/WebPage/ca/LayerTreeHostCA.cpp: + (WebKit::LayerTreeHostCA::notifyFlushRequired): + (WebKit::LayerTreeHostCA::flushPendingLayerChanges): + * WebProcess/WebPage/ca/LayerTreeHostCA.h: + (LayerTreeHostCA): + * WebProcess/WebPage/gtk/LayerTreeHostGtk.cpp: + (WebKit::LayerTreeHostGtk::notifyFlushRequired): + (WebKit::LayerTreeHostGtk::flushPendingLayerChanges): + * WebProcess/WebPage/gtk/LayerTreeHostGtk.h: + (LayerTreeHostGtk): + * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h: + (TiledCoreAnimationDrawingArea): + * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm: + (WebKit::TiledCoreAnimationDrawingArea::notifyFlushRequired): + (WebKit::TiledCoreAnimationDrawingArea::flushLayers): -2012-08-06 Anders Carlsson <andersca@apple.com> - - If the Apple Java plug-in is blocked and no runtime is installed, don't load it - https://bugs.webkit.org/show_bug.cgi?id=93289 - <rdar://problem/11730092> - - Reviewed by Dan Bernstein. - - If the Apple Java plug-in is blocked, but there's no Java runtime installed (or the Java plug-in is disabled), - don't even include it in the plug-in info store. - - * UIProcess/Plugins/PluginInfoStore.cpp: - (WebKit::PluginInfoStore::shouldBlockPlugin): - Since this is static now, it shouldn't be const. - - * UIProcess/Plugins/PluginInfoStore.h: - (PluginInfoStore): - shouldBlockPlugin can be static. - - * UIProcess/Plugins/mac/PluginInfoStoreMac.mm: - (WebKit::PluginInfoStore::shouldUsePlugin): - Return false if the Apple Java plug-in is blocked but Java isn't installed or enabled. - - (WebKit::PluginInfoStore::shouldBlockPlugin): - Since this is static now, it shouldn't be const. - -2012-08-06 Mario Sanchez Prada <msanchez@igalia.com> - - [WK2][GTK] Improvements for the new spell-checking API - https://bugs.webkit.org/show_bug.cgi?id=93262 - - Reviewed by Carlos Garcia Campos. - - Improve the way the new spell-checking API is implemented, by - using better internal representations for data, documenting better - the new functions and using better unit tests. - - * UIProcess/API/gtk/WebKitTextChecker.cpp: - (WebKitTextChecker::getSpellCheckingLanguages): Just return the - value previously cached when calling to the setter function. - (WebKitTextChecker::setSpellCheckingLanguages): Update the text - checker in WebCore and cache the value returned from it. - * UIProcess/API/gtk/WebKitTextChecker.h: - (WebKitTextChecker): Use a CString instead of an String to cache - the list of spell checking languages. Update getter and setter. - * UIProcess/API/gtk/WebKitWebContext.cpp: - (_WebKitWebContextPrivate): No need to cache the spell checking - languages here anymore. - (webkit_web_context_get_spell_checking_languages): Improve - both implementation and documentation to be more consistent. - (webkit_web_context_set_spell_checking_languages): Make - 'languages' a mandatory (non-NULL) parameter. Update documentation. - * UIProcess/API/gtk/tests/TestWebKitWebContext.cpp: - (testWebContextSpellChecker): Test even more situations. - -2012-08-06 Andras Becsi <andras.becsi@nokia.com> - - [Qt][WK2] Remove workarounds from input event handling - https://bugs.webkit.org/show_bug.cgi?id=93125 - - Reviewed by Jocelyn Turcotte. - - Since input event propagation in Qt5 has been fixed we can remove - the workarounds introduced to prevent the QML WebView from receiving - input events targeting a child dialog. - To do this the childMouseEventFilter function has to be changed to - force touch and mouse events through the default propagation path. - - * UIProcess/API/qt/qquickwebview.cpp: - (QQuickWebViewPrivate::QQuickWebViewPrivate): - (QQuickWebViewLegacyPrivate::initialize): - (QQuickWebView::childMouseEventFilter): - (QQuickWebView::touchEvent): - * UIProcess/API/qt/qquickwebview_p_p.h: - (QQuickWebViewPrivate): - (QQuickWebViewLegacyPrivate): - * UIProcess/qt/QtDialogRunner.cpp: - (WebKit::QtDialogRunner::run): - * UIProcess/qt/WebColorChooserProxyQt.cpp: - (WebKit::WebColorChooserProxyQt::createItem): - (WebKit::WebColorChooserProxyQt::endChooser): - * UIProcess/qt/WebPopupMenuProxyQt.cpp: - (WebKit::WebPopupMenuProxyQt::showPopupMenu): - (WebKit::WebPopupMenuProxyQt::hidePopupMenu): - -2012-08-06 Mario Sanchez Prada <msanchez@igalia.com> - - [WK2][GTK] Implement a new spell checker API for WebKit2GTK+ - https://bugs.webkit.org/show_bug.cgi?id=90268 +2012-10-04 Christophe Dumez <christophe.dumez@intel.com> - Reviewed by Martin Robinson. + [EFL][WK2] Implement PageClientImpl::isViewVisible() + https://bugs.webkit.org/show_bug.cgi?id=98249 - Add a simple spell checking API to WK2, allowing to enable/disable - this feature and to define a list of languages associated to it. - - * GNUmakefile.am: Add flags to handle the SPELLCHECK feature. - * GNUmakefile.list.am: Added new files - - Added new internal class that will act both as the implementation - of TextCheckerClient and as the object WebKitWebContext will - depend on to implement the newly added API. - - * UIProcess/API/gtk/WebKitTextChecker.cpp: Added. - (toTextChecker): - (continuousSpellCheckingEnabledCallback): - (setContinuousSpellCheckingEnabledCallback): - (checkSpellingOfStringCallback): - (guessesForWordCallback): - (learnWordCallback): - (ignoreWordCallback): - (WebKitTextChecker::~WebKitTextChecker): - (WebKitTextChecker::create): - (WebKitTextChecker::WebKitTextChecker): - (WebKitTextChecker::checkSpellingOfString): - (WebKitTextChecker::getGuessesForWord): - (WebKitTextChecker::learnWord): - (WebKitTextChecker::ignoreWord): - (WebKitTextChecker::setSpellCheckingEnabled): - (WebKitTextChecker::setSpellCheckingLanguages): - * UIProcess/API/gtk/WebKitTextChecker.h: Added. - (WebKitTextChecker): - (WebKitTextChecker::isSpellCheckingEnabled): - (WebKitTextChecker::getSpellCheckingLanguages): - - Added WKTextChecker to WebKitPrivate.h, needed in WebKitTextChecker. - - * UIProcess/API/gtk/WebKitPrivate.h: - - Add new API to WebKitWebContext to allow enabling/disabling this - spell checking feature, and to set/get the list of languages used - to decide which dictionaries will be consulted. + Reviewed by Kenneth Rohde Christiansen. - * UIProcess/API/gtk/WebKitWebContext.cpp: - (_WebKitWebContextPrivate): - (createDefaultWebContext): - (webkit_web_context_get_spell_checking_enabled): New API. - (webkit_web_context_set_spell_checking_enabled): Ditto. - (webkit_web_context_get_spell_checking_languages): Ditto. - (webkit_web_context_set_spell_checking_languages): Ditto. - * UIProcess/API/gtk/WebKitWebContext.h: + Implement PageClientImpl::isViewVisible() for EFL port + by calling evas_object_visible_get() on the view. - New tests for checking the new API added to WebKitWebContext. + * UIProcess/API/efl/PageClientImpl.cpp: + (WebKit::PageClientImpl::isViewVisible): - * UIProcess/API/gtk/tests/TestWebKitWebContext.cpp: - (testWebContextSpellChecker): - (beforeAll): +2012-10-04 Alexey Proskuryakov <ap@apple.com> - Update documentation with new sections and symbols. + Improve initial empty process tracking + https://bugs.webkit.org/show_bug.cgi?id=98458 - * UIProcess/API/gtk/docs/webkit2gtk-docs.sgml: - * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: + Reviewed by Sam Weinig. -2012-08-05 Benjamin Poulain <bpoulain@apple.com> + * UIProcess/WebContext.cpp: (WebKit::WebContext::disconnectProcess): + Unset m_haveInitialEmptyProcess if we no longer do. - Assert in checkValidity() in hashtable.h from WebGeolocationManager::didFailToDeterminePosition() when fetching http://html5demos.com/geo - https://bugs.webkit.org/show_bug.cgi?id=80386 +2012-10-03 Benjamin Poulain <bpoulain@apple.com> - Reviewed by Alexey Proskuryakov. + [WK2] Support all attributes of GeolocationPosition + https://bugs.webkit.org/show_bug.cgi?id=98212 - WebKit2's WebGeolocationManager was delivering events without accounting that each event - can modify the list of page that need delivery. - Any page can remove itself by invoking clearWatch() from the callback function. A page can also cause another - page to be removed. - - This patch solves the issue by taking a copy of the list of page before delivery. Each page is - referenced as it can be deleted during the delivery. + Reviewed by Sam Weinig. - Unfortunately, this cannot be tested due to missing features of WebKitTestRunner. + Add complete support for GeolocationPosition. + * Shared/WebGeolocationPosition.cpp: + (WebKit::WebGeolocationPosition::WebGeolocationPosition): + (WebKit::WebGeolocationPosition::Data::encode): + (WebKit::WebGeolocationPosition::Data::decode): + * Shared/WebGeolocationPosition.h: + (Data): + (WebKit::WebGeolocationPosition::create): + (WebKit::WebGeolocationPosition::canProvideAltitude): + (WebKit::WebGeolocationPosition::altitude): + (WebGeolocationPosition): + (WebKit::WebGeolocationPosition::canProvideAltitudeAccuracy): + (WebKit::WebGeolocationPosition::altitudeAccuracy): + (WebKit::WebGeolocationPosition::canProvideHeading): + (WebKit::WebGeolocationPosition::heading): + (WebKit::WebGeolocationPosition::canProvideSpeed): + (WebKit::WebGeolocationPosition::speed): + WebGeolocationPosition mirror the attributes of WebCore::GeolocationPosition. + + * UIProcess/API/C/WKGeolocationPosition.cpp: + (WKGeolocationPositionCreate): + (WKGeolocationPositionCreate_b): + Add a new API exposing all the arguments. + + * UIProcess/API/C/WKGeolocationPosition.h: * WebProcess/Geolocation/WebGeolocationManager.cpp: (WebKit::WebGeolocationManager::didChangePosition): - (WebKit::WebGeolocationManager::didFailToDeterminePosition): -2012-08-04 No'am Rosenthal <noam.rosenthal@nokia.com> +2012-10-04 Simon Fraser <simon.fraser@apple.com> - [Qt] UI_SIDE_COMPOSITING code has confusing names - https://bugs.webkit.org/show_bug.cgi?id=93164 + Standardize on "flush" terminology for compositing layer flushing/syncing + https://bugs.webkit.org/show_bug.cgi?id=98321 - Reviewed by Kenneth Rohde Christiansen. + Reviewed by Simon Fraser. - Renamed and consolidated code guarded under UI_SIDE_COMPOSITING, now under - USE(COORDINATED_GRAPHICS) guard and CoordinatedGraphics folders. + Rename compositing-related methods that refer to "syncing" to instead + refer to "flushing". - * CMakeLists.txt: - * DerivedSources.pri: - * Shared/WebCoreArgumentCoders.cpp: - (CoreIPC): - * Shared/WebCoreArgumentCoders.h: - * Shared/WebLayerTreeInfo.cpp: - * Shared/WebLayerTreeInfo.h: - * Target.pri: - * UIProcess/API/qt/qquickwebpage.cpp: - (QQuickWebPage::updatePaintNode): - * UIProcess/API/qt/raw/qrawwebview.cpp: - (QRawWebView::paint): - * UIProcess/CoordinatedGraphics/CoordinatedBackingStore.cpp: Renamed from Source/WebKit2/UIProcess/texmap/LayerBackingStore.cpp. - * UIProcess/CoordinatedGraphics/CoordinatedBackingStore.h: Renamed from Source/WebKit2/UIProcess/texmap/LayerBackingStore.h. - * UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.cpp: Renamed from Source/WebKit2/UIProcess/LayerTreeCoordinatorProxy.cpp. - * UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.h: Renamed from Source/WebKit2/UIProcess/LayerTreeCoordinatorProxy.h. - * UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.messages.in: Renamed from Source/WebKit2/UIProcess/LayerTreeCoordinatorProxy.messages.in. - * UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp: Renamed from Source/WebKit2/UIProcess/WebLayerTreeRenderer.cpp. - * UIProcess/CoordinatedGraphics/LayerTreeRenderer.h: Renamed from Source/WebKit2/UIProcess/WebLayerTreeRenderer.h. - * UIProcess/DrawingAreaProxy.cpp: - (WebKit): - * UIProcess/DrawingAreaProxy.h: - (DrawingAreaProxy): - * UIProcess/DrawingAreaProxyImpl.cpp: - (WebKit::DrawingAreaProxyImpl::DrawingAreaProxyImpl): - (WebKit::DrawingAreaProxyImpl::enterAcceleratedCompositingMode): - (WebKit): - * UIProcess/DrawingAreaProxyImpl.h: - (DrawingAreaProxyImpl): - * UIProcess/WebPageProxy.cpp: - (WebKit::WebPageProxy::didReceiveMessage): - * UIProcess/qt/QtWebPageSGNode.cpp: - (WebKit::ContentsSGNode::ContentsSGNode): - (WebKit::ContentsSGNode::layerTreeRenderer): - (ContentsSGNode): - (WebKit::QtWebPageSGNode::setRenderer): - * UIProcess/qt/QtWebPageSGNode.h: - (WebKit): - (QtWebPageSGNode): - * WebKit2.pri: * WebProcess/WebCoreSupport/WebChromeClient.cpp: - (WebKit::WebChromeClient::scheduleAnimation): - * WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp: Renamed from Source/WebKit2/WebProcess/WebPage/LayerTreeCoordinator/WebGraphicsLayer.cpp. - * WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.h: Renamed from Source/WebKit2/WebProcess/WebPage/LayerTreeCoordinator/WebGraphicsLayer.h. - * WebProcess/WebPage/CoordinatedGraphics/CoordinatedTile.cpp: Renamed from Source/WebKit2/WebProcess/WebPage/TiledBackingStoreRemoteTile.cpp. - * WebProcess/WebPage/CoordinatedGraphics/CoordinatedTile.h: Renamed from Source/WebKit2/WebProcess/WebPage/TiledBackingStoreRemoteTile.h. - * WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp: Renamed from Source/WebKit2/WebProcess/WebPage/LayerTreeCoordinator/LayerTreeCoordinator.cpp. - * WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.h: Renamed from Source/WebKit2/WebProcess/WebPage/LayerTreeCoordinator/LayerTreeCoordinator.h. - * WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.messages.in: Renamed from Source/WebKit2/WebProcess/WebPage/LayerTreeCoordinator/LayerTreeCoordinator.messages.in. + (WebKit::WebChromeClient::scheduleCompositingLayerFlush): + * WebProcess/WebCoreSupport/WebChromeClient.h: + (WebChromeClient): * WebProcess/WebPage/DrawingArea.h: (DrawingArea): * WebProcess/WebPage/DrawingAreaImpl.cpp: - (WebKit): + (WebKit::DrawingAreaImpl::scheduleCompositingLayerFlush): * WebProcess/WebPage/DrawingAreaImpl.h: (DrawingAreaImpl): - * WebProcess/WebPage/LayerTreeHost.h: - (LayerTreeHost): - * WebProcess/WebPage/UpdateAtlas.cpp: - * WebProcess/WebPage/UpdateAtlas.h: - * WebProcess/qt/WebProcessMainQt.cpp: - (WebKit::WebProcessMainQt): - -2012-08-04 Christophe Dumez <christophe.dumez@intel.com> - - [WK2] Move WebIntentData from Shared to UIProcess - https://bugs.webkit.org/show_bug.cgi?id=93175 - - Reviewed by Kenneth Rohde Christiansen. - - Move WebIntentData from Shared to UIProcess to - prepare for MessagePorts support in WK2. - - * CMakeLists.txt: - * GNUmakefile.list.am: - * Target.pri: - * UIProcess/WebIntentData.cpp: Renamed from Source/WebKit2/Shared/WebIntentData.cpp. - (WebKit): - (WebKit::WebIntentData::WebIntentData): - (WebKit::WebIntentData::data): - (WebKit::WebIntentData::suggestions): - (WebKit::WebIntentData::extra): - (WebKit::WebIntentData::extras): - * UIProcess/WebIntentData.h: Renamed from Source/WebKit2/Shared/WebIntentData.h. - (WebKit): - (WebIntentData): - (WebKit::WebIntentData::create): - (WebKit::WebIntentData::~WebIntentData): - (WebKit::WebIntentData::action): - (WebKit::WebIntentData::payloadType): - (WebKit::WebIntentData::service): - (WebKit::WebIntentData::store): - (WebKit::WebIntentData::type): - -2012-08-03 Anders Carlsson <andersca@apple.com> - - Nothing happens when clicking on the unavailable plug-in button for a blocked plug-in - https://bugs.webkit.org/show_bug.cgi?id=93161 - - Reviewed by John Sullivan. - - Be more robust against values being added to the RenderEmbeddedObject::PluginUnavailabilityReason - enumeration, and use a switch statement instead of blindly casting the type value to a WKPluginUnavailabilityReason. - - * UIProcess/WebPageProxy.cpp: - (WebKit::WebPageProxy::unavailablePluginButtonClicked): - -2012-08-03 Brady Eidson <beidson@apple.com> - - Small part of "Out-of-process plug-ins should support asynchronous initialization." - <rdar://problem/10598594> and https://bugs.webkit.org/show_bug.cgi?id=92919 - - Unreviewed (build fix). - - * Shared/WebPreferencesStore.h: - (WebKit): Include this file which has the declaration of the new pref. - -2012-08-03 Brady Eidson <beidson@apple.com> - - Small part of "Out-of-process plug-ins should support asynchronous initialization." - <rdar://problem/10598594> and https://bugs.webkit.org/show_bug.cgi?id=92919 - - Reviewed by Anders Carlsson. - - -Add API-level preferences for forcing asynchronous initialization of all plug-ins (for testing). - -Make sure "overridePreference" is hooked up properly for all needed preferences. - - * UIProcess/API/C/WKPreferences.cpp: - (WKPreferencesSetAsynchronousPluginInitializationEnabledForAllPlugins): - (WKPreferencesGetAsynchronousPluginInitializationEnabledForAllPlugins): - * UIProcess/API/C/WKPreferencesPrivate.h: - - * WebProcess/InjectedBundle/InjectedBundle.cpp: - (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner): - - * WebProcess/WebPage/WebPage.cpp: - (WebKit::WebPage::WebPage): - (WebKit::WebPage::updatePreferences): - * WebProcess/WebPage/WebPage.h: - (WebKit::WebPage::setAsynchronousPluginInitializationEnabled): - (WebKit::WebPage::asynchronousPluginInitializationEnabledForAllPlugins): - (WebKit::WebPage::setAsynchronousPluginInitializationEnabledForAllPlugins): - (WebKit::WebPage::setArtificialPluginInitializationDelayEnabled): - (WebPage): - -2012-08-02 Jeffrey Pfau <jpfau@apple.com> - - Add API for enabling blanket third-party data blocking - https://bugs.webkit.org/show_bug.cgi?id=93022 - - Reviewed by Anders Carlsson. - - Added API for enabling third-party storage blocking. - - * Shared/WebPreferencesStore.h: - (WebKit): - * UIProcess/API/C/WKPreferences.cpp: - (WKPreferencesSetThirdPartyStorageBlockingEnabled): - (WKPreferencesGetThirdPartyStorageBlockingEnabled): - * UIProcess/API/C/WKPreferences.h: - * WebProcess/WebPage/WebPage.cpp: - (WebKit::WebPage::updatePreferences): - -2012-08-03 Hugo Parente Lima <hugo.lima@openbossa.org> - - [Qt][WK2] There's no way to test the gesture tap on WTR - https://bugs.webkit.org/show_bug.cgi?id=92895 - - Reviewed by Kenneth Rohde Christiansen. - - Add an instance of QtViewportHandler to QQuickWebViewPrivate, so it's - now available on mobile and desktop modes, as a side effect gesture tap - events can now be created and sent to WebCore. - - This is needed to test tap gestures and to get tap gestures working - when you have a WebView (in desktop mode) on notebooks equipped with - touch screens. - - * UIProcess/API/qt/qquickwebview.cpp: - (QQuickWebViewPrivate::onComponentComplete): - (QQuickWebViewFlickablePrivate::onComponentComplete): Implementation - moved to QQuickWebViewPrivate::onComponentComplete. - * UIProcess/API/qt/qquickwebview_p_p.h: - (QQuickWebViewPrivate): - (QQuickWebViewFlickablePrivate): - -2012-08-02 Alexey Proskuryakov <ap@apple.com> - - [WK2] Move some WebContext messages to WebProcessProxy - https://bugs.webkit.org/show_bug.cgi?id=93046 - - Reviewed by Anders Carlsson. - - * UIProcess/WebContext.cpp: (WebKit::WebContext::didReceiveSyncMessage): Unrelated - fix - use actual process argument instead of second-guessing where the message came - from. - - * UIProcess/WebContext.h: (WebKit::WebContext::historyClient): Expose history client, - since WebProcessProxy now needs it. - - * UIProcess/WebContext.messages.in: - * UIProcess/WebProcessProxy.cpp: - (WebKit::WebProcessProxy::didNavigateWithNavigationData): - (WebKit::WebProcessProxy::didPerformClientRedirect): - (WebKit::WebProcessProxy::didPerformServerRedirect): - (WebKit::WebProcessProxy::didUpdateHistoryTitle): - * UIProcess/WebProcessProxy.h: - * UIProcess/WebProcessProxy.messages.in: - * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: - (WebKit::WebFrameLoaderClient::updateGlobalHistory): - (WebKit::WebFrameLoaderClient::updateGlobalHistoryRedirectLinks): - (WebKit::WebFrameLoaderClient::setTitle): - Move the messages. - -2012-08-03 Balazs Kelemen <kbalazs@webkit.org> - - Unreviewed, rolling out r124603. - http://trac.webkit.org/changeset/124603 - https://bugs.webkit.org/show_bug.cgi?id=93077 - - Made a few tests crash under - LayerTreeCoordinator::flushPendingLayerChanges - - * WebProcess/WebPage/LayerTreeCoordinator/LayerTreeCoordinator.cpp: - (WebKit::LayerTreeCoordinator::LayerTreeCoordinator): - (WebKit::LayerTreeCoordinator::forceRepaint): - (WebKit::LayerTreeCoordinator::layerTreeTileUpdatesAllowed): - * WebProcess/WebPage/LayerTreeCoordinator/LayerTreeCoordinator.h: - (LayerTreeCoordinator): - -2012-08-03 Mario Sanchez Prada <msanchez@igalia.com> - - Unreviewed build fix for GTK after r124479. - - * UIProcess/WebInspectorProxy.cpp: - (WebKit): Moved static const definitions from header file. - * UIProcess/WebInspectorProxy.h: - (WebInspectorProxy): Don't give values to static const members - here. - -2012-08-03 Balazs Kelemen <kbalazs@webkit.org> - - [WK2] LayerTreeCoordinator can disallow tile updates in forceRepaint - https://bugs.webkit.org/show_bug.cgi?id=93077 - - Reviewed by Jocelyn Turcotte. - - Force tile updates when doing a forced repaint. - - * WebProcess/WebPage/LayerTreeCoordinator/LayerTreeCoordinator.cpp: - (WebKit::LayerTreeCoordinator::LayerTreeCoordinator): - (WebKit::LayerTreeCoordinator::forceRepaint): - (WebKit::LayerTreeCoordinator::layerTreeTileUpdatesAllowed): - * WebProcess/WebPage/LayerTreeCoordinator/LayerTreeCoordinator.h: - (LayerTreeCoordinator): - -2012-08-02 Carlos Garcia Campos <cgarcia@igalia.com> - - [GTK] Inspector should set a default attached height before being attached - https://bugs.webkit.org/show_bug.cgi?id=90767 - - Reviewed by Xan Lopez. - - We are currently using the minimum attached height in - WebKitWebViewBase as the default height for the inspector when - attached. It would be easier for WebKitWebViewBase and embedders - implementing attach() if the inspector already had an attached - height set when it's being attached. - - * UIProcess/API/gtk/WebKitWebViewBase.cpp: - (webkitWebViewBaseContainerAdd): Don't initialize - inspectorViewHeight. - (webkitWebViewBaseSetInspectorViewHeight): Allow to set the - inspector view height before having an inpector view, but only - queue a resize when the view already has an inspector view. - * UIProcess/API/gtk/tests/TestInspector.cpp: - (testInspectorDefault): - (testInspectorManualAttachDetach): - * UIProcess/gtk/WebInspectorProxyGtk.cpp: - (WebKit::WebInspectorProxy::platformAttach): Set the default - attached height before attach the inspector view. - -2012-08-02 Dinu Jacob <dinu.jacob@nokia.com> - - WebKitTestRunner needs layoutTestController.setUserStyleSheetEnabled - https://bugs.webkit.org/show_bug.cgi?id=42679 - - Reviewed by Eric Seidel. - - Added WKBundleSetUserStyleSheetLocation API. - - * WebProcess/InjectedBundle/API/c/WKBundle.cpp: - (WKBundleSetUserStyleSheetLocation): Added. - * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h: Added WKBundleSetUserStyleSheetLocation. - * WebProcess/InjectedBundle/InjectedBundle.cpp: - (WebKit::InjectedBundle::setUserStyleSheetLocation): Added. Sets the user style sheet location - for all pages in the page group. - (WebKit): - * WebProcess/InjectedBundle/InjectedBundle.h: - (InjectedBundle): - -2012-08-02 Lauro Neto <lauro.neto@openbossa.org> - - [Qt] Fix axis locking when panning on N9 - https://bugs.webkit.org/show_bug.cgi?id=92394 - - Reviewed by Simon Hausmann. - - Make the QQuickWebView axis locker calculate the - time between events using QInputEvent.timestamp, which - is set from the native event when available. - - Also use touchPoint.pos() instead of screenPos() to - correct the axis detection when running on N9, which - has a native landscape display and the applications usually - run in portrait mode. - - * UIProcess/API/qt/qquickwebview.cpp: - (QQuickWebViewPrivate::FlickableAxisLocker::FlickableAxisLocker): - (QQuickWebViewPrivate::FlickableAxisLocker::touchVelocity): - (QQuickWebViewPrivate::FlickableAxisLocker::update): - * UIProcess/API/qt/qquickwebview_p_p.h: - (FlickableAxisLocker): - -2012-08-02 Hyerim Bae <hyerim.bae@samsung.com> - - [EFL][WK2]Add ewk_view_ui_client. - https://bugs.webkit.org/show_bug.cgi?id=89864 - - Reviewed by Kentaro Hara. - - Add ewk_view_ui_client.h / cpp files for wrapping WKPageSetPageUIClient, - add close, createNewPage callback member to WKPageSetPageUIClient. - - * PlatformEfl.cmake: - * UIProcess/API/efl/ewk_view.cpp: - (ewk_view_base_add): - (ewk_view_page_close): - (ewk_view_page_create): - * UIProcess/API/efl/ewk_view.h: - * UIProcess/API/efl/ewk_view_private.h: - * UIProcess/API/efl/ewk_view_ui_client.cpp: Added. - (toEwkView): - (closePage): - (createNewPage): - (ewk_view_ui_client_attach): - * UIProcess/API/efl/ewk_view_ui_client_private.h: Added. - -2012-08-02 Carlos Garcia Campos <cgarcia@igalia.com> - - [GTK] No main resource in WebView on load committed when page has been loaded from history cache - https://bugs.webkit.org/show_bug.cgi?id=91482 - - Reviewed by Martin Robinson. - - We assume that on load committed, we already have a main resource - in the web view, and it has already received a response. This is - not true for pages loaded from the history cache, so when going - back/forward, we don't have a main resource when the - load-committed signal is emitted. We must ensure that the loading - process documented in the API is the same for pages loaded from - the history cache too. - - * UIProcess/API/gtk/WebKitLoaderClient.cpp: - (didCommitLoadForFrame): Call webkitWebViewLoadChanged() and let - the web view handle the certificate. - * UIProcess/API/gtk/WebKitWebResource.cpp: - (webkitWebResourceGetFrame): Helper private function to easily get - the WKFrame associated with a WebResource. - * UIProcess/API/gtk/WebKitWebResourcePrivate.h: - * UIProcess/API/gtk/WebKitWebView.cpp: - (webkitWebViewDisconnectMainResourceResponseChangedSignalHandler): - Disconnect the notify::response signal of the main resource. - (webkitWebViewFinalize): Call - webkitWebViewDisconnectMainResourceResponseChangedSignalHandler(). - (setCertificateToMainResource): Set the TLS certificate on the - response of the main resource. - (webkitWebViewEmitLoadChanged): Helper function to emit - load-chancged signal. - (webkitWebViewEmitDelayedLoadEvents): If we were waiting for the - main resource, emit the signals that were delayed. - (webkitWebViewLoadChanged): Do not emit committed or finished if - we are still waiting for the main resource. Set the TLS - certificate if we already have a main resource or wait until we - have the main resource with a response. - (mainResourceResponseChangedCallback): Emitted when the main - resource received the response. Set the certificate on the - response and emit load signals delayed. - (waitForMainResourceResponseIfWaitingForResource): If we are - waiting for the main resource, connect to the notify::response - signal of the WebResource to make sure it has a response already - when load signal delayed are emitted. - (webkitWebViewResourceLoadStarted): Call - waitForMainResourceResponseIfWaitingForResource(). - * UIProcess/API/gtk/tests/LoadTrackingTest.cpp: - (loadChangedCallback): - (LoadTrackingTest::goBack): - (LoadTrackingTest::goForward): - * UIProcess/API/gtk/tests/LoadTrackingTest.h: - (LoadTrackingTest): - * UIProcess/API/gtk/tests/TestLoaderClient.cpp: - (testWebViewHistoryLoad): - (serverCallback): - (beforeAll): - -2012-08-02 Andras Becsi <andras.becsi@nokia.com> - - [Qt][WK2] Click, mouse and links rely on touch mocking. - https://bugs.webkit.org/show_bug.cgi?id=83091 - - Reviewed by Simon Hausmann. - - Send the incoming mouse events directly to the gesture recognizers to make - the WebView behave consistent with other Flickables. - This patch unifies the code paths for input events and makes it possible - to enable mouse events on the flickable web view again, thus makes the - mobile-version of QQuickWebView usable on desktop. - - * UIProcess/API/qt/qquickwebview.cpp: - (QQuickWebViewPrivate::handleMouseEvent): - (QQuickWebViewFlickablePrivate::QQuickWebViewFlickablePrivate): - (QQuickWebViewFlickablePrivate::handleMouseEvent): - (QQuickWebView::mousePressEvent): - (QQuickWebView::mouseMoveEvent): - (QQuickWebView::mouseReleaseEvent): - (QQuickWebView::mouseDoubleClickEvent): - * UIProcess/API/qt/qquickwebview_p_p.h: - (QQuickWebViewPrivate): - (QQuickWebViewFlickablePrivate): - * UIProcess/qt/QtPanGestureRecognizer.cpp: - (WebKit::QtPanGestureRecognizer::update): - * UIProcess/qt/QtWebPageEventHandler.cpp: - (WebKit::QtWebPageEventHandler::QtWebPageEventHandler): - (WebKit::QtWebPageEventHandler::handleInputEvent): - (WebKit): - (WebKit::QtWebPageEventHandler::doneWithTouchEvent): - * UIProcess/qt/QtWebPageEventHandler.h: - (QtWebPageEventHandler): - -2012-08-01 Brady Eidson <beidson@apple.com> - - Small part of "Out-of-process plug-ins should support asynchronous initialization." - <rdar://problem/10598594> and https://bugs.webkit.org/show_bug.cgi?id=92919 - - Reviewed by Anders Carlsson. - - Add API-level preferences for: - - Is asynchronous plug-in initialization enabled. - - Is an artificial initialization delay (for testing purposes) enabled. - - * Shared/WebPreferencesStore.h: - (WebKit): - - * UIProcess/API/C/WKPreferences.cpp: - (WKPreferencesSetAsynchronousPluginInitializationEnabled): - (WKPreferencesGetAsynchronousPluginInitializationEnabled): - (WKPreferencesSetArtificialPluginInitializationDelayEnabled): - (WKPreferencesGetArtificialPluginInitializationDelayEnabled): - * UIProcess/API/C/WKPreferencesPrivate.h: - - * WebProcess/WebPage/WebPage.cpp: - (WebKit::WebPage::WebPage): - (WebKit::WebPage::updatePreferences): - * WebProcess/WebPage/WebPage.h: - (WebKit::WebPage::asynchronousPluginInitializationEnabled): - (WebKit::WebPage::artificialPluginInitializationDelayEnabled): - (WebPage): - -2012-08-01 Jian Li <jianli@chromium.org> - - Add new CSS property "-webkit-widget-region" to expose dashboard region support for other port - https://bugs.webkit.org/show_bug.cgi?id=90298 - - Reviewed by Adam Barth. - - * Configurations/FeatureDefines.xcconfig: Add ENABLE_WIDGET_REGION define. - -2012-08-01 Jesus Sanchez-Palencia <jesus.palencia@openbossa.org> - - [Qt][WK2] Race condition between first layout and viewport attributes initialization - https://bugs.webkit.org/show_bug.cgi?id=92902 - - Reviewed by Noam Rosenthal. - - Initializing m_rawAttributes from QtViewportHandler to avoid calculation of random - scale factors on the first layout is triggered. - - * UIProcess/qt/QtViewportHandler.cpp: - (WebKit::QtViewportHandler::QtViewportHandler): - -2012-08-01 Zeno Albisser <zeno@webkit.org> - - [Qt]REGRESSION(r123786): It made 3 fast/animation tests fail. - https://bugs.webkit.org/show_bug.cgi?id=92490 - - Make sure that scripted animations are also serviced when - forceRepaint is being executed. As this is what is being used for - running layout tests. - Move servicing of scripted animations and layoutIfNeeded call - into a separate function syncDisplayState. - This function can then be called from forceRepaint as well as from - performScheduledLayerFlush. - - Reviewed by Noam Rosenthal. - - * WebProcess/WebPage/LayerTreeCoordinator/LayerTreeCoordinator.cpp: - (WebKit::LayerTreeCoordinator::forceRepaint): - (WebKit::LayerTreeCoordinator::performScheduledLayerFlush): - (WebKit): - (WebKit::LayerTreeCoordinator::syncDisplayState): - * WebProcess/WebPage/LayerTreeCoordinator/LayerTreeCoordinator.h: - (LayerTreeCoordinator): - -2012-08-01 Carlos Garcia Campos <cgarcia@igalia.com> - - Unreviewed. Fix GTK+ build with recent version of GTK+. - - Use g_threads_enter/leave instead of the wrapper macros. This - gives a compile warning because they are now deprecated but at - least it builds. - - * UIProcess/API/gtk/WebKitWebView.cpp: - (webkitWebViewRunAsModal): Fix enter/leave order. - * UIProcess/gtk/WebPopupMenuProxyGtk.cpp: - (WebKit::WebPopupMenuProxyGtk::showPopupMenu): - -2012-07-31 Anders Carlsson <andersca@apple.com> - - Prefer the Oracle Java plug-in over the Apple Java plug-in - https://bugs.webkit.org/show_bug.cgi?id=92780 - - Reviewed by Oliver Hunt. - - * UIProcess/Plugins/mac/PluginInfoStoreMac.mm: - (WebKit::findPluginWithBundleIdentifier): - Add a new helper for finding a plug-in with the given bundle identifier. - - (WebKit::checkForPreferredPlugin): - Helper function for making sure that an old plug-in is never loaded if a new plug-in is found, and that the old plug-in - is removed from the list of loaded plug-ins if the new plug-in is found. - - (WebKit::PluginInfoStore::shouldUsePlugin): - Prefer the Oracle Java plug-in over the Apple Java plug-in. - -2012-07-31 Alexey Proskuryakov <ap@apple.com> - - [WK2] Use an actual WebProcessProxy when decoding messages - https://bugs.webkit.org/show_bug.cgi?id=92788 - - Reviewed by Anders Carlsson. - - WebContextUserMessageDecoder gets process proxy from a WebContext object, but we - know which process a message came from, and can just use that. - - * UIProcess/WebContextUserMessageCoders.h: - (WebKit::WebContextUserMessageDecoder::WebContextUserMessageDecoder): - (WebKit::WebContextUserMessageDecoder::decode): - This is the focal point of this patch - decoder no longer needs to call m_context->process(). - - * UIProcess/WebContext.cpp: - (WebKit::WebContext::didReceiveMessage): - (WebKit::WebContext::didReceiveSyncMessage): - * UIProcess/WebContext.h: - These methods now take a WebProcessProxy pointer instead of IPC::Connection, - so that they can call the updated coder. - A number of other didReceiveMessage can be modified to take WebProcessProxy later - if needed (it's a richer interface than IPC::Connection), although not all messages - come from WebProcesses. - - * UIProcess/WebConnectionToWebProcess.cpp: - (WebKit::WebConnectionToWebProcess::didReceiveMessage): - * UIProcess/WebPageProxy.cpp: - (WebKit::WebPageProxy::willGoToBackForwardListItem): - (WebKit::WebPageProxy::registerIntentServiceForFrame): - (WebKit::WebPageProxy::didStartProvisionalLoadForFrame): - (WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame): - (WebKit::WebPageProxy::didFailProvisionalLoadForFrame): - (WebKit::WebPageProxy::didCommitLoadForFrame): - (WebKit::WebPageProxy::didFinishDocumentLoadForFrame): - (WebKit::WebPageProxy::didFinishLoadForFrame): - (WebKit::WebPageProxy::didFailLoadForFrame): - (WebKit::WebPageProxy::didSameDocumentNavigationForFrame): - (WebKit::WebPageProxy::didReceiveTitleForFrame): - (WebKit::WebPageProxy::didFirstLayoutForFrame): - (WebKit::WebPageProxy::didFirstVisuallyNonEmptyLayoutForFrame): - (WebKit::WebPageProxy::didNewFirstVisuallyNonEmptyLayout): - (WebKit::WebPageProxy::didRemoveFrameFromHierarchy): - (WebKit::WebPageProxy::didDisplayInsecureContentForFrame): - (WebKit::WebPageProxy::didRunInsecureContentForFrame): - (WebKit::WebPageProxy::didDetectXSSForFrame): - (WebKit::WebPageProxy::didReceiveIntentForFrame): - (WebKit::WebPageProxy::decidePolicyForNavigationAction): - (WebKit::WebPageProxy::decidePolicyForNewWindowAction): - (WebKit::WebPageProxy::decidePolicyForResponse): - (WebKit::WebPageProxy::unableToImplementPolicy): - (WebKit::WebPageProxy::willSubmitForm): - (WebKit::WebPageProxy::mouseDidMoveOverElement): - (WebKit::WebPageProxy::internalShowContextMenu): - * UIProcess/WebProcessProxy.cpp: - (WebKit::WebProcessProxy::didReceiveMessage): - (WebKit::WebProcessProxy::didReceiveSyncMessage): - Updated arguments accordingly. - -2012-07-31 Andras Becsi <andras.becsi@nokia.com> - - [WK2] Visible content rect update with null trajectory vector does not reach the backing store - https://bugs.webkit.org/show_bug.cgi?id=92750 - - Reviewed by Jocelyn Turcotte. - - Make sure that notifications with a null trajectory vector reach the backing store - since a null vector means that all tiles around the viewport were requested. - - * WebProcess/WebPage/LayerTreeCoordinator/LayerTreeCoordinator.cpp: - (WebKit::LayerTreeCoordinator::setVisibleContentsRect): - -2012-07-31 Marcelo Lira <marcelo.lira@openbossa.org> - - [Qt] Input method update should also include hints - https://bugs.webkit.org/show_bug.cgi?id=92744 - - Reviewed by Simon Hausmann. - - The QInputMethod is told to query for input method hints when updated. - - * UIProcess/qt/QtWebPageEventHandler.cpp: - (WebKit::QtWebPageEventHandler::updateTextInputState): - -2012-07-31 Danilo Cesar Lemes de Paula <danilo.cesar@collabora.co.uk> - - add Farstream flags/deps to WebKit, for WebRTC - https://bugs.webkit.org/show_bug.cgi?id=87524 - - Reviewed by Philippe Normand. - - Since Farstream will be used as the backend for GTK's WebRTC, this - patch adds it as a dependency to the build system. - - * GNUmakefile.am: - -2012-07-30 Huang Dongsung <luxtella@company100.net> - - [Texmap] Remove the backing store after 'style.visibility' for an element sets 'hidden'. - https://bugs.webkit.org/show_bug.cgi?id=92492 - - Reviewed by Noam Rosenthal. - - Texmap handles visibility:hidden in this patch, so WebGraphicsLayer - sends the LayerTreeCoordinatorProxyMessages with additional infomation - to UIProcess. - - * Shared/WebLayerTreeInfo.h: - * UIProcess/WebLayerTreeRenderer.cpp: - (WebKit::WebLayerTreeRenderer::setLayerState): - * WebProcess/WebPage/LayerTreeCoordinator/WebGraphicsLayer.cpp: - (WebCore::WebGraphicsLayer::setContentsVisible): - (WebCore): - (WebCore::WebGraphicsLayer::syncLayerState): - * WebProcess/WebPage/LayerTreeCoordinator/WebGraphicsLayer.h: - (WebGraphicsLayer): - -2012-07-30 Sam Weinig <sam@webkit.org> - - Add a proper umbrella header for the public WebKit2 API headers - https://bugs.webkit.org/show_bug.cgi?id=92708 - <rdar://problem/11970825> - - Reviewed by Dan Bernstein. - - Create a new umbrella WebKit2.h and add the currently public (as decided by their - status in Xcode) Objective-C headers. - - * UIProcess/API/mac/WebKit2.h: Added. - * WebKit2.xcodeproj/project.pbxproj: - While we are here, make WebKit2_C.h a private header. - -2012-07-30 Sam Weinig <sam@webkit.org> - - Rename WebKit2.h to WebKit2_C.h - https://bugs.webkit.org/show_bug.cgi?id=92704 - - Reviewed by Dan Bernstein. - - * GNUmakefile.list.am: - * Target.pri: - * UIProcess/API/C/WebKit2_C.h: Renamed from Source/WebKit2/UIProcess/API/C/WebKit2.h. - * UIProcess/API/gtk/WebKitBackForwardListPrivate.h: - * UIProcess/API/gtk/WebKitPolicyDecisionPrivate.h: - * UIProcess/API/gtk/WebKitPrivate.h: - * UIProcess/API/gtk/WebKitSettingsPrivate.h: - * UIProcess/API/gtk/WebKitWebViewPrivate.h: - * WebKit2.xcodeproj/project.pbxproj: - * win/WebKit2.vcproj: - * win/WebKit2Generated.make: - Update for changed header file name. - -2012-07-28 Sam Weinig <sam@webkit.org> - - Add ability to load from a string to the ObjC WK API - https://bugs.webkit.org/show_bug.cgi?id=92590 - - Reviewed by Dan Bernstein. - - This adds an often used method to the new Objective-C API and will - be helpful for writing API tests. - - * UIProcess/API/mac/WKBrowsingContextController.h: - * UIProcess/API/mac/WKBrowsingContextController.mm: - (-[WKBrowsingContextController loadHTMLString:baseURL:]): - Implement via calling down to WKPageLoadHTMLString. - -2012-07-30 Rafael Brandao <rafael.lobo@openbossa.org> - - [WK2] Kill the concept of secondary shared process - https://bugs.webkit.org/show_bug.cgi?id=92676 - - Reviewed by Alexey Proskuryakov. - - Build fix after r124092. - - * UIProcess/qt/QtWebContext.cpp: Build fix for Qt. In exchange of the - method removed, I've used WebContext::create(String()). - -2012-07-30 Alexey Proskuryakov <ap@apple.com> - - [WK2] Kill the concept of secondary shared process - https://bugs.webkit.org/show_bug.cgi?id=92676 - - Reviewed by Sam Weinig. - - * UIProcess/API/C/WKContext.cpp: - * UIProcess/API/C/WKContext.h: - * UIProcess/WebContext.cpp: - * UIProcess/WebContext.h: - Deleted shared process related code. We don't need to build the singleton into - the cross-platform C API, platform-specific API wrappers are perfectly capable - of doing that. - - * UIProcess/API/efl/ewk_context.cpp: (createDefaultEwkContext): - * UIProcess/API/gtk/WebKitWebContext.cpp: (createDefaultWebContext): - Use WKContextCreate() when creating default context. - -2012-07-30 Claudio Saavedra <csaavedra@igalia.com> - - [GTK] critical warning: gdk_window_get_cursor() called on a NULL window - https://bugs.webkit.org/show_bug.cgi?id=92651 - - Reviewed by Martin Robinson. - - PageClientImpl::setCursor() might get called before the - window is realized, so safeguard against it. - - * UIProcess/API/gtk/PageClientImpl.cpp: - (WebKit::PageClientImpl::setCursor): early return if the window is - not realized. - -2012-07-30 Sheriff Bot <webkit.review.bot@gmail.com> - - Unreviewed, rolling out r123983. - http://trac.webkit.org/changeset/123983 - https://bugs.webkit.org/show_bug.cgi?id=92663 - - EFL build is broken when unit tests are enabled (Requested by - paroga on #webkit). - - * CMakeLists.txt: - * PlatformEfl.cmake: - -2012-07-30 Sheriff Bot <webkit.review.bot@gmail.com> - - Unreviewed, rolling out r123966 and r123967. - http://trac.webkit.org/changeset/123966 - http://trac.webkit.org/changeset/123967 - https://bugs.webkit.org/show_bug.cgi?id=92656 - - This patch is causing assertion failures on the debug bot - (also rolling out a dependent patch) (Requested by mrobinson - on #webkit). - - * GNUmakefile.am: - * GNUmakefile.list.am: - * UIProcess/API/gtk/WebKitPrivate.h: - * UIProcess/API/gtk/WebKitTextChecker.cpp: Removed. - * UIProcess/API/gtk/WebKitTextChecker.h: Removed. - * UIProcess/API/gtk/WebKitWebContext.cpp: - (_WebKitWebContextPrivate): - (createDefaultWebContext): - * UIProcess/API/gtk/WebKitWebContext.h: - * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: - * UIProcess/API/gtk/tests/TestWebKitWebContext.cpp: - (beforeAll): - -2012-07-29 Vsevolod Vlasov <vsevik@chromium.org> - - Web Inspector: Resource agent's reference to cached resources should be weak. - https://bugs.webkit.org/show_bug.cgi?id=92108 - - Reviewed by Pavel Feldman. - - * win/WebKit2.def: - * win/WebKit2CFLite.def: - -2012-07-30 Sheriff Bot <webkit.review.bot@gmail.com> - - Unreviewed, rolling out r124000. - http://trac.webkit.org/changeset/124000 - https://bugs.webkit.org/show_bug.cgi?id=92632 - - seems to have broken chromium Range_InstanceSizeUnknown unit - test across many platforms (Requested by tomhudson on - #webkit). - - * win/WebKit2.def: - * win/WebKit2CFLite.def: - -2012-07-27 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> - - [Qt] Remove accurateVisibleContentsPosition and use a FloatRect for visibleContentsRect instead - https://bugs.webkit.org/show_bug.cgi?id=92536 - - Reviewed by Noam Rosenthal. - - AccurateVisibleContentsPosition carries the same information as visibleContentsRect.location() and - is needed for fixed layer position updates. - This patch instead uses a FloatRect for the visible contents rect from the web view down to the - LayerCoordinatorProxy, and converts it to an IntRect at this moment, before sending it to the - web process. - This also moves the check to prevent sending the same rect to the moment of the conversion - in LayerTreeCoordinatorProxy to fix a bug where the fixed layer deltas wouldn't be updated - unless the integer part of position components changed. - - * UIProcess/API/qt/qquickwebview.cpp: - (QQuickWebViewLegacyPrivate::updateViewportSize): - * UIProcess/DrawingAreaProxy.h: - (WebKit::DrawingAreaProxy::setVisibleContentsRect): - * UIProcess/DrawingAreaProxyImpl.cpp: - (WebKit::DrawingAreaProxyImpl::setVisibleContentsRect): - * UIProcess/DrawingAreaProxyImpl.h: - (DrawingAreaProxyImpl): - * UIProcess/LayerTreeCoordinatorProxy.cpp: - (WebKit::LayerTreeCoordinatorProxy::LayerTreeCoordinatorProxy): - (WebKit::LayerTreeCoordinatorProxy::setVisibleContentsRect): - * UIProcess/LayerTreeCoordinatorProxy.h: - (LayerTreeCoordinatorProxy): - * UIProcess/WebLayerTreeRenderer.cpp: - (WebKit::WebLayerTreeRenderer::WebLayerTreeRenderer): - (WebKit::WebLayerTreeRenderer::setVisibleContentsRect): - (WebKit::WebLayerTreeRenderer::adjustPositionForFixedLayers): - * UIProcess/WebLayerTreeRenderer.h: - (WebLayerTreeRenderer): - * UIProcess/qt/QtViewportHandler.cpp: - (WebKit::QtViewportHandler::visibleContentsRect): - (WebKit::QtViewportHandler::informVisibleContentChange): - * UIProcess/qt/QtViewportHandler.h: - (QtViewportHandler): - -2012-07-27 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> - - [Qt] Fix issues remaining with fixed positioned layers - https://bugs.webkit.org/show_bug.cgi?id=92528 - - Reviewed by Noam Rosenthal. - - This partially fixes jittering of fixed layers when zoomed in and the - blurriness of rendered tiles of the non-composited contents layer. - - * UIProcess/WebLayerTreeRenderer.cpp: - (WebKit::boundedScrollPosition): - (WebKit::WebLayerTreeRenderer::paintToCurrentGLContext): - Remove the adjustment on the root layer. This cancels setPixelAligned and causes the blurriness. - (WebKit::WebLayerTreeRenderer::adjustPositionForFixedLayers): - Use m_accurateVisibleContentsPosition to calculate the delta. - (WebKit::WebLayerTreeRenderer::didChangeScrollPosition): - -2012-07-29 Vsevolod Vlasov <vsevik@chromium.org> - - Web Inspector: Resource agent's reference to cached resources should be weak. - https://bugs.webkit.org/show_bug.cgi?id=92108 - - Reviewed by Pavel Feldman. - - * win/WebKit2.def: - * win/WebKit2CFLite.def: - -2012-07-29 YoungTaeck Song <youngtaeck.song@samsung.com> - - [WK2][EFL] TILED_BACKING_STORE support on Efl WebKit2 - https://bugs.webkit.org/show_bug.cgi?id=91582 - - Reviewed by Noam Rosenthal. - - This patch is a subset of Efl's UI_SIDE_COMPOSITING implementation. - Add a dummy function for fixing building error when enabling TILED_BACKING_STORE. - - * UIProcess/API/efl/PageClientImpl.cpp: - (WebKit): - (WebKit::PageClientImpl::pageDidRequestScroll): - * UIProcess/API/efl/PageClientImpl.h: - (PageClientImpl): - * WebProcess/WebCoreSupport/WebChromeClient.cpp: - (WebKit::WebChromeClient::contentsSizeChanged): - -2012-07-29 Patrick Gansterer <paroga@webkit.org> - - [CMake] Use WEBKIT_CREATE_FORWARDING_HEADERS to generate WK2 forwarding headers - https://bugs.webkit.org/show_bug.cgi?id=83579 - - Reviewed by Daniel Bates. - - Using a list of directories in combination with the WEBKIT_CREATE_FORWARDING_HEADERS - macro allows us to share the common generation of forwarding headers across ports. - - * CMakeLists.txt: - * PlatformEfl.cmake: - -2012-07-28 Sam Weinig <sam@webkit.org> - - Stop copying unnecessary files in WebKit2 build - https://bugs.webkit.org/show_bug.cgi?id=92587 - - Reviewed by Dan Bernstein. - - * WebKit2.xcodeproj/project.pbxproj: - We were accidentally copying ColorSpaceData.h and EventDispatcher.messages.in into the - build products. Stop this. - -2012-07-28 Ryuan Choi <ryuan.choi@samsung.com> - - [WK2][EFL] Add ewk_view_scale_{get|set} to EwkView. - https://bugs.webkit.org/show_bug.cgi?id=92446 - - Reviewed by Kenneth Rohde Christiansen. - - Add methods to Ewk_View to get or set the scale factor of page. - - * UIProcess/API/efl/ewk_view.cpp: - (ewk_view_scale_set): - (ewk_view_scale_get): - * UIProcess/API/efl/ewk_view.h: - -2012-07-28 Mario Sanchez Prada <msanchez@igalia.com> - - [WK2][GTK] Implement a new spell checker API for WebKit2GTK+ - https://bugs.webkit.org/show_bug.cgi?id=90268 - - Reviewed by Martin Robinson. - - Add a simple spell checking API to WK2, allowing to enable/disable - this feature and to define a list of languages associated to it. - - * GNUmakefile.am: Add flags to handle the SPELLCHECK feature. - * GNUmakefile.list.am: Added new files - - Added new internal class that will act both as the implementation - of TextCheckerClient and as the object WebKitWebContext will - depend on to implement the newly added API. - - * UIProcess/API/gtk/WebKitTextChecker.cpp: Added. - (toTextChecker): - (continuousSpellCheckingEnabledCallback): - (setContinuousSpellCheckingEnabledCallback): - (checkSpellingOfStringCallback): - (guessesForWordCallback): - (learnWordCallback): - (ignoreWordCallback): - (WebKitTextChecker::~WebKitTextChecker): - (WebKitTextChecker::create): - (WebKitTextChecker::WebKitTextChecker): - (WebKitTextChecker::checkSpellingOfString): - (WebKitTextChecker::getGuessesForWord): - (WebKitTextChecker::learnWord): - (WebKitTextChecker::ignoreWord): - (WebKitTextChecker::setSpellCheckingEnabled): - (WebKitTextChecker::setSpellCheckingLanguages): - * UIProcess/API/gtk/WebKitTextChecker.h: Added. - (WebKitTextChecker): - (WebKitTextChecker::isSpellCheckingEnabled): - (WebKitTextChecker::getSpellCheckingLanguages): - - Added WKTextChecker to WebKitPrivate.h, needed in WebKitTextChecker. - - * UIProcess/API/gtk/WebKitPrivate.h: - - Add new API to WebKitWebContext to allow enabling/disabling this - spell checking feature, and to set/get the list of languages used - to decide which dictionaries will be consulted. - - * UIProcess/API/gtk/WebKitWebContext.cpp: - (_WebKitWebContextPrivate): - (createDefaultWebContext): - (webkit_web_context_get_spell_checking_enabled): New API. - (webkit_web_context_set_spell_checking_enabled): Ditto. - (webkit_web_context_get_spell_checking_languages): Ditto. - (webkit_web_context_set_spell_checking_languages): Ditto. - * UIProcess/API/gtk/WebKitWebContext.h: - - New tests for checking the new API added to WebKitWebContext. - - * UIProcess/API/gtk/tests/TestWebKitWebContext.cpp: - (testWebContextSpellChecker): - (beforeAll): - - Update documentation with new sections and symbols. - - * UIProcess/API/gtk/docs/webkit2gtk-docs.sgml: - * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: - -2012-07-27 Christophe Dumez <christophe.dumez@intel.com> - - [EFL][WK2] Assertion hit in ewk_cookie_manager.cpp - https://bugs.webkit.org/show_bug.cgi?id=92544 - - Reviewed by Kenneth Rohde Christiansen. - - Removed wrong assertion in ewk_cookie_manager.cpp - and replace it by an if check. The assertion was - sometimes hit by our unit tests. - - * UIProcess/API/efl/ewk_cookie_manager.cpp: - (cookiesDidChange): - -2012-07-27 Anders Carlsson <andersca@apple.com> - - Don't use an NSUserDefault for disabling the web process sandbox - https://bugs.webkit.org/show_bug.cgi?id=92542 - <rdar://problem/11976060> - - Reviewed by Mark Rowe. - - The user default was really helpful during WebKit2 bringup, but we no longer need to pay the IPC cost of initializing NSUserDefaults at startup, - so get rid of the preference and use a good old #ifdef instead. - - * WebProcess/mac/WebProcessMac.mm: - (WebKit::initializeSandbox): - -2012-07-27 Christophe Dumez <christophe.dumez@intel.com> - - [WK2][WTR] LayoutTestController.deliverWebIntent() needs to be implemented - https://bugs.webkit.org/show_bug.cgi?id=92228 - - Reviewed by Anders Carlsson. - - Add C API to create a WKIntentData and to deliver - it to a frame. This is needed by WebKitTestRunner - to implement LayoutTestController.deliverWebIntent(). - - * UIProcess/API/C/WKIntentData.cpp: - (WKIntentDataCreate): - * UIProcess/API/C/WKIntentData.h: - * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp: - (WKBundlePageDeliverIntentToFrame): - * WebProcess/InjectedBundle/API/c/WKBundlePage.h: - * WebProcess/WebPage/WebPage.h: - (WebPage): Make deliverIntentToFrame() public so that it can - be used by WKBundlePage. - -2012-07-27 Anders Carlsson <andersca@apple.com> - - Show the unavailable plug-in indicator for Java applets as well - https://bugs.webkit.org/show_bug.cgi?id=92521 - - Reviewed by Sam Weinig. - - * WebProcess/WebCoreSupport/WebChromeClient.cpp: - (WebKit::WebChromeClient::unavailablePluginButtonClicked): - This can now be called on applet elements as well. - - * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: - (WebKit::WebFrameLoaderClient::createJavaAppletWidget): - Get the MIME type from the applet element. - -2012-07-27 Gyuyoung Kim <gyuyoung.kim@samsung.com> - - [WK2] Fix build warning in WebEventConversion.cpp - https://bugs.webkit.org/show_bug.cgi?id=92517 - - Reviewed by Darin Adler. - - There is a build warning related to comparison between signed and unsigned integer expressions. - - * Shared/WebEventConversion.cpp: - (WebKit::WebKit2PlatformTouchEvent::WebKit2PlatformTouchEvent): - -2012-07-27 Gyuyoung Kim <gyuyoung.kim@samsung.com> - - [WK2] Fix build warning in WebEventConversion.cpp - https://bugs.webkit.org/show_bug.cgi?id=92517 - - Reviewed by Darin Adler. - - There is a build warning related to comparison between signed and unsigned integer expressions. - - * Shared/WebEventConversion.cpp: - (WebKit::WebKit2PlatformTouchEvent::WebKit2PlatformTouchEvent): - -2012-07-27 Christophe Dumez <christophe.dumez@intel.com> - - [EFL][WK2] Add download client for Ewk_Context - https://bugs.webkit.org/show_bug.cgi?id=91345 - - Reviewed by Kenneth Rohde Christiansen. - - Add download client for Ewk_Context so that - information about downloads can be reported - to the client application via Ewk_View signals. - - The client application needs to listen for - "download,request" signal on the view and set - the download path for the download in the - callback in order to accept it. If the signal - is ignored or if the download path is not set - the download will fail. - - A new Ewk_Download_Job type is introduced to provide - information relative to a download to the client - and to allow the client to interact with it (e.g. - set its download path, cancel it, ...). - - * PlatformEfl.cmake: - * UIProcess/API/efl/EWebKit2.h: - * UIProcess/API/efl/PageClientImpl.cpp: - (WebKit::PageClientImpl::handleDownloadRequest): - (WebKit): - * UIProcess/API/efl/PageClientImpl.h: - (PageClientImpl): - * UIProcess/API/efl/ewk_context.cpp: - (_Ewk_Context): - (_Ewk_Context::_Ewk_Context): - (_Ewk_Context::~_Ewk_Context): - (ewk_context_download_job_add): - (ewk_context_download_job_get): - (ewk_context_download_job_remove): - * UIProcess/API/efl/ewk_context_download_client.cpp: Added. - (toEwkContext): - (decideDestinationWithSuggestedFilename): - (didReceiveResponse): - (didCreateDestination): - (didReceiveData): - (didFail): - (didCancel): - (didFinish): - (ewk_context_download_client_attach): - * UIProcess/API/efl/ewk_context_download_client_private.h: Added. - * UIProcess/API/efl/ewk_context_private.h: - * UIProcess/API/efl/ewk_download_job.cpp: Added. - (_Ewk_Download_Job): - (_Ewk_Download_Job::_Ewk_Download_Job): - (_Ewk_Download_Job::~_Ewk_Download_Job): - (ewk_download_job_ref): - (ewk_download_job_unref): - (ewk_download_job_id_get): - (ewk_download_job_view_get): - (ewk_download_job_state_get): - (ewk_download_job_request_get): - (ewk_download_job_response_get): - (ewk_download_job_destination_get): - (ewk_download_job_destination_set): - (ewk_download_job_suggested_filename_get): - (ewk_download_job_cancel): - (ewk_download_job_estimated_progress_get): - (ewk_download_job_elapsed_time_get): - (ewk_download_job_response_set): - (ewk_download_job_suggested_filename_set): - (ewk_download_job_received_data): - (ewk_download_job_state_set): - (ewk_download_job_new): - * UIProcess/API/efl/ewk_download_job.h: Added. - * UIProcess/API/efl/ewk_download_job_private.h: Added. - (WebKit): - * UIProcess/API/efl/ewk_url_response.cpp: - (ewk_url_response_content_length_get): Add a function to - retrieve the content length of a URL response. - * UIProcess/API/efl/ewk_url_response.h: - * UIProcess/API/efl/ewk_view.cpp: - (ewk_view_download_job_cancelled): - (ewk_view_download_job_requested): - (ewk_view_download_job_failed): - (ewk_view_download_job_finished): - * UIProcess/API/efl/ewk_view.h: - * UIProcess/API/efl/ewk_view_private.h: - * UIProcess/API/efl/tests/resources/test.pdf: Added. - * UIProcess/API/efl/tests/test_ewk2_download_job.cpp: Added. This tests - the download functionality. - (DownloadTestData): - (fileExists): - (serverCallback): - (on_download_requested): - (on_download_cancelled): - (on_download_failed): - (on_download_finished): - (TEST_F): - * UIProcess/PageClient.h: - (PageClient): - * UIProcess/WebPageProxy.cpp: - (WebKit::WebPageProxy::receivedPolicyDecision): - (WebKit): - (WebKit::WebPageProxy::handleDownloadRequest): - * UIProcess/WebPageProxy.h: - (WebPageProxy): - -2012-07-27 YoungTaeck Song <youngtaeck.song@samsung.com> - - [WK2][EFL] Add an ACCELERATED_COMPOSITING implementation for Efl WebKit2 - https://bugs.webkit.org/show_bug.cgi?id=91581 - - Reviewed by Noam Rosenthal. - - This patch is a subset of Efl's UI_SIDE_COMPOSITING implementation. - When enter accelerated compositing mode, create evas_gl, evas_gl_context, and evas_gl_surface. - - * PlatformEfl.cmake: - * Shared/LayerTreeContext.h: - (LayerTreeContext): - * UIProcess/API/efl/PageClientImpl.cpp: - (WebKit::PageClientImpl::viewSize): - (WebKit::PageClientImpl::enterAcceleratedCompositingMode): - (WebKit::PageClientImpl::exitAcceleratedCompositingMode): - * UIProcess/API/efl/ewk_view.cpp: - (_Ewk_View_Private_Data): - (_Ewk_View_Private_Data::_Ewk_View_Private_Data): - (ewk_view_size_get): - (ewk_view_create_gl_surface): - (ewk_view_enter_accelerated_compositing_mode): - (ewk_view_exit_accelerated_compositing_mode): - (_ewk_view_smart_calculate): - * UIProcess/API/efl/ewk_view_private.h: - -2012-07-27 Christophe Dumez <christophe.dumez@intel.com> - - [EFL][WK2] Add API to Ewk_Cookie_Manager to watch for cookie changes - https://bugs.webkit.org/show_bug.cgi?id=92484 - - Reviewed by Kenneth Rohde Christiansen. - - Add API tp Ewk_Cookie_Manager so that the client can watch - for cookie changes. - - * UIProcess/API/efl/ewk_cookie_manager.cpp: - * UIProcess/API/efl/ewk_cookie_manager.h: - * UIProcess/API/efl/tests/test_ewk2_cookie_manager.cpp: Add unit tests - for cookie changes watching. - -2012-07-27 Christophe Dumez <christophe.dumez@intel.com> - - [EFL][WK2] Stop using C API to interact with the page in Ewk_View - https://bugs.webkit.org/show_bug.cgi?id=92463 - - Reviewed by Simon Hausmann. - - Stop using C API to interact with the PageProxy in Ewk_View - and use the PageProxy object directly. This avoids useless - converting to WK type using toAPI() all the time. - - * UIProcess/API/efl/ewk_view.cpp: - (ewk_view_base_add): - (ewk_view_uri_update): - (ewk_view_uri_set): - (ewk_view_reload): - (ewk_view_reload_bypass_cache): - (ewk_view_stop): - (ewk_view_load_progress_get): - (ewk_view_device_pixel_ratio_set): - (ewk_view_theme_get): - (ewk_view_cursor_set): - (ewk_view_back): - (ewk_view_forward): - (ewk_view_intent_deliver): - (ewk_view_back_possible): - (ewk_view_forward_possible): - (ewk_view_setting_encoding_custom_get): - (ewk_view_setting_encoding_custom_set): - -2012-07-27 Dominik Röttsches <dominik.rottsches@intel.com> - - [Cairo] Add complex font drawing using HarfbuzzNG - https://bugs.webkit.org/show_bug.cgi?id=91864 - - Reviewed by Simon Hausmann and Martin Robinson. - - Adding includes for harfbuzz folders. - - * CMakeLists.txt: - -2012-07-27 Christophe Dumez <christophe.dumez@intel.com> - - [EFL][WK2] Add more Ewk_View unit tests - https://bugs.webkit.org/show_bug.cgi?id=92407 - - Reviewed by Kenneth Rohde Christiansen. - - Add more unit tests for WebKit2 Ewk_View API. - In particular, navigation, HTML loading and - device pixel ratio functions are now tested. - - * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp: - (EWK2UnitTest::EWK2UnitTestBase::SetUp): Call ewk_init() instead - of duplicating initialization code. - (EWK2UnitTest::EWK2UnitTestBase::TearDown): call ewk_shutdown(). - (TitleChangedData): - (EWK2UnitTest): - (EWK2UnitTest::onTitleChanged): - (EWK2UnitTest::EWK2UnitTestBase::waitUntilTitleChangedTo): Add convenience - method to wait until the view main frame title changes to a given value. - * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h: - (EWK2UnitTestBase): - * UIProcess/API/efl/tests/test_ewk2_view.cpp: - (TEST_F): - (serverCallbackNavigation): - -2012-07-27 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> - - [EFL][WK2] Keyboard events miss key location data. - https://bugs.webkit.org/show_bug.cgi?id=92235 - - Reviewed by Simon Hausmann. - - EFL WK2 did not initialize WebKeyboardEvent::m_isKeypad field. - This caused failure of fast/events/keydown-numpad-keys.html test. - - * Shared/efl/WebEventFactory.cpp: WebKeyboardEvent::m_isKeypad is initialized. - (WebKit::WebEventFactory::createWebKeyboardEvent): - -2012-07-27 Gyuyoung Kim <gyuyoung.kim@samsung.com> - - [EFL] Fix wrong return value in EWK_VIEW_XXX macro. - https://bugs.webkit.org/show_bug.cgi?id=92466 - - Reviewed by Simon Hausmann. - - There are wrong return values in EWK_VIEW_XXX macros. The wrong return values - should be fixed. In addition, API description is also modified according to returned - value change. - - * UIProcess/API/efl/ewk_view.cpp: - (ewk_view_uri_set): - (ewk_view_load_progress_get): - (ewk_view_device_pixel_ratio_get): - * UIProcess/API/efl/ewk_view.h: - -2012-07-27 Christophe Dumez <christophe.dumez@intel.com> - - [EFL][WK2] Add unit tests for Ewk_View form client - https://bugs.webkit.org/show_bug.cgi?id=92468 - - Reviewed by Simon Hausmann. - - Add unit test for form client functionality in - Ewk_View. - - * UIProcess/API/efl/tests/test_ewk2_view.cpp: - (onFormAboutToBeSubmitted): - (TEST_F): - -2012-07-26 Zeno Albisser <zeno@webkit.org> - - Unreviewed Qt buildfix after r123786. - - Qt-minimal builds with ENABLE_REQUEST_ANIMATION_FRAME=0. - Therefore adding #ifdefs to allow for that configuration. - - * WebProcess/WebPage/LayerTreeCoordinator/LayerTreeCoordinator.cpp: - (WebKit): - * WebProcess/WebPage/LayerTreeCoordinator/LayerTreeCoordinator.h: - (LayerTreeCoordinator): - -2012-07-26 Zeno Albisser <zeno@webkit.org> - - [Qt] requestAnimationFrame should only trigger when a new frame can be displayed. - https://bugs.webkit.org/show_bug.cgi?id=88638 - - Disable REQUEST_ANIMATION_FRAME_TIMER for the Qt port and tie - the servicing of scripted animations to layer syncing for WK2. - For WK1 we rely on the RefreshAnimation that is based on QAbstractAnimation. - - Reviewed by Jocelyn Turcotte. - - * WebProcess/WebCoreSupport/WebChromeClient.cpp: - (WebKit): - (WebKit::WebChromeClient::scheduleAnimation): - * WebProcess/WebCoreSupport/WebChromeClient.h: - (WebChromeClient): - * WebProcess/WebPage/LayerTreeCoordinator/LayerTreeCoordinator.cpp: - (WebKit::LayerTreeCoordinator::performScheduledLayerFlush): - (WebKit::LayerTreeCoordinator::scheduleAnimation): - (WebKit): - * WebProcess/WebPage/LayerTreeCoordinator/LayerTreeCoordinator.h: - (LayerTreeCoordinator): - * WebProcess/WebPage/LayerTreeHost.h: - (LayerTreeHost): - -2012-07-26 Jer Noble <jer.noble@apple.com> - - Add a ChromeClient method to send diagnostic logging messages from WebCore to the client. - https://bugs.webkit.org/show_bug.cgi?id=92340 - - Reviewed by Anders Carlsson. - - Pipe the ChromeClient logDiagnosticMessage() function through WebKit2 to a new bundle class - InjectedBundlePageDiagnosticLoggingClient, to be implemented by the client. - - * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp: - (WKBundlePageSetDiagnosticLoggingClient): Added. - * WebProcess/InjectedBundle/API/c/WKBundlePage.h: - * WebProcess/InjectedBundle/InjectedBundlePageDiagnosticLoggingClient.cpp: Added. - (WebKit::InjectedBundlePageDiagnosticLoggingClient::logDiagnosticMessage): - * WebProcess/InjectedBundle/InjectedBundlePageDiagnosticLoggingClient.h: Added. - (InjectedBundlePageDiagnosticLoggingClient): - * WebProcess/WebCoreSupport/WebChromeClient.cpp: - (WebKit::WebChromeClient::logDiagnosticMessage): - * WebProcess/WebCoreSupport/WebChromeClient.h: - * WebProcess/WebPage/WebPage.cpp: - (WebKit::WebPage::initializeInjectedBundleDiagnosticLoggingClient): - * WebProcess/WebPage/WebPage.h: - (WebKit::WebPage::injectedBundleDiagnosticLoggingClient): - - Add a convenience class to retrieve the diagnostic message keys: - * WebProcess/InjectedBundle/InjectedBundlePageDiagnosticLoggingClient.cpp: Added. - (WebKit::InjectedBundlePageDiagnosticLoggingClient::logDiagnosticMessage): - * WebProcess/InjectedBundle/InjectedBundlePageDiagnosticLoggingClient.h: Added. - (InjectedBundlePageDiagnosticLoggingClient): - - Add the InjectedBundlePageDiagnosticLoggingClient.cpp,h files. - * CMakeLists.txt: - * GNUmakefile.list.am: - * Target.pri: - * win/WebKit2.vcproj: - * WebKit2.xcodeproj/project.pbxproj: - -2012-07-25 Jer Noble <jer.noble@apple.com> - - Add setting to enable and disable diagnostic logging. - https://bugs.webkit.org/show_bug.cgi?id=92337 - - Reviewed by Anders Carlsson. - - Add a WebKit2 WKPreferences API to set set the WebCore diagnosticLoggingEnabled setting. - - * Shared/WebPreferencesStore.h: - * UIProcess/API/C/WKPreferences.cpp: - (WKPreferencesSetDiagnosticLoggingEnabled): - (WKPreferencesGetDiagnosticLoggingEnabled): - * UIProcess/API/C/WKPreferencesPrivate.h: - * WebProcess/WebPage/WebPage.cpp: - (WebKit::WebPage::updatePreferences): Ensure this preference is propagated to Settings - whenever the preferences change. - -2012-07-26 Thiago Marcos P. Santos <thiago.santos@intel.com> - - [EFL][WK2] Regression(r123731): Linking errors due to efreet functions - https://bugs.webkit.org/show_bug.cgi?id=92378 - - Unreviewed build fix. - - The library list created by PlatformEfl.cmake was being erased by a - SET called after including the platform specific file. Luckily the - dependencies were fulfilled by other targets until efreet was add. - - * CMakeLists.txt: - -2012-07-26 Christophe Dumez <christophe.dumez@intel.com> - - [EFL][WK2] Compilation warning in EWK2UnitTestServer.cpp - https://bugs.webkit.org/show_bug.cgi?id=92387 - - Reviewed by Kenneth Rohde Christiansen. - - Fix compilation warning in EWK2UnitTestServer.cpp. - - * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestServer.cpp: - (EWK2UnitTestServer::EWK2UnitTestServer): - -2012-07-26 Christophe Dumez <christophe.dumez@intel.com> - - [EFL][WK2] Implement Network Information provider - https://bugs.webkit.org/show_bug.cgi?id=92343 - - Reviewed by Kenneth Rohde Christiansen. - - Add Network Information provider for WebKit2 EFL - by using NetworkInfoProviderEfl class from - WebCore. - - * CMakeLists.txt: - * PlatformEfl.cmake: - * UIProcess/API/efl/NetworkInfoProvider.cpp: Added. - (toNetworkInfoProvider): - (startUpdatingCallback): - (stopUpdatingCallback): - (getBandwidthCallback): - (isMeteredCallback): - (NetworkInfoProvider::create): - (NetworkInfoProvider::NetworkInfoProvider): - (NetworkInfoProvider::~NetworkInfoProvider): - (NetworkInfoProvider::bandwidth): - (NetworkInfoProvider::metered): - (NetworkInfoProvider::startUpdating): - (NetworkInfoProvider::stopUpdating): - * UIProcess/API/efl/NetworkInfoProvider.h: Added. - (NetworkInfoProvider): - -2012-07-26 Christophe Dumez <christophe.dumez@intel.com> - - [EFL][WK2] Compilation warning in EWK2UnitTestServer.cpp - https://bugs.webkit.org/show_bug.cgi?id=92387 - - Reviewed by Kenneth Rohde Christiansen. - - Fix compilation warning in EWK2UnitTestServer.cpp. - - * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestServer.cpp: - (EWK2UnitTestServer::EWK2UnitTestServer): - -2012-07-26 Thiago Marcos P. Santos <thiago.santos@intel.com> - - [EFL][WK2] Regression(r123731): Linking errors due to efreet functions - https://bugs.webkit.org/show_bug.cgi?id=92378 - - Unreviewed build fix. - - The library list created by PlatformEfl.cmake was being erased by a - SET called after including the platform specific file. Luckily the - dependencies were fulfilled by other targets until efreet was add. - - * CMakeLists.txt: - -2012-07-26 Christophe Dumez <christophe.dumez@intel.com> - - [EFL][WK2] Compilation warning in EWK2UnitTestServer.cpp - https://bugs.webkit.org/show_bug.cgi?id=92387 - - Reviewed by Kenneth Rohde Christiansen. - - Fix compilation warning in EWK2UnitTestServer.cpp. - - * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestServer.cpp: - (EWK2UnitTestServer::EWK2UnitTestServer): - -2012-07-26 Christophe Dumez <christophe.dumez@intel.com> - - [EFL][WK2] Implement Network Information provider - https://bugs.webkit.org/show_bug.cgi?id=92343 - - Reviewed by Kenneth Rohde Christiansen. - - Add Network Information provider for WebKit2 EFL - by using NetworkInfoProviderEfl class from - WebCore. - - * CMakeLists.txt: - * PlatformEfl.cmake: - * UIProcess/API/efl/NetworkInfoProvider.cpp: Added. - (toNetworkInfoProvider): - (startUpdatingCallback): - (stopUpdatingCallback): - (getBandwidthCallback): - (isMeteredCallback): - (NetworkInfoProvider::create): - (NetworkInfoProvider::NetworkInfoProvider): - (NetworkInfoProvider::~NetworkInfoProvider): - (NetworkInfoProvider::bandwidth): - (NetworkInfoProvider::metered): - (NetworkInfoProvider::startUpdating): - (NetworkInfoProvider::stopUpdating): - * UIProcess/API/efl/NetworkInfoProvider.h: Added. - (NetworkInfoProvider): - -2012-07-26 Christophe Dumez <christophe.dumez@intel.com> - - [EFL][WK2] Compilation warning in EWK2UnitTestServer.cpp - https://bugs.webkit.org/show_bug.cgi?id=92387 - - Reviewed by Kenneth Rohde Christiansen. - - Fix compilation warning in EWK2UnitTestServer.cpp. - - * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestServer.cpp: - (EWK2UnitTestServer::EWK2UnitTestServer): - -2012-07-26 Christophe Dumez <christophe.dumez@intel.com> - - [EFL][WK2] Add unit tests for Ewk_Context - https://bugs.webkit.org/show_bug.cgi?id=92005 - - Reviewed by Antonio Gomes. - - Add unit tests for WebKit2 Ewk_Context. - - * PlatformEfl.cmake: - * UIProcess/API/efl/ewk_url_scheme_request.cpp: - (ewk_url_scheme_request_finish): - * UIProcess/API/efl/ewk_url_scheme_request.h: Mark content_data - argument as const. - * UIProcess/API/efl/tests/test_ewk2_context.cpp: Added. - (TEST_F): - (schemeRequestCallback): - -2012-07-26 Christophe Dumez <christophe.dumez@intel.com> - - [EFL][WK2] Add form client for Ewk_View - https://bugs.webkit.org/show_bug.cgi?id=92358 - - Reviewed by Kenneth Rohde Christiansen. - - Implement a form client for EFL port in order to - send a "form,request,new" signal on the Ewk_View - whenever a form will be submitted. - - The Ewk_Form_Submission_Request type is - introduced to provide the client with information - about the form (e.g. text fields contained in the - form) and to submit it. - - This is typically used to store login information - that can be used later to pre-fill the form. - - * PlatformEfl.cmake: - * UIProcess/API/efl/EWebKit2.h: - * UIProcess/API/efl/ewk_form_submission_request.cpp: Added. - (_Ewk_Form_Submission_Request): - (_Ewk_Form_Submission_Request::_Ewk_Form_Submission_Request): - (_Ewk_Form_Submission_Request::~_Ewk_Form_Submission_Request): - (ewk_form_submission_request_ref): - (ewk_form_submission_request_unref): - (ewk_form_submission_request_field_names_get): - (ewk_form_submission_request_field_value_get): - (ewk_form_submission_request_submit): - (ewk_form_submission_request_new): - * UIProcess/API/efl/ewk_form_submission_request.h: Added. - * UIProcess/API/efl/ewk_form_submission_request_private.h: Added. - * UIProcess/API/efl/ewk_view.cpp: - (ewk_view_base_add): - (ewk_view_form_submission_request_new): - * UIProcess/API/efl/ewk_view.h: - * UIProcess/API/efl/ewk_view_form_client.cpp: Added. - (willSubmitForm): - (ewk_view_form_client_attach): - * UIProcess/API/efl/ewk_view_form_client_private.h: Added. - * UIProcess/API/efl/ewk_view_private.h: - -2012-07-26 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> - - [WK2] WebPage::handleEditingKeyboardEvent does not check whether the node allows editing. - https://bugs.webkit.org/show_bug.cgi?id=92364 - - Reviewed by Kenneth Rohde Christiansen. - - Added a check whether the input node allows editing. If editing is not allowed - text input event will not be emitted. - - * WebProcess/WebPage/WebPage.cpp: - (WebKit::WebPage::handleEditingKeyboardEvent): - -2012-07-26 Zoltan Nyul <zoltan.nyul@intel.com> - - [EFL] EFL port should use XDG paths - https://bugs.webkit.org/show_bug.cgi?id=91719 - - Reviewed by Kenneth Rohde Christiansen. - - Setting xdg paths for application cache, web-database and local-storage. - - * PlatformEfl.cmake: - * UIProcess/efl/WebContextEfl.cpp: - (WebKit::WebContext::applicationCacheDirectory): - (WebKit::WebContext::platformDefaultDatabaseDirectory): - (WebKit::WebContext::platformDefaultLocalStorageDirectory): - -2012-07-26 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com> - - [EFL] [WK2] Memory leak in ewk_view_resource_load_client.cpp - https://bugs.webkit.org/show_bug.cgi?id=92099 - - Reviewed by Kentaro Hara. - - Fix a memory leak by clearing the loadingResources HashMap on exit. - - * UIProcess/API/efl/ewk_view.cpp: - (_Ewk_View_Private_Data::~_Ewk_View_Private_Data): - (_ewk_view_priv_loading_resources_clear): - (ewk_view_load_provisional_started): - -2012-07-26 Gyuyoung Kim <gyuyoung.kim@samsung.com> - - [DRT] LTC:: pageNumberForElementById() could be moved to Internals - https://bugs.webkit.org/show_bug.cgi?id=92091 - - Reviewed by Kentaro Hara. - - Missing a symbol filter for Mac win port. - - * win/WebKit2.def: - * win/WebKit2CFLite.def: - -2012-07-25 Seokju Kwon <seokju.kwon@samsung.com> - - [EFL][WK2] Implement the inspector for WebKitTestRunner - https://bugs.webkit.org/show_bug.cgi?id=92213 - - Reviewed by Ryosuke Niwa. - - Partial Implementation of WebInspectorProxyEfl for WebkitTestRunner. - And Web Inspector resources installation. - - * PlatformEfl.cmake: - * UIProcess/WebInspectorProxy.cpp: - (WebKit::WebInspectorProxy::WebInspectorProxy): - * UIProcess/WebInspectorProxy.h: - (WebInspectorProxy): - * UIProcess/efl/WebInspectorProxyEfl.cpp: - (WebKit::WebInspectorProxy::platformCreateInspectorPage): - (WebKit::WebInspectorProxy::platformDidClose): - (WebKit::WebInspectorProxy::inspectorPageURL): - (WebKit::WebInspectorProxy::inspectorBaseURL): - -2012-07-25 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org> - - Create a specialized struct for use in HashMap iterators - https://bugs.webkit.org/show_bug.cgi?id=92137 - - Reviewed by Ryosuke Niwa. - - * Platform/CoreIPC/ArgumentCoders.h: Add encode/decode for KeyValuePair. - -2012-07-25 Anders Carlsson <andersca@apple.com> - - Crash when calling PluginView::pluginFocusOrWindowFocusChanged when the web page is null - https://bugs.webkit.org/show_bug.cgi?id=92289 - <rdar://problem/11785352> - - Reviewed by Andreas Kling. - - Plug-in views that outlive their containing web page for various reasons (such as being protected from - destruction) need to null check the web page. - - * WebProcess/Plugins/PluginView.cpp: - (WebKit::PluginView::pluginFocusOrWindowFocusChanged): - (WebKit::PluginView::setComplexTextInputState): - -2012-07-25 Christophe Dumez <christophe.dumez@intel.com> - - [WK2][WTR] LayoutTestController.sendWebIntentResponse() needs to be implemented - https://bugs.webkit.org/show_bug.cgi?id=92227 - - Reviewed by Kenneth Rohde Christiansen. - - Add new InjectedBundleIntentRequest class to wrap WebCore's - IntentRequest and use it in InjectedBundle's - didReceiveIntentForFrame callback. The WebKitTestRunner needs - to be able to reply to a Web intent request in order to - implement LayoutTestController.sendWebIntentResponse(). As - a consequence, passing a WebIntentData type in not enough. - - * CMakeLists.txt: - * GNUmakefile.list.am: - * Shared/API/c/WKBase.h: - * Shared/APIObject.h: - * Shared/IntentData.cpp: - (WebKit::IntentData::IntentData): - (WebKit): - * Shared/IntentData.h: - (WebCore): - (WebKit::IntentData::IntentData): - (IntentData): - * Target.pri: - * WebProcess/InjectedBundle/API/c/WKBundleAPICast.h: - (WebKit): - * WebProcess/InjectedBundle/API/c/WKBundleIntentRequest.cpp: Copied from Source/WebKit2/Shared/IntentData.cpp. - (WKBundleIntentRequestGetTypeID): - (WKBundleIntentRequestCopyIntent): - (WKBundleIntentRequestPostResult): - (WKBundleIntentRequestPostFailure): - * WebProcess/InjectedBundle/API/c/WKBundleIntentRequest.h: Copied from Source/WebKit2/Shared/IntentData.h. - * WebProcess/InjectedBundle/API/c/WKBundlePage.h: - * WebProcess/InjectedBundle/InjectedBundleIntentRequest.cpp: Copied from Source/WebKit2/Shared/IntentData.cpp. - (WebKit): - (WebKit::InjectedBundleIntentRequest::create): - (WebKit::InjectedBundleIntentRequest::InjectedBundleIntentRequest): - (WebKit::InjectedBundleIntentRequest::postResult): - (WebKit::InjectedBundleIntentRequest::postFailure): - (WebKit::InjectedBundleIntentRequest::intent): - * WebProcess/InjectedBundle/InjectedBundleIntentRequest.h: Copied from Source/WebKit2/Shared/IntentData.h. - (WebCore): - (WebKit): - (InjectedBundleIntentRequest): - (WebKit::InjectedBundleIntentRequest::type): - * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp: - (WebKit::InjectedBundlePageLoaderClient::didReceiveIntentForFrame): - * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h: - (WebKit): - (InjectedBundlePageLoaderClient): - * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: - (WebKit::WebFrameLoaderClient::dispatchIntent): - -2012-07-25 Anders Carlsson <andersca@apple.com> - - Crash when a web page is closed with outstanding scrolling thread barriers - https://bugs.webkit.org/show_bug.cgi?id=92280 - <rdar://problem/11630200> - - Reviewed by Andreas Kling. - - There was a check in forceRepaintAsync to handle the drawing area going away before the block had - been invoked, but this check needs to be done earlier (as the FIXME suggested). - Move this check to dispatchAfterEnsuringUpdatedScrollPosition instead. - + * WebProcess/WebPage/ca/LayerTreeHostCA.cpp: + (WebKit::LayerTreeHostCA::flushPendingLayerChanges): + * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h: + (TiledCoreAnimationDrawingArea): * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm: - (WebKit::TiledCoreAnimationDrawingArea::forceRepaintAsync): - (WebKit::TiledCoreAnimationDrawingArea::dispatchAfterEnsuringUpdatedScrollPosition): - -2012-07-25 Alexey Proskuryakov <ap@apple.com> - - Chinese IM receives incorrect/duplicated key events in text fields in webpages in Safari. - https://bugs.webkit.org/show_bug.cgi?id=89048 - <rdar://problem/11786384> - - Reviewed by Andreas Kling. - - Cannot test text input from UI process side. - - Stop relying on IPC to handle key events in order. There are too many complications - where out of order delivery is performed. Instead, queue the events at UI process - side. - - * UIProcess/WebPageProxy.cpp: - (WebKit::WebPageProxy::handleKeyboardEvent): - (WebKit::WebPageProxy::didReceiveEvent): - -2012-07-25 Gyuyoung Kim <gyuyoung.kim@samsung.com> + (WebKit::TiledCoreAnimationDrawingArea::scheduleCompositingLayerFlush): + (WebKit::TiledCoreAnimationDrawingArea::didInstallPageOverlay): + (WebKit::TiledCoreAnimationDrawingArea::didUninstallPageOverlay): + (WebKit::TiledCoreAnimationDrawingArea::setPageOverlayNeedsDisplay): + (WebKit::TiledCoreAnimationDrawingArea::flushLayers): - [EFL] Use eina_stringshare_add instead of strdup. - https://bugs.webkit.org/show_bug.cgi?id=92072 +2012-10-04 Christophe Dumez <christophe.dumez@intel.com> - Reviewed by Kentaro Hara. + [EFL][WK2] Add setting to allow file access from file:// URLs + https://bugs.webkit.org/show_bug.cgi?id=98121 - Eina of EFL libraries supports a string functionality that replaces strdup. So, EFL port needs - to replace strdup with eina_stringshare_add function. - - * UIProcess/API/efl/ewk_intent.cpp: - (ewk_intent_suggestions_get): - (ewk_intent_extra_get): - * UIProcess/API/efl/ewk_intent.h: - -2012-07-25 Ryuan Choi <ryuan.choi@samsung.com> - - [EFL][WK2] Add ewk_view_cursor_set to change cursor. - https://bugs.webkit.org/show_bug.cgi?id=89140 - - Reviewed by Hajime Morita. - - Implement ewk_view_cursor_set to support cursor changes. - - * UIProcess/API/efl/PageClientImpl.cpp: - (WebKit::PageClientImpl::setCursor): Called ewk_view_cursor_set. - * UIProcess/API/efl/ewk_view.cpp: - (_Ewk_View_Private_Data): - (_Ewk_View_Private_Data::_Ewk_View_Private_Data): - (_Ewk_View_Private_Data::~_Ewk_View_Private_Data): - (_ewk_view_priv_new): Check whether ecore_x can be used. - (_ewk_view_smart_add): - Change order of initialization to use base structure in _ewk_view_priv_new. - (ewk_view_cursor_set): Added to set cursor. - * UIProcess/API/efl/ewk_view_private.h: - -2012-07-25 Ryuan Choi <ryuan.choi@samsung.com> - - [EFL][WK2] Update uri when the active URI is changed while loading. - https://bugs.webkit.org/show_bug.cgi?id=92001 - - Reviewed by Hajime Morita. - - For now, ewk_view_uri_get just return the last uri of setter. - This patch updates the uri of ewk_view when it is changed while loading. - - * UIProcess/API/efl/ewk_view.cpp: - (ewk_view_uri_update): - Added to check whether current active URI has changed and send uri,changed - signal if it has changed. - (ewk_view_uri_set): - Called ewk_view_uri_update to make sure the active uri is updated when the - load operation is started. - (ewk_view_reload): Ditto. - (ewk_view_reload_bypass_cache): Ditto. - (ewk_view_load_finished): Ditto. - (ewk_view_load_provisional_redirect): Ditto. - (ewk_view_load_provisional_started): Ditto. - (ewk_view_html_string_load): Ditto. - * UIProcess/API/efl/ewk_view.h: Updated comment for uri,changed signal. - * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestEnvironment.cpp: - (EWK2UnitTest::EWK2UnitTestEnvironment::urlForResource): - Added to get url of custom resource for test. - * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestEnvironment.h: - * UIProcess/API/efl/tests/resources/redirect_uri_to_default.html: - Added to test ewk_view_uri_get when the page is redirected. - * UIProcess/API/efl/tests/test_ewk2_view.cpp: Ditto. - (onLoadFinishedForRedirection): - (TEST_F): Added new test case whether ewk_view_uri_get returns correct uri when - the page is redirected. - -2012-07-25 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> - - [EFL][WK2] Add ewk_main.{cpp,h} to EFL WK2 - https://bugs.webkit.org/show_bug.cgi?id=92101 - - Reviewed by Kenneth Rohde Christiansen. - - Added a centralized place for general initialization in UI process for EFL WK2. - - * PlatformEfl.cmake: - * UIProcess/API/efl/EWebKit2.h: - * UIProcess/API/efl/ewk_main.cpp: Added. - (ewk_init): General initialization. - (ewk_shutdown): General freeing. - (_ewk_init_body): An aux function. - * UIProcess/API/efl/ewk_main.h: Added. - -2012-07-24 Jae Hyun Park <jae.park@company100.net> - - WKContextGetGlobalStatistics() assigns wrong value to wkFrameCount in WKContextStatistics - https://bugs.webkit.org/show_bug.cgi?id=92173 - - Reviewed by John Sullivan. - - In WKContextGetGlobalStatistics(), wkViewCount in WebContext::Statistics - is assigned to wkFrameCount in WKContextStatistics. - wkFrameCount in WebContext:Statistics should be assigned to wkFrameCount in WKContextStatistics. + Reviewed by Laszlo Gombos. - * UIProcess/API/C/WKContext.cpp: - (WKContextGetGlobalStatistics): + Add Ewk setting to set / query permission to access + files from file:// URLs. -2012-07-24 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com> + * UIProcess/API/efl/ewk_settings.cpp: + (ewk_settings_file_access_from_file_urls_allowed_set): + (ewk_settings_file_access_from_file_urls_allowed_get): + * UIProcess/API/efl/ewk_settings.h: + * UIProcess/API/efl/tests/resources/local_file_access.html: Added. + * UIProcess/API/efl/tests/test_ewk2_settings.cpp: + (TEST_F): Add unit tests for new ewk setting. - [EFL][WK2] Add unit tests for custom text encoding setting - https://bugs.webkit.org/show_bug.cgi?id=91983 +2012-10-04 Christophe Dumez <christophe.dumez@intel.com> - Reviewed by Dirk Pranke. + [EFL] Run unit tests with Xvfb + https://bugs.webkit.org/show_bug.cgi?id=98389 - Add unit tests for get and set custom text encoding methods. Also, fix - a style nit for r123177. + Reviewed by Laszlo Gombos. - * UIProcess/API/efl/ewk_view.cpp: - (ewk_view_setting_encoding_custom_set): Fix a style nit - add newline - before return. + * UIProcess/API/efl/ewk_main.cpp: + (ewk_init): Call ecore_evas_shutdown() instead of + edje_shutdown() when ecore_x_init() fails. + (ewk_shutdown): Remove extra call to edje_shutdown(). * UIProcess/API/efl/tests/test_ewk2_view.cpp: - (TEST_F): - -2012-07-24 Ryosuke Niwa <rniwa@webkit.org> - - WinCairo build fix attempt. - - * win/WebKit2CFLite.def: - -2012-07-24 Ryosuke Niwa <rniwa@webkit.org> - - Windows build fix attempt. - - * win/WebKit2.def: - -2012-07-24 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> - - [Qt] Make sure that an AC sync is triggered when the canvas contents is updated. - https://bugs.webkit.org/show_bug.cgi?id=92128 - - Reviewed by Kenneth Rohde Christiansen. - - This would cause missed frames when animating an accelerated 2D canvas without - touching the document. - - * WebProcess/WebPage/LayerTreeCoordinator/WebGraphicsLayer.cpp: - (WebCore::WebGraphicsLayer::setContentsNeedsDisplay): - -2012-07-24 Alexey Proskuryakov <ap@apple.com> - - [Mac WK2] Improve text input logging - https://bugs.webkit.org/show_bug.cgi?id=92147 - - Reviewed by Andreas Kling. - - * UIProcess/API/mac/WKView.mm: - (-[WKView insertText:replacementRange:]): - (-[WKView keyUp:]): - (-[WKView keyDown:]): - (-[WKView flagsChanged:]): - (-[WKView _executeSavedKeypressCommands]): - (-[WKView _notifyInputContextAboutDiscardedComposition]): - (-[WKView _interpretKeyEvent:savingCommandsTo:WebCore::]): - (-[WKView _updateSecureInputState]): - -2012-07-24 Christophe Dumez <christophe.dumez@intel.com> - - [EFL][WK2] Provide more useful output when an injected bundle cannot be loaded - https://bugs.webkit.org/show_bug.cgi?id=92136 - - Reviewed by Kenneth Rohde Christiansen. - - Call eina_error_get() in case an injected bundle cannot be - loaded in order to print more information about the error. - - * WebProcess/InjectedBundle/efl/InjectedBundleEfl.cpp: - (WebKit::InjectedBundle::load): + (TEST_F): Temporarily disable fullscreen unit tests + until we get them working with Xvfb. -2012-07-24 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com> - - [EFL][WK2] Add vibration client - https://bugs.webkit.org/show_bug.cgi?id=91371 - - Reviewed by Antonio Gomes. - - Implement Vibration provider for WebKit2 EFL and add an API to set - vibration client callbacks by application to handle the tactile - feedback in the application when the page content ask for vibration. - - * CMakeLists.txt: Add WebCore/Modules/vibration to include path. - * PlatformEfl.cmake: Add VibrationProvider.cpp file to the build - system. - * UIProcess/API/efl/VibrationProvider.cpp: Added. - (_Ewk_Vibration_Client): Structure contains the vibration client - callbacks. - (_Ewk_Vibration_Client::_Ewk_Vibration_Client): - (toVibrationProvider): Helper function to cast the clientinfo to - VibrationProvider. - (vibrateCallback): - (cancelVibrationCallback): - (VibrationProvider::create): - (VibrationProvider::VibrationProvider): - (VibrationProvider::~VibrationProvider): - (VibrationProvider::vibrate): - (VibrationProvider::cancelVibration): - (VibrationProvider::setVibrationClientCallbacks): - * UIProcess/API/efl/VibrationProvider.h: Added. - (VibrationProvider): - * UIProcess/API/efl/ewk_context.cpp: - (_Ewk_Context): - (createDefaultEwkContext): - (ewk_context_vibration_client_callbacks_set): API to set vibration - client callbacks. - * UIProcess/API/efl/ewk_context.h: - -2012-07-24 Simon Hausmann <simon.hausmann@nokia.com> +2012-10-04 Balazs Kelemen <kbalazs@webkit.org> - [Qt] Fix compilation after QtQuick API changes - https://bugs.webkit.org/show_bug.cgi?id=91822 - - Reviewed by Kenneth Rohde Christiansen. - - QQuickCanvas is now QQuickWindow, QQuickItem::canvas() is window() and rootItem() - is contentItem(). Also QQuickWindow::grabFrameBuffer() is now grabWindow(). - - * UIProcess/API/qt/qquickwebpage.cpp: - * UIProcess/API/qt/qquickwebview.cpp: - (QQuickWebViewPrivate::updateIcon): - * UIProcess/API/qt/tests/qquickwebview/tst_qquickwebview.cpp: - (tst_QQuickWebView::multipleWebViews): - (tst_QQuickWebView::basicRenderingSanity): - (tst_QQuickWebView::transparentWebViews): - * UIProcess/API/qt/tests/testwindow.h: - (TestWindow::TestWindow): - * UIProcess/qt/QtPageClient.cpp: - (WebKit::QtPageClient::isViewVisible): - * UIProcess/qt/QtWebPageEventHandler.cpp: - (WebKit::QtWebPageEventHandler::startDrag): - -2012-07-24 Balazs Kelemen <kbalazs@webkit.org> - - [Qt] Add quirks for running the web process in a profiler shell, like valgrind - https://bugs.webkit.org/show_bug.cgi?id=87672 + Don't allow compositing to be disabled in forced compositing mode + https://bugs.webkit.org/show_bug.cgi?id=98048 Reviewed by Jocelyn Turcotte. - If environment variables QT_WEBKIT_WEB_PROCESS_COMMAND_PREFIX - and/or QT_WEBKIT_PLUGIN_PROCESS_COMMAND_PREFIX are set, use their - values as the prefix of the command when launching the child process. - Example usage: - export QT_WEB_PROCESS_COMMAND_PREFIX="valgrind --smc-check=all" - ./MiniBrowser http://somepage.html - ./WebKitTestRunner --no-timeout-at-all some_layouttest.html - - * UIProcess/Launcher/qt/ProcessLauncherQt.cpp: - (WebKit::ProcessLauncher::launchProcess): - -2012-07-23 Oswald Buddenhagen <oswald.buddenhagen@nokia.com> - - [Qt] Fix compilation against namespaced Qt - - Reviewed by Simon Hausmann. - - * Platform/CoreIPC/Connection.h: - * Platform/PlatformProcessIdentifier.h: - * Platform/WorkQueue.h: - * Shared/qt/QtNetworkRequestData.h: - * Shared/qt/WebEventFactoryQt.h: - * UIProcess/API/C/qt/WKNativeEvent.h: - * UIProcess/API/qt/qquickwebview_p.h: - * UIProcess/API/qt/qwebnavigationhistory_p.h: - * UIProcess/API/qt/raw/qrawwebview_p.h: - * UIProcess/DrawingAreaProxy.h: - * UIProcess/Launcher/ThreadLauncher.h: - * UIProcess/LayerTreeCoordinatorProxy.h: - * UIProcess/qt/QtViewportHandler.h: - * UIProcess/qt/QtWebPageSGNode.h: - * UIProcess/qt/WebColorChooserProxyQt.h: - * UIProcess/qt/WebGeolocationProviderQt.h: - * UIProcess/qt/WebPopupMenuProxyQt.h: - * WebProcess/WebProcess.h: - -2012-07-24 Christophe Dumez <christophe.dumez@intel.com> - - [EFL][WK2] Remove unneeded WebURLRequestEfl and WebURLResponseEfl - https://bugs.webkit.org/show_bug.cgi?id=92087 - - Reviewed by Kenneth Rohde Christiansen. - - Remove WebURLRequestEfl and WebURLResponseEfl classes - and their corresponding C APIs since we don't need / use - them. - - * Shared/API/c/efl/WKURLRequestEfl.cpp: Removed. - * Shared/API/c/efl/WKURLRequestEfl.h: Removed. - * Shared/API/c/efl/WKURLResponseEfl.cpp: Removed. - * Shared/API/c/efl/WKURLResponseEfl.h: Removed. - * Shared/efl/WebURLRequestEfl.cpp: Removed. - * Shared/efl/WebURLRequestEfl.h: Removed. - * Shared/efl/WebURLResponseEfl.cpp: Removed. - * Shared/efl/WebURLResponseEfl.h: Removed. - * UIProcess/API/efl/ewk_url_request.cpp: - -2012-07-24 Pierre Rossi <pierre.rossi@gmail.com> - - [Qt] Enable touch slider when touch events are enabled - https://bugs.webkit.org/show_bug.cgi?id=91013 - - Reviewed by Kenneth Rohde Christiansen. - - TOUCH_SLIDER guards are used in WebCore, so we should really - be setting the corresponding ENABLE define in features.prf. - - * Target.pri: - -2012-07-24 Christophe Dumez <christophe.dumez@intel.com> - - [EFL][WK2] Fix possible crash in didSendRequestForResource - https://bugs.webkit.org/show_bug.cgi?id=92077 - - Reviewed by Kenneth Rohde Christiansen. - - Add NULL check for wkRedirectResponse in - didSendRequestForResource() before using it. The - argument may be NULL if there was no redirection. - - * UIProcess/API/efl/ewk_view.h: - * UIProcess/API/efl/ewk_view_resource_load_client.cpp: - (didSendRequestForResource): - -2012-07-24 Christophe Dumez <christophe.dumez@intel.com> - - [WK2][EFL][GTK] Share WebCoreArgumentCoders for soup-related types - https://bugs.webkit.org/show_bug.cgi?id=92073 - - Reviewed by Kenneth Rohde Christiansen. - - Move WebCoreArgumentCoders for soup-related types such as - ResourceRequest, ResourceResponse and ResourceError from - port specific file to Shared/soup/WebCoreArgumentCodersSoup.cpp. - This way, the different ports using libsoup can share - code and avoid duplication. - - * GNUmakefile.list.am: - * PlatformEfl.cmake: - * Shared/efl/WebCoreArgumentCodersEfl.cpp: Removed. - * Shared/soup/WebCoreArgumentCodersSoup.cpp: Renamed from Source/WebKit2/Shared/gtk/WebCoreArgumentCodersGtk.cpp. - (CoreIPC): - (CoreIPC::::encode): - (CoreIPC::::decode): - -2012-07-23 Sheriff Bot <webkit.review.bot@gmail.com> - - Unreviewed, rolling out r123184, r123195, and r123197. - http://trac.webkit.org/changeset/123184 - http://trac.webkit.org/changeset/123195 - http://trac.webkit.org/changeset/123197 - https://bugs.webkit.org/show_bug.cgi?id=92049 - - pagecycler regression (Requested by morrita on #webkit). + Export Settings::setAcceleratedCompositingEnabled because it has been deinlined. * win/WebKit2.def: * win/WebKit2CFLite.def: -2012-07-23 Simon Fraser <simon.fraser@apple.com> - - Part 2 of: Implement sticky positioning - https://bugs.webkit.org/show_bug.cgi?id=90046 - - Reviewed by Ojan Vafai. - - Turn on ENABLE_CSS_STICKY_POSITION. - - * Configurations/FeatureDefines.xcconfig: - -2012-07-23 Christophe Dumez <christophe.dumez@intel.com> - - [WK2] WebKitTestRunner needs to print information about Web intents - https://bugs.webkit.org/show_bug.cgi?id=90873 - - Reviewed by Anders Carlsson. - - Add Bundle API for Web Intents. This is needed by the WebKitTestRunner - to print information about the new intent requests and the intent - service registrations. - - * CMakeLists.txt: Move WebIntentData and WebIntentServiceInfo from - UIProcess/ to Shared/. - * GNUmakefile.list.am: Move WebIntentData and WebIntentServiceInfo from - UIProcess/ to Shared/. - * Shared/APIClientTraits.h: - * Shared/WebIntentData.cpp: Renamed from Source/WebKit2/UIProcess/WebIntentData.cpp. - (WebKit): - (WebKit::WebIntentData::WebIntentData): - (WebKit::WebIntentData::data): - (WebKit::WebIntentData::suggestions): - (WebKit::WebIntentData::extra): - (WebKit::WebIntentData::extras): - * Shared/WebIntentData.h: Renamed from Source/WebKit2/UIProcess/WebIntentData.h. - (WebKit): - (WebIntentData): - (WebKit::WebIntentData::create): - (WebKit::WebIntentData::~WebIntentData): - (WebKit::WebIntentData::action): - (WebKit::WebIntentData::payloadType): - (WebKit::WebIntentData::service): - (WebKit::WebIntentData::store): - (WebKit::WebIntentData::type): - * Shared/WebIntentServiceInfo.cpp: Renamed from Source/WebKit2/UIProcess/WebIntentServiceInfo.cpp. - (WebKit): - (WebKit::WebIntentServiceInfo::WebIntentServiceInfo): - * Shared/WebIntentServiceInfo.h: Renamed from Source/WebKit2/UIProcess/WebIntentServiceInfo.h. - (WebKit): - (WebIntentServiceInfo): - (WebKit::WebIntentServiceInfo::create): - (WebKit::WebIntentServiceInfo::~WebIntentServiceInfo): - (WebKit::WebIntentServiceInfo::action): - (WebKit::WebIntentServiceInfo::payloadType): - (WebKit::WebIntentServiceInfo::href): - (WebKit::WebIntentServiceInfo::title): - (WebKit::WebIntentServiceInfo::disposition): - (WebKit::WebIntentServiceInfo::type): - * Target.pri: Move WebIntentData and WebIntentServiceInfo from - UIProcess/ to Shared/. - * UIProcess/API/C/WKPage.h: - * UIProcess/API/efl/ewk_view_loader_client.cpp: - (didReceiveIntentForFrame): - (registerIntentServiceForFrame): - * UIProcess/WebLoaderClient.cpp: - (WebKit::WebLoaderClient::didReceiveIntentForFrame): - (WebKit::WebLoaderClient::registerIntentServiceForFrame): - * UIProcess/WebLoaderClient.h: - (WebLoaderClient): - * UIProcess/WebPageProxy.cpp: - (WebKit::WebPageProxy::registerIntentServiceForFrame): - (WebKit::WebPageProxy::didReceiveIntentForFrame): - * UIProcess/WebPageProxy.h: - (WebPageProxy): - * UIProcess/WebPageProxy.messages.in: - * WebProcess/InjectedBundle/API/c/WKBundlePage.h: - * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp: - (WebKit): - (WebKit::InjectedBundlePageLoaderClient::didReceiveIntentForFrame): - (WebKit::InjectedBundlePageLoaderClient::registerIntentServiceForFrame): - * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h: - (WebKit): - (InjectedBundlePageLoaderClient): - * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: - (WebKit::WebFrameLoaderClient::dispatchIntent): - (WebKit::WebFrameLoaderClient::registerIntentService): - * WebProcess/qt/QtBuiltinBundlePage.cpp: - (WebKit::QtBuiltinBundlePage::QtBuiltinBundlePage): - -2012-07-23 Christophe Dumez <christophe.dumez@intel.com> - - [EFL][WK2] Add unit tests for Ewk_Cookie_Manager - https://bugs.webkit.org/show_bug.cgi?id=91639 - - Reviewed by Antonio Gomes. - - Add unit tests for Ewk_Cookie_Manager. - - * PlatformEfl.cmake: - * UIProcess/API/efl/ewk_cookie_manager.h: Fix "accept policy" documentation - to indicate that only cookies set by the main document are accepted by default. - * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestServer.cpp: Added. - (EWK2UnitTestServer::EWK2UnitTestServer): Add HTTP server similar to the one - used by GTK port unit tests. - (EWK2UnitTestServer::~EWK2UnitTestServer): - (EWK2UnitTestServer::run): - (EWK2UnitTestServer::getURIForPath): - * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestServer.h: Added. - (EWK2UnitTestServer): - (EWK2UnitTestServer::baseURI): - * UIProcess/API/efl/tests/test_ewk2_cookie_manager.cpp: Added. - (serverCallback): - (getAcceptPolicyCallback): - (getAcceptPolicy): - (getHostnamesWithCookiesCallback): - (getHostnamesWithCookies): - (freeHostNames): - (countHostnamesWithCookies): - (TEST_F): - (cleanUpCookieFiles): - -2012-07-23 Pierre Rossi <pierre.rossi@gmail.com> - - [Qt] Enable touch slider when touch events are enabled - https://bugs.webkit.org/show_bug.cgi?id=91013 - - Reviewed by Antonio Gomes. - - Take advantage of the logic introduced in r122286. - - * Target.pri: - -2012-07-23 Pierre Rossi <pierre.rossi@gmail.com> - - Unify numTouchEventHandlersChanged and needTouchEvents in the chrome client - https://bugs.webkit.org/show_bug.cgi?id=91006 - - Reviewed by Ryosuke Niwa. - - Remove numTouchEventHandlersChanged stub. - - * WebProcess/WebCoreSupport/WebChromeClient.h: - (WebChromeClient): - -2012-07-23 Simon Fraser <simon.fraser@apple.com> - - Part 1 of: Implement sticky positioning - https://bugs.webkit.org/show_bug.cgi?id=90046 - - Reviewed by Ojan Vafai. - - Add ENABLE_CSS_STICKY_POSITION, defaulting to off initially. - - Sort the ENABLE_CSS lines in the file. Make sure all the flags - are in FEATURE_DEFINES. - - * Configurations/FeatureDefines.xcconfig: - -2012-07-23 Christophe Dumez <christophe.dumez@intel.com> - - [EFL][WK2] Add request manager client - https://bugs.webkit.org/show_bug.cgi?id=91193 - - Reviewed by Kenneth Rohde Christiansen. - - Add a URL request manager client and attach it - to the Ewk_Context. - - The client application can now register a URL scheme - via the Ewk_Context API and provide a callback handler - that will get called whenever a URL request with this - scheme is made. - - A new Ewk_Url_Scheme_Request type is introduced to - provide information about the request to the client - and to allow the client to finish it by setting its - contents. - - * PlatformEfl.cmake: - * UIProcess/API/efl/EWebKit2.h: - * UIProcess/API/efl/ewk_context.cpp: - (_Ewk_Url_Scheme_Handler): - (_Ewk_Url_Scheme_Handler::_Ewk_Url_Scheme_Handler): - (_Ewk_Context): - (_Ewk_Context::_Ewk_Context): - (ewk_context_request_manager_get): - (ewk_context_url_scheme_request_received): - (createDefaultEwkContext): - (ewk_context_uri_scheme_register): - * UIProcess/API/efl/ewk_context.h: - * UIProcess/API/efl/ewk_context_private.h: - * UIProcess/API/efl/ewk_context_request_manager_client.cpp: Added. - (toEwkContext): - (didReceiveURIRequest): - (ewk_context_request_manager_client_attach): - * UIProcess/API/efl/ewk_context_request_manager_client_private.h: Added. - * UIProcess/API/efl/ewk_url_scheme_request.cpp: Added. - (_Ewk_Url_Scheme_Request): - (_Ewk_Url_Scheme_Request::_Ewk_Url_Scheme_Request): - (_Ewk_Url_Scheme_Request::~_Ewk_Url_Scheme_Request): - (ewk_url_scheme_request_ref): - (ewk_url_scheme_request_unref): - (ewk_url_scheme_request_scheme_get): - (ewk_url_scheme_request_url_get): - (ewk_url_scheme_request_path_get): - (ewk_url_scheme_request_id_get): - (ewk_url_scheme_request_finish): - (ewk_url_scheme_request_new): - * UIProcess/API/efl/ewk_url_scheme_request.h: Added. - * UIProcess/API/efl/ewk_url_scheme_request_private.h: Added. - -2012-07-23 KwangYong Choi <ky0.choi@samsung.com> - - [EFL][WK2] ProcessExecutablePath is required - https://bugs.webkit.org/show_bug.cgi?id=89719 - - Reviewed by Kenneth Rohde Christiansen. - - Added executablePathOfWebProcess and executablePathOfPluginProcess. - It's used for getting the location of WebProcess and PluginProcess. - - * PlatformEfl.cmake: Added LIBEXECDIR definition - * Shared/efl/ProcessExecutablePathEfl.cpp: Added. - (WebKit): - (WebKit::findWebKitProcess): - (WebKit::executablePathOfWebProcess): Get the absolute path of WebProcess - (WebKit::executablePathOfPluginProcess): Get the absolute path of PluginProcess - * UIProcess/Launcher/efl/ProcessLauncherEfl.cpp: - (WebKit::ProcessLauncher::launchProcess): Modified to use above routines - -2012-07-23 Christophe Dumez <christophe.dumez@intel.com> - - WebKit2 needs layoutTestController.setAlwaysAcceptCookies - https://bugs.webkit.org/show_bug.cgi?id=42778 - - Reviewed by Kenneth Rohde Christiansen. - - Add setAlwaysAcceptCookies() method to InjectedBundle - so that we can use it in LayoutTestController. - The method uses WebCookieManager::setHTTPCookieAcceptPolicy() - internally. - - * WebProcess/InjectedBundle/API/c/WKBundle.cpp: - (WKBundleSetAlwaysAcceptCookies): - * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h: - * WebProcess/InjectedBundle/InjectedBundle.cpp: - (WebKit::InjectedBundle::setAlwaysAcceptCookies): - (WebKit): - * WebProcess/InjectedBundle/InjectedBundle.h: - (InjectedBundle): - -2012-07-23 Thiago Marcos P. Santos <thiago.santos@intel.com> - - [WK2] SQL Database cannot be disabled at build time - https://bugs.webkit.org/show_bug.cgi?id=91837 - - Reviewed by Kenneth Rohde Christiansen. - - WebKit2 had no #ifdefs for SQL Database. This patch adds these - statments and it can now be disabled at build time. - - * Shared/OriginAndDatabases.cpp: - * Shared/OriginAndDatabases.h: - * Shared/WebCoreArgumentCoders.cpp: - (CoreIPC): - * UIProcess/API/C/WKContext.cpp: - (WKContextGetDatabaseManager): - * UIProcess/API/C/WKDatabaseManager.cpp: - (WKDatabaseManagerGetTypeID): - (WKDatabaseManagerGetOriginKey): - (WKDatabaseManagerGetOriginQuotaKey): - (WKDatabaseManagerGetOriginUsageKey): - (WKDatabaseManagerGetDatabaseDetailsKey): - (WKDatabaseManagerGetDatabaseDetailsNameKey): - (WKDatabaseManagerGetDatabaseDetailsDisplayNameKey): - (WKDatabaseManagerGetDatabaseDetailsExpectedUsageKey): - (WKDatabaseManagerGetDatabaseDetailsCurrentUsageKey): - (WKDatabaseManagerSetClient): - (WKDatabaseManagerGetDatabasesByOrigin): - (callGetDatabasesByOriginBlockAndDispose): - (WKDatabaseManagerGetDatabasesByOrigin_b): - (WKDatabaseManagerGetDatabaseOrigins): - (callGetDatabaseOriginsBlockBlockAndDispose): - (WKDatabaseManagerGetDatabaseOrigins_b): - (WKDatabaseManagerDeleteDatabasesWithNameForOrigin): - (WKDatabaseManagerDeleteDatabasesForOrigin): - (WKDatabaseManagerDeleteAllDatabases): - (WKDatabaseManagerSetQuotaForOrigin): - * UIProcess/WebContext.cpp: - (WebKit::WebContext::WebContext): - (WebKit::WebContext::~WebContext): - (WebKit::WebContext::shouldTerminate): - (WebKit::WebContext::disconnectProcess): - (WebKit::WebContext::didReceiveMessage): - * UIProcess/WebContext.h: - (WebContext): - * UIProcess/WebDatabaseManagerProxy.cpp: - * UIProcess/WebDatabaseManagerProxy.h: - * UIProcess/WebDatabaseManagerProxy.messages.in: - * WebProcess/InjectedBundle/InjectedBundle.cpp: - (WebKit::InjectedBundle::clearAllDatabases): - (WebKit::InjectedBundle::setDatabaseQuota): - * WebProcess/WebCoreSupport/WebDatabaseManager.cpp: - * WebProcess/WebCoreSupport/WebDatabaseManager.h: - * WebProcess/WebCoreSupport/WebDatabaseManager.messages.in: - * WebProcess/WebProcess.cpp: - (WebKit::WebProcess::didReceiveMessage): - -2012-07-23 Kent Tamura <tkent@chromium.org> - - Rename ENABLE_METER_TAG and ENABLE_PROGRESS_TAG to ENABLE_METER_ELEMENT and ENABLE_PROGRESS_ELEMENT respectively - https://bugs.webkit.org/show_bug.cgi?id=91941 - - Reviewed by Kentaro Hara. - - A flag name for an elmement should be ENABLE_*_ELEMENT. - - * Configurations/FeatureDefines.xcconfig: - -2012-07-22 Kent Tamura <tkent@chromium.org> - - Rename ENABLE_DETAILS to ENABLE_DETAILS_ELEMENT - https://bugs.webkit.org/show_bug.cgi?id=91928 - - Reviewed by Kentaro Hara. - - A flag name for an elmement should be ENABLE_*_ELEMENT. - - * Configurations/FeatureDefines.xcconfig: - -2012-07-20 Kent Tamura <tkent@chromium.org> - - Rename ENABLE_DATALIST to ENABLE_DATALIST_ELEMENT - https://bugs.webkit.org/show_bug.cgi?id=91846 - - Reviewed by Kentaro Hara. - - A flag name for an elmement should be ENABLE_*_ELEMENT. - - * Configurations/FeatureDefines.xcconfig: - -2012-07-20 Rafael Brandao <rafael.lobo@openbossa.org> - - QtNetworkAccessManager should not rely on signal sslErrors when QT_NO_SSL is defined - https://bugs.webkit.org/show_bug.cgi?id=91866 - - Reviewed by Noam Rosenthal. - - * WebProcess/qt/QtNetworkAccessManager.cpp: - (WebKit::QtNetworkAccessManager::QtNetworkAccessManager): QNAM's signal is only defined when - that flag is undefined. Removed the connection when we have the flag set. - (WebKit::QtNetworkAccessManager::onSslErrors): When the flag is set, this slot becomes unused. - -2012-07-20 Christophe Dumez <christophe.dumez@intel.com> - - [EFL] Proxy configuration should honor the no_proxy environment variable - https://bugs.webkit.org/show_bug.cgi?id=91747 - - Reviewed by Kenneth Rohde Christiansen. - - Use the new custom proxy resolver from WebCore in - WebKit2-EFL so that it is possible for the client - to set proxy exceptions via the "no_proxy" - environment variable. - - By default, the proxy set in the "http_proxy" - environment variable will not be used for requests - to localhost or 127.0.0.1. - - * WebProcess/efl/WebProcessMainEfl.cpp: - (WebKit::WebProcessMainEfl): - -2012-06-01 Dinu Jacob <dinu.jacob@nokia.com> - - [Qt][WK2] Add support for multi-select list - https://bugs.webkit.org/show_bug.cgi?id=85527 - - Reviewed by Kenneth Rohde Christiansen. - - Added support for multi-select list: - - Added multi-selection flag to PlatformPopupMenuData to indicate whether to accept multiple selections or not. - - Added selected state to WebPopupItem. - - Modified WebPopupMenuQt to support multiple selections. - - * Shared/PlatformPopupMenuData.cpp: - (WebKit::PlatformPopupMenuData::PlatformPopupMenuData): - (WebKit::PlatformPopupMenuData::encode): - (WebKit::PlatformPopupMenuData::decode): - * Shared/PlatformPopupMenuData.h: - (PlatformPopupMenuData): - * Shared/WebPopupItem.cpp: - (WebKit::WebPopupItem::WebPopupItem): - (WebKit::WebPopupItem::encode): - (WebKit::WebPopupItem::decode): - * Shared/WebPopupItem.h: - * UIProcess/API/qt/tests/qmltests/WebView/tst_multiSelect.qml: Added. - * UIProcess/API/qt/tests/qmltests/common/multiselect.html: Added. - * UIProcess/WebPageProxy.h: - (WebPageProxy): - * UIProcess/WebPopupMenuProxy.h: - (Client): - * UIProcess/qt/WebPageProxyQt.cpp: - (WebKit::WebPageProxy::changeSelectedIndex): - (WebKit): - (WebKit::WebPageProxy::closePopupMenu): - * UIProcess/qt/WebPopupMenuProxyQt.cpp: - (WebKit::PopupMenuItemModel::multiple): - (PopupMenuItemModel): - (WebKit::PopupMenuItemModel::Item::Item): - (ItemSelectorContextObject): - (WebKit::ItemSelectorContextObject::allowMultiSelect): - (WebKit::ItemSelectorContextObject::reject): - (WebKit::ItemSelectorContextObject::dismiss): - (WebKit::ItemSelectorContextObject::ItemSelectorContextObject): - (WebKit): - (WebKit::ItemSelectorContextObject::onIndexUpdate): - (WebKit::ItemSelectorContextObject::accept): - (WebKit::PopupMenuItemModel::PopupMenuItemModel): - (WebKit::PopupMenuItemModel::select): - (WebKit::PopupMenuItemModel::toggleItem): - (WebKit::PopupMenuItemModel::buildItems): - (WebKit::WebPopupMenuProxyQt::showPopupMenu): - (WebKit::WebPopupMenuProxyQt::hidePopupMenu): - (WebKit::WebPopupMenuProxyQt::selectIndex): - (WebKit::WebPopupMenuProxyQt::createItem): - * UIProcess/qt/WebPopupMenuProxyQt.h: - (WebPopupMenuProxyQt): - * WebProcess/WebCoreSupport/WebPopupMenu.cpp: - (WebKit::WebPopupMenu::didChangeSelectedIndex): - (WebKit::WebPopupMenu::populateItems): - * WebProcess/WebCoreSupport/WebPopupMenu.h: - (WebPopupMenu): - * WebProcess/WebCoreSupport/qt/WebPopupMenuQt.cpp: - (WebKit::WebPopupMenu::setUpPlatformData): - * WebProcess/WebPage/WebPage.cpp: - (WebKit::WebPage::didChangeSelectedIndexForActivePopupMenu): - (WebKit): - (WebKit::WebPage::changeSelectedIndex): - * WebProcess/WebPage/WebPage.h: - (WebPage): - * WebProcess/WebPage/WebPage.messages.in: - * WebProcess/WebPage/qt/WebPageQt.cpp: - (WebKit::WebPage::selectedIndex): - (WebKit): - (WebKit::WebPage::hidePopupMenu): - -2012-07-20 Gyuyoung Kim <gyuyoung.kim@samsung.com> - - Unreviewed, rolling out r123085. - http://trac.webkit.org/changeset/123085 - https://bugs.webkit.org/show_bug.cgi?id=91719 - - r123085 causes crashes on EFL layout test bot. - - * UIProcess/efl/WebContextEfl.cpp: - (WebKit::WebContext::applicationCacheDirectory): - -2012-07-20 Christophe Dumez <christophe.dumez@intel.com> - - [EFL][WK2] Use "load,finished" signal in EWK2UnitTestBase::loadUrlSync() instead of "load,progress" - https://bugs.webkit.org/show_bug.cgi?id=91721 - - Reviewed by Kenneth Rohde Christiansen. - - The purpose of EWK2UnitTestBase::loadUrlSync() is to load - a URL in the view and wait synchronously for the load to finish. - The current implementation uses the "load,progress" signal to - detect when the load is finished, which is inefficient because - it gets emitted several times. - - It is better to wait for the "load,finished" signal which gets - emitted only once when the load is complete. - - * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp: - (EWK2UnitTest::onLoadFinished): - (EWK2UnitTest::EWK2UnitTestBase::EWK2UnitTestBase): - (EWK2UnitTest::EWK2UnitTestBase::loadUrlSync): - * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h: - (EWK2UnitTestBase): - -2012-07-19 MORITA Hajime <morrita@google.com> - - [Refactoring] Replace Node's Document pointer with a TreeScope pointer - https://bugs.webkit.org/show_bug.cgi?id=59816 - - Reviewed by Ryosuke Niwa. - - * win/WebKit2.def: Added newly exported symbols. - * win/WebKit2CFLite.def: Ditto. - -2012-07-19 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com> - - [EFL] [WK2] Add methods to get/set a custom text encoding - https://bugs.webkit.org/show_bug.cgi?id=90604 - - Reviewed by Kenneth Rohde Christiansen. - - Add methods to get/set custom character encoding. - - * UIProcess/API/efl/ewk_view.cpp: - (_Ewk_View_Private_Data): - (_ewk_view_priv_del): - (ewk_view_setting_encoding_custom_get): - (ewk_view_setting_encoding_custom_set): - * UIProcess/API/efl/ewk_view.h: - -2012-07-19 Gyuyoung Kim <gyuyoung.kim@samsung.com> - - Unreviewed. Fix build break because of changing parameter type of - vibration virtual function on EFL port. - - * WebProcess/WebCoreSupport/WebVibrationClient.cpp: - (WebKit::WebVibrationClient::vibrate): - * WebProcess/WebCoreSupport/WebVibrationClient.h: - (WebVibrationClient): - -2012-07-19 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com> - - [WK2] Add Vibration API integration to WebContext and WebPage - https://bugs.webkit.org/show_bug.cgi?id=91081 - - Reviewed by Anders Carlsson. - - Integrate Vibration API to WebPage, WebContext and properly route - messages to the WebVibrationProxy. - - * UIProcess/API/C/WKContext.cpp: - (WKContextGetVibration): - * UIProcess/API/C/WKContext.h: - * UIProcess/WebContext.cpp: - (WebKit::WebContext::WebContext): - (WebKit::WebContext::~WebContext): - (WebKit::WebContext::disconnectProcess): - (WebKit::WebContext::didReceiveMessage): - * UIProcess/WebContext.h: - (WebKit): - (WebContext): - (WebKit::WebContext::vibrationProxy): - * UIProcess/WebProcessProxy.cpp: - (WebKit::WebProcessProxy::didReceiveMessage): - * WebProcess/WebPage/WebPage.cpp: - (WebKit::WebPage::WebPage): - -2012-07-19 No'am Rosenthal <noam.rosenthal@nokia.com> - - [Qt] Enable CSS shaders in Qt (software mode) - https://bugs.webkit.org/show_bug.cgi?id=85140 - - Reviewed by Simon Hausmann. +2012-10-04 Jocelyn Turcotte <jocelyn.turcotte@digia.com> - Add CSSCustomFilterEnabled to QWebPreferences. It's disabled by default. - - * UIProcess/API/qt/qwebpreferences.cpp: - (QWebPreferencesPrivate::testAttribute): - (QWebPreferencesPrivate::setAttribute): - * UIProcess/API/qt/qwebpreferences_p_p.h: - -2012-07-19 No'am Rosenthal <noam.rosenthal@nokia.com> - - [Qt] Enable CSS shaders in Qt (software mode) - https://bugs.webkit.org/show_bug.cgi?id=85140 - - Reviewed by Simon Hausmann. - - Add CSSCustomFilterEnabled to QWebPreferences. It's disabled by default. - - * UIProcess/API/qt/qwebpreferences.cpp: - (QWebPreferencesPrivate::testAttribute): - (QWebPreferencesPrivate::setAttribute): - * UIProcess/API/qt/qwebpreferences_p_p.h: - -2012-07-19 Pierre Rossi <pierre.rossi@gmail.com> - - [Qt][WK2] Map the elementRect exposed in QML to the view for popup menu - https://bugs.webkit.org/show_bug.cgi?id=91645 + [Qt] Fix the tst_QQuickWebView::scrollRequest auto test + https://bugs.webkit.org/show_bug.cgi?id=98045 Reviewed by Simon Hausmann. - This way the geometry of the QML item is still sensible even if we panned - and zoomed. - - * UIProcess/qt/WebPopupMenuProxyQt.cpp: - (ItemSelectorContextObject): - (WebKit::ItemSelectorContextObject::elementRect): - (WebKit::ItemSelectorContextObject::ItemSelectorContextObject): - (WebKit::WebPopupMenuProxyQt::showPopupMenu): - -2012-07-19 Zoltan Nyul <zoltan.nyul@intel.com> - - [EFL][WK2] Using different cache directory for each WTR process - https://bugs.webkit.org/show_bug.cgi?id=91719 - - Reviewed by Kenneth Rohde Christiansen. - - Make sure we return a valid application cache directory in - WebContextEfl. - - * UIProcess/efl/WebContextEfl.cpp: - (WebKit::WebContext::applicationCacheDirectory): - -2012-07-18 Christophe Dumez <christophe.dumez@intel.com> - - [EFL][WK2] EFL should use DownloadSoup instead of defining DownloadEfl - https://bugs.webkit.org/show_bug.cgi?id=91602 - - Reviewed by Kenneth Rohde Christiansen. - - Reuse WebProcess/Downloads/soup/DownloadSoup.cpp in EFL port - instead of redefining our own DownloadEfl.cpp. The EFL port - is also using libsoup so it is best to avoid code duplication. - - * GNUmakefile.am: - * GNUmakefile.list.am: - * PlatformEfl.cmake: - * WebProcess/Downloads/Download.h: - (WebKit): - (Download): - * WebProcess/Downloads/efl/DownloadEfl.cpp: Removed. - * WebProcess/Downloads/efl/DownloadSoupErrorsEfl.cpp: Added. - (WebKit): - (WebKit::platformDownloadNetworkError): - (WebKit::platformDownloadDestinationError): - * WebProcess/Downloads/efl/FileDownloaderEfl.cpp: Removed. - * WebProcess/Downloads/efl/FileDownloaderEfl.h: Removed. - * WebProcess/Downloads/gtk/DownloadSoupErrorsGtk.cpp: Added. - (WebKit): - (WebKit::platformDownloadNetworkError): - (WebKit::platformDownloadDestinationError): - * WebProcess/Downloads/soup/DownloadSoup.cpp: Make the code - compile for other ports than GTK. - (WebKit::DownloadClient::didReceiveResponse): - (WebKit::DownloadClient::didReceiveData): - (WebKit::DownloadClient::didFail): - (WebKit::Download::continueWithoutCredential): - (WebKit): - (WebKit::Download::useCredential): - (WebKit::Download::cancelAuthenticationChallenge): - * WebProcess/Downloads/soup/DownloadSoupErrors.h: Added. - (WebKit): - -2012-07-18 Christophe Dumez <christophe.dumez@intel.com> - - [WK2] Add C API for Network Information API - https://bugs.webkit.org/show_bug.cgi?id=90762 + Relying on QQuickWebViewPrivate::setNeedsDisplay can cause a false positive + emission of the loadVisuallyCommitted signal since this method is also + called when a layer is deleted or when the root layer changes. - Reviewed by Kenneth Rohde Christiansen. - - Add C API for WKNetworkInfo and WKNetworkInfoManager - so that they can be used by the client. - - * CMakeLists.txt: - * GNUmakefile.list.am: - * Target.pri: - * UIProcess/API/C/WKContext.cpp: - (WKContextGetNetworkInfoManager): - * UIProcess/API/C/WKContext.h: - * UIProcess/API/C/WKNetworkInfo.cpp: Copied from Source/WebKit2/UIProcess/API/C/WKNetworkInfoManager.cpp. - (WKNetworkInfoGetTypeID): - (WKNetworkInfoCreate): - * UIProcess/API/C/WKNetworkInfo.h: Copied from Source/WebKit2/UIProcess/API/C/WKNetworkInfoManager.cpp. - * UIProcess/API/C/WKNetworkInfoManager.cpp: - (WKNetworkInfoManagerSetProvider): - (WKNetworkInfoManagerProviderDidChangeNetworkInformation): - * UIProcess/API/C/WKNetworkInfoManager.h: - -2012-07-18 Christophe Dumez <christophe.dumez@intel.com> - - [EFL][WK2] ewk_cookie_manager_persistent_storage_set is not exported - https://bugs.webkit.org/show_bug.cgi?id=91647 - - Reviewed by Gustavo Noronha Silva. - - Properly export ewk_cookie_manager_persistent_storage_set in - ewk_cookie_manager.h by using EAPI. - - * UIProcess/API/efl/ewk_cookie_manager.h: - -2012-07-18 Christophe Dumez <christophe.dumez@intel.com> - - [EFL] Add central error management to EFL port - https://bugs.webkit.org/show_bug.cgi?id=91598 - - Reviewed by Kenneth Rohde Christiansen. - - Make use of ErrorsEfl header from WebCore in - WebKit2, for Ewk_Web_Error and WebErrorsEfl. + Move the signal emission to QQuickWebViewPrivate::didRenderFrame which + is called only after a DidRenderFrame message has been received from the + web process. - * UIProcess/API/efl/ewk_web_error.cpp: - (ewk_web_error_type_get): - * UIProcess/API/efl/ewk_web_error.h: - * WebProcess/WebCoreSupport/efl/WebErrorsEfl.cpp: - (WebKit::cancelledError): - (WebKit::blockedError): - (WebKit::cannotShowURLError): - (WebKit::interruptedForPolicyChangeError): - (WebKit::cannotShowMIMETypeError): - (WebKit::fileDoesNotExistError): - (WebKit::pluginWillHandleLoadError): + * UIProcess/API/qt/qquickwebview.cpp: + (QQuickWebViewPrivate::setNeedsDisplay): + (QQuickWebViewPrivate::didRenderFrame): + * UIProcess/API/qt/qquickwebview_p_p.h: + (QQuickWebViewPrivate): + * UIProcess/qt/QtPageClient.cpp: + (WebKit::QtPageClient::didRenderFrame): -2012-07-18 Thiago Marcos P. Santos <thiago.santos@intel.com> +2012-10-04 Christophe Dumez <christophe.dumez@intel.com> - [EFL] Set a theme for EFL WebKit2 unit test fixture - https://bugs.webkit.org/show_bug.cgi?id=91618 + Regression(r130363): Broke unit tests + https://bugs.webkit.org/show_bug.cgi?id=98341 - Reviewed by Kenneth Rohde Christiansen. + Reviewed by Gyuyoung Kim. - The test fixture should load the theme generated by the build - instead of trying to load the system theme. + Fix WebKit2 EFL to use X11 as well. - * PlatformEfl.cmake: * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp: (EWK2UnitTest::EWK2UnitTestBase::SetUp): * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestEnvironment.cpp: - (EWK2UnitTest::EWK2UnitTestEnvironment::defaultTheme): - (EWK2UnitTest): - * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestEnvironment.h: - (EWK2UnitTestEnvironment): - -2012-07-18 Pierre Rossi <pierre.rossi@gmail.com> - - [Qt] QQuickWebView shouldn't recieve mouse events while dialogs are active - https://bugs.webkit.org/show_bug.cgi?id=91634 - - Reviewed by Alexis Menard. - - One side-effect of reimplementing childMouseEventFilter() in r122438 is that it can end up - bypassing the mouseArea mechanism used in QML dialogs and still forward some mouse events - over to the web process. We can rely on the same m_dialogActive mechanism already used for - touch events in there as well. - - * UIProcess/API/qt/qquickwebview.cpp: - (QQuickWebView::childMouseEventFilter): ignore events and return early if a dialog is active. - -2012-07-18 Pierre Rossi <pierre.rossi@gmail.com> - - [Qt] Build fix for ENABLE_TOUCH_EVENTS=0 - - Rubber-stamped by No'am Rosenthal. - - Add the appropriate ENABLE(TOUCH_EVENTS) where they're needed. - - * UIProcess/API/qt/raw/qrawwebview.cpp: - * UIProcess/API/qt/raw/qrawwebview_p.h: include Platform.h so we can use the ENABLE macro. - * UIProcess/InspectorServer/qt/WebInspectorServerQt.cpp: Also add the missing QFile include. - * UIProcess/qt/QtWebPageEventHandler.cpp: - (WebKit::QtWebPageEventHandler::deactivateTapHighlight): - -2012-07-18 Christophe Dumez <christophe.dumez@intel.com> - - [EFL][WK2] Add Ewk class for cookie manager - https://bugs.webkit.org/show_bug.cgi?id=91053 - - Reviewed by Gustavo Noronha Silva. - - Add new Ewk_Cookie_Manager class to allow the client - to set/get the cookie acceptance policy, support - persistent cookie storage and clear cookies. - - The Ewk_Cookie_Manager instance can be retrieved - from the Ewk_Context API. - - * PlatformEfl.cmake: - * UIProcess/API/efl/EWebKit2.h: - * UIProcess/API/efl/ewk_context.cpp: - (_Ewk_Context): - (_Ewk_Context::_Ewk_Context): - (_Ewk_Context::~_Ewk_Context): - (ewk_context_cookie_manager_get): - * UIProcess/API/efl/ewk_context.h: - * UIProcess/API/efl/ewk_cookie_manager.cpp: Added. - (_Ewk_Cookie_Manager): - (_Ewk_Cookie_Manager::_Ewk_Cookie_Manager): - (ewk_cookie_manager_persistent_storage_set): - (ewk_cookie_manager_accept_policy_set): - (Get_Policy_Async_Data): - (getAcceptPolicyCallback): - (ewk_cookie_manager_async_accept_policy_get): - (Get_Hostnames_Async_Data): - (getHostnamesWithCookiesCallback): - (ewk_cookie_manager_async_hostnames_with_cookies_get): - (ewk_cookie_manager_hostname_cookies_clear): - (ewk_cookie_manager_cookies_clear): - (ewk_cookie_manager_free): - (ewk_cookie_manager_new): - * UIProcess/API/efl/ewk_cookie_manager.h: Added. - * UIProcess/API/efl/ewk_cookie_manager_private.h: Added. - -2012-07-18 Carlos Garcia Campos <cgarcia@igalia.com> - - [GTK] Add WebKitWebView::submit-form signal to WebKit2 GTK+ API - https://bugs.webkit.org/show_bug.cgi?id=91605 - - Reviewed by Gustavo Noronha Silva. - - The signal is emitted when a form is about to submitted, with a - form submission request that can be used to get the text fields - and to continue the form submission wheh done. - - * GNUmakefile.list.am: Add new files to compilation. - * UIProcess/API/gtk/WebKitFormClient.cpp: Added. - (willSubmitForm): Create a WebKitFormSubmissionRequest and call - webkitWebViewSubmitFormRequest() with the request. - (attachFormClientToView): Add impementation for willSubmitForm - callback. - * UIProcess/API/gtk/WebKitFormClient.h: Added. - * UIProcess/API/gtk/WebKitFormSubmissionRequest.cpp: Added. - (webkit_form_submission_request_init): - (webkitFormSubmissionRequestFinalize): - (webkit_form_submission_request_class_init): - (webkitFormSubmissionRequestCreate): Create a new - WebKitFormSubmissionRequest for the given values dictionary and - submission listener. - (webkit_form_submission_request_get_text_fields): Create a - GHashTable with the text fields values and return it. - (webkit_form_submission_request_submit): Continue the form - submission. - * UIProcess/API/gtk/WebKitFormSubmissionRequest.h: Added. - * UIProcess/API/gtk/WebKitFormSubmissionRequestPrivate.h: Added. - * UIProcess/API/gtk/WebKitWebView.cpp: - (webkitWebViewConstructed): Attach web view to form client. - (webkit_web_view_class_init): Add WebKitWebView::submit-form - signal. - (webkitWebViewSubmitFormRequest): Emit WebKitWebView::submit-form - signal. - * UIProcess/API/gtk/WebKitWebView.h: - * UIProcess/API/gtk/WebKitWebViewPrivate.h: - * UIProcess/API/gtk/docs/webkit2gtk-docs.sgml: Add new section for - WebKitFormSubmissionRequest. - * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Add new symbols. - * UIProcess/API/gtk/tests/TestWebKitWebView.cpp: - (testWebViewSubmitForm): - (beforeAll): - * UIProcess/API/gtk/webkit2.h: Include - WebKitFormSubmissionRequest.h. - -2012-07-18 Carlos Garcia Campos <cgarcia@igalia.com> - - [GTK] No main resource in WebView when page has been loaded from history cache - https://bugs.webkit.org/show_bug.cgi?id=91478 - - Reviewed by Gustavo Noronha Silva. - - We are assuming that a resource loaded for the main frame that is - provisionally loading is the main resource of the web view. However - that's not true for pages loaded from history cache, so when you - go back/forward webkit_web_view_get_main_resource() always returns - NULL. We can assume that the first resource loaded for the main - frame is the main resource of the web view when - pageIsProvisionallyLoading is false. - - * UIProcess/API/gtk/WebKitWebView.cpp: - (webkitWebViewResourceLoadStarted): Make sure we always have a - main resource for the web view. - * UIProcess/API/gtk/tests/TestResources.cpp: - (testWebViewResourcesHistoryCache): Test we always have a main - resource even after going back/forward. - (beforeAll): Add new test case. - -2012-07-18 Seokju Kwon <seokju.kwon@samsung.com> - - [EFL] Rename WebInspectorEfl.cpp as WebInspectorProxyEfl.cpp - https://bugs.webkit.org/show_bug.cgi?id=91585 - - Reviewed by Andreas Kling. - - Rename WebInspectorEfl.cpp as WebInspectorProxyEfl.cpp - since it implements the platform specific methods of WebInspectorProxy. - - * PlatformEfl.cmake: - * UIProcess/efl/WebInspectorProxyEfl.cpp: Renamed from Source/WebKit2/UIProcess/efl/WebInspectorEfl.cpp. - (WebKit): - (WebKit::WebInspectorProxy::platformCreateInspectorPage): - (WebKit::WebInspectorProxy::platformOpen): - (WebKit::WebInspectorProxy::platformDidClose): - (WebKit::WebInspectorProxy::platformBringToFront): - (WebKit::WebInspectorProxy::platformIsFront): - (WebKit::WebInspectorProxy::platformInspectedURLChanged): - (WebKit::WebInspectorProxy::inspectorPageURL): - (WebKit::WebInspectorProxy::inspectorBaseURL): - (WebKit::WebInspectorProxy::platformInspectedWindowHeight): - (WebKit::WebInspectorProxy::platformAttach): - (WebKit::WebInspectorProxy::platformDetach): - (WebKit::WebInspectorProxy::platformSetAttachedWindowHeight): - -2012-07-18 Zoltan Horvath <zoltan@webkit.org> - - [Qt] Modify the using of the QImage::Format enum to the appropriate functions from NativeImageQt - https://bugs.webkit.org/show_bug.cgi?id=91600 - - Reviewed by Andreas Kling. - - Use NativeImageQt::defaultFormatForAlphaEnabledImages() and NativeImageQt::defaultFormatForOpaqueImages() - instead of the direct imagetypes at the appropriate places. - - * Shared/qt/ShareableBitmapQt.cpp: - (WebKit::ShareableBitmap::createQImage): - -2012-07-18 Zeno Albisser <zeno@webkit.org> - - [Qt][WK2] Caching of ShareableSurfaces breaks tiling. - https://bugs.webkit.org/show_bug.cgi?id=91609 - - A ShareableSurface should only be cached, - when it is GraphicsSurface based. - - Reviewed by Kenneth Rohde Christiansen. - - * UIProcess/LayerTreeCoordinatorProxy.cpp: - (WebKit::LayerTreeCoordinatorProxy::updateTileForLayer): - * UIProcess/LayerTreeCoordinatorProxy.h: - (LayerTreeCoordinatorProxy): - -2012-07-18 Carlos Garcia Campos <cgarcia@igalia.com> - - [GTK] Fix a crash due to an invalid assert - https://bugs.webkit.org/show_bug.cgi?id=91614 - - Reviewed by Xan Lopez. - - In webkitWebViewBaseContainerAdd() there's - ASSERT(priv->inspectorView); that should be the opposite, since we - shoulnd't have an inspector view when the inspector view is added. - - * UIProcess/API/gtk/WebKitWebViewBase.cpp: - (webkitWebViewBaseContainerAdd): - -2012-07-18 Thiago Marcos P. Santos <thiago.santos@intel.com> - - [CMake] Make gtest a shared library - https://bugs.webkit.org/show_bug.cgi?id=90973 - - Reviewed by Daniel Bates. - - No need to link with gtest dependencies now since it is a shared library. - - * PlatformEfl.cmake: - -2012-07-18 YoungTaeck Song <youngtaeck.song@samsung.com> - - [WK2][EFL] Add a common code using Color instead of QColor - https://bugs.webkit.org/show_bug.cgi?id=91580 - - Reviewed by Simon Hausmann. - - This patch is a subset of Efl's UI_SIDE_COMPOSITING implementation. - drawBorder's argument is QColor. So add a common code using Color to be used by Efl. - - * UIProcess/texmap/LayerBackingStore.cpp: - (WebKit::LayerBackingStore::paintToTextureMapper): - -2012-07-17 Christophe Dumez <christophe.dumez@intel.com> - - [EFL] Replace 0 by NULL in public headers documentation - https://bugs.webkit.org/show_bug.cgi?id=91470 - - Reviewed by Dirk Pranke. - - Use NULL instead of 0 for pointer types in public - C headers. - - * UIProcess/API/efl/ewk_intent.h: - * UIProcess/API/efl/ewk_intent_service.h: - * UIProcess/API/efl/ewk_url_request.h: - * UIProcess/API/efl/ewk_url_response.h: - * UIProcess/API/efl/ewk_view.h: - * UIProcess/API/efl/ewk_web_resource.h: - -2012-07-17 Carlos Garcia Campos <cgarcia@igalia.com> - - [GTK] Don't use deprecated soup API in WebKit2APITests/TestResources - https://bugs.webkit.org/show_bug.cgi?id=91496 - - Reviewed by Martin Robinson. - - soup_message_headers_get() is deprecated, use - soup_message_headers_get_one() instead. - - * UIProcess/API/gtk/tests/TestResources.cpp: - (serverCallback): - -2012-07-17 Carlos Garcia Campos <cgarcia@igalia.com> - - [GTK] Fix a typo in WebKit2APITests/TestResources - https://bugs.webkit.org/show_bug.cgi?id=91495 - - Reviewed by Xan Lopez. - - * UIProcess/API/gtk/tests/TestResources.cpp: - (testWebResourceLoading): - (testWebResourceResponse): - (testWebResourceMimeType): - (testWebResourceActiveURI): - -2012-07-17 Vivek Galatage <vivekgalatage@gmail.com> - - Web Inspector: refactor InspectorController::connectFrontend() to accept InspectorFrontendChannel. - https://bugs.webkit.org/show_bug.cgi?id=91196 - - Reviewed by Pavel Feldman. - - Refactoring InspectorClients. InspectorClient::openInspectorFrontend - now returning the InspectorFrontendChannel. - - * WebProcess/WebCoreSupport/WebInspectorClient.cpp: - (WebKit::WebInspectorClient::openInspectorFrontend): - * WebProcess/WebCoreSupport/WebInspectorClient.h: - (WebInspectorClient): - -2012-07-17 Carlos Garcia Campos <cgarcia@igalia.com> - - [GTK] Paste primary selection when middle clicking in X11 WebKit2 - https://bugs.webkit.org/show_bug.cgi?id=91411 - - Reviewed by Xan Lopez. - - Handle middle click events to paste primary selection as expected - in any X11 application. - - * WebProcess/WebPage/WebPage.cpp: - (WebKit::handleMouseEvent): Call handleMousePressedEvent() for GTK+ - platform. - * WebProcess/WebPage/WebPage.h: - (WebPage): Add handleMousePressedEvent() for GTK+ platform. - * WebProcess/WebPage/gtk/WebPageGtk.cpp: - (WebKit::WebPage::handleMousePressedEvent): Handle middle click - events to paste primary selection like we do in WebKit1. - -2012-07-17 Ryuan Choi <ryuan.choi@samsung.com> - - [EFL] Move codes related to theme setting from Widget to RenderTheme - https://bugs.webkit.org/show_bug.cgi?id=89842 - - Reviewed by Kenneth Rohde Christiansen. - - * CMakeLists.txt: Added html/shadow to WebKit_INCLUDE_DIRECTORIES. - * WebProcess/WebPage/efl/WebPageEfl.cpp: - (WebKit::WebPage::setThemePath): Called RenderThemeEfl::setThemePath instead of setting theme in FrameView. - -2012-07-17 David Barr <davidbarr@chromium.org> - - Introduce ENABLE_CSS_IMAGE_ORIENTATION compile flag - https://bugs.webkit.org/show_bug.cgi?id=89055 - - Reviewed by Kent Tamura. - - The css3-images module is at candidate recommendation. - http://www.w3.org/TR/2012/CR-css3-images-20120417/#the-image-orientation - - Add a configuration option for CSS image-orientation support, disabling it by default. - - * Configurations/FeatureDefines.xcconfig: - -2012-07-16 Gyuyoung Kim <gyuyoung.kim@samsung.com> - - Add RegisterProtocolHandlerClient to the Modules/protocolhandler - https://bugs.webkit.org/show_bug.cgi?id=90940 - - Reviewed by Hajime Morita. - - As a step to let protocol handler be moved to the modules, RegisterProtocolHandlerClient needs - to be added to the Modules/protocolhandler. Because ChromeClient has some virtual functions for - protocol handlers, virtual functions should be moved to RegisterProtocolHandlerClient. - - In order to support this, WebRegisterProtocolHandlerClient class is added. However, this is not implemented yet. - In addition, existing virtual functions in WebChromeClient are moved to WebRegisterProtocolHandlerClient. - - * WebProcess/WebCoreSupport/WebChromeClient.h: - * WebProcess/WebCoreSupport/WebRegisterProtocolHandlerClient.h: Added. - (WebKit): - (WebRegisterProtoclHandlerClient): - (WebKit::WebRegisterProtoclHandlerClient::isProtocolHandlerRegistered): - (WebKit::WebRegisterProtoclHandlerClient::unregisterProtocolHandler): - -2012-07-16 Pete Williamson <petewil@google.com> - - Export the iconURL list to make it available to the Internals class for testing - https://bugs.webkit.org/show_bug.cgi?id=88665 - - Reviewed by Kent Tamura. - - * win/WebKit2.def: export the DocumentL::iconURLs function - -2012-07-16 Hajime Morrita <morrita@chromium.org> - - WebCore needs WEBCORE_TESTING macro to mark methods being exported for testing. - https://bugs.webkit.org/show_bug.cgi?id=90764 - - Reviewed by Adam Barth. - - Removed symbols which are now covered by WEBCORE_TESTING. - - * win/WebKit2.def: - * win/WebKit2CFLite.def: - -2012-07-16 Christophe Dumez <christophe.dumez@intel.com> - - [EFL][WK2] Implement decidePolicyForResponse in policy client - https://bugs.webkit.org/show_bug.cgi?id=91401 - - Reviewed by Kenneth Rohde Christiansen. - - Provide implementation for decidePolicyForResponse callback - in WebKit2 EFL's policy client. - - * UIProcess/API/efl/ewk_view_policy_client.cpp: - (decidePolicyForResponseCallback): - (ewk_view_policy_client_attach): - -2012-07-16 Ryuan Choi <ryuan.choi@samsung.com> - - [EFL][WK2] Add APIs to support theme. - https://bugs.webkit.org/show_bug.cgi?id=90107 - - Reviewed by Hajime Morita. - - RenderThemeEfl uses edj file to render native theme of form elements. - This patch provides default theme and a way to change edj theme file for - WebKit2/Efl. - - * PlatformEfl.cmake: - * UIProcess/API/efl/ewk_view.cpp: - (_Ewk_View_Private_Data): - (ewk_view_base_add): - (ewk_view_theme_set): - (ewk_view_theme_get): - * UIProcess/API/efl/ewk_view.h: - * UIProcess/WebPageProxy.h: - (WebPageProxy): - * UIProcess/efl/WebPageProxyEfl.cpp: - (WebKit::WebPageProxy::setThemePath): - * WebProcess/WebPage/WebPage.h: - * WebProcess/WebPage/WebPage.messages.in: - * WebProcess/WebPage/efl/WebPageEfl.cpp: - (WebKit::WebPage::setThemePath): - -2012-07-16 Kihong Kwon <kihong.kwon@samsung.com> - - Remove setController from BatteryClient - https://bugs.webkit.org/show_bug.cgi?id=90944 - - Reviewed by Adam Barth. - - Remove WebBatteryClient::setController function. - - * WebProcess/WebCoreSupport/WebBatteryClient.cpp: - * WebProcess/WebCoreSupport/WebBatteryClient.h: - (WebBatteryClient): - -2012-07-16 Christophe Dumez <christophe.dumez@intel.com> - - [EFL][WK2] Make Ewk_Navigation_Policy_Decision ref counted - https://bugs.webkit.org/show_bug.cgi?id=91343 - - Reviewed by Antonio Gomes. - - Make Ewk_Navigation_Policy_Decision ref counted so that the - client can make navigation policy decisions asynchronously - by ref'ing the Ewk_Navigation_Policy_Decision object passed - with the "policy,*" signals. - - * UIProcess/API/efl/ewk_navigation_policy_decision.cpp: - (_Ewk_Navigation_Policy_Decision): - (_Ewk_Navigation_Policy_Decision::_Ewk_Navigation_Policy_Decision): - (_Ewk_Navigation_Policy_Decision::~_Ewk_Navigation_Policy_Decision): - (ewk_navigation_policy_decision_ref): - (ewk_navigation_policy_decision_unref): - * UIProcess/API/efl/ewk_navigation_policy_decision.h: - * UIProcess/API/efl/ewk_view.h: - * UIProcess/API/efl/ewk_view_policy_client.cpp: - (decidePolicyForNavigationAction): - (decidePolicyForNewWindowAction): - -2012-07-16 Zoltan Horvath <zoltan@webkit.org> - - [Qt] Change NativeImagePtr from QPixmap* to QImage* - https://bugs.webkit.org/show_bug.cgi?id=88785 - - Reviewed by Simon Hausmann. - - Since we use raster engine there is no difference between QPixmap and QImage, so we are going - to use QImage everywhere where it is possible. This refactoring contains the change of the - NativeImagePtr typedef from QPixmap* to QImage* and covers the related modifications. - - Part of the change is similar to Viatcheslav Ostapenko's internal work. - - Covered by existing tests. - - * Shared/qt/ShareableBitmapQt.cpp: - (WebKit::ShareableBitmap::createImage): - * UIProcess/qt/QtWebIconDatabaseClient.cpp: - (WebKit::QtWebIconDatabaseClient::iconImageForPageURL): - * WebProcess/WebCoreSupport/qt/WebDragClientQt.cpp: - (WebKit::convertQImageToShareableBitmap): - (WebKit::WebDragClient::startDrag): - * WebProcess/WebPage/LayerTreeCoordinator/LayerTreeCoordinator.cpp: - (WebKit::LayerTreeCoordinator::adoptImageBackingStore): - -2012-07-16 Carlos Garcia Campos <cgarcia@igalia.com> - - Unreviewed. Fix make distcheck. - - * UIProcess/API/gtk/tests/GNUmakefile.am: Add test resources to - EXTRA_DIST. - -2012-07-15 Christophe Dumez <christophe.dumez@intel.com> - - [EFL][WK2] Define destructors for Ewk structures - https://bugs.webkit.org/show_bug.cgi?id=91338 - - Reviewed by Kentaro Hara. - - Add destructors to Ewk structures and move - memory freeing code from *_free() or *_unref() - functions to the destructors. - - * UIProcess/API/efl/ewk_intent.cpp: - (_Ewk_Intent::_Ewk_Intent): - (_Ewk_Intent): - (_Ewk_Intent::~_Ewk_Intent): - (ewk_intent_unref): - * UIProcess/API/efl/ewk_intent_service.cpp: - (_Ewk_Intent_Service): - (_Ewk_Intent_Service::~_Ewk_Intent_Service): - (ewk_intent_service_unref): - * UIProcess/API/efl/ewk_navigation_policy_decision.cpp: - (_Ewk_Navigation_Policy_Decision): - (_Ewk_Navigation_Policy_Decision::~_Ewk_Navigation_Policy_Decision): - (ewk_navigation_policy_decision_free): - * UIProcess/API/efl/ewk_url_request.cpp: - (_Ewk_Url_Request): - (_Ewk_Url_Request::~_Ewk_Url_Request): - (ewk_url_request_unref): - * UIProcess/API/efl/ewk_url_response.cpp: - (_Ewk_Url_Response): - (_Ewk_Url_Response::~_Ewk_Url_Response): - (ewk_url_response_unref): - * UIProcess/API/efl/ewk_view.cpp: - (_Ewk_View_Private_Data): - (_Ewk_View_Private_Data::~_Ewk_View_Private_Data): - (_ewk_view_priv_del): - * UIProcess/API/efl/ewk_web_error.cpp: - (_Ewk_Web_Error): - (_Ewk_Web_Error::~_Ewk_Web_Error): - (ewk_web_error_free): - * UIProcess/API/efl/ewk_web_resource.cpp: - (_Ewk_Web_Resource): - (_Ewk_Web_Resource::~_Ewk_Web_Resource): - (ewk_web_resource_unref): - -2012-07-14 Eric Carlson <eric.carlson@apple.com> - - Enable AVCF hardware video decoding - https://bugs.webkit.org/show_bug.cgi?id=90015 - <rdar://problem/10770317> - - Reviewed by Anders Carlsson. - - * DerivedSources.make: Define HAVE_AVCF if necessary. - - * WebProcess/WebCoreSupport/WebChromeClient.cpp: - (WebKit): - (WebKit::WebChromeClient::graphicsDeviceAdapter): New, return the layer tree host's - graphics adapter. - * WebProcess/WebCoreSupport/WebChromeClient.h: - (WebChromeClient): - * WebProcess/WebPage/LayerTreeHost.h: - (WebCore): - (LayerTreeHost): - (WebKit::LayerTreeHost::graphicsDeviceAdapter): New, default implementation. - - * WebProcess/WebPage/ca/win/LayerTreeHostCAWin.h: - (LayerTreeHostCAWin): - -2012-07-13 Thiago Marcos P. Santos <thiago.santos@intel.com> - - [CMake] Proper handling of ENABLE_API_TESTS build option - https://bugs.webkit.org/show_bug.cgi?id=91221 - - Reviewed by Rob Buis. - - Build unit tests only if ENABLE_API_TESTS is set. - - * PlatformEfl.cmake: - -2012-07-13 Christophe Dumez <christophe.dumez@intel.com> - - [EFL][WK2] Make new public Ewk headers as installable - https://bugs.webkit.org/show_bug.cgi?id=91232 - - Reviewed by Antonio Gomes. - - Make new public Ewk headers installable. - - * PlatformEfl.cmake: - -2012-07-13 Carlos Garcia Campos <cgarcia@igalia.com> - - [GTK] Implement disk cache in WebKit2 - https://bugs.webkit.org/show_bug.cgi?id=90797 - - Reviewed by Xan Lopez. - - * WebProcess/gtk/WebProcessGtk.cpp: - (WebKit::getCacheDiskFreeSize): Use an ASSERT instead of an early - return since the cache feature is now always added to the session. - (WebKit::WebProcess::platformSetCacheModel): Get the cache from - the session and set the maximum cache size as computed by - calculateCacheSizes(). - (WebKit::WebProcess::platformClearResourceCaches): Call - soup_cache_clear(). - (WebKit::WebProcess::platformTerminate): Make sure all pending - data is saved to the disk before the web process finishes. - * WebProcess/gtk/WebProcessMainGtk.cpp: - (WebKit::WebProcessMainGtk): Create a SoupCache feature and add it - to the default SoupSession. - -2012-07-13 Carlos Garcia Campos <cgarcia@igalia.com> - - [GTK] Fix disk cache size computation in WebKit2 - https://bugs.webkit.org/show_bug.cgi?id=91226 - - Reviewed by Xan Lopez. - - We are passing the free disk space value in bytes to - calculateCacheSizes() which expects values in MB. - - * WebProcess/gtk/WebProcessGtk.cpp: - (WebKit::WebProcess::platformSetCacheModel): - -2012-07-13 Carlos Garcia Campos <cgarcia@igalia.com> - - [GTK] WebKit2 crash when going back/forward - https://bugs.webkit.org/show_bug.cgi?id=91220 - - Reviewed by Xan Lopez. - - For some reason when a page is loaded from the backforward list, - when the didCommitLoadForFrame callback is called for the main - frame, the callback didInitiateLoadForResource hasn't been called - yet, so we don't even have a main resource at that point. We were - assuming we always had a main resource with a response. For now we - just check whether we have a resource before trying to set the - certificate to fix the crash, but we need to figue out why this is - happening an how to properly fix it. - - * UIProcess/API/gtk/WebKitLoaderClient.cpp: - (didCommitLoadForFrame): Check whether we have a main resource - before setting the certificate. - -2012-07-13 Christophe Dumez <christophe.dumez@intel.com> - - [EFL][WK2] Use eina stringsharing for Ewk_Web_Resource's url - https://bugs.webkit.org/show_bug.cgi?id=91200 - - Reviewed by Kenneth Rohde Christiansen. - - Use eina stringsharing for Ewk_Web_Resource's url - for consistency. - - * UIProcess/API/efl/ewk_web_resource.cpp: - (_Ewk_Web_Resource): - (_Ewk_Web_Resource::_Ewk_Web_Resource): - (ewk_web_resource_unref): - (ewk_web_resource_url_get): - * UIProcess/API/efl/ewk_web_resource.h: - -2012-07-13 Carlos Garcia Campos <cgarcia@igalia.com> - - [GTK] WebKitWebView::mouse-target-changed is not emitted when moved to/from edtiable content - https://bugs.webkit.org/show_bug.cgi?id=91216 - - Reviewed by Xan Lopez. - - The problem is that the function to check whether two hit test - results are equal doesn't check the editable flag. - - * UIProcess/API/gtk/WebKitHitTestResult.cpp: - (webkitHitTestResultCompare): Check also the editable flag. - -2012-07-13 Gyuyoung Kim <gyuyoung.kim@samsung.com> - - [EFL] Add *explicit* keyword to constructor which has a parameter - https://bugs.webkit.org/show_bug.cgi?id=91207 - - Reviewed by Zoltan Herczeg. - - Add *explicit* keyword to contructor which has a parameter in order to avoid implicit type conversion. - - * WebProcess/WebCoreSupport/efl/WebFrameNetworkingContext.h: - (WebFrameNetworkingContext::WebFrameNetworkingContext): - -2012-07-13 Zeno Albisser <zeno@webkit.org> - - [Qt][WK2] Implement GraphicsSurface for Linux/GLX. - https://bugs.webkit.org/show_bug.cgi?id=90881 - - Add a GLX based GraphicsSurface implementation for Linux. - - Reviewed by Noam Rosenthal. - - * Shared/ShareableSurface.cpp: - (WebKit::ShareableSurface::create): - Only create a GraphicsSurface from a ShareableSurface::Handle - in case the Handle contains a valid GraphicsSurface token. - Otherwise fall back to creating a ShareableBitmap. - * UIProcess/LayerTreeCoordinatorProxy.cpp: - (WebKit::createLayerTileUniqueKey): - Create a unique key for a surface based on tileID and layerID. - (WebKit::LayerTreeCoordinatorProxy::updateTileForLayer): - Even when GraphicsSurface is enabled, not all ShareableSurfaces - will necessarily be backed by a GraphicsSurface. In case of - a ShareableSurface being backed by a ShareableBitmap instead, - the GraphicsSurface token will always be null. - So instead of using the GraphicsSurface token as a key for - storing surfaces in a map, we create a unique key from - layerID and tileID. - * UIProcess/LayerTreeCoordinatorProxy.h: - (LayerTreeCoordinatorProxy): - -2012-07-12 Carlos Garcia Campos <cgarcia@igalia.com> - - [GTK] Add API to get HTTPS status to WebKit2 GTK+ - https://bugs.webkit.org/show_bug.cgi?id=91100 - - Reviewed by Martin Robinson. - - Add webkit_uri_response_get_https_status() to return - GTlsCertificate and GTlsCertificateFlags with information about - the SSL certificate and the possible errors with the certificate. - - * GNUmakefile.list.am: Add new files to compilation. - * PlatformEfl.cmake: Ditto. - * Shared/efl/PlatformCertificateInfo.h: Removed. - * Shared/soup/PlatformCertificateInfo.cpp: Added. - (WebKit::PlatformCertificateInfo::PlatformCertificateInfo): - (WebKit::PlatformCertificateInfo::~PlatformCertificateInfo): - (WebKit::PlatformCertificateInfo::encode): Encode the - GTlsCertificate and GTlsCertificateFlags. - (WebKit::PlatformCertificateInfo::decode): Decode - PlatformCertificateInfo into a GTlsCertificate and GTlsCertificateFlags. - * Shared/soup/PlatformCertificateInfo.h: Renamed from Source/WebKit2/Shared/gtk/PlatformCertificateInfo.h. - (WebKit::PlatformCertificateInfo::certificate): Return the certificate. - (WebKit::PlatformCertificateInfo::tlsErrors): Return the TLS errors - * UIProcess/API/gtk/WebKitLoaderClient.cpp: - (didCommitLoadForFrame): Set the certificate of the current frame - to the response of the main resource. - * UIProcess/API/gtk/WebKitURIResponse.cpp: - (webkit_uri_response_get_https_status): Return GTlsCertificate and - GTlsCertificateFlags. - (webkitURIResponseSetCertificateInfo): Update the internal - ResourceResponse with the GTlsCertificate and GTlsCertificateFlags - of the given PlatformCertificateInfo. - * UIProcess/API/gtk/WebKitURIResponse.h: - * UIProcess/API/gtk/WebKitURIResponsePrivate.h: - * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Add new symbol. - * UIProcess/API/gtk/tests/GNUmakefile.am: - * UIProcess/API/gtk/tests/TestMain.h: - (Test::getResourcesDir): Helper function to get the resources - directory of the WebKit2 API tests. - * UIProcess/API/gtk/tests/TestSSL.cpp: Added. - (testSSL): - (serverCallback): - (beforeAll): - (afterAll): - * UIProcess/API/gtk/tests/WebKitTestServer.cpp: - (WebKitTestServer::WebKitTestServer): Add support por SSL test - servers. - * UIProcess/API/gtk/tests/WebKitTestServer.h: - (WebKitTestServer): Add ssl parameter to create a HTTPS server. - * UIProcess/API/gtk/tests/resources/test-cert.pem: Added. - * UIProcess/API/gtk/tests/resources/test-key.pem: Added. - -2012-07-12 Christophe Dumez <christophe.dumez@intel.com> - - [WK2][EFL] Facilitate debugging of the Web Process - https://bugs.webkit.org/show_bug.cgi?id=90768 - - Reviewed by Kenneth Rohde Christiansen. - - The EFL port now checks if the WEB_PROCESS_CMD_PREFIX - environment variable is set and uses it as prefix - when spawning the Web process if it is. This is used - for debugging purposes with prefixes such as: - "xterm -title renderer -e gdb --args". - - * UIProcess/Launcher/ProcessLauncher.h: - (LaunchOptions): - * UIProcess/Launcher/efl/ProcessLauncherEfl.cpp: - (WebKit::ProcessLauncher::launchProcess): - * UIProcess/WebProcessProxy.cpp: - (WebKit::WebProcessProxy::connect): - -2012-07-12 Timothy Hatcher <timothy@apple.com> - - Make the "Inspect Element" context menu item appear in nightly builds again. - - https://webkit.org/b/89323 - - Reviewed by Anders Carlsson. - - * Shared/API/c/WKContextMenuItem.cpp: - (compatibleContextMenuItemTag): Added. Checks for the specific version of Safari 6 that needs the - tag fixed up to match values it expects. - (WKContextMenuItemGetTag): On Mac platforms call compatibleContextMenuItemTag to fix up the tag - before returning it. - * Shared/API/c/WKContextMenuItemTypes.h: Fix the order of the WKContextMenuItemTag enum - to be binary compatible with older versions of WebKit2. - -2012-07-12 Thiago Marcos P. Santos <thiago.santos@intel.com> - - [EFL] Port the test framework to WebKit 2 - https://bugs.webkit.org/show_bug.cgi?id=90606 - - Reviewed by Kenneth Rohde Christiansen. - - This port of EFL's WebKit 1 test framework uses a more gtest-ish - way of writing tests and it is based on a test fixture that loads a - page synchronously as convenience (if needed). This base fixture can be - easily extended by just inheriting from it. - - * PlatformEfl.cmake: - * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp: Added. - (EWK2UnitTest): - (EWK2UnitTest::onLoadProgress): - (EWK2UnitTest::EWK2UnitTestBase::EWK2UnitTestBase): - (EWK2UnitTest::EWK2UnitTestBase::SetUp): - (EWK2UnitTest::EWK2UnitTestBase::TearDown): - (EWK2UnitTest::EWK2UnitTestBase::loadUrlSync): - * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h: Added. - (EWK2UnitTest): - (EWK2UnitTestBase): - (EWK2UnitTest::EWK2UnitTestBase::setLoadProgress): - (EWK2UnitTest::EWK2UnitTestBase::webView): - * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestEnvironment.cpp: Added. - (EWK2UnitTest): (EWK2UnitTest::EWK2UnitTestEnvironment::EWK2UnitTestEnvironment): - (EWK2UnitTest::EWK2UnitTestEnvironment::defaultTestPageUrl): - * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestEnvironment.h: Added. - (EWK2UnitTest): + * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestEnvironment.h: (EWK2UnitTestEnvironment): - (EWK2UnitTest::EWK2UnitTestEnvironment::useX11Window): - (EWK2UnitTest::EWK2UnitTestEnvironment::defaultWidth): - (EWK2UnitTest::EWK2UnitTestEnvironment::defaultHeight): - * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestMain.cpp: Added. - (parseArguments): + * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestMain.cpp: (main): - * UIProcess/API/efl/tests/resources/default_test_page.html: Added. - * UIProcess/API/efl/tests/test_ewk2_view.cpp: Added. - (TEST_F): - -2012-07-12 Christophe Dumez <christophe.dumez@intel.com> - - [WK2] Add missing Network Information API integration to WebContext and WebPage - https://bugs.webkit.org/show_bug.cgi?id=90781 - - Reviewed by Anders Carlsson. - - Integrate Network Information API to WebPage, WebContext and - properly route messages to the WebNetworkInfoManagerProxy. - Without this, the Network Information tests are crashing for - WebKit2. - - * UIProcess/WebContext.cpp: - (WebKit::WebContext::WebContext): - (WebKit::WebContext::~WebContext): - (WebKit::WebContext::disconnectProcess): - (WebKit::WebContext::didReceiveMessage): - (WebKit::WebContext::didReceiveSyncMessage): - * UIProcess/WebContext.h: - (WebKit): - (WebContext): - (WebKit::WebContext::networkInfoManagerProxy): - * UIProcess/WebNetworkInfoManagerProxy.cpp: - (WebKit::WebNetworkInfoManagerProxy::didReceiveSyncMessage): - (WebKit): - * UIProcess/WebNetworkInfoManagerProxy.h: - (WebNetworkInfoManagerProxy): - * UIProcess/WebProcessProxy.cpp: - (WebKit::WebProcessProxy::didReceiveMessage): - (WebKit::WebProcessProxy::didReceiveSyncMessage): - * WebProcess/WebPage/WebPage.cpp: - (WebKit::WebPage::WebPage): - -2012-07-12 No'am Rosenthal <noam.rosenthal@nokia.com> - - Move TextureMapperAnimation and texmap/LayerTransform to platform/graphics - https://bugs.webkit.org/show_bug.cgi?id=91111 - - Reviewed by Kenneth Rohde Christiansen. - - Include the new filenames. - - * WebProcess/WebPage/LayerTreeCoordinator/WebGraphicsLayer.h: - (WebGraphicsLayer): - -2012-07-12 Adenilson Cavalcanti <cavalcantii@gmail.com> - - [Qt][WK2] Implement web notifications support - https://bugs.webkit.org/show_bug.cgi?id=80702 - - Reviewed by Noam Rosenthal. - - Adding a new type of permission request for Desktop Notifications (plus required code - to register the handle for this requests). - - * UIProcess/API/qt/qwebpermissionrequest.cpp: - (QWebPermissionRequestPrivate::QWebPermissionRequestPrivate): - (QWebPermissionRequestPrivate): - (QWebPermissionRequest::create): - (QWebPermissionRequest::QWebPermissionRequest): - (QWebPermissionRequest::setAllow): - * UIProcess/API/qt/qwebpermissionrequest_p.h: - * UIProcess/API/qt/tests/qmltests/WebView/tst_notification.qml: Added. - * UIProcess/API/qt/tests/qmltests/common/notification.html: Added. - * UIProcess/qt/QtWebPageUIClient.cpp: - (WebKit::QtWebPageUIClient::QtWebPageUIClient): - (WebKit::QtWebPageUIClient::policyForNotificationPermissionRequest): - (WebKit): - * UIProcess/qt/QtWebPageUIClient.h: - -2012-07-12 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com> - - [EFL][WK2] Browser crashes running BatteryStatus tests. - https://bugs.webkit.org/show_bug.cgi?id=91065 - - Reviewed by Kentaro Hara. - - clientInfo was incorrectly casted to BatteryProviderEfl in helper - function. This patch fixes the issue. - - * UIProcess/API/efl/BatteryProvider.cpp: - (toBatteryProvider): - -2012-07-12 Christophe Dumez <christophe.dumez@intel.com> - - [EFL] [WK2] regression(r122411) Crashes in Ewk_View - https://bugs.webkit.org/show_bug.cgi?id=91068 - - Reviewed by Kentaro Hara. - - Avoid using calloc() to allocate memory for structures - and use new operator instead. calloc() causes unwanted - behavior when allocing a structure which contains - non-pointer types (e.g. a HashMap) and leads to - crashes. - - * UIProcess/API/efl/ewk_context.cpp: - (_Ewk_Context::_Ewk_Context): - * UIProcess/API/efl/ewk_intent.cpp: - (_Ewk_Intent): - (_Ewk_Intent::_Ewk_Intent): - (ewk_intent_unref): - (ewk_intent_new): - * UIProcess/API/efl/ewk_intent_service.cpp: - (_Ewk_Intent_Service): - (_Ewk_Intent_Service::_Ewk_Intent_Service): - (ewk_intent_service_unref): - (ewk_intent_service_new): - * UIProcess/API/efl/ewk_navigation_policy_decision.cpp: - (_Ewk_Navigation_Policy_Decision): - (_Ewk_Navigation_Policy_Decision::_Ewk_Navigation_Policy_Decision): - (ewk_navigation_policy_decision_free): - (ewk_navigation_policy_decision_new): - * UIProcess/API/efl/ewk_url_request.cpp: - (_Ewk_Url_Request): - (_Ewk_Url_Request::_Ewk_Url_Request): - (ewk_url_request_unref): - (ewk_url_request_new): - * UIProcess/API/efl/ewk_url_response.cpp: - (_Ewk_Url_Response): - (_Ewk_Url_Response::_Ewk_Url_Response): - (ewk_url_response_unref): - (ewk_url_response_new): - * UIProcess/API/efl/ewk_view.cpp: - (_Ewk_View_Private_Data): - (_Ewk_View_Private_Data::_Ewk_View_Private_Data): - (_ewk_view_priv_new): - (_ewk_view_priv_del): - * UIProcess/API/efl/ewk_web_error.cpp: - (_Ewk_Web_Error): - (_Ewk_Web_Error::_Ewk_Web_Error): - (ewk_web_error_free): - (ewk_web_error_new): - * UIProcess/API/efl/ewk_web_resource.cpp: - (_Ewk_Web_Resource): - (_Ewk_Web_Resource::_Ewk_Web_Resource): - (ewk_web_resource_unref): - (ewk_web_resource_new): - -2012-07-11 Andras Becsi <andras.becsi@nokia.com> - - [Qt][WK2] ASSERT: "!m_viewportItem->isMoving()" in QtViewportHandler::flickMoveEnded() - https://bugs.webkit.org/show_bug.cgi?id=90875 - - Reviewed by Kenneth Rohde Christiansen. - - Since MultiPointTouchArea and PinchArea use the childMouseEventFilter - method to filter touch events and because Flickable filters child mouse - events the canvas calls this function before propagating the touch event - to the WebView. Since Flickable does not accept touch events the canvas - tries to propagate a synthesized mouse event through the base class - childMouseEventFilter function which is accepted by Flickable and - interferes with the input events we send to Flicakble hence messes up - the internal state of the WebView. - This patch reimplements the virtual childMouseEventFilter method so that all - the mouse and touch events can be processed by WebKit before they arrive to - Flickable. - - * UIProcess/API/qt/qquickwebview.cpp: - (QQuickWebView::childMouseEventFilter): - * UIProcess/API/qt/qquickwebview_p.h: - -2012-07-12 Carlos Garcia Campos <cgarcia@igalia.com> - - Unreviewed. Fix GTK+ debug build after r122425. - - * WebProcess/Cookies/soup/WebKitSoupCookieJarSqlite.cpp: - (webkitSoupCookieJarSqliteNew): - -2012-07-12 Sergio Villar Senin <svillar@igalia.com> - - [WK2] Performance issue in FindController::findString - https://bugs.webkit.org/show_bug.cgi?id=78132 - - Reviewed by Anders Carlsson. - - FindController should not unmark all text matches by default. It - will be done only if the string is not found or if - markAllTextMatches() is called. This will allow clients to look - for the next/previous without having to unmark() + mark() all the - text matches for every single search operation. - - * UIProcess/API/gtk/WebKitFindController.cpp: - (webKitFindControllerPerform): - (webkit_find_controller_search_next): - (webkit_find_controller_search_previous): - * WebProcess/WebPage/FindController.cpp: - (WebKit::FindController::updateFindUIAfterPageScroll): - (WebKit::FindController::findString): - -2012-07-12 Christophe Dumez <christophe.dumez@intel.com> - - [WK2][EFL] Add policy client to Ewk_View - https://bugs.webkit.org/show_bug.cgi?id=90953 - - Reviewed by Kenneth Rohde Christiansen. - - Emit new "policy,decision,navigation" and "policy,decision,new,window" - on the Ewk_View when policy decisions should be taken by the client. - - A new Ewk_Navigation_Policy_Decision type is introduced to provide - information about the navigation request and make a decision. - By default, the navigation request is accepted. - - * PlatformEfl.cmake: - * UIProcess/API/efl/EWebKit2.h: - * UIProcess/API/efl/ewk_navigation_policy_decision.cpp: Added. - (_Ewk_Navigation_Policy_Decision): - (ewk_navigation_policy_decision_free): - (ewk_navigation_policy_navigation_type_get): - (ewk_navigation_policy_mouse_button_get): - (ewk_navigation_policy_modifiers_get): - (ewk_navigation_policy_frame_name_get): - (ewk_navigation_policy_request_get): - (ewk_navigation_policy_decision_accept): - (ewk_navigation_policy_decision_reject): - (ewk_navigation_policy_decision_download): - (ewk_navigation_policy_decision_new): - * UIProcess/API/efl/ewk_navigation_policy_decision.h: Added. - * UIProcess/API/efl/ewk_navigation_policy_decision_private.h: Added. - * UIProcess/API/efl/ewk_private.h: Added. - * UIProcess/API/efl/ewk_view.cpp: - (ewk_view_base_add): - (ewk_view_navigation_policy_decision): - (ewk_view_new_window_policy_decision): - * UIProcess/API/efl/ewk_view.h: - * UIProcess/API/efl/ewk_view_policy_client.cpp: Added. - (toEwkView): - (decidePolicyForNavigationAction): - (decidePolicyForNewWindowAction): - (ewk_view_policy_client_attach): - * UIProcess/API/efl/ewk_view_policy_client_private.h: Added. - * UIProcess/API/efl/ewk_view_private.h: - -2012-07-11 Carlos Garcia Campos <cgarcia@igalia.com> - - [GTK] Add webkit_cookie_manager_set_persistent_storage() to WebKit2 GTK+ API - https://bugs.webkit.org/show_bug.cgi?id=83016 - - Reviewed by Martin Robinson. - - Add a custom implementation of SoupCookieJarSqlite based on - libsoup code but using WebCore SQLite classes. SoupCookieJarSqlite - is part of libsoup-gnome, it's not a lot of code and it doesn't - change often, so it's better to simply have our own implementation - instead of making this important feature depend on an optional - dependency. There are plans to move the implementation to libsoup, - if that eventually happens we will remove our code to use libsoup - directly. - - * GNUmakefile.am: Add new dirs to include path. - * GNUmakefile.list.am: Add new files to compilation. - * PlatformEfl.cmake: Ditto. - * Shared/soup/SoupCookiePersistentStorageType.h: Added. - * UIProcess/API/gtk/WebKitCookieManager.cpp: - (webkit_cookie_manager_set_persistent_storage): Set a persistent - storage for cookies. - * UIProcess/API/gtk/WebKitCookieManager.h: - * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Add new symbols - * UIProcess/API/gtk/tests/TestCookieManager.cpp: - (testCookieManagerPersistentStorage): - (serverCallback): - (beforeAll): - (afterAll): - * UIProcess/WebCookieManagerProxy.h: - (WebCookieManagerProxy): Add setCookiePersistentStorage() method - when using soup. - * UIProcess/soup/WebCookieManagerProxySoup.cpp: Added. - (WebKit::WebCookieManagerProxy::setCookiePersistentStorage): Send - SetCookiePersistentStorage message to the web process. - * WebProcess/Cookies/WebCookieManager.h: - (WebCookieManager): Add setCookiePersistentStorage() method when - using soup. - * WebProcess/Cookies/WebCookieManager.messages.in: Add - SetCookiePersistentStorage message when using soup. - * WebProcess/Cookies/soup/WebCookieManagerSoup.cpp: - (WebKit::WebCookieManager::setCookiePersistentStorage): Create a - new cookie jar for the given filename and storage type and add it - to the soup session. - * WebProcess/Cookies/soup/WebKitSoupCookieJarSqlite.cpp: Added. - (webkitSoupCookieJarSqliteOpenDatabase): Open SQLite database. - (webkitSoupCookieJarSqliteCreateTable): Create moz_cookies if it - doesn't exist. - (webkitSoupCookieJarSqliteLoad): Load the initial set of cookies - from the database. - (webkitSoupCookieJarSqliteInsertCookie): Insert a new cookie into - the database. - (webkitSoupCookieJarSqliteDeleteCookie): Delete an exising cookie - from the database. - (webkitSoupCookieJarSqliteChanged): Insert/delete cookies - depending on the change. - (webkitSoupCookieJarSqliteFinalize): - (webkit_soup_cookie_jar_sqlite_init): - (webkit_soup_cookie_jar_sqlite_class_init): - (webkitSoupCookieJarSqliteNew): - * WebProcess/Cookies/soup/WebKitSoupCookieJarSqlite.h: Added. - -2012-07-11 Christophe Dumez <christophe.dumez@intel.com> - - [WK2][EFL] Ewk_View should provide more resource loading notifications - https://bugs.webkit.org/show_bug.cgi?id=90601 - - Reviewed by Antonio Gomes. - - Add new "resource,request,sent", "resource,request,response", - "resource,request,failed" and "resource,request,finished" to - Ewk_View in order to notify the clients of the main resource - load state changes. - - Introduce new Ewk_Url_Response type that is used to provide - information to the clients regarding the resource load - responses that are received. - - * PlatformEfl.cmake: - * UIProcess/API/efl/EWebKit2.h: - * UIProcess/API/efl/ewk_url_response.cpp: Added. - (_Ewk_Url_Response): - (ewk_url_response_ref): - (ewk_url_response_unref): - (ewk_url_response_url_get): - (ewk_url_response_status_code_get): - (ewk_url_response_mime_type_get): - (ewk_url_response_new): - * UIProcess/API/efl/ewk_url_response.h: Added. - * UIProcess/API/efl/ewk_url_response_private.h: Added. - * UIProcess/API/efl/ewk_view.cpp: - (_Ewk_View_Private_Data): - (ewk_view_resource_load_initiated): - (ewk_view_resource_load_response): - (ewk_view_resource_load_failed): - (ewk_view_resource_load_finished): - (ewk_view_resource_request_sent): - (ewk_view_load_provisional_started): - * UIProcess/API/efl/ewk_view.h: - * UIProcess/API/efl/ewk_view_private.h: - * UIProcess/API/efl/ewk_view_resource_load_client.cpp: - (toEwkView): - (didInitiateLoadForResource): - (didSendRequestForResource): - (didReceiveResponseForResource): - (didFinishLoadForResource): - (didFailLoadForResource): - (ewk_view_resource_load_client_attach): - -2012-07-11 Mark Rowe <mrowe@apple.com> - - Fix a logic error in the #if so that the correct code is compiled on Snow Leopard. - - I introduced this in r122403 when I inverted the sense of the #if. - - * UIProcess/mac/WKFullScreenWindowController.mm: - -2012-07-11 Mark Rowe <mrowe@apple.com> - - <http://webkit.org/b/91024> Build against the latest SDK when targeting older OS X versions. - - Reviewed by Dan Bernstein. - - The deployment target is already set to the version that we're targeting, and it's that setting - which determines which functionality from the SDK is available to us. - - * Configurations/Base.xcconfig: - -2012-07-11 Mark Rowe <mrowe@apple.com> - - <http://webkit.org/b/91022> WebFullScreenController and WKFullScreenWindowController shouldn't add unprefixed methods to AppKit classes - - Reviewed by Dan Bernstein. - - * UIProcess/mac/WKFullScreenWindowController.mm: - (convertRectToScreen): Add a static helper method that calls through to -[NSWindow convertRectToScreen:] on OS versions where it exists - but otherwise provides a compatibility implementation of it. - (-[WKFullScreenWindowController enterFullScreen:]): Call our new helper. - -2012-07-11 Mark Rowe <mrowe@apple.com> - - <http://webkit.org/b/91015> Remove BUILDING_ON / TARGETING macros in favor of system availability macros - - This removal was handled by a script that translates the relevant macros in to the equivalent checks - using the system availability macros. - - Reviewed by Filip Pizlo. - - * Shared/DictionaryPopupInfo.cpp: - * Shared/DictionaryPopupInfo.h: - * Shared/mac/PasteboardTypes.mm: - * Shared/mac/WebEventFactory.mm: - * UIProcess/API/mac/PDFViewController.mm: - * UIProcess/API/mac/PageClientImpl.mm: - * UIProcess/API/mac/WKView.mm: - * UIProcess/Launcher/mac/DynamicLinkerEnvironmentExtractor.h: - * UIProcess/Launcher/mac/DynamicLinkerEnvironmentExtractor.mm: - * UIProcess/Launcher/mac/EnvironmentVariables.cpp: - * UIProcess/Launcher/mac/EnvironmentVariables.h: - * UIProcess/Launcher/mac/ProcessLauncherMac.mm: - * UIProcess/Plugins/mac/PluginProcessProxyMac.mm: - * UIProcess/WebPageProxy.cpp: - * UIProcess/WebPageProxy.h: - * UIProcess/WebPageProxy.messages.in: - * UIProcess/mac/TextCheckerMac.mm: - * UIProcess/mac/WKFullScreenWindowController.mm: - * UIProcess/mac/WebContextMac.mm: - * UIProcess/mac/WebPageProxyMac.mm: - * WebKit2Prefix.h: - * WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp: - * WebProcess/Plugins/Netscape/mac/NetscapeSandboxFunctions.mm: - * WebProcess/WebCoreSupport/WebEditorClient.cpp: - * WebProcess/WebCoreSupport/WebEditorClient.h: - * WebProcess/WebCoreSupport/mac/WebSystemInterface.mm: - * WebProcess/WebPage/WebPage.cpp: - * WebProcess/WebPage/WebPage.h: - * WebProcess/WebPage/WebPage.messages.in: - * WebProcess/WebPage/mac/WebPageMac.mm: - * WebProcess/com.apple.WebProcess.sb.in: - * WebProcess/mac/KeychainItemShimMethods.mm: - * WebProcess/mac/SecItemShimMethods.mm: - * WebProcess/mac/WebProcessMac.mm: - * WebProcess/mac/WebProcessMainMac.mm: - * WebProcess/mac/WebProcessShim.mm: - -2012-07-11 Simon Fraser <simon.fraser@apple.com> - - pagesPerView param is misnamed for WKPageSetPageLength() - https://bugs.webkit.org/show_bug.cgi?id=91033 - - Rubber-stamped by Dan Bernstein. - - The name of the second parameter to WKPageSetPageLength(), - 'pagesPerView', was confusing; it's a page size (normally width) - in pixels. - - * UIProcess/API/C/WKPagePrivate.h: - -2012-07-11 Anders Carlsson <andersca@apple.com> - - Add -Wtautological-compare and -Wsign-compare warning flags - https://bugs.webkit.org/show_bug.cgi?id=90994 - - Reviewed by Mark Rowe. - - * Configurations/Base.xcconfig: - -2012-07-11 No'am Rosenthal <noam.rosenthal@nokia.com> - - [Qt][WK2] Test actual rendering results in API tests - https://bugs.webkit.org/show_bug.cgi?id=80609 - - Reviewed by Alexis Menard. - - Added a very basic test to tst_QQuickWebView to make sure rendering actually occurs. - - * UIProcess/API/qt/tests/qquickwebview/tst_qquickwebview.cpp: - (tst_QQuickWebView): - (tst_QQuickWebView::basicRenderingSanity): - -2012-07-11 Mark Rowe <mrowe@apple.com> - - Add a Mountain Lion version of libWebKitSystemInterface.a. - - Reviewed by John Sullivan. + * UIProcess/API/efl/tests/test_ewk2_view.cpp: + (checkFullScreenProperty): - * Configurations/DebugRelease.xcconfig: Look for the library under its expected name. +2012-10-03 Christophe Dumez <christophe.dumez@intel.com> -2012-07-11 No'am Rosenthal <noam.rosenthal@nokia.com> + [EFL] Enable use of X11 in DumpRenderTree / WebKitTestRunner + https://bugs.webkit.org/show_bug.cgi?id=98231 - [Qt] QRawWebView should notify when rendering is done, so that pixel results can be grabbed at the appropriate moment. - https://bugs.webkit.org/show_bug.cgi?id=90641 + Reviewed by Gyuyoung Kim. - Reviewed by Jocelyn Turcotte. + Initialize ecore_x library in ewk_main instead of + WebKitTestRunner since WebKit is using ecore_x + not WebKitTestRunner itself. - Implement LayerTreeCoordinator::forceRepaint with logic equivalent to the one in - LayerTreeHostCA. If we flush the layers synchronously when forceRepaint is called,when - WKPageForceRepaint returns we are guaranteed to have an up-to-date image, as the visible - tiles are also synchronously updated. - - * UIProcess/API/qt/tests/qrawwebview/tst_qrawwebview.cpp: - (WebView::WebView): - (WebView::viewNeedsDisplay): - (WebView::frameLoaded): - (WebView): - (WebView::onRepaintDone): - (WebView::finishForceRepaint): - (WebView::finishFirstLayoutForFrame): - (tst_qrawwebview::doNoBackground1): - (tst_qrawwebview::doNoBackground2): - (tst_qrawwebview::doNoBackground3): - (tst_qrawwebview::run): - The test for QRawWebView has been updated to use the WebKit2 ForcePaint API prior to - generating the pixel results. This has exposed a timing bug in the test - setting the - transparentBackground property of a page has to be done before it's created. This has - been fixed in the test. - - * WebProcess/WebPage/LayerTreeCoordinator/LayerTreeCoordinator.cpp: - (WebKit::LayerTreeCoordinator::forceRepaint): - (WebKit::LayerTreeCoordinator::performScheduledLayerFlush): - (WebKit): + * UIProcess/API/efl/ewk_main.cpp: + (ewk_init): + (ewk_shutdown): -2012-07-11 MORITA Hajime <morrita@google.com> +2012-10-03 Kangil Han <kangil.han@samsung.com> - WebCoreSupport needs objects each of which follows major WebCore objects - https://bugs.webkit.org/show_bug.cgi?id=88499 + Fix unused parameter compile warnings. + https://bugs.webkit.org/show_bug.cgi?id=98243 Reviewed by Alexey Proskuryakov. - Added exporting symbols. - - * win/WebKit2.def: - * win/WebKit2CFLite.def: - -2012-07-11 Sheriff Bot <webkit.review.bot@gmail.com> - - Unreviewed, rolling out r122318. - http://trac.webkit.org/changeset/122318 - https://bugs.webkit.org/show_bug.cgi?id=90961 - - It made 11 fast/events/touch fail (Requested by bbandix on - #webkit). - - * UIProcess/API/qt/qquickwebview.cpp: - * UIProcess/API/qt/qquickwebview_p.h: - -2012-07-11 Keunsoon Lee <keunsoon.lee@samsung.com> - - [EFL][Wk2] WebErrorsEfl.cpp needs to return non-empty errors - https://bugs.webkit.org/show_bug.cgi?id=90688 - - Reviewed by Hajime Morita. - - Return meaningful error for each case. - - * WebProcess/WebCoreSupport/efl/WebErrorsEfl.cpp: - (WebKit::cancelledError): create ResourceError for "request canceled". - (WebKit::blockedError): create ResourceError for "request blocked". - (WebKit::cannotShowURLError): create ResourceError for "cannot show url". - (WebKit::interruptedForPolicyChangeError): create ResourceError for "Frame load interrupted by policy change". - (WebKit::cannotShowMIMETypeError): create ResourceError for "Cannot show mimetype". - (WebKit::fileDoesNotExistError): create ResourceError for "File does not exist". - (WebKit::pluginWillHandleLoadError): create ResourceError for "Plugin will handle load". - -2012-07-11 Andras Becsi <andras.becsi@nokia.com> - - [Qt][WK2] Fix wheel scrolling for simple pages - https://bugs.webkit.org/show_bug.cgi?id=90793 - - Reviewed by Kenneth Rohde Christiansen. - - Call WebPage::setFixedLayoutSize in setResizesToContentsUsingLayoutSize - instead of setting the view size manually and scheduling a relayout. - Since setFixedLayoutSize forces a relayout it also updates the scrollbars - after the visible rect is available. - This fixes scrolling with wheel events for a QML WebView loading a simple - local page which previously ended up in a state where scrolling was disabled - because the scrollbar update happened before the correct visible rect size was - available. - - Add a QML test and infrastructure to QWebKitTest to cover this case. - - * UIProcess/API/qt/qwebkittest.cpp: - (QWebKitTest::wheelEvent): - * UIProcess/API/qt/qwebkittest_p.h: - * UIProcess/API/qt/tests/qmltests/WebView/tst_wheelEventHandling.qml: Added. - * UIProcess/API/qt/tests/qmltests/common/test4.html: Added. - * WebProcess/WebPage/WebPage.cpp: - (WebKit::WebPage::setResizesToContentsUsingLayoutSize): - -2012-07-11 Andras Becsi <andras.becsi@nokia.com> - - [Qt][WK2] ASSERT: "!m_viewportItem->isMoving()" in QtViewportHandler::flickMoveEnded() - https://bugs.webkit.org/show_bug.cgi?id=90875 - - Reviewed by Kenneth Rohde Christiansen. - - Since MultiPointTouchArea and PinchArea use the childMouseEventFilter - method to filter touch events too, and because Flickable filters child - mouse events the canvas calls this function before propagating the touch - event to the WebView. Since Flickable does not accept touch events the - canvas tries to propagate a synthesized mouse event through the base - class childMouseEventFilter function which is accepted by Flickable and - interferes with the input events we send to Flicakble hence messes up - the internal state of the WebView. - This patch reimplements the virtual childMouseEventFilter method so that all - the mouse and touch events can be processed by WebKit before they arrive to - Flickable. - - * UIProcess/API/qt/qquickwebview.cpp: - (QQuickWebView::childMouseEventFilter): - * UIProcess/API/qt/qquickwebview_p.h: - -2012-07-10 Christophe Dumez <christophe.dumez@intel.com> - - [WK2][EFL] Add Battery Status Provider - https://bugs.webkit.org/show_bug.cgi?id=90543 - - Reviewed by Kenneth Rohde Christiansen. - - Define a battery status provider for WebKit2 EFL which - relies on WebCore::BatteryProviderEfl. - - * CMakeLists.txt: Add WebCore/Modules/battery to include - paths. - * PlatformEfl.cmake: Add BatteryProvider class to CMake. - * UIProcess/API/efl/BatteryProvider.cpp: Added. - (toBatteryProvider): - (startUpdatingCallback): - (stopUpdatingCallback): - (BatteryProvider::~BatteryProvider): - (BatteryProvider::create): - (BatteryProvider::BatteryProvider): - (BatteryProvider::startUpdating): - (BatteryProvider::stopUpdating): - (BatteryProvider::didChangeBatteryStatus): - * UIProcess/API/efl/BatteryProvider.h: Added. - (BatteryProvider): - * UIProcess/API/efl/ewk_context.cpp: - (_Ewk_Context): Add BatteryProvider to Ewk_Context. - (createDefaultEwkContext): - (ewk_context_default_get): - -2012-07-10 No'am Rosenthal <noam.rosenthal@nokia.com> - - [Qt] Enable antialiasing for TextureMapper - https://bugs.webkit.org/show_bug.cgi?id=90915 - - Reviewed by Martin Robinson. - - Enable the new antialiasing functionality for WebLayerTreeRendering. - This will make one-tile layers antialiased when using UI_SIDE_COMPOSITING. - - * UIProcess/WebLayerTreeRenderer.cpp: - (WebKit::WebLayerTreeRenderer::ensureRootLayer): - -2012-07-10 Adam Barth <abarth@webkit.org> - - WebCore::Settings for Hixie76 WebSocket protocol doesn't do anything and should be removed - https://bugs.webkit.org/show_bug.cgi?id=90910 - - Reviewed by Eric Seidel. - - * Shared/WebPreferencesStore.h: - (WebKit): - * UIProcess/API/C/WKPreferences.cpp: - (WKPreferencesSetHixie76WebSocketProtocolEnabled): - (WKPreferencesGetHixie76WebSocketProtocolEnabled): - * WebProcess/InjectedBundle/InjectedBundle.cpp: - (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner): - * WebProcess/WebPage/WebPage.cpp: - (WebKit::WebPage::updatePreferences): - -2012-07-10 Helder Correia <helder.correia@nokia.com> - - [Qt] Repaint counter for accelerated compositing - https://bugs.webkit.org/show_bug.cgi?id=90116 - - Reviewed by Noam Rosenthal. - - No new tests, just introducing a debug feature. - - For this feature to be enabled, the environment variable - QT_WEBKIT_SHOW_COMPOSITING_DEBUG_VISUALS must be set to 1. Once enabled, - both repaint counters and tile borders will be painted. - - Important notes: - - Only WebKit2 is targetted for now. - - There is no integration with Preferences. That aproach was - taken initially but revealed complex and overkill for such a - debugging-only functionality. Thus, to disable it simply restart with - the environment variable unset or set to some other value. - - A Qt-specific drawRepaintCounter() function was added to - TextureMapperGL. A QImage is used as scratch buffer to paint borders and - counters. It is then uploaded to a BitmapTexture acquired from the pool - and finally draw by TextureMapper. The actual compositing happens inside - LayerBackingStore::paintToTextureMapper(). Each LayerBackingStoreTile - now has a repaint counter which gets incremented in - LayerBackingStore::updateTile(). - - * UIProcess/texmap/LayerBackingStore.cpp: - (WebKit::LayerBackingStore::updateTile): - (WebKit): - (WebKit::shouldShowTileDebugVisuals): - (WebKit::LayerBackingStore::paintToTextureMapper): - * UIProcess/texmap/LayerBackingStore.h: - (WebKit::LayerBackingStoreTile::LayerBackingStoreTile): - (LayerBackingStoreTile): - (WebKit::LayerBackingStoreTile::incrementRepaintCount): - (WebKit::LayerBackingStoreTile::repaintCount): - -2012-07-10 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com> - - [WK2] Add Vibration API support for WebKit2 - https://bugs.webkit.org/show_bug.cgi?id=90058 - - Reviewed by Anders Carlsson. - - Add support for Vibration API to WebKit2. - - * CMakeLists.txt: - * DerivedSources.pri: - * GNUmakefile.list.am: - * Platform/CoreIPC/MessageID.h: - * Shared/API/c/WKBase.h: - * Shared/APIObject.h: - * Target.pri: - * UIProcess/API/C/WKAPICast.h: - (WebKit): - * UIProcess/API/C/WKVibration.cpp: Added. - (WKVibrationGetTypeID): - (WKVibrationSetProvider): - * UIProcess/API/C/WKVibration.h: Added. - * UIProcess/WebVibrationProvider.cpp: Added. - (WebKit): - (WebKit::WebVibrationProvider::vibrate): - (WebKit::WebVibrationProvider::cancelVibration): - * UIProcess/WebVibrationProvider.h: Added. - (WebKit): - (WebVibrationProvider): - * UIProcess/WebVibrationProxy.cpp: Added. - (WebKit): - (WebKit::WebVibrationProxy::create): - (WebKit::WebVibrationProxy::WebVibrationProxy): - (WebKit::WebVibrationProxy::~WebVibrationProxy): - (WebKit::WebVibrationProxy::invalidate): - (WebKit::WebVibrationProxy::initializeProvider): - (WebKit::WebVibrationProxy::didReceiveMessage): - (WebKit::WebVibrationProxy::vibrate): - (WebKit::WebVibrationProxy::cancelVibration): - * UIProcess/WebVibrationProxy.h: Added. - (CoreIPC): - (WebKit): - (WebVibrationProxy): - (WebKit::WebVibrationProxy::clearContext): - (WebKit::WebVibrationProxy::type): - * UIProcess/WebVibrationProxy.messages.in: Added. - * WebProcess/WebCoreSupport/WebVibrationClient.cpp: Added. - (WebKit): - (WebKit::WebVibrationClient::vibrate): - (WebKit::WebVibrationClient::cancelVibration): - (WebKit::WebVibrationClient::vibrationDestroyed): - * WebProcess/WebCoreSupport/WebVibrationClient.h: Added. - (WebKit): - (WebVibrationClient): - (WebKit::WebVibrationClient::WebVibrationClient): - (WebKit::WebVibrationClient::~WebVibrationClient): - -2012-07-10 Carlos Garcia Campos <cgarcia@igalia.com> - - [GTK] Add API to clear the cache to WebKit2 GTK+ - https://bugs.webkit.org/show_bug.cgi?id=90856 - - Reviewed by Martin Robinson. - - * UIProcess/API/gtk/WebKitWebContext.cpp: - (webkit_web_context_clear_cache): Call - WKResourceCacheManagerClearCacheForAllOrigins() to clear all - resources currently cached. - * UIProcess/API/gtk/WebKitWebContext.h: - * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Add new symbol. - -2012-07-10 Sheriff Bot <webkit.review.bot@gmail.com> - - Unreviewed, rolling out r122178. - http://trac.webkit.org/changeset/122178 - https://bugs.webkit.org/show_bug.cgi?id=90857 - - browser tests, PrerenderBrowserTest.PrerenderFavicon and other - tests, started to fail (Requested by hayato on #webkit). - - * win/WebKit2.def: - -2012-07-09 Matt Falkenhagen <falken@chromium.org> - - Add ENABLE_DIALOG_ELEMENT and skeleton files - https://bugs.webkit.org/show_bug.cgi?id=90521 - - Reviewed by Kent Tamura. - - * Configurations/FeatureDefines.xcconfig: - -2012-07-09 Pete Williamson <petewil@google.com> - - Export the iconURL list to make it available to the Internals class for testing - https://bugs.webkit.org/show_bug.cgi?id=88665 - - Reviewed by Kent Tamura. - - * win/WebKit2.def: export the DocumentL::iconURLs function - -2012-07-09 Christophe Dumez <christophe.dumez@intel.com> - - [WK2] Add missing Battery Status API integration to WebContext and WebPage - https://bugs.webkit.org/show_bug.cgi?id=90784 - - Reviewed by Anders Carlsson. - - Integrate Battery Status API to WebPage, WebContext and - properly route messages to the WebBatteryManagerProxy. - Without this, the Battery Status tests are crashing for - WebKit2. - - * UIProcess/API/C/WKContext.cpp: - (WKContextGetBatteryManager): - * UIProcess/API/C/WKContext.h: - * UIProcess/WebContext.cpp: - (WebKit::WebContext::WebContext): - (WebKit::WebContext::~WebContext): - (WebKit::WebContext::disconnectProcess): - (WebKit::WebContext::didReceiveMessage): - * UIProcess/WebContext.h: - (WebKit): - (WebContext): - (WebKit::WebContext::batteryManagerProxy): - * UIProcess/WebProcessProxy.cpp: - (WebKit::WebProcessProxy::didReceiveMessage): - * WebProcess/WebCoreSupport/WebBatteryClient.cpp: - (WebKit::WebBatteryClient::setController): - (WebKit): - * WebProcess/WebCoreSupport/WebBatteryClient.h: - (WebBatteryClient): - * WebProcess/WebPage/WebPage.cpp: - (WebKit::WebPage::WebPage): - -2012-07-09 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com> - - [EFL] [WK2] ASSERTION FAILED: !HashTranslator::equal(KeyTraits::emptyValue(), key) - https://bugs.webkit.org/show_bug.cgi?id=90464 - - Reviewed by Daniel Bates. - - HashMap has the property that 0 is the empty value for integer - keys, so do not use 0 as a key in the HashMap. - - * Platform/efl/WorkQueueEfl.cpp: - (WorkQueue::dispatchAfterDelay): - -2012-07-09 Carlos Garcia Campos <cgarcia@igalia.com> - - [GTK] Add a setting to enable/disable page cache to WebKit2 GTK+ API - https://bugs.webkit.org/show_bug.cgi?id=90773 - - Reviewed by Martin Robinson. - - * UIProcess/API/gtk/WebKitSettings.cpp: - (webKitSettingsSetProperty): - (webKitSettingsGetProperty): - (webkit_settings_class_init): - (webkit_settings_get_enable_page_cache): - (webkit_settings_set_enable_page_cache): - * UIProcess/API/gtk/WebKitSettings.h: - * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: - * UIProcess/API/gtk/tests/TestWebKitSettings.cpp: - (testWebKitSettings): - -2012-07-09 Sheriff Bot <webkit.review.bot@gmail.com> - - Unreviewed, rolling out r122107. - http://trac.webkit.org/changeset/122107 - https://bugs.webkit.org/show_bug.cgi?id=90794 - - Build failure on Mac debug bots (Requested by falken_ on - #webkit). - - * Configurations/FeatureDefines.xcconfig: - -2012-07-09 Carlos Garcia Campos <cgarcia@igalia.com> - - [GTK] Fix inspector detach when inspector was attached by the client - https://bugs.webkit.org/show_bug.cgi?id=90763 - - Reviewed by Martin Robinson. - - When the inspector is detached, we are unconditionally removing it - from the inspected view, but if the inspector was attached by the - client, the parent might be another widget. - - * UIProcess/gtk/WebInspectorProxyGtk.cpp: - (WebKit::WebInspectorProxy::platformDetach): Remove the inspector - view from its parent widget. - -2012-07-09 Matt Falkenhagen <falken@chromium.org> - - Add ENABLE_DIALOG_ELEMENT and skeleton files - https://bugs.webkit.org/show_bug.cgi?id=90521 - - Reviewed by Kent Tamura. - - * Configurations/FeatureDefines.xcconfig: - -2012-07-09 Dan Bernstein <mitz@apple.com> - - Fix the Mac build when codesign_allocate is not installed at /usr/bin. - - * PluginProcess/mac/add-entitlements.sh: Let codesign(1) know where the codesign_allocate - tool is by setting the CODESIGN_ALLOCATE environment variable to its path as obtained with - xcrun. - -2012-07-06 Christophe Dumez <christophe.dumez@intel.com> - - [WK2] Add support for Network Information API - https://bugs.webkit.org/show_bug.cgi?id=89870 - - Reviewed by Anders Carlsson. - - Add Network Information API support for WebKit2. - - * CMakeLists.txt: - * DerivedSources.pri: - * GNUmakefile.am: - * GNUmakefile.list.am: - * Platform/CoreIPC/MessageID.h: - * Shared/API/c/WKBase.h: - * Shared/APIObject.h: - * Shared/WebNetworkInfo.cpp: Added. - (WebKit): - (WebKit::WebNetworkInfo::WebNetworkInfo): - (WebKit::WebNetworkInfo::~WebNetworkInfo): - (WebKit::WebNetworkInfo::Data::encode): - (WebKit::WebNetworkInfo::Data::decode): - * Shared/WebNetworkInfo.h: Added. - (WebKit): - (WebNetworkInfo): - (Data): - (WebKit::WebNetworkInfo::create): - (WebKit::WebNetworkInfo::bandwidth): - (WebKit::WebNetworkInfo::metered): - (WebKit::WebNetworkInfo::data): - (WebKit::WebNetworkInfo::type): - * Target.pri: - * UIProcess/API/C/WKAPICast.h: - (WebKit): - * UIProcess/API/C/WKNetworkInfoManager.cpp: Added. - (WKNetworkInfoManagerGetTypeID): - * UIProcess/API/C/WKNetworkInfoManager.h: Added. - * UIProcess/WebNetworkInfoManagerProxy.cpp: Added. - (WebKit): - (WebKit::WebNetworkInfoManagerProxy::create): - (WebKit::WebNetworkInfoManagerProxy::WebNetworkInfoManagerProxy): - (WebKit::WebNetworkInfoManagerProxy::~WebNetworkInfoManagerProxy): - (WebKit::WebNetworkInfoManagerProxy::invalidate): - (WebKit::WebNetworkInfoManagerProxy::initializeProvider): - (WebKit::WebNetworkInfoManagerProxy::providerDidChangeNetworkInformation): - (WebKit::WebNetworkInfoManagerProxy::didReceiveMessage): - (WebKit::WebNetworkInfoManagerProxy::startUpdating): - (WebKit::WebNetworkInfoManagerProxy::stopUpdating): - (WebKit::WebNetworkInfoManagerProxy::getBandwidth): - (WebKit::WebNetworkInfoManagerProxy::isMetered): - * UIProcess/WebNetworkInfoManagerProxy.h: Added. - (CoreIPC): - (WebKit): - (WebNetworkInfoManagerProxy): - (WebKit::WebNetworkInfoManagerProxy::clearContext): - (WebKit::WebNetworkInfoManagerProxy::type): - * UIProcess/WebNetworkInfoManagerProxy.messages.in: Added. - * UIProcess/WebNetworkInfoProvider.cpp: Added. - (WebKit): - (WebKit::WebNetworkInfoProvider::startUpdating): - (WebKit::WebNetworkInfoProvider::stopUpdating): - (WebKit::WebNetworkInfoProvider::bandwidth): - (WebKit::WebNetworkInfoProvider::metered): - * UIProcess/WebNetworkInfoProvider.h: Added. - (WebKit): - (WebNetworkInfoProvider): - * WebKit2.pri: - * WebProcess/NetworkInfo/WebNetworkInfoManager.cpp: Added. - (WebKit): - (WebKit::WebNetworkInfoManager::WebNetworkInfoManager): - (WebKit::WebNetworkInfoManager::~WebNetworkInfoManager): - (WebKit::WebNetworkInfoManager::didReceiveMessage): - (WebKit::WebNetworkInfoManager::registerWebPage): - (WebKit::WebNetworkInfoManager::unregisterWebPage): - (WebKit::WebNetworkInfoManager::bandwidth): - (WebKit::WebNetworkInfoManager::metered): - (WebKit::WebNetworkInfoManager::didChangeNetworkInformation): - * WebProcess/NetworkInfo/WebNetworkInfoManager.h: Added. - (CoreIPC): - (WebKit): - (WebNetworkInfoManager): - * WebProcess/NetworkInfo/WebNetworkInfoManager.messages.in: Added. - * WebProcess/WebCoreSupport/WebNetworkInfoClient.cpp: Added. - (WebKit): - (WebKit::WebNetworkInfoClient::~WebNetworkInfoClient): - (WebKit::WebNetworkInfoClient::bandwidth): - (WebKit::WebNetworkInfoClient::metered): - (WebKit::WebNetworkInfoClient::startUpdating): - (WebKit::WebNetworkInfoClient::stopUpdating): - * WebProcess/WebCoreSupport/WebNetworkInfoClient.h: Added. - (WebKit): - (WebNetworkInfoClient): - (WebKit::WebNetworkInfoClient::WebNetworkInfoClient): - * WebProcess/WebProcess.cpp: - (WebKit::WebProcess::WebProcess): - (WebKit::WebProcess::didReceiveMessage): - * WebProcess/WebProcess.h: - (WebProcess): - (WebKit::WebProcess::networkInfoManager): - -2012-07-06 Jessie Berlin <jberlin@apple.com> - - WKContext should ask for its injected bundle initialization user data when it needs it so the - client doesn't have to keep it up to date. - https://bugs.webkit.org/show_bug.cgi?id=90627 - - Reviewed by Anders Carlsson. - - Add a getInjectedBundleInitializationUserData callback to WKContextInjectedBundleClient. - - * Shared/APIClientTraits.cpp: - Allow the WKContextInjectedBundleClient API to be versioned. - * Shared/APIClientTraits.h: - - * UIProcess/API/C/WKContext.h: - Add the callback and bump the version of WKContextInjectedBundleClient. - - * UIProcess/WebContext.cpp: - (WebKit::WebContext::ensureWebProcess): - Prefer any user data returned when the callback is invoked over that set with - WKContextSetInitializationUserDataForInjectedBundle. - - * UIProcess/WebContextInjectedBundleClient.cpp: - (WebKit::WebContextInjectedBundleClient::getInjectedBundleInitializationUserData): - Invoke the callback if the client has registered for it. - * UIProcess/WebContextInjectedBundleClient.h: - -2012-07-06 Jessie Berlin <jberlin@apple.com> + Fixed unused parameter compile warnings by removing parameter names, adding UNUSED_PARAM usage and commenting out. - WebContext::injectedBundleInitializationUserData() is unused, should be removed - https://bugs.webkit.org/show_bug.cgi?id=90486 - - Reviewed by Anders Carlsson. - - * UIProcess/WebContext.h: - Remove it. - -2012-07-06 Carlos Garcia Campos <cgarcia@igalia.com> - - [GTK] Add site specific quirks setting to WebKit2 GTK+ API - https://bugs.webkit.org/show_bug.cgi?id=90663 - - Reviewed by Martin Robinson. - - * UIProcess/API/gtk/WebKitSettings.cpp: - (webKitSettingsSetProperty): - (webKitSettingsGetProperty): - (webkit_settings_class_init): - (webkit_settings_get_enable_site_specific_quirks): - (webkit_settings_set_enable_site_specific_quirks): - * UIProcess/API/gtk/WebKitSettings.h: - * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: - * UIProcess/API/gtk/tests/TestWebKitSettings.cpp: - (testWebKitSettings): + * PluginProcess/WebProcessConnection.cpp: + (WebKit::WebProcessConnection::createPluginInternal): + * PluginProcess/unix/PluginProcessUnix.cpp: + (WebKit::PluginProcess::platformInitialize): + * WebProcess/Plugins/Netscape/JSNPObject.cpp: + (WebKit::JSNPObject::getOwnPropertyNames): + * WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp: + (WebKit::NPN_RequestRead): + (WebKit::NPN_NewStream): + (WebKit::NPN_Write): + (WebKit::NPN_MemFlush): + (WebKit::NPN_ReloadPlugins): + (WebKit::NPN_GetJavaPeer): + (WebKit::NPN_InvalidateRegion): + (WebKit::NPN_ForceRedraw): + * WebProcess/Plugins/Netscape/NetscapePlugin.cpp: + (WebKit::NetscapePlugin::contentsScaleFactorChanged): + * WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp: + (WebKit::NetscapePlugin::platformPostInitializeWindowed): + * WebProcess/Plugins/PluginProxy.cpp: + (WebKit::PluginProxy::contentsScaleFactorChanged): -2012-07-06 Dominik Röttsches <dominik.rottsches@intel.com> +2012-10-03 Anders Carlsson <andersca@apple.com> - ProcessLauncher's WorkQueue's name is too long on Windows - https://bugs.webkit.org/show_bug.cgi?id=44041 + Plugins are killed after 45 seconds if showing keychain "Allow/Deny" dialog + https://bugs.webkit.org/show_bug.cgi?id=85138 + <rdar://problem/11406430> Reviewed by Andreas Kling. - Shorten thread name for process launcher so that we can silence the warning - for thread names getting truncated under VisualStudio - - see createThread() in Threading.cpp. - - * UIProcess/Launcher/ProcessLauncher.cpp: - (WebKit::processLauncherWorkQueue): - -2012-07-06 Christophe Dumez <christophe.dumez@intel.com> - - [EFL] WebKit-EFL headers do not build with gcc < 4.6 - https://bugs.webkit.org/show_bug.cgi?id=90681 - - Unreviewed EFL build fix. - - Remove several forward declarations from ewk_view - header to avoid typedef redefinitions which are - illegal in C. - - * UIProcess/API/efl/ewk_view.h: - -2012-07-06 Csaba Osztrogonác <ossy@webkit.org> - - [Qt] Buildfix for newer Qt5 - https://bugs.webkit.org/show_bug.cgi?id=90519 - - Reviewed by Tor Arne Vestbø. - - * UIProcess/API/qt/qwebkittest.cpp: Include qpa/qwindowsysteminterface.h instead of deprecated qwindowsysteminterface_qpa.h. - -2012-07-06 Oswald Buddenhagen <oswald.buddenhagen@nokia.com> - - [Qt] Adjust to changed generation of master include file - - The responsiblity for creating the master include was moved out of syncqt. - @ignore_for_master_contents still stays, as syncqt (ab-)uses this for - determining whether a header is private. - - https://bugs.webkit.org/show_bug.cgi?id=90461 - - Reviewed by Tor Arne Vestbø. - - * UIProcess/API/qt/tests/bytearraytestdata.h: - * UIProcess/API/qt/tests/testwindow.h: - -2012-07-05 Christophe Dumez <christophe.dumez@intel.com> - - [WK2][EFL] Ewk_View needs to report load status changes - https://bugs.webkit.org/show_bug.cgi?id=90566 - - Reviewed by Kenneth Rohde Christiansen. - - Add new "load,finished", "load,provisional,failed", - "load,provisional,redirect" and "load,provisional,started" - signals on the Ewk_View to notify the client of different - load state changes. - - * UIProcess/API/efl/ewk_view.cpp: - (ewk_view_load_finished): - (ewk_view_load_provisional_failed): - (ewk_view_load_provisional_redirect): - (ewk_view_load_provisional_started): - * UIProcess/API/efl/ewk_view.h: - * UIProcess/API/efl/ewk_view_loader_client.cpp: - (didFinishLoadForFrame): - (didFailLoadWithErrorForFrame): - (didStartProvisionalLoadForFrame): - (didReceiveServerRedirectForProvisionalLoadForFrame): - (didFailProvisionalLoadWithErrorForFrame): - (ewk_view_loader_client_attach): - * UIProcess/API/efl/ewk_view_private.h: - -2012-07-05 Luiz Agostini <luiz.agostini@nokia.com> - - [Qt] Transform should be applied to the clip rect in QRawWebView::paint - https://bugs.webkit.org/show_bug.cgi?id=90652 - - Reviewed by Kenneth Rohde Christiansen. - - Applying the transformation matrix to the clip rect in QRawWebView::paint. - - * UIProcess/API/qt/raw/qrawwebview.cpp: - (QRawWebView::paint): - -2012-07-05 Christophe Dumez <christophe.dumez@intel.com> - - [WK2][EFL] Ewk_View should provide API to set/get device pixel ratio - https://bugs.webkit.org/show_bug.cgi?id=90590 - - Reviewed by Kenneth Rohde Christiansen. - - Add API to Ewk_View so retrieve and set the device - pixel ratio. - - * UIProcess/API/efl/ewk_view.cpp: - (ewk_view_device_pixel_ratio_set): - (ewk_view_device_pixel_ratio_get): - * UIProcess/API/efl/ewk_view.h: - -2012-07-05 Anders Carlsson <andersca@apple.com> - - Type-ahead doesn't work in options inside optgroups - https://bugs.webkit.org/show_bug.cgi?id=90647 - <rdar://problem/5604894> - - Reviewed by Dan Bernstein. - - Set the title of the menu item to a string that doesn't contain any leading or trailing whitespace. - - * UIProcess/mac/WebPopupMenuProxyMac.mm: - (WebKit::WebPopupMenuProxyMac::populate): - -2012-07-05 Christophe Dumez <christophe.dumez@intel.com> - - [WK2] Add C API for Battery Status API - https://bugs.webkit.org/show_bug.cgi?id=90545 + Remove the watchdog that would kill a plug-in if we've been waiting for a sync reply from it for more than 45 seconds. + It's unlikely that someone is going to wait 45 seconds for Safari to recover from a plug-in hang, and the timeout is + causing problems with plug-ins (see the bugzilla bug for more information). - Reviewed by Anders Carlsson. - - Add C API for WKBatteryManager and WKBatteryStatus - so that clients can support the Battery Status API - in WebKit2. - - * CMakeLists.txt: - * GNUmakefile.list.am: - * Target.pri: - * UIProcess/API/C/WKBatteryManager.cpp: - (WKBatteryManagerProviderDidChangeBatteryStatus): - (WKBatteryManagerProviderUpdateBatteryStatus): - * UIProcess/API/C/WKBatteryStatus.cpp: Copied from Source/WebKit2/UIProcess/API/C/WKBatteryManager.cpp. - (WKBatteryStatusGetTypeID): - (WKBatteryStatusCreate): - * UIProcess/API/C/WKBatteryStatus.h: Copied from Source/WebKit2/UIProcess/API/C/WKBatteryManager.cpp. - -2012-07-05 Sheriff Bot <webkit.review.bot@gmail.com> - - Unreviewed, rolling out r121899. - http://trac.webkit.org/changeset/121899 - https://bugs.webkit.org/show_bug.cgi?id=90623 - - Unauthorized WK2 API breakage (Requested by andersca on - #webkit). - - * Shared/API/c/WKSharedAPICast.h: - (WebKit::toCopiedURLAPI): - -2012-07-05 Balazs Kelemen <kbalazs@webkit.org> - - [Qt] WTR crashes if a URL is passed as a parameter - https://bugs.webkit.org/show_bug.cgi?id=88093 - - Reviewed by Zoltan Herczeg. - - * Shared/API/c/WKSharedAPICast.h: - (WebKit::toCopiedURLAPI): - Don't special case null string. It's handled - fine by WebURL and passing 0 is not suitable - to the API. - -2012-07-05 Dongwoo Im <dw.im@samsung.com> - - [EFL] Enable the CUSTOM_SCHEME_HANDLER feature as default. - https://bugs.webkit.org/show_bug.cgi?id=88608 - - Reviewed by Hajime Morita. - - * WebProcess/WebCoreSupport/WebChromeClient.h: - (WebKit::WebChromeClient::isProtocolHandlerRegistered): Add a stub function. - (WebKit::WebChromeClient::unregisterProtocolHandler): Add a stub function. - (WebChromeClient): - -2012-07-05 Ryuan Choi <ryuan.choi@samsung.com> - - [Wk2][EFL] EFL needs a WebKitTestRunner - https://bugs.webkit.org/show_bug.cgi?id=87659 - - Reviewed by Kenneth Rohde Christiansen. - - * PlatformEfl.cmake: Added WKImageCairo.cpp in source list. - -2012-07-05 Hyerim Bae <hyerim.bae@samsung.com> - - [EFL][WK2] Add ewk_view_reload_bypass_cache API. - https://bugs.webkit.org/show_bug.cgi?id=89413 - - Reviewed by Kenneth Rohde Christiansen. - - Add API, which is for reloading documents without cache. - - * UIProcess/API/efl/ewk_view.cpp: - (ewk_view_reload_bypass_cache): - * UIProcess/API/efl/ewk_view.h: - -2012-07-05 Christophe Dumez <christophe.dumez@intel.com> - - [WK2][EFL] Ewk_View needs API to load HTML data - https://bugs.webkit.org/show_bug.cgi?id=90540 - - Reviewed by Kenneth Rohde Christiansen. - - Add method to Ewk_View to load provided HTML data. - This is used for e.g. when an URL cannot be reached - and we need to display an error page. - - * UIProcess/API/efl/ewk_view.cpp: - (ewk_view_html_load): - * UIProcess/API/efl/ewk_view.h: - -2012-07-05 Christophe Dumez <christophe.dumez@intel.com> - - [WK2][EFL] Ewk_View needs to report new resource requests - https://bugs.webkit.org/show_bug.cgi?id=90577 - - Reviewed by Kenneth Rohde Christiansen. - - Add new "resource,request,new" signal to Ewk_View to - notify clients of the resource requests being initiated. - New Ewk_Url_Request and Ewk_Web_Resource types are - introduced in order to provide the clients with the - needed information regarding the resource requests. - - * PlatformEfl.cmake: - * UIProcess/API/efl/EWebKit2.h: - * UIProcess/API/efl/ewk_url_request.cpp: Added. - (_Ewk_Url_Request): - (ewk_url_request_ref): - (ewk_url_request_unref): - (ewk_url_request_url_get): - (ewk_request_first_party_get): - (ewk_url_request_http_method_get): - (ewk_url_request_new): - * UIProcess/API/efl/ewk_url_request.h: Added. - * UIProcess/API/efl/ewk_url_request_private.h: Added. - * UIProcess/API/efl/ewk_view.cpp: - (ewk_view_base_add): - (ewk_view_resource_load_initiated): - * UIProcess/API/efl/ewk_view.h: - * UIProcess/API/efl/ewk_view_private.h: - * UIProcess/API/efl/ewk_view_resource_load_client.cpp: Added. - (didInitiateLoadForResource): - (ewk_view_resource_load_client_attach): - * UIProcess/API/efl/ewk_view_resource_load_client_private.h: Added. - * UIProcess/API/efl/ewk_web_resource.cpp: Added. - (_Ewk_Web_Resource): - (ewk_web_resource_ref): - (ewk_web_resource_unref): - (ewk_web_resource_uri_get): - (ewk_web_resource_new): - (ewk_web_resource_main_get): - * UIProcess/API/efl/ewk_web_resource.h: Added. - * UIProcess/API/efl/ewk_web_resource_private.h: Added. - -2012-07-04 John Mellor <johnme@chromium.org> - - Text Autosizing: Add compile flag and runtime setting - https://bugs.webkit.org/show_bug.cgi?id=87394 - - This patch renames Font Boosting to Text Autosizing. - - Reviewed by Adam Barth. - - * Configurations/FeatureDefines.xcconfig: - -2012-07-04 Christophe Dumez <christophe.dumez@intel.com> - - [EFL][WK2] Ewk_View should report load errors - https://bugs.webkit.org/show_bug.cgi?id=90479 - - Reviewed by Kenneth Rohde Christiansen. - - The Ewk_View now emits a "load,error" signal when the - main frame fails loading. Information about the error - is provided via the new Ewk_Web_Error type. - - * PlatformEfl.cmake: - * UIProcess/API/efl/EWebKit2.h: - * UIProcess/API/efl/ewk_view.cpp: - (ewk_view_load_error): - * UIProcess/API/efl/ewk_view.h: - * UIProcess/API/efl/ewk_view_loader_client.cpp: - (didFailLoadWithErrorForFrame): - (ewk_view_loader_client_attach): - * UIProcess/API/efl/ewk_view_private.h: - * UIProcess/API/efl/ewk_web_error.cpp: Added. - (_Ewk_Web_Error): - (ewk_web_error_free): - (ewk_web_error_domain_get): - (ewk_web_error_url_get): - (ewk_web_error_code_get): - (ewk_web_error_description_get): - (ewk_web_error_cancellation_get): - (ewk_web_error_new): - * UIProcess/API/efl/ewk_web_error.h: Added. - * UIProcess/API/efl/ewk_web_error_private.h: Added. - -2012-07-03 Christophe Dumez <christophe.dumez@intel.com> - - [WK2][EFL] Ewk_View should report the load progress - https://bugs.webkit.org/show_bug.cgi?id=90457 - - Reviewed by Kenneth Rohde Christiansen. - - The Ewk_View now reports the estimated load progress - of the page via the new "load,progress". - A method is also added to Ewk_View in order to - retrieve the current load progress. - - * UIProcess/API/efl/ewk_view.cpp: - (ewk_view_load_progress_get): - (ewk_view_load_progress_changed): - * UIProcess/API/efl/ewk_view.h: - * UIProcess/API/efl/ewk_view_loader_client.cpp: - (didChangeProgress): - (ewk_view_loader_client_attach): - * UIProcess/API/efl/ewk_view_private.h: - -2012-07-03 Christophe Dumez <christophe.dumez@intel.com> - - [WK2] Add support for Battery Status API - https://bugs.webkit.org/show_bug.cgi?id=89558 - - Reviewed by Anders Carlsson. - - Add support for Battery Status API to WebKit2. - - * CMakeLists.txt: - * DerivedSources.pri: - * GNUmakefile.am: - * GNUmakefile.list.am: - * Platform/CoreIPC/MessageID.h: - * Shared/API/c/WKBase.h: - * Shared/APIObject.h: - * Shared/WebBatteryStatus.cpp: Added. - (WebKit): - (WebKit::WebBatteryStatus::WebBatteryStatus): - (WebKit::WebBatteryStatus::~WebBatteryStatus): - (WebKit::WebBatteryStatus::Data::encode): - (WebKit::WebBatteryStatus::Data::decode): - * Shared/WebBatteryStatus.h: Added. - (WebKit): - (WebBatteryStatus): - (Data): - (WebKit::WebBatteryStatus::create): - (WebKit::WebBatteryStatus::isCharging): - (WebKit::WebBatteryStatus::chargingTime): - (WebKit::WebBatteryStatus::dischargingTime): - (WebKit::WebBatteryStatus::level): - (WebKit::WebBatteryStatus::data): - (WebKit::WebBatteryStatus::type): - * Target.pri: - * UIProcess/API/C/WKAPICast.h: - (WebKit): - * UIProcess/API/C/WKBatteryManager.cpp: Added. - (WKBatteryManagerGetTypeID): - * UIProcess/API/C/WKBatteryManager.h: Added. - * UIProcess/WebBatteryManagerProxy.cpp: Added. - (WebKit): - (WebKit::WebBatteryManagerProxy::create): - (WebKit::WebBatteryManagerProxy::WebBatteryManagerProxy): - (WebKit::WebBatteryManagerProxy::~WebBatteryManagerProxy): - (WebKit::WebBatteryManagerProxy::invalidate): - (WebKit::WebBatteryManagerProxy::initializeProvider): - (WebKit::WebBatteryManagerProxy::didReceiveMessage): - (WebKit::WebBatteryManagerProxy::startUpdating): - (WebKit::WebBatteryManagerProxy::stopUpdating): - (WebKit::WebBatteryManagerProxy::providerDidChangeBatteryStatus): - (WebKit::WebBatteryManagerProxy::providerUpdateBatteryStatus): - * UIProcess/WebBatteryManagerProxy.h: Added. - (CoreIPC): - (WebKit): - (WebBatteryManagerProxy): - (WebKit::WebBatteryManagerProxy::clearContext): - (WebKit::WebBatteryManagerProxy::type): - * UIProcess/WebBatteryManagerProxy.messages.in: Added. - * UIProcess/WebBatteryProvider.cpp: Added. - (WebKit): - (WebKit::WebBatteryProvider::startUpdating): - (WebKit::WebBatteryProvider::stopUpdating): - * UIProcess/WebBatteryProvider.h: Added. - (WebKit): - (WebBatteryProvider): - * WebKit2.pri: - * WebProcess/Battery/WebBatteryManager.cpp: Added. - (WebKit): - (WebKit::WebBatteryManager::WebBatteryManager): - (WebKit::WebBatteryManager::~WebBatteryManager): - (WebKit::WebBatteryManager::didReceiveMessage): - (WebKit::WebBatteryManager::registerWebPage): - (WebKit::WebBatteryManager::unregisterWebPage): - (WebKit::WebBatteryManager::didChangeBatteryStatus): - (WebKit::WebBatteryManager::updateBatteryStatus): - * WebProcess/Battery/WebBatteryManager.h: Added. - (CoreIPC): - (WebKit): - (WebBatteryManager): - * WebProcess/Battery/WebBatteryManager.messages.in: Added. - * WebProcess/WebCoreSupport/WebBatteryClient.cpp: Added. - (WebKit): - (WebKit::WebBatteryClient::startUpdating): - (WebKit::WebBatteryClient::stopUpdating): - (WebKit::WebBatteryClient::batteryControllerDestroyed): - * WebProcess/WebCoreSupport/WebBatteryClient.h: Added. - (WebKit): - (WebBatteryClient): - (WebKit::WebBatteryClient::WebBatteryClient): - (WebKit::WebBatteryClient::~WebBatteryClient): + * Platform/CoreIPC/Connection.cpp: + (CoreIPC::Connection::Connection): + (CoreIPC::Connection::waitForSyncReply): + * Platform/CoreIPC/Connection.h: + (Client): + (Connection): + * PluginProcess/PluginProcess.cpp: + * PluginProcess/PluginProcess.h: + (PluginProcess): + * PluginProcess/WebProcessConnection.cpp: + * PluginProcess/WebProcessConnection.h: + (WebProcessConnection): + * Shared/WebProcessCreationParameters.cpp: + (WebKit::WebProcessCreationParameters::encode): + (WebKit::WebProcessCreationParameters::decode): + * Shared/WebProcessCreationParameters.h: + (WebProcessCreationParameters): + * UIProcess/Plugins/PluginProcessManager.cpp: + * UIProcess/Plugins/PluginProcessManager.h: + (PluginProcessManager): + * UIProcess/Plugins/PluginProcessProxy.cpp: + * UIProcess/Plugins/PluginProcessProxy.h: + (PluginProcessProxy): + * UIProcess/WebConnectionToWebProcess.cpp: + * UIProcess/WebConnectionToWebProcess.h: + (WebConnectionToWebProcess): + * UIProcess/WebProcessProxy.cpp: + * UIProcess/WebProcessProxy.h: + (WebProcessProxy): + * UIProcess/WebProcessProxy.messages.in: + * UIProcess/mac/WebContextMac.mm: + (WebKit::WebContext::platformInitializeWebProcess): + * WebProcess/Plugins/PluginProcessConnection.cpp: + (WebKit::PluginProcessConnection::PluginProcessConnection): + * WebProcess/Plugins/PluginProcessConnection.h: + (PluginProcessConnection): + * WebProcess/WebConnectionToUIProcess.cpp: + * WebProcess/WebConnectionToUIProcess.h: + (WebConnectionToUIProcess): + * WebProcess/WebCoreSupport/WebChromeClient.cpp: + (WebKit::WebChromeClient::runJavaScriptAlert): + (WebKit::WebChromeClient::runJavaScriptConfirm): + (WebKit::WebChromeClient::runJavaScriptPrompt): * WebProcess/WebProcess.cpp: (WebKit::WebProcess::WebProcess): - (WebKit::WebProcess::didReceiveMessage): + (WebKit::WebProcess::initializeWebProcess): * WebProcess/WebProcess.h: (WebProcess): - (WebKit::WebProcess::batteryManager): - -2012-07-03 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> - - [Qt] Make use of .qmake.cache for caching features - - Instead of loading() features from the files that need them (and re-running - a bunch of checks), we now run feature detection as part of configure.pro, - and have build-webkit write the computed feature-defines and CONFIG to - .qmake.cache, which is then loaded by qmake _before_ even defaults_pre - when building WebKit.pro. - - At some point we'll be able to selectivly prevent running of config tests - in configure.pro, which means we don't need a separate code-path for - the build-webkit --help case. - - We should also move the code in build-webkit that now uses .webkit.config - to detect clean builds, to use .qmake.cache, since we now store the same - thing there. - - Original patch by Oswald Buddenhagen <oswald.buddenhagen@nokia.com> - - Reviewed by Tor Arne Vestbø. - - * DerivedSources.pri: - * Target.pri: - -2012-07-03 Sheriff Bot <webkit.review.bot@gmail.com> - - Unreviewed, rolling out r121766. - http://trac.webkit.org/changeset/121766 - https://bugs.webkit.org/show_bug.cgi?id=90465 - - It caused flakey build errors on the bots (Requested by Ossy - on #webkit). - - * DerivedSources.pri: - * Target.pri: - -2012-07-03 Carlos Garcia Campos <cgarcia@igalia.com> - - [GTK] Add WebKitWebView::context-menu-dismissed signal to WebKit2 GTK+ API - https://bugs.webkit.org/show_bug.cgi?id=90386 - - Reviewed by Martin Robinson. - - * UIProcess/API/gtk/WebKitWebView.cpp: - (webkit_web_view_class_init): Add context-menu-dismissed signal. - (contextMenuDismissed): Emit context-menu-dismissed signal. - (webkitWebViewPopulateContextMenu): Connect to deactivate signal - of the GtkMenu and emit WebKitWebView::context-menu-dismissed when - the gtk menu is deactivated. - * UIProcess/API/gtk/WebKitWebView.h: - (_WebKitWebViewClass): Add virtual methos for - context-menu-dismissed signal. - * UIProcess/API/gtk/tests/TestContextMenu.cpp: - (testContextMenuDismissed): - (beforeAll): - * UIProcess/gtk/WebContextMenuProxyGtk.h: - (WebKit::WebContextMenuProxyGtk::gtkMenu): Get the GtkMenu built - for the context menu proxy. - -2012-07-03 Piotr Roguski <p.roguski@samsung.com> - - [EFL][WK2] Added missing WebPageProxy::ViewIsFocused flag to WebPageProxy::viewStateDidChange() - call in _ewk_view_smart_focus_out() function. - https://bugs.webkit.org/show_bug.cgi?id=89877 - - Reviewed by Andreas Kling. - - Although name of the flag suggest it should be used only on focus in, - omitting it in case of focus out will prevent WebPageProxy::viewStateDidChange() - from sending Messages::WebPage::SetFocused(false). - - * UIProcess/API/efl/ewk_view.cpp: - (_ewk_view_smart_focus_out): - -2012-07-03 Viatcheslav Ostapenko <ostapenko.viatcheslav@nokia.com> - - [Qt][WK2] API tests randomly asserts in QQuickWebPage::setContentsScale(qreal) - https://bugs.webkit.org/show_bug.cgi?id=88679 - - Reviewed by Csaba Osztrogonác. - - Viewport parameters cannot be calculated while viewport is not visible and - viewport size is 0, so let's delay calculation of viewport parameters until view - becomes visible. - - * UIProcess/qt/QtViewportHandler.cpp: - (WebKit::QtViewportHandler::pageContentsSizeChanged): - -2012-07-03 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> - - [Qt] Make use of .qmake.cache for caching features - - Instead of loading() features from the files that need them (and re-running - a bunch of checks), we now run feature detection as part of configure.pro, - and have build-webkit write the computed feature-defines and CONFIG to - .qmake.cache, which is then loaded by qmake _before_ even defaults_pre - when building WebKit.pro. - - At some point we'll be able to selectivly prevent running of config tests - in configure.pro, which means we don't need a separate code-path for - the build-webkit --help case. - - We should also move the code in build-webkit that now uses .webkit.config - to detect clean builds, to use .qmake.cache, since we now store the same - thing there. - - Original patch by Oswald Buddenhagen <oswald.buddenhagen@nokia.com> - - Reviewed by Tor Arne Vestbø. - - * DerivedSources.pri: - * Target.pri: - -2012-07-03 Alexis Menard <alexis.menard@openbossa.org> - - [Qt] When calling accept() on the FilePickerContextObject with an empty list, early return and call reject(). - https://bugs.webkit.org/show_bug.cgi?id=89755 - - Reviewed by Simon Hausmann. - - When calling accept with an empty list of files we can just bailout - and call reject(). Any other processing is pointless. - - * UIProcess/API/qt/tests/qmltests/WebView/tst_singleFileUpload.qml: - * UIProcess/qt/QtDialogRunner.cpp: - (WebKit::FilePickerContextObject::accept): - -2012-07-03 Balazs Kelemen <kbalazs@webkit.org> - - [Qt][WK2] fast/viewport/viewport-91.html still fails after r121555 and r121661 - https://bugs.webkit.org/show_bug.cgi?id=90376 - - Reviewed by Csaba Osztrogonác. - - layoutTestController.dumpConfigurationForViewport still need - to use the constant target DPI of 160. - * WebProcess/WebPage/WebPage.cpp: - (WebKit::WebPage::viewportConfigurationAsText): - -2012-07-03 Christophe Dumez <christophe.dumez@intel.com> - - [EFL][WK2] Add API to deliver a Web Intent to a frame - https://bugs.webkit.org/show_bug.cgi?id=90067 - - Reviewed by Kenneth Rohde Christiansen. - - Add ewk_view_intent_deliver() method on the Ewk_View - to deliver a Web Intent to the view's main frame. - - * UIProcess/API/efl/ewk_view.cpp: - (ewk_view_intent_deliver): - * UIProcess/API/efl/ewk_view.h: - -2012-07-02 Christophe Dumez <christophe.dumez@intel.com> - - [EFL][WK2] Add API to inspect a Web Intent service - https://bugs.webkit.org/show_bug.cgi?id=90066 - - Reviewed by Kenneth Rohde Christiansen. - - Add EFL API to inspect a Web Intent Service and emit - a signal on the view when a new intent service - registers. - - * PlatformEfl.cmake: - * UIProcess/API/efl/EWebKit2.h: - * UIProcess/API/efl/ewk_intent_service.cpp: Added. - (_Ewk_Intent_Service): - (ewk_intent_service_ref): - (ewk_intent_service_unref): - (ewk_intent_service_action_get): - (ewk_intent_service_type_get): - (ewk_intent_service_href_get): - (ewk_intent_service_title_get): - (ewk_intent_service_disposition_get): - (ewk_intent_service_new): - * UIProcess/API/efl/ewk_intent_service.h: Added. - * UIProcess/API/efl/ewk_intent_service_private.h: Copied from Source/WebKit2/UIProcess/API/efl/ewk_view_loader_client.cpp. - * UIProcess/API/efl/ewk_view.cpp: - (ewk_view_intent_service_register): - * UIProcess/API/efl/ewk_view.h: - * UIProcess/API/efl/ewk_view_loader_client.cpp: - (registerIntentServiceForFrame): - (ewk_view_loader_client_attach): - * UIProcess/API/efl/ewk_view_private.h: - -2012-07-02 Christophe Dumez <christophe.dumez@intel.com> - - [WK2][EFL] Free Ewk_Intent calloc'd memory with free() instead of delete - https://bugs.webkit.org/show_bug.cgi?id=90433 - - Reviewed by Kenneth Rohde Christiansen. - - Free calloc'd memory with free() instead of delete in Ewk_Intent. - Add blank lines before return statements for consistency. - - * UIProcess/API/efl/ewk_intent.cpp: - (ewk_intent_unref): - (ewk_intent_action_get): - (ewk_intent_type_get): - (ewk_intent_service_get): - (ewk_intent_suggestions_get): - (ewk_intent_extra_get): - (ewk_intent_extra_names_get): - (ewk_intent_new): - -2012-07-02 Martin Robinson <mrobinson@igalia.com> - - [TextureMapper] The TextureMapper should support edge-distance anti-antialiasing - https://bugs.webkit.org/show_bug.cgi?id=90308 - - Reviewed by Noam Rosenthal. - - * UIProcess/texmap/LayerBackingStore.cpp: - (WebKit::LayerBackingStore::paintToTextureMapper): Update the method to call paint with - the new argument. - -2012-07-02 Benjamin Poulain <bpoulain@apple.com> - - Do not do any logging initialization when logging is disabled - https://bugs.webkit.org/show_bug.cgi?id=90228 - - Reviewed by Simon Fraser. - - * Platform/Logging.cpp: - * Platform/Logging.h: - * UIProcess/WebContext.cpp: - (WebKit::WebContext::WebContext): - * WebProcess/WebProcess.cpp: - (WebKit::WebProcess::WebProcess): - -2012-07-02 No'am Rosenthal <noam.rosenthal@nokia.com> - - [Qt][WK2] New API tests introduced in r121620 fail - https://bugs.webkit.org/show_bug.cgi?id=90372 - - Reviewed by Luiz Agostini. - - Updated the pixel comparison to produce more predictable results. - - * UIProcess/API/qt/tests/qrawwebview/tst_qrawwebview.cpp: - (compareImages): - -2012-07-02 Alexis Menard <alexis.menard@openbossa.org> - - [Qt] Fix WebProcess crash on Mac when accessing a site with video tag. - https://bugs.webkit.org/show_bug.cgi?id=90384 - - Reviewed by Jocelyn Turcotte. - - We need to initialize the private symbols used by MediaPlayerPrivateQTKit - otherwise they will be null and it will lead to a crash. We copy WebSystemInterface - files for WK2 just like the Mac port as WK2 may have different needs than WK1 layer (we - may add or remove symbols in here). It doesn't fix the video rendering yet but it's - first step. - - * Target.pri: - * WebProcess/WebCoreSupport/qt/WebSystemInterface.h: Added. - * WebProcess/WebCoreSupport/qt/WebSystemInterface.mm: Added. - (InitWebCoreSystemInterfaceForWK2): - * WebProcess/qt/WebProcessMainQt.cpp: - (WebKit::WebProcessMainQt): - -2012-07-02 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com> - - [EFL] [WK2] Remove content sniffer and decoder initialization from WebProcess - https://bugs.webkit.org/show_bug.cgi?id=90275 - - Reviewed by Martin Robinson. - - Do not initialize content sniffer and decoder in the WebProcess - because the initialization is now done in WebCore. - - * WebProcess/efl/WebProcessMainEfl.cpp: - (WebKit::WebProcessMainEfl): - -2012-07-02 Sheriff Bot <webkit.review.bot@gmail.com> - - Unreviewed, rolling out r120329, r121113, and r121138. - http://trac.webkit.org/changeset/120329 - http://trac.webkit.org/changeset/121113 - http://trac.webkit.org/changeset/121138 - https://bugs.webkit.org/show_bug.cgi?id=90368 - - Introduced noticeable keyboard-related spins due to - synchronous IPC. (Requested by kling on #webkit). - - * UIProcess/WebPageProxy.cpp: - (WebKit::WebPageProxy::handleKeyboardEvent): - (WebKit::WebPageProxy::didReceiveEvent): - * UIProcess/WebPageProxy.h: - (WebPageProxy): - * UIProcess/WebPageProxy.messages.in: - * WebProcess/WebPage/WebPage.cpp: - (WebKit::WebPage::keyEvent): - -2012-07-01 Christophe Dumez <christophe.dumez@intel.com> - - [EFL][WK2] Add API to inspect a Web Intent - https://bugs.webkit.org/show_bug.cgi?id=89749 - - Reviewed by Kenneth Rohde Christiansen. - - Add EFL API to inspect a Web Intent and emit a signal - on the view when a new intent request is made. - - * PlatformEfl.cmake: - * UIProcess/API/efl/EWebKit2.h: - * UIProcess/API/efl/ewk_intent.cpp: Added. - (_Ewk_Intent): - (ewk_intent_ref): - (ewk_intent_unref): - (ewk_intent_action_get): - (ewk_intent_type_get): - (ewk_intent_service_get): - (ewk_intent_suggestions_get): - (ewk_intent_extra_get): - (ewk_intent_extra_names_get): - (ewk_intent_new): - * UIProcess/API/efl/ewk_intent.h: Added. - * UIProcess/API/efl/ewk_intent_private.h: Copied from Source/WebKit2/UIProcess/API/efl/ewk_view_loader_client.cpp. - * UIProcess/API/efl/ewk_view.cpp: - (ewk_view_intent_request_new): - * UIProcess/API/efl/ewk_view.h: - * UIProcess/API/efl/ewk_view_loader_client.cpp: - (didReceiveIntentForFrame): - (ewk_view_loader_client_attach): - * UIProcess/API/efl/ewk_view_private.h: -2012-06-29 Luiz Agostini <luiz.agostini@nokia.com> +2012-10-03 Hugo Parente Lima <hugo.lima@openbossa.org> - [Qt][WK2] Private non-QtQuick API - https://bugs.webkit.org/show_bug.cgi?id=84532 + [WK2] PageViewportController.cpp is supposed to be a generic WebKit2 file but only works with Qt port. + https://bugs.webkit.org/show_bug.cgi?id=98186 Reviewed by Noam Rosenthal. - Adding new private non-QtQuick API. This new C++ API makes it possible - to have control over the lower levels of WebKit without going via QML. - - This is a first version of the API, enough to show pages on the screen. - Many features are not implemented. - - * Target.pri: - * UIProcess/API/qt/raw/qrawwebview.cpp: Added. - * UIProcess/API/qt/raw/qrawwebview_p.h: Added. - * UIProcess/API/qt/raw/qrawwebview_p_p.h: Added. - - The tests for the new API are pixel tests. They use QRawWebView to load - html files and generate images, and them compare those images to the ones - in UIProcess/API/qt/tests/html/resources. - - * UIProcess/API/qt/tests/html/bluesquare.html: Added. - * UIProcess/API/qt/tests/html/redsquare.html: Added. - * UIProcess/API/qt/tests/html/resources/qwkview_noBackground1.png: Added. - * UIProcess/API/qt/tests/html/resources/qwkview_noBackground3.png: Added. - * UIProcess/API/qt/tests/html/resources/qwkview_paint.png: Added. - * UIProcess/API/qt/tests/qrawwebview/qrawwebview.pro: Added. - * UIProcess/API/qt/tests/qrawwebview/tst_qrawwebview.cpp: Added. - -2012-06-29 Christophe Dumez <christophe.dumez@intel.com> - - [WK2] Move intent delivery code from the frame to the page - https://bugs.webkit.org/show_bug.cgi?id=89974 + Remove the dependece of WebCore::FloatSize to QSize implicit conversion. - Reviewed by Anders Carlsson. - - Move the intent delivery code from the frame to the page - and add the corresponding C API for WKPage. - - * UIProcess/API/C/WKPage.cpp: - (WKPageDeliverIntentToFrame): - * UIProcess/API/C/WKPage.h: - * UIProcess/WebFrameProxy.cpp: - (WebKit::WebFrameProxy::stopLoading): - * UIProcess/WebFrameProxy.h: - (WebKit): - * UIProcess/WebPageProxy.cpp: + * UIProcess/API/qt/qquickwebpage.cpp: + (QQuickWebPagePrivate::updateSize): + * UIProcess/API/qt/qquickwebview.cpp: + (QQuickWebViewLegacyPrivate::updateViewportSize): + (QQuickWebViewFlickablePrivate::updateViewportSize): + * UIProcess/PageViewportController.cpp: + (WebKit::PageViewportController::didRenderFrame): + (WebKit::PageViewportController::pageDidRequestScroll): + (WebKit::PageViewportController::syncVisibleContents): + (WebKit::PageViewportController::viewportSizeInContentsCoordinates): (WebKit): - (WebKit::WebPageProxy::deliverIntentToFrame): - * UIProcess/WebPageProxy.h: - (WebPageProxy): - -2012-06-29 Dan Bernstein <mitz@apple.com> - - Can’t get basic element info from a WKRenderObject - https://bugs.webkit.org/show_bug.cgi?id=90301 - - Reviewed by Anders Carlsson. - - Moved the element info (tag name, id and class names) from WebRenderLayer to WebRenderObject, - and gave WebRenderLayer a reference to a (shallow) WebRenderObject. Added WKRenderObject API - for getting element info, while leaving the WKRenderLayer API in place for now for Safari. - - * Shared/API/c/WKRenderLayer.cpp: - (WKRenderLayerGetRenderer): Added this wrapper. - (WKRenderLayerCopyRendererName): Changed to get the name from the renderer. - (WKRenderLayerCopyElementTagName): Changed to go through the renderer. - (WKRenderLayerCopyElementID): Ditto. - (WKRenderLayerGetElementClassNames): Ditto. - * Shared/API/c/WKRenderLayer.h: Added declaration of WKRenderLayerGetRenderer() and comments - about removing older API. - * Shared/API/c/WKRenderObject.cpp: - (WKRenderObjectCopyElementTagName): Added this wrapper. - (WKRenderObjectCopyElementID): Ditto. - (WKRenderObjectGetElementClassNames): Ditto. - * Shared/API/c/WKRenderObject.h: - * Shared/UserMessageCoders.h: - (WebKit::UserMessageEncoder::baseEncode): Removed the element info from the encoding of - WebRenderLayer, and added the renderer. Added the element info to the encoding of - WebRenderObject. - (WebKit::UserMessageDecoder::baseDecode): Updated to match the encoding changes. - * Shared/WebRenderLayer.cpp: - (WebKit::WebRenderLayer::WebRenderLayer): Changed to initialize the m_renderer member - variable with a WebRenderObject for the layer’s renderer, and removed the initialization of - the element-related member variables that were removed. - * Shared/WebRenderLayer.h: - (WebKit::WebRenderLayer::create): Changed to take a renderer instead of renderer and element - info. - (WebKit::WebRenderLayer::renderer): Added this getter. - (WebKit::WebRenderLayer::WebRenderLayer): Changed to take a renderer instead of renderer and - element info. - * Shared/WebRenderObject.cpp: - (WebKit::WebRenderObject::create): Changed to pass true for the shouldIncludeDescendants - parameter. - (WebKit::WebRenderObject::WebRenderObject): Added a shouldIncludeDescdendants boolean - parameter. When it is false, the m_children array remains null. Added initialization of - member variables with the element’s tag name, id and class list. - * Shared/WebRenderObject.h: - (WebKit::WebRenderObject::create): Added an overload that takes a RenderObject and creates - a shallow WebRenderObject. - (WebRenderObject): Changed to take element tag name, id and class list. - (WebKit::WebRenderObject::elementTagName): Added this getter. - (WebKit::WebRenderObject::elementID): Ditto. - (WebKit::WebRenderObject::elementClassNames): Ditto. - (WebKit::WebRenderObject::WebRenderObject): - -2012-06-29 Tony Chang <tony@chromium.org> - - Unreviewed, rolling out r121572. - http://trac.webkit.org/changeset/121572 - https://bugs.webkit.org/show_bug.cgi?id=90249 - - Breaks Mac build since it depends on r121547, which was rolled - out - - * WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp: - (WebKit::NPN_GetValue): - * WebProcess/WebCoreSupport/WebEditorClient.cpp: - (WebKit::WebEditorClient::shouldEraseMarkersAfterChangeSelection): - * WebProcess/WebCoreSupport/WebEditorClient.h: - -2012-06-29 Eric Seidel <eric@webkit.org> - - Remove BUILDING_ON_LEOPARD now that no ports build on Leopard - https://bugs.webkit.org/show_bug.cgi?id=90249 - - Reviewed by Ryosuke Niwa. - - * WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp: - (WebKit::NPN_GetValue): - * WebProcess/WebCoreSupport/WebEditorClient.cpp: - (WebKit::WebEditorClient::shouldEraseMarkersAfterChangeSelection): - * WebProcess/WebCoreSupport/WebEditorClient.h: - -2012-06-29 Konrad Piascik <kpiascik@rim.com> - - Don't hardcode target dpi of 160 (it should be 96 on desktop) - https://bugs.webkit.org/show_bug.cgi?id=88114 - - Reviewed by Adam Barth. - - Updated the call to computeViewportAttributes. - - * WebProcess/WebPage/WebPage.cpp: - (WebKit::WebPage::sendViewportAttributesChanged): - (WebKit::WebPage::viewportConfigurationAsText): - -2012-06-29 Sheriff Bot <webkit.review.bot@gmail.com> - - Unreviewed, rolling out r121529. - http://trac.webkit.org/changeset/121529 - https://bugs.webkit.org/show_bug.cgi?id=90260 - - Failed to compile on Chromium WebKitMacBuilder (Requested by - keishi on #webkit). - - * UIProcess/mac/WKFullScreenWindowController.mm: - (-[WKFullScreenWindowController finishedEnterFullScreenAnimation:]): - (-[WKFullScreenWindowController beganExitFullScreenWithInitialFrame:WebCore::finalFrame:WebCore::]): - * WebProcess/Plugins/Netscape/mac/NetscapeSandboxFunctions.mm: - * WebProcess/WebCoreSupport/mac/WebSystemInterface.mm: - (InitWebCoreSystemInterface): - -2012-06-29 Eric Seidel <eric@webkit.org> - - Remove more BUILDING_ON_LEOPARD branches now that no port builds on Leopard - https://bugs.webkit.org/show_bug.cgi?id=90252 - - Reviewed by Ryosuke Niwa. - - * UIProcess/mac/WKFullScreenWindowController.mm: - (-[WKFullScreenWindowController finishedEnterFullScreenAnimation:]): - (-[WKFullScreenWindowController beganExitFullScreenWithInitialFrame:WebCore::finalFrame:WebCore::]): - * WebProcess/Plugins/Netscape/mac/NetscapeSandboxFunctions.mm: - * WebProcess/WebCoreSupport/mac/WebSystemInterface.mm: - (InitWebCoreSystemInterface): - -2012-06-28 MORITA Hajime <morrita@google.com> + * UIProcess/PageViewportController.h: + (PageViewportController): - [Refactoring] NodeRenderingContext ctor could be built on top of the ComposedShadowTreeWalker - https://bugs.webkit.org/show_bug.cgi?id=89732 +2012-10-03 Anders Carlsson <andersca@apple.com> - Reviewed by Dimitri Glazkov. + Try to fix the Qt WebKit2 failures. - * win/WebKit2.def: - * win/WebKit2CFLite.def: + * WebProcess/WebPage/DrawingAreaImpl.cpp: + (WebKit::DrawingAreaImpl::DrawingAreaImpl): + Always force compositing if USE(COORDINATED_GRAPHICS) is true. -2012-06-28 John Sullivan <sullivan@apple.com> +2012-10-03 Anders Carlsson <andersca@apple.com> - <https://bugs.webkit.org/show_bug.cgi?id=90216> - <rdar://problem/11766518> - Undo handling in WebKit2 is not robust against some page-closing code paths + Use the XPC service by default on newer systems + https://bugs.webkit.org/show_bug.cgi?id=98297 + <rdar://problem/12424641> - Reviewed by Enrica Casucci. + Reviewed by Sam Weinig. - * UIProcess/API/mac/PageClientImpl.h: - Declared public function viewWillMoveToAnotherWindow(). - - * UIProcess/API/mac/PageClientImpl.mm: - (WebKit::PageClientImpl::viewWillMoveToAnotherWindow): - New function, calls clearAllEditCommands() to remove any Undo actions from the stack. - This guarantees that no Undo actions will be abandoned when the PageClientImpl is dealloc'ed. + * UIProcess/mac/WebProcessProxyMac.mm: + (WebKit::shouldUseXPC): + Return false for older systems. - * UIProcess/API/mac/WKView.mm: - (-[WKView viewWillMoveToWindow:]): - Now informs PageClientImpl via new function PageClientImpl::viewWillMoveToAnotherWindow(). + (WebKit::WebProcessProxy::platformConnect): + Call shouldUseXPC(). -2012-06-28 Christophe Dumez <christophe.dumez@intel.com> +2012-10-02 Andy Estes <aestes@apple.com> - [WK2] Add C API to inspect a Web Intent service - https://bugs.webkit.org/show_bug.cgi?id=89276 + [WebKit2] Add the ability to send messages to the WebPageGroupProxy + https://bugs.webkit.org/show_bug.cgi?id=98233 Reviewed by Anders Carlsson. - Add C API for Web intent service so that it can be queried - on client side. - - * CMakeLists.txt: - * GNUmakefile.list.am: - * Target.pri: - * UIProcess/API/C/WKIntentServiceInfo.cpp: Added. - (WKIntentServiceInfoGetTypeID): - (WKIntentServiceInfoCopyAction): - (WKIntentServiceInfoCopyType): - (WKIntentServiceInfoCopyHref): - (WKIntentServiceInfoCopyTitle): - (WKIntentServiceInfoCopyDisposition): - * UIProcess/API/C/WKIntentServiceInfo.h: Added. - -2012-06-28 Balazs Kelemen <kbalazs@webkit.org> - - [Qt] KURL assert at fast/loader/opaque-base-url.html - https://bugs.webkit.org/show_bug.cgi?id=89468 - - Reviewed by Simon Hausmann. - - Don't use the KURL(ParsedURLStringTag, const String&) constructor. - We cannot be sure that the url in encode was valid and even if it - was the message could have been corrupted. - * Shared/qt/WebCoreArgumentCodersQt.cpp: - (CoreIPC::::encode): - (CoreIPC::::decode): - -2012-06-27 Carlos Garcia Campos <cgarcia@igalia.com> - - Unreviewed. Fix the build without TEXTURE_MAPPER_GL. - - * WebProcess/WebPage/gtk/LayerTreeHostGtk.cpp: - * WebProcess/WebPage/gtk/LayerTreeHostGtk.h: - * WebProcess/WebPage/gtk/WebPageGtk.cpp: - (WebKit::WebPage::platformInitialize): - -2012-06-25 Mark Hahnenberg <mhahnenberg@apple.com> - - JSLock should be per-JSGlobalData - https://bugs.webkit.org/show_bug.cgi?id=89123 - - Reviewed by Geoffrey Garen. - - Changed all sites that used JSLock to instead use the new JSLockHolder - and pass in the correct JS context that the code is about to interact with that - needs protection. Also added a couple JSLocks to places that didn't already - have it that needed it. - - * Shared/mac/WebMemorySampler.mac.mm: - (WebKit::WebMemorySampler::sampleWebKit): - * WebProcess/InjectedBundle/InjectedBundle.cpp: - (WebKit::InjectedBundle::javaScriptObjectsCount): - (WebKit::InjectedBundle::reportException): - * WebProcess/Plugins/Netscape/JSNPObject.cpp: - (WebKit::JSNPObject::callMethod): - (WebKit::JSNPObject::callObject): - (WebKit::JSNPObject::callConstructor): - (WebKit::JSNPObject::put): - (WebKit::JSNPObject::deleteProperty): - (WebKit::JSNPObject::getOwnPropertyNames): - (WebKit::JSNPObject::propertyGetter): - * WebProcess/Plugins/Netscape/NPJSObject.cpp: - (WebKit::NPJSObject::hasMethod): - (WebKit::NPJSObject::invoke): - (WebKit::NPJSObject::invokeDefault): - (WebKit::NPJSObject::hasProperty): - (WebKit::NPJSObject::getProperty): - (WebKit::NPJSObject::setProperty): - (WebKit::NPJSObject::removeProperty): - (WebKit::NPJSObject::enumerate): - (WebKit::NPJSObject::construct): - * WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp: - (WebKit::NPRuntimeObjectMap::convertJSValueToNPVariant): - (WebKit::NPRuntimeObjectMap::evaluate): - (WebKit::NPRuntimeObjectMap::moveGlobalExceptionToExecState): - * WebProcess/WebPage/WebFrame.cpp: - (WebKit::WebFrame::jsWrapperForWorld): - (WebKit::WebFrame::computedStyleIncludingVisitedInfo): - * WebProcess/WebPage/WebPage.cpp: - (WebKit::WebPage::runJavaScriptInMainFrame): + Add a WebPageGroupProxy.messages.in, implement a stub message receiver + in WebPageGroupProxy, and teach WebProcess how to route messages to the + appropriate WebPageGroupProxy. + + * CMakeLists.txt: Tell a build system about added files. + * DerivedSources.make: Ditto. + * DerivedSources.pri: Ditto. + * GNUmakefile.list.am: Ditto. + * WebKit2.xcodeproj/project.pbxproj: Ditto. + * win/WebKit2.vcproj: Ditto. + * Platform/CoreIPC/MessageID.h: Add MessageClassWebPageGroupProxy. + * WebProcess/WebPage/WebPageGroupProxy.cpp: + (WebKit::WebPageGroupProxy::didReceiveMessage): Stub out the method + that will receive messages. + (WebKit::WebPageGroupProxy::didReceiveWebPageGroupProxyMessage): Stub + out a method that will exist in WebPageGroupProxyMessageReceiver.cpp + once WebPageGroupProxy.messages.in contains messages. + * WebProcess/WebPage/WebPageGroupProxy.h: + * WebProcess/WebPage/WebPageGroupProxy.messages.in: Added. * WebProcess/WebProcess.cpp: - (WebKit::WebProcess::getWebCoreStatistics): - -2012-06-27 Thiago Marcos P. Santos <thiago.santos@intel.com> - - REGRESSION(r121135): It made qmltests::WebViewColorChooser::test_accept() fail - https://bugs.webkit.org/show_bug.cgi?id=89871 - - Reviewed by Simon Hausmann. - - Added proper event synchronization to the test case. - - * UIProcess/API/qt/tests/qmltests/WebView/tst_colorChooser.qml: - -2012-06-27 Brady Eidson <beidson@apple.com> - - https://bugs.webkit.org/show_bug.cgi?id=87513 - WebBackForwardList needs an overhaul to consistently and clearly handle error conditions. - - Reviewed by Darin Adler. - - - We think a null entry might somehow be getting in the list so we now try to prevent that. - - We think a null entry might somehow be in the list so we now null check when indexing into m_entries. - - A lot of index math - especially tracking "no current index" - was implicit or wrong. - - Operating on a WebBackForwardList whose page has been closed is now an explicit no-op. - - The session state data reading and writing code was fragile and needed an overhaul. - - This includes adding a new V1 format of the session data that is easier to validate when reading back in. - - * UIProcess/WebBackForwardList.cpp: - (WebKit::WebBackForwardList::~WebBackForwardList): - (WebKit::WebBackForwardList::pageClosed): - (WebKit::WebBackForwardList::addItem): - (WebKit::WebBackForwardList::goToItem): - (WebKit::WebBackForwardList::backListCount): - (WebKit::WebBackForwardList::forwardListCount): - (WebKit::WebBackForwardList::backListAsImmutableArrayWithLimit): - (WebKit::WebBackForwardList::forwardListAsImmutableArrayWithLimit): - (WebKit::WebBackForwardList::clear): - - * UIProcess/WebBackForwardList.h: - (WebBackForwardList): - - * UIProcess/cf/WebBackForwardListCF.cpp: - (WebKit::createEmptySessionHistoryDictionary): - (WebKit::WebBackForwardList::createCFDictionaryRepresentation): - (WebKit::WebBackForwardList::restoreFromCFDictionaryRepresentation): - (WebKit::WebBackForwardList::restoreFromV0CFDictionaryRepresentation): - (WebKit::WebBackForwardList::restoreFromV1CFDictionaryRepresentation): - (WebKit::extractBackForwardListEntriesFromArray): - -2012-06-27 Zan Dobersek <zandobersek@gmail.com> - - [Gtk] Add support for the Gamepad API - https://bugs.webkit.org/show_bug.cgi?id=87503 - - Reviewed by Carlos Garcia Campos. - - Add the Gamepad feature dependencies libraries to the LIBADD - list for the libwebkitgtk2 library. - - * GNUmakefile.am: + (WebKit::WebProcess::didReceiveMessage): Route messages to the + WebPageGroupProxy matching destinationID if the message is of class + MessageClassWebPageGroupProxy. -2012-06-26 Simon Hausmann <simon.hausmann@nokia.com> +2012-10-02 Anders Carlsson <andersca@apple.com> - [Qt] Avoid use of deprecated Qt API + Change most GraphicsLayer::create calls to use the version that takes a GraphicsLayerFactory + https://bugs.webkit.org/show_bug.cgi?id=98217 - Reviewed by Tor Arne Vestbø. - - QGuiApplication::inputPanel() has been deprecated in favour of - inputMethod(). - - * UIProcess/qt/QtWebPageEventHandler.cpp: - (WebKit::QtWebPageEventHandler::QtWebPageEventHandler): - (WebKit::QtWebPageEventHandler::~QtWebPageEventHandler): - (WebKit::setInputPanelVisible): - (WebKit::QtWebPageEventHandler::inputPanelVisibleChanged): - (WebKit::QtWebPageEventHandler::updateTextInputState): - -2012-06-26 Christophe Dumez <christophe.dumez@intel.com> - - [WK2][GTK] Uninitialized variable in TextCheckerGtk.cpp - https://bugs.webkit.org/show_bug.cgi?id=89948 - - Reviewed by Martin Robinson. - - Properly initialize didInitializeState in - TextChecker::state(). - - * UIProcess/gtk/TextCheckerGtk.cpp: - (WebKit::TextChecker::state): - -2012-06-25 Simon Hausmann <simon.hausmann@nokia.com> - - [Qt] Make it possible to build WebKit without QtWidgets - https://bugs.webkit.org/show_bug.cgi?id=78109 - - Reviewed by Tor Arne Vestbø. - - * WebKit2.pri: Add missing WK2 specific dependencies. - * qt/MainQt.cpp: Do the QStyle initialization hook only if we are - compiling with QtWidgets support. - (WebKit): - (main): - -2012-06-25 Raphael Kubo da Costa <rakuco@webkit.org> - - [EFL][WK2] Include unistd.h in PlatformProcessIdentifier.h. - https://bugs.webkit.org/show_bug.cgi?id=89804 - - Reviewed by Hajime Morita. - - The pid_t typedef ends up coming from stdlib.h (indirectly via WTF - includes) on Mac and Linux, even though that is not mandated by - POSIX and breaks other platforms (such as FreeBSD). Fix that by - explicitly including unistd.h, which is where the typedef is - supposed to come from. - - * Platform/PlatformProcessIdentifier.h: - -2012-06-25 YoungTaeck Song <youngtaeck.song@samsung.com> - - [WK2][Qt][EFL] Extract common code from LayerTreeHostQt - https://bugs.webkit.org/show_bug.cgi?id=89837 - - Reviewed by Noam Rosenthal. - - Extract common code from LayerTreeHostQt to be used by both Qt and Efl. - I renamed LayerTreeHost to LayerTreeCoordinator, and these are moved under WebProcess/WebPage/LayerTreeCoordinator. - I Modified LayerTreeHostProxy to LayerTreeCoordinatorProxy too, Because LayerTreeHostProxy and LayerTreeHost were pair. - Also WebGraphicsLayer moved under that directory. + Reviewed by Andreas Kling. - * CMakeLists.txt: - * DerivedSources.pri: - * GNUmakefile.list.am: - * Platform/CoreIPC/MessageID.h: - * Target.pri: - * UIProcess/API/qt/qquickwebpage.cpp: - (QQuickWebPagePrivate::paint): - (QQuickWebPage::updatePaintNode): - (QQuickWebPagePrivate::updateSize): - * UIProcess/DrawingAreaProxy.cpp: - (WebKit::DrawingAreaProxy::didReceiveLayerTreeCoordinatorProxyMessage): - * UIProcess/DrawingAreaProxy.h: - (WebKit): - (WebKit::DrawingAreaProxy::layerTreeCoordinatorProxy): - (DrawingAreaProxy): - * UIProcess/DrawingAreaProxyImpl.cpp: - (WebKit::DrawingAreaProxyImpl::DrawingAreaProxyImpl): - (WebKit::DrawingAreaProxyImpl::enterAcceleratedCompositingMode): - (WebKit::DrawingAreaProxyImpl::didReceiveLayerTreeCoordinatorProxyMessage): - (WebKit::DrawingAreaProxyImpl::setVisibleContentsRect): - * UIProcess/DrawingAreaProxyImpl.h: - (WebKit): - (DrawingAreaProxyImpl): - * UIProcess/LayerTreeCoordinatorProxy.cpp: Renamed from Source/WebKit2/UIProcess/LayerTreeHostProxy.cpp. - (WebKit): - (WebKit::LayerTreeCoordinatorProxy::LayerTreeCoordinatorProxy): - (WebKit::LayerTreeCoordinatorProxy::~LayerTreeCoordinatorProxy): - (WebKit::LayerTreeCoordinatorProxy::updateViewport): - (WebKit::LayerTreeCoordinatorProxy::dispatchUpdate): - (WebKit::LayerTreeCoordinatorProxy::createTileForLayer): - (WebKit::LayerTreeCoordinatorProxy::updateTileForLayer): - (WebKit::LayerTreeCoordinatorProxy::removeTileForLayer): - (WebKit::LayerTreeCoordinatorProxy::deleteCompositingLayer): - (WebKit::LayerTreeCoordinatorProxy::setRootCompositingLayer): - (WebKit::LayerTreeCoordinatorProxy::setCompositingLayerState): - (WebKit::LayerTreeCoordinatorProxy::setCompositingLayerChildren): - (WebKit::LayerTreeCoordinatorProxy::setCompositingLayerFilters): - (WebKit::LayerTreeCoordinatorProxy::didRenderFrame): - (WebKit::LayerTreeCoordinatorProxy::createDirectlyCompositedImage): - (WebKit::LayerTreeCoordinatorProxy::destroyDirectlyCompositedImage): - (WebKit::LayerTreeCoordinatorProxy::setContentsSize): - (WebKit::LayerTreeCoordinatorProxy::setVisibleContentsRect): - (WebKit::LayerTreeCoordinatorProxy::renderNextFrame): - (WebKit::LayerTreeCoordinatorProxy::didChangeScrollPosition): - (WebKit::LayerTreeCoordinatorProxy::syncCanvas): - (WebKit::LayerTreeCoordinatorProxy::purgeBackingStores): - * UIProcess/LayerTreeCoordinatorProxy.h: Renamed from Source/WebKit2/UIProcess/LayerTreeHostProxy.h. - (WebKit): - (LayerTreeCoordinatorProxy): - (WebKit::LayerTreeCoordinatorProxy::layerTreeRenderer): - * UIProcess/LayerTreeCoordinatorProxy.messages.in: Renamed from Source/WebKit2/UIProcess/LayerTreeHostProxy.messages.in. - * UIProcess/WebLayerTreeRenderer.cpp: - (WebKit::WebLayerTreeRenderer::WebLayerTreeRenderer): - (WebKit::WebLayerTreeRenderer::updateViewport): - (WebKit::WebLayerTreeRenderer::renderNextFrame): - (WebKit::WebLayerTreeRenderer::purgeBackingStores): - (WebKit::WebLayerTreeRenderer::detach): - * UIProcess/WebLayerTreeRenderer.h: - (WebKit): - (WebLayerTreeRenderer): - * UIProcess/WebPageProxy.cpp: - (WebKit::WebPageProxy::didReceiveMessage): - * WebKit2.pri: - * WebProcess/WebPage/DrawingArea.h: - (DrawingArea): - * WebProcess/WebPage/DrawingAreaImpl.cpp: - (WebKit::DrawingAreaImpl::didReceiveLayerTreeCoordinatorMessage): - * WebProcess/WebPage/DrawingAreaImpl.h: - (DrawingAreaImpl): - * WebProcess/WebPage/LayerTreeCoordinator/LayerTreeCoordinator.cpp: Renamed from Source/WebKit2/WebProcess/WebPage/qt/LayerTreeHostQt.cpp. - (WebKit): - (WebKit::LayerTreeCoordinator::create): - (WebKit::LayerTreeCoordinator::~LayerTreeCoordinator): + * WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp: (WebKit::LayerTreeCoordinator::LayerTreeCoordinator): - (WebKit::LayerTreeCoordinator::setLayerFlushSchedulingEnabled): - (WebKit::LayerTreeCoordinator::scheduleLayerFlush): - (WebKit::LayerTreeCoordinator::cancelPendingLayerFlush): - (WebKit::LayerTreeCoordinator::setShouldNotifyAfterNextScheduledLayerFlush): - (WebKit::LayerTreeCoordinator::setRootCompositingLayer): - (WebKit::LayerTreeCoordinator::invalidate): - (WebKit::LayerTreeCoordinator::setNonCompositedContentsNeedDisplay): - (WebKit::LayerTreeCoordinator::scrollNonCompositedContents): - (WebKit::LayerTreeCoordinator::forceRepaint): - (WebKit::LayerTreeCoordinator::sizeDidChange): - (WebKit::LayerTreeCoordinator::didInstallPageOverlay): - (WebKit::LayerTreeCoordinator::didUninstallPageOverlay): - (WebKit::LayerTreeCoordinator::setPageOverlayNeedsDisplay): - (WebKit::LayerTreeCoordinator::setPageOverlayOpacity): - (WebKit::LayerTreeCoordinator::flushPendingLayerChanges): - (WebKit::LayerTreeCoordinator::syncLayerState): - (WebKit::LayerTreeCoordinator::syncLayerChildren): - (WebKit::LayerTreeCoordinator::syncCanvas): - (WebKit::LayerTreeCoordinator::syncLayerFilters): - (WebKit::LayerTreeCoordinator::attachLayer): - (WebKit::LayerTreeCoordinator::detachLayer): - (WebKit::updateOffsetFromViewportForSelf): - (WebKit::updateOffsetFromViewportForLayer): - (WebKit::LayerTreeCoordinator::syncFixedLayers): - (WebKit::LayerTreeCoordinator::performScheduledLayerFlush): - (WebKit::LayerTreeCoordinator::layerFlushTimerFired): (WebKit::LayerTreeCoordinator::createPageOverlayLayer): - (WebKit::LayerTreeCoordinator::destroyPageOverlayLayer): - (WebKit::LayerTreeCoordinator::adoptImageBackingStore): - (WebKit::LayerTreeCoordinator::releaseImageBackingStore): - (WebKit::LayerTreeCoordinator::notifyAnimationStarted): - (WebKit::LayerTreeCoordinator::notifySyncRequired): - (WebKit::LayerTreeCoordinator::paintContents): - (WebKit::LayerTreeCoordinator::showDebugBorders): - (WebKit::LayerTreeCoordinator::showRepaintCounter): - (WebKit::LayerTreeHost::supportsAcceleratedCompositing): - (WebKit::LayerTreeCoordinator::createTile): - (WebKit::LayerTreeCoordinator::updateTile): - (WebKit::LayerTreeCoordinator::removeTile): - (WebKit::LayerTreeCoordinator::visibleContentsRect): - (WebKit::LayerTreeCoordinator::setVisibleContentsRect): - (WebKit::LayerTreeCoordinator::renderNextFrame): - (WebKit::LayerTreeCoordinator::layerTreeTileUpdatesAllowed): - (WebKit::LayerTreeCoordinator::purgeBackingStores): - (WebKit::LayerTreeCoordinator::beginContentUpdate): - * WebProcess/WebPage/LayerTreeCoordinator/LayerTreeCoordinator.h: Renamed from Source/WebKit2/WebProcess/WebPage/qt/LayerTreeHostQt.h. - (WebKit): - (LayerTreeCoordinator): - (WebKit::LayerTreeCoordinator::layerTreeContext): - (WebKit::LayerTreeCoordinator::pageOverlayShouldApplyFadeWhenPainting): - (WebKit::LayerTreeCoordinator::pauseRendering): - (WebKit::LayerTreeCoordinator::resumeRendering): - (WebKit::LayerTreeCoordinator::deviceScaleFactorDidChange): - * WebProcess/WebPage/LayerTreeCoordinator/LayerTreeCoordinator.messages.in: Renamed from Source/WebKit2/WebProcess/WebPage/LayerTreeHost.messages.in. - * WebProcess/WebPage/LayerTreeCoordinator/WebGraphicsLayer.cpp: Renamed from Source/WebKit2/WebProcess/WebCoreSupport/WebGraphicsLayer.cpp. - (WebCore): - (WebCore::layerByIDMap): - (WebCore::WebGraphicsLayer::layerByID): - (WebCore::toWebLayerID): - (WebCore::WebGraphicsLayer::didChangeLayerState): - (WebCore::WebGraphicsLayer::didChangeChildren): - (WebCore::WebGraphicsLayer::didChangeFilters): - (WebCore::WebGraphicsLayer::setShouldUpdateVisibleRect): - (WebCore::WebGraphicsLayer::didChangeGeometry): - (WebCore::WebGraphicsLayer::WebGraphicsLayer): - (WebCore::WebGraphicsLayer::~WebGraphicsLayer): - (WebCore::WebGraphicsLayer::willBeDestroyed): - (WebCore::WebGraphicsLayer::setChildren): - (WebCore::WebGraphicsLayer::addChild): - (WebCore::WebGraphicsLayer::addChildAtIndex): - (WebCore::WebGraphicsLayer::addChildAbove): - (WebCore::WebGraphicsLayer::addChildBelow): - (WebCore::WebGraphicsLayer::replaceChild): - (WebCore::WebGraphicsLayer::removeFromParent): - (WebCore::WebGraphicsLayer::setPosition): - (WebCore::WebGraphicsLayer::setAnchorPoint): - (WebCore::WebGraphicsLayer::setSize): - (WebCore::WebGraphicsLayer::setTransform): - (WebCore::WebGraphicsLayer::setChildrenTransform): - (WebCore::WebGraphicsLayer::setPreserves3D): - (WebCore::WebGraphicsLayer::setMasksToBounds): - (WebCore::WebGraphicsLayer::setDrawsContent): - (WebCore::WebGraphicsLayer::setContentsOpaque): - (WebCore::WebGraphicsLayer::setBackfaceVisibility): - (WebCore::WebGraphicsLayer::setOpacity): - (WebCore::WebGraphicsLayer::setContentsRect): - (WebCore::WebGraphicsLayer::setContentsNeedsDisplay): - (WebCore::WebGraphicsLayer::setContentsToCanvas): - (WebCore::WebGraphicsLayer::setFilters): - (WebCore::WebGraphicsLayer::setContentsToImage): - (WebCore::WebGraphicsLayer::setMaskLayer): - (WebCore::WebGraphicsLayer::setReplicatedByLayer): - (WebCore::WebGraphicsLayer::setNeedsDisplay): - (WebCore::WebGraphicsLayer::setNeedsDisplayInRect): - (WebCore::WebGraphicsLayer::id): - (WebCore::WebGraphicsLayer::syncCompositingState): - (WebCore::toWebGraphicsLayer): - (WebCore::WebGraphicsLayer::syncChildren): - (WebCore::WebGraphicsLayer::syncFilters): - (WebCore::WebGraphicsLayer::syncLayerState): - (WebCore::WebGraphicsLayer::syncCanvas): - (WebCore::WebGraphicsLayer::ensureImageBackingStore): - (WebCore::WebGraphicsLayer::syncCompositingStateForThisLayerOnly): - (WebCore::WebGraphicsLayer::tiledBackingStorePaintBegin): - (WebCore::WebGraphicsLayer::setRootLayer): - (WebCore::WebGraphicsLayer::setVisibleContentRectTrajectoryVector): - (WebCore::WebGraphicsLayer::setContentsScale): - (WebCore::WebGraphicsLayer::effectiveContentsScale): - (WebCore::WebGraphicsLayer::adjustContentsScale): - (WebCore::WebGraphicsLayer::createBackingStore): - (WebCore::WebGraphicsLayer::tiledBackingStorePaint): - (WebCore::WebGraphicsLayer::tiledBackingStorePaintEnd): - (WebCore::WebGraphicsLayer::tiledBackingStoreUpdatesAllowed): - (WebCore::WebGraphicsLayer::tiledBackingStoreContentsRect): - (WebCore::WebGraphicsLayer::shouldUseTiledBackingStore): - (WebCore::WebGraphicsLayer::tiledBackingStoreVisibleRect): - (WebCore::WebGraphicsLayer::tiledBackingStoreBackgroundColor): - (WebCore::WebGraphicsLayer::beginContentUpdate): - (WebCore::WebGraphicsLayer::createTile): - (WebCore::WebGraphicsLayer::updateTile): - (WebCore::WebGraphicsLayer::removeTile): - (WebCore::WebGraphicsLayer::updateContentBuffers): - (WebCore::WebGraphicsLayer::purgeBackingStores): - (WebCore::WebGraphicsLayer::setWebGraphicsLayerClient): - (WebCore::WebGraphicsLayer::adjustVisibleRect): - (WebCore::WebGraphicsLayer::computeTransformedVisibleRect): - (WebCore::createWebGraphicsLayer): - (WebCore::WebGraphicsLayer::initFactory): - (WebCore::WebGraphicsLayer::selfOrAncestorHaveNonAffineTransforms): - * WebProcess/WebPage/LayerTreeCoordinator/WebGraphicsLayer.h: Renamed from Source/WebKit2/WebProcess/WebCoreSupport/WebGraphicsLayer.h. - (WebCore): - (WebKit): - (WebGraphicsLayerClient): - (WebGraphicsLayer): - (WebCore::WebGraphicsLayer::image): - (WebCore::WebGraphicsLayer::fixedToViewport): - (WebCore::WebGraphicsLayer::setFixedToViewport): - (WebCore::WebGraphicsLayer::maskTarget): - (WebCore::WebGraphicsLayer::setMaskTarget): - * WebProcess/WebPage/LayerTreeHost.cpp: - (WebKit::LayerTreeHost::create): - * WebProcess/WebPage/LayerTreeHost.h: - (LayerTreeHost): - * WebProcess/WebPage/WebPage.cpp: - (WebKit::WebPage::didReceiveMessage): - -2012-06-25 Anders Carlsson <andersca@apple.com> - - [Lion WK2] fast/loader/reload-zero-byte-plugin.html hits assert - https://bugs.webkit.org/show_bug.cgi?id=89611 - <rdar://problem/11714023> - - Reviewed by Sam Weinig. - - Make sure to send the response along to the plug-in in the case where the stream was empty. - - * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: - (WebKit::WebFrameLoaderClient::finishedLoading): - -2012-06-25 YoungTaeck Song <youngtaeck.song@samsung.com> - - [WK2][Qt][EFL] Move LayerBackingStore into common directory - https://bugs.webkit.org/show_bug.cgi?id=89838 - - Reviewed by Noam Rosenthal. - - Move LayerBackingStore into 'Source/WebKit2/UIProcess/texmap' to be used by both Qt and Efl. - - * Target.pri: - * UIProcess/texmap/LayerBackingStore.cpp: Renamed from Source/WebKit2/UIProcess/qt/LayerBackingStore.cpp. - (WebKit): - (WebKit::LayerBackingStoreTile::swapBuffers): - (WebKit::LayerBackingStoreTile::setBackBuffer): - (WebKit::LayerBackingStore::createTile): - (WebKit::LayerBackingStore::removeTile): - (WebKit::LayerBackingStore::updateTile): - (WebKit::LayerBackingStore::texture): - (WebKit::LayerBackingStore::paintToTextureMapper): - (WebKit::LayerBackingStore::commitTileOperations): - * UIProcess/texmap/LayerBackingStore.h: Renamed from Source/WebKit2/UIProcess/qt/LayerBackingStore.h. - (WebKit): - (LayerBackingStoreTile): - (WebKit::LayerBackingStoreTile::LayerBackingStoreTile): - (WebKit::LayerBackingStoreTile::scale): - (LayerBackingStore): - (WebKit::LayerBackingStore::create): - (WebKit::LayerBackingStore::LayerBackingStore): - -2012-06-25 Carlos Garcia Campos <cgarcia@igalia.com> - - [GTK] Test /webkit2/WebKitWebView/permission-requests fails due to a runtime warning - https://bugs.webkit.org/show_bug.cgi?id=89858 - - Reviewed by Xan Lopez. - - * UIProcess/API/gtk/tests/TestWebKitWebView.cpp: - (testWebViewPermissionRequests): Make runtime warnings non-fatal - for test /webkit2/WebKitWebView/permission-requests. - -2012-06-25 Huang Dongsung <luxtella@company100.net> - - [GTK] Remove unused code in LayerTreeHostGtk. - https://bugs.webkit.org/show_bug.cgi?id=89854 - - LayerTreeHostGtk::deviceScaleFactor() is unused and LayerTreeHost does not have - virtual float deviceScaleFactor() const; - - Reviewed by Martin Robinson. - + * WebProcess/WebPage/ca/LayerTreeHostCA.cpp: + (WebKit::LayerTreeHostCA::initialize): + (WebKit::LayerTreeHostCA::createPageOverlayLayer): * WebProcess/WebPage/gtk/LayerTreeHostGtk.cpp: - * WebProcess/WebPage/gtk/LayerTreeHostGtk.h: - (LayerTreeHostGtk): - -2012-06-24 Andreas Kling <kling@webkit.org> - - REGRESSION(r120329): Intermittent WebProcess shutdowns due to out-of-line DidReceiveEvent messages. - <rdar://problem/11686974> - <http://webkit.org/b/89659> - - Unreviewed tests assertion fix, handleKeyboardEvent() should call didReceiveKeyEvent() - rather than didReceiveEvent(). - - * UIProcess/WebPageProxy.cpp: - (WebKit::WebPageProxy::handleKeyboardEvent): - (WebKit::WebPageProxy::didReceiveKeyEvent): - -2012-06-24 YoungTaeck Song <youngtaeck.song@samsung.com> - - [WK2][Qt][EFL] Modify Qt specific code to common code - https://bugs.webkit.org/show_bug.cgi?id=89839 - - Reviewed by Noam Rosenthal. - - Modify paintToGraphicsContext’s first argument QPainter to PlatformGraphicsContext to be used by both Qt and Efl. - - * UIProcess/WebLayerTreeRenderer.cpp: - (WebKit::WebLayerTreeRenderer::paintToGraphicsContext): - -2012-06-24 Simon Fraser <simon.fraser@apple.com> - - Rename isPositioned to isOutOfFlowPositioned for clarity - https://bugs.webkit.org/show_bug.cgi?id=89836 - - Reviewed by Antti Koivisto. - - RenderObject and RenderStyle had an isPositioned() method that was - confusing, because it excluded relative positioning. Rename to - isOutOfFlowPositioned(), which makes it clearer that it only applies - to absolute and fixed positioning. - - Simple rename; no behavior change. - - * WebProcess/WebPage/qt/LayerTreeHostQt.cpp: - (WebKit::updateOffsetFromViewportForSelf): - -2012-06-24 Andreas Kling <kling@webkit.org> - - REGRESSION(r120329): Intermittent WebProcess shutdowns due to out-of-line DidReceiveEvent messages. - <rdar://problem/11686974> - <http://webkit.org/b/89659> - - Reviewed by Sam Weinig. - - Instead of sending DidReceiveEvent for key events as DispatchMessageEvenWhenWaitingForSyncReply, - use proper synchronous messages. This makes the WebProcess block while the UIProcess handles - the event but prevents a weird race condition where DidReceiveEvent gets dispatched just before - a synchronous DecidePolicyForNavigationAction and something happens below DidReceiveEvent that - invalidates the frame ID passed to DecidePolicyForNavigationAction. - - This is a speculative fire-fighting fix. - - * UIProcess/WebPageProxy.cpp: - (WebKit::WebPageProxy::didReceiveKeyEvent): - (WebKit::WebPageProxy::didReceiveEvent): - * UIProcess/WebPageProxy.h: - * UIProcess/WebPageProxy.messages.in: - * WebProcess/WebPage/WebPage.cpp: - (WebKit::WebPage::keyEvent): - -2012-06-23 Sheriff Bot <webkit.review.bot@gmail.com> - - Unreviewed, rolling out r121058. - http://trac.webkit.org/changeset/121058 - https://bugs.webkit.org/show_bug.cgi?id=89809 - - Patch causes plugins tests to crash in GTK debug builds - (Requested by zdobersek on #webkit). - - * Shared/mac/WebMemorySampler.mac.mm: - (WebKit::WebMemorySampler::sampleWebKit): - * WebProcess/InjectedBundle/InjectedBundle.cpp: - (WebKit::InjectedBundle::javaScriptObjectsCount): - (WebKit::InjectedBundle::reportException): - * WebProcess/Plugins/Netscape/JSNPObject.cpp: - (WebKit::JSNPObject::callMethod): - (WebKit::JSNPObject::callObject): - (WebKit::JSNPObject::callConstructor): - (WebKit::JSNPObject::put): - (WebKit::JSNPObject::deleteProperty): - (WebKit::JSNPObject::getOwnPropertyNames): - (WebKit::JSNPObject::propertyGetter): - * WebProcess/Plugins/Netscape/NPJSObject.cpp: - (WebKit::NPJSObject::hasMethod): - (WebKit::NPJSObject::invoke): - (WebKit::NPJSObject::invokeDefault): - (WebKit::NPJSObject::hasProperty): - (WebKit::NPJSObject::getProperty): - (WebKit::NPJSObject::setProperty): - (WebKit::NPJSObject::removeProperty): - (WebKit::NPJSObject::enumerate): - (WebKit::NPJSObject::construct): - * WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp: - (WebKit::NPRuntimeObjectMap::convertJSValueToNPVariant): - (WebKit::NPRuntimeObjectMap::evaluate): - (WebKit::NPRuntimeObjectMap::moveGlobalExceptionToExecState): - * WebProcess/WebPage/WebFrame.cpp: - (WebKit::WebFrame::jsWrapperForWorld): - (WebKit::WebFrame::computedStyleIncludingVisitedInfo): - * WebProcess/WebPage/WebPage.cpp: - (WebKit::WebPage::runJavaScriptInMainFrame): - * WebProcess/WebProcess.cpp: - (WebKit::WebProcess::getWebCoreStatistics): - -2012-06-23 Zan Dobersek <zandobersek@gmail.com> - - Unreviewed build fix for GTK's WebKit2 build after r121093. - - * UIProcess/API/gtk/WebKitWebView.cpp: - (webkitWebViewPopulateContextMenu): - -2012-06-23 Carlos Garcia Campos <cgarcia@igalia.com> - - Unreviewed. Fix several GTK+ unit tests. - - GTK+ unit tests using WebViewTest::wait() started to fail due to a - bug introduced in r121093. - - * UIProcess/API/gtk/tests/WebViewTest.cpp: - (WebViewTest::wait): Use this instead of m_mainLoop as user data - for the idle callback. + (WebKit::LayerTreeHostGtk::initialize): + (WebKit::LayerTreeHostGtk::createPageOverlayLayer): + * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm: + (WebKit::TiledCoreAnimationDrawingArea::createPageOverlayLayer): -2012-06-23 Carlos Garcia Campos <cgarcia@igalia.com> +2012-10-03 Alberto Garcia <agarcia@igalia.com> - [GTK] Add ContextMenu API to WebKit2 GTK+ API - https://bugs.webkit.org/show_bug.cgi?id=81011 + [GTK] [WK2] Unused variable in webkitWebViewLoadChanged + https://bugs.webkit.org/show_bug.cgi?id=98271 Reviewed by Martin Robinson. - Add WebKitWebView::context-menu signal and WebKitContextMenu and - WebKitContextMenuItem objects to customize the default menu or - buils new menus. - - * GNUmakefile.list.am: Add new files to destination. - * UIProcess/API/gtk/WebKitContextMenu.cpp: Added. - (webkitContextMenuFinalize): - (webkit_context_menu_init): - (webkit_context_menu_class_init): - (webkitContextMenuPopulate): Populate the given vector of - ContextMenuItems with the WebKitContextMenu items releasing the - items added to the vector. - (webkitContextMenuCreate): Create a new WebKitContextMenu for the - given WKArrayRef of WKContextMenuItemRef. - (webkitContextMenuSetParentItem): Set the parent menu item of the - menu. Used when a menu is added as a submenu of a menu item. - (webkitContextMenuGetParentItem): Return the parent menu item of - the menu. - (webkit_context_menu_new): Create a new WebKitContextMenu. - (webkit_context_menu_new_with_items): Create a new - WebKitContextMenu using the given list of WebKitContextMenuItem. - (webkit_context_menu_prepend): Add item at the beginning. - (webkit_context_menu_append): Add item at the end. - (webkit_context_menu_insert): Insert item at a random position. - (webkit_context_menu_move_item): Move an existing item to a new - position. - (webkit_context_menu_get_items): Get the list of items. - (webkit_context_menu_get_n_items): Get the number of items. - (webkit_context_menu_first): Get the first item. - (webkit_context_menu_last): Get the last item. - (webkit_context_menu_get_item_at_position): Get the item at the - given position. - (webkit_context_menu_remove): Remove the given item. - (webkit_context_menu_remove_all): Remove all items. - * UIProcess/API/gtk/WebKitContextMenu.h: Added. - * UIProcess/API/gtk/WebKitContextMenuActions.cpp: Added. - (webkitContextMenuActionIsCheckable): Check if the given stock - action is a toggle action. - (webkitContextMenuActionGetActionTag): Get the WebCore - ContextMenuAction corresponding to the given stock action. - (webkitContextMenuActionGetForContextMenuItem): Get the stock - action corresponding to the given WebCore ContextMenuAction. - (webkitContextMenuActionGetLabel): Get the label string of the - given stock action. - * UIProcess/API/gtk/WebKitContextMenuActions.h: Added. - * UIProcess/API/gtk/WebKitContextMenuActionsPrivate.h: Added. - * UIProcess/API/gtk/WebKitContextMenuItem.cpp: Added. - (webkitContextMenuItemFinalize): - (webkit_context_menu_item_init): - (webkit_context_menu_item_class_init): - (checkAndWarnIfMenuHasParentItem): Check whether the given menu - is already inside another menu showing a warning in such case. - (webkitContextMenuItemSetSubMenu): Set the submenu of a menu item, - checking that the menu is not part of another menu and setting the - item as the parent of the submenu. - (webkitContextMenuItemCreate): Create a new WebKitContextMenuItem - for the given WKContextMenuItemRef. - (webkitContextMenuItemCreateForGtkItem): Create a new - WebKitContextMenuItem using the given GtkMenuItem. - (webkitContextMenuItemSetSubMenuFromGtkMenu): Set the given - GtkMenu as submenu of the item. This is used only to add Input - Methods submenu that is created by GTK. - (webkitContextMenuItemRelease): Release the WebCore - ContextMenuItem associated to the item. - (webkit_context_menu_item_new): Create a new WebKitContextMenuItem - for the given GtkAction. - (webkit_context_menu_item_new_from_stock_action): Create a new - WebKitContextMenuItem for a stock action. - (webkit_context_menu_item_new_from_stock_action_with_label): - Create a new WebKitContextMenuItem for a stock action using a - custom label. - (webkit_context_menu_item_new_with_submenu): Create a new - WebKitContextMenuItem with a submenu. - (webkit_context_menu_item_new_separator): Create a new separator - menu item. - (webkit_context_menu_item_get_action): Get the GtkAction of the item. - (webkit_context_menu_item_get_stock_action): Get the stock action - of the item. - (webkit_context_menu_item_is_separator): Whether item is a separator. - (webkit_context_menu_item_set_submenu): Set or replace the - submenu of the item. - (webkit_context_menu_item_get_submenu): Get the submenu of the item. - * UIProcess/API/gtk/WebKitContextMenuItem.h: Added. - * UIProcess/API/gtk/WebKitContextMenuItemPrivate.h: Added. - * UIProcess/API/gtk/WebKitContextMenuPrivate.h: Added. - * UIProcess/API/gtk/WebKitDefines.h: - * UIProcess/API/gtk/WebKitWebView.cpp: - (webkit_web_view_class_init): Add WebKitWebView::context-menu signal. - (getUnicodeMenuItemPosition): Helper function that returns the - position of the unicode menu item in the proposed context menu. - (webkitWebViewCreateAndAppendInputMethodsMenuItem): Use - WebKitContextMenu API to add the input methods submenu to the - default context menu. - (webkitWebViewPopulateContextMenu): Create a WebKitContextMenu for - the default context menu and emit WebKitWebView::context-menu - signal. Then populate the context menu proxy with the resulting - WebKitContextMenu. - * UIProcess/API/gtk/WebKitWebView.h: - * UIProcess/API/gtk/WebKitWebViewBase.cpp: - (webkitWebViewBaseButtonPressEvent): In case of right click save - the event to be used by context menu signal. - (webkitWebViewBaseTakeContextMenuEvent): Return and release the - saved button event. - * UIProcess/API/gtk/WebKitWebViewBasePrivate.h: - * UIProcess/API/gtk/docs/webkit2gtk-docs.sgml: Add sections for - WebKitContextMenu and WebKitContextMenuItem. - * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Add new symbols. - * UIProcess/API/gtk/docs/webkit2gtk.types: Add - webkit_context_menu_get_type and webkit_context_menu_item_get_type. - * UIProcess/API/gtk/tests/GNUmakefile.am: Add new test for context menu. - * UIProcess/API/gtk/tests/TestContextMenu.cpp: Added. - (testContextMenuDefaultMenu): - (testContextMenuPopulateMenu): - (testContextMenuCustomMenu): - (testContextMenuDisableMenu): - (testContextMenuSubMenu): - (beforeAll): - (afterAll): - * UIProcess/API/gtk/tests/TestMain.h: - (Test::addLogFatalFlag): Add a log level flag to the mask of flags - causing the program to abort. - (Test::removeLogFatalFlag): Remove a log level flag to the mask of - flags causing the program to abort. - * UIProcess/API/gtk/tests/WebViewTest.cpp: - (WebViewTest::quitMainLoop): Finish the main loop. - (WebViewTest::quitMainLoopAfterProcessingPendingEvents): Finish - the main loop when all pending events have been processed. - (quitMainLoopIdleCallback): - (WebViewTest::wait): - * UIProcess/API/gtk/tests/WebViewTest.h: - * UIProcess/API/gtk/webkit2.h: Include WebKitContextMenu.h, - WebKitContextMenuItem.h and WebKitContextMenuActions.h. - * UIProcess/API/gtk/webkit2marshal.list: - * UIProcess/gtk/WebContextMenuProxyGtk.cpp: - (WebKit::WebContextMenuProxyGtk::showContextMenu): Attach the - popup menu to the view widget before showing it. - -2012-06-22 Alexandru Chiculita <achicu@adobe.com> - - [CSS Shaders] Re-enable the CSS Shaders compile time flag on Safari Mac - https://bugs.webkit.org/show_bug.cgi?id=89781 - - Reviewed by Dean Jackson. - - Added ENABLE_CSS_SHADERS flag as enabled by default on Safari for Mac. - - * Configurations/FeatureDefines.xcconfig: - -2012-06-22 Ryuan Choi <ryuan.choi@samsung.com> - - [EFL][WK2] Support keyboard event - https://bugs.webkit.org/show_bug.cgi?id=89268 - - Reviewed by Chang Shu. - - * WebProcess/WebCoreSupport/efl/WebEditorClientEfl.cpp: - (WebKit::WebEditorClient::handleKeyboardEvent): Implemented default behavior. - * WebProcess/WebPage/efl/WebPageEfl.cpp: - (WebKit::WebPage::interpretKeyEvent): Implemented like WebKit1/Efl did. - -2012-06-20 Mark Hahnenberg <mhahnenberg@apple.com> - - JSLock should be per-JSGlobalData - https://bugs.webkit.org/show_bug.cgi?id=89123 - - Reviewed by Gavin Barraclough. - - Changed all sites that used JSLock to instead use the new JSLockHolder - and pass in the correct JS context that the code is about to interact with that - needs protection. - - * Shared/mac/WebMemorySampler.mac.mm: - (WebKit::WebMemorySampler::sampleWebKit): - * WebProcess/InjectedBundle/InjectedBundle.cpp: - (WebKit::InjectedBundle::javaScriptObjectsCount): - (WebKit::InjectedBundle::reportException): - * WebProcess/Plugins/Netscape/JSNPObject.cpp: - (WebKit::JSNPObject::callMethod): - (WebKit::JSNPObject::callObject): - (WebKit::JSNPObject::callConstructor): - (WebKit::JSNPObject::put): - (WebKit::JSNPObject::deleteProperty): - (WebKit::JSNPObject::getOwnPropertyNames): - (WebKit::JSNPObject::propertyGetter): - * WebProcess/Plugins/Netscape/NPJSObject.cpp: - (WebKit::NPJSObject::hasMethod): - (WebKit::NPJSObject::invoke): - (WebKit::NPJSObject::invokeDefault): - (WebKit::NPJSObject::hasProperty): - (WebKit::NPJSObject::getProperty): - (WebKit::NPJSObject::setProperty): - (WebKit::NPJSObject::removeProperty): - (WebKit::NPJSObject::enumerate): - (WebKit::NPJSObject::construct): - * WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp: - (WebKit::NPRuntimeObjectMap::convertJSValueToNPVariant): - (WebKit::NPRuntimeObjectMap::evaluate): - (WebKit::NPRuntimeObjectMap::moveGlobalExceptionToExecState): - * WebProcess/WebPage/WebFrame.cpp: - (WebKit::WebFrame::jsWrapperForWorld): - (WebKit::WebFrame::computedStyleIncludingVisitedInfo): - * WebProcess/WebPage/WebPage.cpp: - (WebKit::WebPage::runJavaScriptInMainFrame): - * WebProcess/WebProcess.cpp: - (WebKit::WebProcess::getWebCoreStatistics): - -2012-06-22 Jocelyn Turcotte <turcotte.j@gmail.com> - - [Qt] Fix the remote inspector loading problems on Mac - https://bugs.webkit.org/show_bug.cgi?id=89747 - - Reviewed by Simon Hausmann. - - Reverse the creation order of the inter-dependent WebSocketServerConnection - and SocketStreamHandle to make sure that the later has a client properly - set on construction. - - This is to work around the assert on m_state in SocketStreamHandle::setClient. - - * UIProcess/InspectorServer/WebSocketServer.cpp: - (WebKit::WebSocketServer::didAcceptConnection): - * UIProcess/InspectorServer/WebSocketServer.h: - (WebKit::WebSocketServer::client): - (WebSocketServer): - * UIProcess/InspectorServer/WebSocketServerConnection.cpp: - (WebKit::WebSocketServerConnection::WebSocketServerConnection): - (WebKit::WebSocketServerConnection::setSocketHandle): - (WebKit): - * UIProcess/InspectorServer/WebSocketServerConnection.h: - (WebSocketServerConnection): - * UIProcess/InspectorServer/qt/WebSocketServerQt.cpp: - (WebKit::QtTcpServerHandler::handleNewConnection): - -2012-06-22 Sergio Villar Senin <svillar@igalia.com> - - [WK2] FindController::hideFindUI should unmark highlighted text matches - https://bugs.webkit.org/show_bug.cgi?id=77747 - - Reviewed by Carlos Garcia Campos. - - Unmark all text matches whenever FindController::hideFindUI is - called to allow callers using the ShowHighlight find option to - remove highlighting. - - This patch enables a unit test for the WebKitFindController - previously guarded by a #if(0) after r109222. - - * UIProcess/API/gtk/tests/TestWebKitFindController.cpp: - (testFindControllerHide): - * WebProcess/WebPage/FindController.cpp: - (WebKit::FindController::hideFindUI): - -2012-06-21 Christophe Dumez <christophe.dumez@intel.com> - - [WK2] Add C API to inspect a Web Intent - https://bugs.webkit.org/show_bug.cgi?id=89275 - - Reviewed by Anders Carlsson. - - Add C API for Web Intent so that it can be queried - on client side. - - * CMakeLists.txt: - * GNUmakefile.list.am: - * Target.pri: - * UIProcess/API/C/WKIntentData.cpp: Copied from Source/WebKit2/UIProcess/WebIntentData.cpp. - (WKIntentDataGetTypeID): - (WKIntentDataCopyAction): - (WKIntentDataCopyType): - (WKIntentDataCopyService): - (WKIntentDataCopySuggestions): - (WKIntentDataCopyExtra): - (WKIntentDataCopyExtras): - * UIProcess/API/C/WKIntentData.h: Copied from Source/WebKit2/UIProcess/WebIntentData.cpp. - * UIProcess/WebIntentData.cpp: - (WebKit::WebIntentData::suggestions): - (WebKit): - (WebKit::WebIntentData::extra): - (WebKit::WebIntentData::extras): - * UIProcess/WebIntentData.h: - (WebIntentData): - -2012-06-21 Christophe Dumez <christophe.dumez@intel.com> - - [WK2] Properly encode/decode service in IntentData - https://bugs.webkit.org/show_bug.cgi?id=89460 - - Reviewed by Gustavo Noronha Silva. - - Update IntentData::encode() and IntentData::decode() - so that the "service" member is properly encoded - and decoded. - - * Shared/IntentData.cpp: - (WebKit::IntentData::encode): - (WebKit::IntentData::decode): - -2012-06-21 Ryuan Choi <ryuan.choi@gmail.com> - - [EFL][WK2] Make WebKit2/Efl headers and resources installable. - https://bugs.webkit.org/show_bug.cgi?id=88207 - - Reviewed by Chang Shu. - - * CMakeLists.txt: Install WebProcess. - * PlatformEfl.cmake: Generate ewebkit2.pc and install it. - * efl/ewebkit2.pc.in: Added. - -2012-06-21 Ryuan Choi <ryuan.choi@samsung.com> - - [EFL[WK2] Add WKViewEfl and WebKit2 API Object to represent Evas_Object. - https://bugs.webkit.org/show_bug.cgi?id=88935 - - Reviewed by Chang Shu. - - Add WKViewEfl to support WTR/Efl. - - * PlatformEfl.cmake: - * Shared/API/c/WKBase.h: - * Shared/API/c/efl/WKBaseEfl.h: Added. - * UIProcess/API/C/WKAPICast.h: - * UIProcess/API/C/efl/WKAPICastEfl.h: Added. - (WebKit): - * UIProcess/API/C/efl/WKView.cpp: Added. - (WKViewCreate): - (WKViewGetPage): - * UIProcess/API/C/efl/WKView.h: Added. - * UIProcess/API/efl/ewk_view.cpp: - (ewk_view_page_get): - * UIProcess/API/efl/ewk_view_private.h: - -2012-06-21 Thiago Marcos P. Santos <thiago.santos@intel.com> - - [Qt] API tests for ColorChooser - https://bugs.webkit.org/show_bug.cgi?id=88101 - - Reviewed by Kenneth Rohde Christiansen. - - The test uses the value sanitization to detect if the feature is - enabled or disabled and will just pass when disabled. - - * UIProcess/API/qt/tests/qmltests/WebView/tst_colorChooser.qml: Added. - * UIProcess/API/qt/tests/qmltests/common/colorChooser.html: Added. - -2012-06-21 Thiago Marcos P. Santos <thiago.santos@intel.com> - - [WK2][Qt] Color chooser API missing - https://bugs.webkit.org/show_bug.cgi?id=87749 - - Reviewed by Kenneth Rohde Christiansen. - - Added public experimental API for ColorChooser. This will - allow the browser to define a custom dialog for selecting - color when a input field of type "color" get focus. - - The current implementation gives a model to the QML Component - that has methods for canceling a request, selecting a color - and fetching what is the current value of the HTML input. - - * Target.pri: - * UIProcess/API/qt/qquickwebview.cpp: - (QQuickWebViewPrivate::QQuickWebViewPrivate): - (QQuickWebViewExperimental::colorChooser): - (QQuickWebViewExperimental::setColorChooser): - * UIProcess/API/qt/qquickwebview_p.h: - * UIProcess/API/qt/qquickwebview_p_p.h: - (QQuickWebViewPrivate): - * UIProcess/qt/QtPageClient.cpp: - (WebKit::QtPageClient::createColorChooserProxy): - * UIProcess/qt/WebColorChooserProxyQt.cpp: Added. - (WebKit): - (ColorChooserContextObject): - (WebKit::ColorChooserContextObject::ColorChooserContextObject): - (WebKit::ColorChooserContextObject::currentColor): - (WebKit::ColorChooserContextObject::accept): - (WebKit::ColorChooserContextObject::reject): - (WebKit::WebColorChooserProxyQt::WebColorChooserProxyQt): - (WebKit::WebColorChooserProxyQt::~WebColorChooserProxyQt): - (WebKit::WebColorChooserProxyQt::createItem): - (WebKit::WebColorChooserProxyQt::createContext): - (WebKit::WebColorChooserProxyQt::setSelectedColor): - (WebKit::WebColorChooserProxyQt::notifyColorSelected): - (WebKit::WebColorChooserProxyQt::endChooser): - * UIProcess/qt/WebColorChooserProxyQt.h: Added. - (WebCore): - (WebKit): - (WebColorChooserProxyQt): - (WebKit::WebColorChooserProxyQt::create): - -2012-06-21 Mario Sanchez Prada <msanchez@igalia.com> - - [GTK] Add support for window.showModalDialog in WebKit2GTK+ - https://bugs.webkit.org/show_bug.cgi?id=79500 - - Reviewed by Carlos Garcia Campos. - - Implement runModal in WebKitUIClient to make the WebKitWebView - emit a 'run-as-modal' signal when requested, creating a new - mainloop there to block user interaction with the original window - while the modal dialog is showing. - - * UIProcess/API/gtk/WebKitUIClient.cpp: - (runModal): Call to the new webkitWebViewRunAsModalPage function. - (attachUIClientToView): Add runModal. - * UIProcess/API/gtk/WebKitWebView.cpp: - (_WebKitWebViewPrivate): Add an atribute for a new main loop. - (webkitWebViewFinalize): Make sure the main loop for main dialogs, - if any, is stopped if it was still running. - (webkit_web_view_class_init): Declare new signal 'run-as-modal'. - (webkitWebViewRunAsModal): Emit the 'run-as-modal' signal and, if - handled, create and run a new main loop. - * UIProcess/API/gtk/WebKitWebView.h: - (_WebKitWebViewClass): New handler for the 'run-as-modal' signal. - * UIProcess/API/gtk/WebKitWebViewPrivate.h: Add webkitWebViewRunAsModalPage. - - Allow setting and getting the value of WebPage's canRunModal - attribute in the WebProcess from the UIProcess after the creation - of a WebPage, to allow using it from WebKitWebView to allow the - client application to decide whether to allow create modal - dialogs, which would result in launching an additional nested - event loop in the web process, after creating the dialog. - - * UIProcess/WebPageProxy.cpp: - (WebKit::WebPageProxy::WebPageProxy): Initialize the new - m_canRunModal attribute, to cache the current status of the - WebPage in the WebProcess. - (WebKit::WebPageProxy::initializeUIClient): Call the new function - setCanRunModal, instead of manually sending the SetCanRunModal message. - (WebKit::WebPageProxy::creationParameters): Use m_canRunModal - instead of m_uiClient.canRunModal when preparing the parameters. - (WebKit::WebPageProxy::setCanRunModal): New public function, it - sets the value of m_canRunModal and sends a message to the Web - process for updating the WebPage, whenever possible. - (WebKit::WebPageProxy::canRunModal): New public function, returns - the value of the m_canRunModal attribute. - * UIProcess/WebPageProxy.h: - (WebPageProxy): Added new public functions and private attribute. - - New property in WebKitSettings to be able to decide whether it is - allowed to create and run new child webviews as modal dialogs. - - * UIProcess/API/gtk/WebKitSettings.cpp: - (_WebKitSettingsPrivate): New attribute allowModalDialogs. - (webKitSettingsSetProperty): Handle the new property. - (webKitSettingsGetProperty): Ditto. - (webkit_settings_class_init): Install the new property. - (webkitSettingsAttachSettingsToPage): Make sure the WebPage is - initialized with the value of the new property. - (webkit_settings_set_allow_modal_dialogs): New setter. - (webkit_settings_get_allow_modal_dialogs): New getter. - * UIProcess/API/gtk/WebKitSettings.h: - * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Added new accessors. - - Connect to the 'notify::allow-modal-dialogs' signal from - WebKitSettings to ensure that canRunModal property of the WebPage - is kept up to date. Ensure that signal handlers for monitoring - settings are disconnected when the webview is finalized. + Use the priv variable to directly access private attributes + instead of dereferencing webView->priv all the time. + Fixes -Wunused-variable. * UIProcess/API/gtk/WebKitWebView.cpp: - (webkitWebViewSetSettings): Connect to the new signal - 'notify::allow-modal-dialogs', from WebKitSettings. - (allowModalDialogsChanged): Callback to update WebPage's - canRunModal property when updated through WebKitSettings. - (webkitWebViewDisconnectSettingsSignalHandlers): Disconnect signal - handlers for monitoring WebKitSettings properties. - (webkitWebViewFinalize): Ensure signal handlers are disconnected. - (webkit_web_view_set_settings): Ditto. - * UIProcess/API/gtk/WebKitWebView.h: - - Add new unit tests to check the 'run-as-modal' signal is emitted - only when the new property in WebKitSettings is set to TRUE. - - * UIProcess/API/gtk/tests/TestWebKitWebView.cpp: - (testWebViewAllowModalDialogs): New unit test to check that modal - dialogs are properly created from JavaScript when allowed. - (testWebViewDisallowModalDialogs): New unit test to check that - it's not possible to create modal dialogs when not allowed. - (beforeAll): Add the new unit test. - -2012-06-20 Thiago Marcos P. Santos <thiago.santos@intel.com> - - [WK2] Color chooser API missing - https://bugs.webkit.org/show_bug.cgi?id=87495 - - Reviewed by Andreas Kling. - - Added ColorChooser API to WebKit2. This API allows the - embedder to define a custom color picker for <input type="color">. - - Only one ColorChooser can be active for a page at a time. Although - the implementation doesn't not assume a modal dialog, no other - color chooser will be created until the active one is closed. - - Also added stubs for all platforms, so it wont break the build when - enabling color chooser, even though they don't have the backend - implemented yet. - - * CMakeLists.txt: - * GNUmakefile.list.am: - * Target.pri: - * UIProcess/API/efl/PageClientImpl.cpp: - (WebKit): - (WebKit::PageClientImpl::createColorChooserProxy): - * UIProcess/API/efl/PageClientImpl.h: - (PageClientImpl): - * UIProcess/API/gtk/PageClientImpl.cpp: - (WebKit): - (WebKit::PageClientImpl::createColorChooserProxy): - * UIProcess/API/gtk/PageClientImpl.h: - (PageClientImpl): - * UIProcess/API/mac/PageClientImpl.h: - (PageClientImpl): - * UIProcess/API/mac/PageClientImpl.mm: - (WebKit): - (WebKit::PageClientImpl::createColorChooserProxy): - * UIProcess/PageClient.h: - (WebKit): - (PageClient): - * UIProcess/WebColorChooserProxy.h: Added. - (WebCore): - (WebKit): - (WebColorChooserProxy): - (Client): - (WebKit::WebColorChooserProxy::Client::~Client): - (WebKit::WebColorChooserProxy::~WebColorChooserProxy): - (WebKit::WebColorChooserProxy::invalidate): - (WebKit::WebColorChooserProxy::WebColorChooserProxy): - * UIProcess/WebPageProxy.cpp: - (WebKit::WebPageProxy::close): - (WebKit): - (WebKit::WebPageProxy::showColorChooser): - (WebKit::WebPageProxy::setColorChooserColor): - (WebKit::WebPageProxy::endColorChooser): - (WebKit::WebPageProxy::didChooseColor): - (WebKit::WebPageProxy::didEndColorChooser): - (WebKit::WebPageProxy::processDidCrash): - * UIProcess/WebPageProxy.h: - (WebPageProxy): - * UIProcess/WebPageProxy.messages.in: - * UIProcess/qt/QtPageClient.cpp: - (WebKit): - (WebKit::QtPageClient::createColorChooserProxy): - * UIProcess/qt/QtPageClient.h: - (QtPageClient): - * UIProcess/win/WebView.cpp: - (WebKit): - (WebKit::WebView::createColorChooserProxy): - * UIProcess/win/WebView.h: - (WebView): - * WebKit2.xcodeproj/project.pbxproj: - * WebProcess/WebCoreSupport/WebChromeClient.cpp: - (WebKit::WebChromeClient::createColorChooser): - * WebProcess/WebCoreSupport/WebColorChooser.cpp: Added. - (WebKit): - (WebKit::WebColorChooser::WebColorChooser): - (WebKit::WebColorChooser::~WebColorChooser): - (WebKit::WebColorChooser::didChooseColor): - (WebKit::WebColorChooser::didEndChooser): - (WebKit::WebColorChooser::disconnectFromPage): - (WebKit::WebColorChooser::setSelectedColor): - (WebKit::WebColorChooser::endChooser): - * WebProcess/WebCoreSupport/WebColorChooser.h: Added. - (WebCore): - (WebKit): - (WebColorChooser): - * WebProcess/WebPage/WebPage.cpp: - (WebKit::WebPage::WebPage): - (WebKit::WebPage::close): - (WebKit): - (WebKit::WebPage::setActiveColorChooser): - (WebKit::WebPage::didEndColorChooser): - (WebKit::WebPage::didChooseColor): - * WebProcess/WebPage/WebPage.h: - (WebKit): - (WebPage): - (WebKit::WebPage::activeColorChooser): - * WebProcess/WebPage/WebPage.messages.in: - * win/WebKit2.vcproj: - -2012-06-20 Brady Eidson <beidson@apple.com> - - <rdar://problem/11653784> and https://bugs.webkit.org/show_bug.cgi?id=89590 - showModalDialog message handling is flaky in WebKit2 - - Because RunLoop::performWork() swaps the function queue to a temporary Vector before calling - the functions an inner run-loop - such as we see with running a modal dialog - does not have - a change to handle any of the functions that were queued after the WebPageProxy::RunModal message. - - By servicing the functions in the queue one at a time we can give the RunLoop a chance to pick up - where it left off if RunLoop::performWork is re-entered. - - To guarantee RunLoop::performWork is re-entered to handle those functions we also need to signal - its source before entering the modal run loop so our RunLoop is woken up. - - Reviewed by Darin Adler. - - * Platform/CoreIPC/Connection.cpp: - (CoreIPC::Connection::wakeUpRunLoop): Added so the WebPageProxy can signal the runloop to be woken up - before it enters the modal dialog run loop. - * Platform/CoreIPC/Connection.h: - - * UIProcess/WebPageProxy.cpp: - (WebKit::WebPageProxy::runModal): Call wakeUpRunLoop() before entering the modal dialog run loop. - -2012-06-20 Julien Chaffraix <jchaffraix@webkit.org> - - Use IntSize in RenderLayer to represent scroll offsets - https://bugs.webkit.org/show_bug.cgi?id=89154 - - Reviewed by Eric Seidel. - - * WebProcess/WebPage/win/WebPageWin.cpp: - (WebKit::WebPage::gestureDidScroll): - Updated to pass an IntSize to scrollByRecursively. - -2012-06-20 Christophe Dumez <christophe.dumez@intel.com> - - [WK2] Implement Web Intent delivery - https://bugs.webkit.org/show_bug.cgi?id=88989 - - Reviewed by Anders Carlsson. - - Add a deliverIntent() method to the WebFrame so that - Web intents can be delivered once matched to a - specific service. - - * UIProcess/WebFrameProxy.cpp: - (WebKit): - (WebKit::WebFrameProxy::deliverIntent): - * UIProcess/WebFrameProxy.h: - (WebKit): - (WebFrameProxy): - * UIProcess/WebIntentData.h: - (WebKit::WebIntentData::store): - * WebProcess/WebPage/WebFrame.cpp: - (WebKit): - (WebKit::WebFrame::deliverIntent): - * WebProcess/WebPage/WebFrame.h: - (WebKit): - (WebFrame): - * WebProcess/WebPage/WebPage.cpp: - (WebKit): - (WebKit::WebPage::deliverIntentToFrame): - * WebProcess/WebPage/WebPage.h: - (WebKit): - (WebPage): - * WebProcess/WebPage/WebPage.messages.in: - -2012-06-20 Alexis Menard <alexis.menard@openbossa.org> - - REGRESSION (120705) : LayerTreeHostQt asserts in debug. - https://bugs.webkit.org/show_bug.cgi?id=89487 - - Reviewed by Noam Rosenthal. - - We try to call createHandle twice on the same handle when the - first matching atlas is full. This patch solved the problem by - moving the createHandle call inside UpdateAtlas and call createHandle - only when the atlas is not full. We can also remove the surface() - getter as it is not used anymore. - - * WebProcess/WebPage/UpdateAtlas.cpp: - (WebKit::UpdateAtlas::beginPaintingOnAvailableBuffer): - * WebProcess/WebPage/UpdateAtlas.h: - (UpdateAtlas): - * WebProcess/WebPage/qt/LayerTreeHostQt.cpp: - (WebKit::LayerTreeHostQt::beginContentUpdate): - -2012-06-19 Ryuan Choi <ryuan.choi@samsung.com> - - [EFL][Regression] Build break after r120786 - https://bugs.webkit.org/show_bug.cgi?id=89549 - - Unreviewed build fix for Efl port. - - * CMakeLists.txt: Added disassembler in includes. - -2012-06-19 Dan Bernstein <mitz@apple.com> - - WebKit2 part of: Paginated display API doesn’t allow setting the page progression direction - https://bugs.webkit.org/show_bug.cgi?id=89394 - - Reviewed by Darin Adler. - - * UIProcess/API/C/WKPage.cpp: - (WKPageSetPaginationMode): Changed to map new WKPaginationMode values to new - Pagination::Mode values. - (WKPageGetPaginationMode): Similarly, in the opposite direction. - * UIProcess/API/C/WKPagePrivate.h: Replaced WKPaginationMode values with ones that specify - an axis and a direction along that axis. - * UIProcess/API/mac/WKBrowsingContextController.mm: - (-[WKBrowsingContextController setPaginationMode:]): Changed to handle new values. - (-[WKBrowsingContextController paginationMode]): Ditto. - * UIProcess/API/mac/WKBrowsingContextControllerPrivate.h: Replaced - WKBrowsingContextPaginationMode values with ones that specify an axis and a direction along - that axis. - -2012-06-19 Alexis Menard <alexis.menard@openbossa.org> - - [Qt] Create an extra atlas when there is no available buffer space. - https://bugs.webkit.org/show_bug.cgi?id=89012 - - Reviewed by Noam Rosenthal. - - In case of the desktop mode when we scroll the view all the tiles - are updated. It can happen that there no available buffer space for - the currently used atlas(especially when scrolling fast). In that case - we can create a new one. One future improvement could be to make a timer and - delete this extra atlas when it is not used. - - * WebProcess/WebPage/qt/LayerTreeHostQt.cpp: - (WebKit::beginContentUpdateInAtlas): - (WebKit::LayerTreeHostQt::beginContentUpdate): - * WebProcess/WebPage/qt/LayerTreeHostQt.h: - (LayerTreeHostQt): - -2012-06-19 Csaba Osztrogonác <ossy@webkit.org> - - [Qt] Buildfix for newer Qt5, use QPointer instead of the deprecated QWeakPointer. - https://bugs.webkit.org/show_bug.cgi?id=89449 - - Reviewed by Simon Hausmann. - - * UIProcess/API/qt/qquicknetworkreply_p.h: - -2012-06-19 Mike West <mkwst@chromium.org> - - Introduce ENABLE_CSP_NEXT configuration flag. - https://bugs.webkit.org/show_bug.cgi?id=89300 - - Reviewed by Adam Barth. - - The 1.0 draft of the Content Security Policy spec is just about to - move to Last Call. We'll hide work on the upcoming 1.1 spec behind - this ENABLE flag, disabled by default. - - Spec: https://dvcs.w3.org/hg/content-security-policy/raw-file/tip/csp-specification.dev.html - - * Configurations/FeatureDefines.xcconfig: - -2012-06-19 Mike West <mkwst@chromium.org> - - Add a scheme registry for bypassing Content Security Policy. - https://bugs.webkit.org/show_bug.cgi?id=89373 - - Reviewed by Adam Barth. - - * win/WebKit2.def: - * win/WebKit2CFLite.def: - -2012-06-16 Adam Barth <abarth@webkit.org> - - Settings::devicePixelRatio doesn't do anything and is confusing - https://bugs.webkit.org/show_bug.cgi?id=89272 - - Reviewed by James Robinson. - - * Shared/WebPreferencesStore.h: - (WebKit): - - Remove boilerplate code for the setting. - * UIProcess/API/qt/qquickwebview.cpp: - (QQuickWebViewExperimental::devicePixelRatio): - (QQuickWebViewExperimental::setDevicePixelRatio): - - Change these functions to get and set the real device scale factor. - * WebProcess/WebPage/WebPage.cpp: - (WebKit::WebPage::sendViewportAttributesChanged): - - Use the real device scale factor for the viewport calculation. - (WebKit::WebPage::updatePreferences): - - Remove boilerplate code for the setting. - -2012-06-15 Christophe Dumez <christophe.dumez@intel.com> - - [WK2] Add support for explicit intents - https://bugs.webkit.org/show_bug.cgi?id=89206 - - Reviewed by Kenneth Rohde Christiansen. - - Expose the service URL of a Web Intent. This URL - is set for explicit intents. - - * Shared/IntentData.h: - (IntentData): - * UIProcess/WebIntentData.h: - (WebKit::WebIntentData::service): - * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: - (WebKit::WebFrameLoaderClient::dispatchIntent): - -2012-06-15 Christophe Dumez <christophe.dumez@intel.com> - - [EFL][WK2] Add title support to Ewk_View - https://bugs.webkit.org/show_bug.cgi?id=89095 - - Reviewed by Kenneth Rohde Christiansen. - - Add a method to get the title of the main frame in - an Ewk_View. A "title,changed" signal is now emitted - on the view to notify clients that the main frame - title was changed. - - * PlatformEfl.cmake: - * UIProcess/API/efl/ewk_view.cpp: - (_Ewk_View_Private_Data): - (_ewk_view_priv_del): - (ewk_view_base_add): - (ewk_view_title_get): - (ewk_view_title_changed): - * UIProcess/API/efl/ewk_view.h: - * UIProcess/API/efl/ewk_view_loader_client.cpp: Added. - (didReceiveTitleForFrame): - (ewk_view_loader_client_attach): - * UIProcess/API/efl/ewk_view_loader_client_private.h: Added. - * UIProcess/API/efl/ewk_view_private.h: - -2012-06-15 Christophe Dumez <christophe.dumez@intel.com> - - [WK2][EFL] Implement navigation back/forward in Ewk_View - https://bugs.webkit.org/show_bug.cgi?id=89173 - - Reviewed by Kenneth Rohde Christiansen. - - Add API for Ewk_View to ask the main frame to navigate backwards - or forwards in history. Also add API to query if such navigation - is possible. - - * UIProcess/API/efl/ewk_view.cpp: - (ewk_view_back): - (ewk_view_forward): - (ewk_view_back_possible): - (ewk_view_forward_possible): - * UIProcess/API/efl/ewk_view.h: - -2012-06-15 Christophe Dumez <christophe.dumez@intel.com> - - [EFL][WK2] Implement reload / stop in Ewk_View - https://bugs.webkit.org/show_bug.cgi?id=89168 - - Reviewed by Kenneth Rohde Christiansen. - - Add API on the Ewk_View to reload the main frame - and to stop the current load. - - * UIProcess/API/efl/ewk_view.cpp: - (ewk_view_reload): - (ewk_view_stop): - * UIProcess/API/efl/ewk_view.h: - -2012-06-14 Kent Tamura <tkent@chromium.org> - - Validate form state strings in FormController::setStateForNewFormElements() - https://bugs.webkit.org/show_bug.cgi?id=88768 - - Reviewed by Hajime Morita. - - * win/WebKit2.def: Expose some symbols used by Internals.cpp. - * win/WebKit2CFLite.def: ditto. - -2012-06-14 Tim Horton <timothy_horton@apple.com> - - DrawingArea: Painting is being resumed while the view is not visible - https://bugs.webkit.org/show_bug.cgi?id=88940 - <rdar://problem/11652545> - - Reviewed by Dean Jackson. - - Using requestAnimationFrame and the fullscreen API on a DrawingArea-backed window would cause - rAF to permanently suspend animations after entering full-screen mode, because of the following: - - 0. JavaScript causes fullscreen transition to start. - 1. Painting (and rAF) are suspended. - 2. The page changes size. - a. DrawingAreaProxyImpl::sizeDidChange() calls DrawingAreaImpl::updateBackingStoreState, which calls DrawingAreaImpl::resumePainting. - b. DrawingAreaImpl::resumePainting resumes painting, but does *not* resume rAF, because windowIsVisible is (legitimately) false. - 3. The view becomes visible, windowIsVisible is updated to true. - 4. visibilityDidChange() calls resumePainting again, but this time it early exits because painting is not suspended. - - Notice that because of the early exit in 4, rAF is never resumed. - - To solve this and prevent any further bugs caused by these unnecessary calls to resume/suspendPainting, - temporarily stop sending SuspendPainting/ResumePainting messages from DrawingAreaProxyImpl::visibilityDidChange - during the window animations that occur while entering and exiting full-screen. - - * UIProcess/API/mac/WKViewInternal.h: - * UIProcess/API/mac/WKView.mm: - (-[WKView setAutomaticallySuspendAndResumePainting:]): - (-[WKView automaticallySuspendAndResumePainting]): - * UIProcess/DrawingAreaProxyImpl.cpp: - (WebKit::DrawingAreaProxyImpl::visibilityDidChange): - * UIProcess/WebPageProxy.h: - (WebKit::WebPageProxy::setShouldSuspendAndResumePainting): - (WebKit::WebPageProxy::shouldSuspendAndResumePainting): - * UIProcess/mac/WKFullScreenWindowController.mm: - (-[WKFullScreenWindowController enterFullScreen:]): - (-[WKFullScreenWindowController _startEnterFullScreenAnimationWithDuration:]): - -2012-06-14 Jia Pu <jpu@apple.com> - - Mark text with text alternative with blue underline. - https://bugs.webkit.org/show_bug.cgi?id=83047 - - Reviewed by Enrica Casucci. - - Changes in WebKit2 include implementation of new functions declared in AlternativeTextClient, - and logic for calling Editor::insertDictatedText() instead of Editor::insertText() when there's - alternatives attached to the input string. - - * Shared/API/c/WKContextMenuItemTypes.h: - * Shared/API/c/WKSharedAPICast.h: - * Shared/WebCoreArgumentCoders.cpp: - * Shared/WebCoreArgumentCoders.h: - * UIProcess/API/mac/PageClientImpl.h: - * UIProcess/API/mac/PageClientImpl.mm: - (WebKit::PageClientImpl::PageClientImpl): - (WebKit::PageClientImpl::pageClosed): - (WebKit::PageClientImpl::addDictationAlternatives): - (WebKit::PageClientImpl::removeDictationAlternatives): - (WebKit::PageClientImpl::showDictationAlternativeUI): - (WebKit::PageClientImpl::dictationAlternatives): - (WebKit::PageClientImpl::dismissDictationAlternativeUI): - * UIProcess/API/mac/WKView.mm: - (-[WKView insertText:replacementRange:]): - (-[WKView validAttributesForMarkedText]): - (-[WKView handleAcceptedAlternativeText:]): - * UIProcess/API/mac/WKViewInternal.h: - * UIProcess/PageClient.h: - * UIProcess/WebPageProxy.cpp: - (WebKit::WebPageProxy::showDictationAlternativeUI): - (WebKit::WebPageProxy::dismissDictationAlternativeUI): - (WebKit::WebPageProxy::removeDictationAlternatives): - (WebKit::WebPageProxy::dictationAlternatives): - * UIProcess/WebPageProxy.h: - * UIProcess/WebPageProxy.messages.in: - * UIProcess/mac/CorrectionPanel.mm: - (correctionIndicatorType): - (WebKit::CorrectionPanel::handleAcceptedReplacement): - * UIProcess/mac/WebPageProxyMac.mm: - (WebKit::WebPageProxy::insertDictatedText): - * WebProcess/WebCoreSupport/WebAlternativeTextClient.h: - (WebAlternativeTextClient): - * WebProcess/WebCoreSupport/mac/WebAlternativeTextClient.cpp: - (WebKit::WebAlternativeTextClient::showCorrectionAlternative): - (WebKit::WebAlternativeTextClient::dismissAlternative): - (WebKit::WebAlternativeTextClient::dismissAlternativeSoon): - (WebKit::WebAlternativeTextClient::recordAutocorrectionResponse): - (WebKit::WebAlternativeTextClient::removeDictationAlternatives): - (WebKit::WebAlternativeTextClient::showDictationAlternativeUI): - (WebKit::WebAlternativeTextClient::dismissDictationAlternativeUI): - (WebKit::WebAlternativeTextClient::dictationAlternatives): - * WebProcess/WebPage/WebPage.h: - * WebProcess/WebPage/WebPage.messages.in: - * WebProcess/WebPage/mac/WebPageMac.mm: - (WebKit::WebPage::insertDictatedText): - -2012-06-13 Andreas Kling <kling@webkit.org> + (webkitWebViewLoadChanged): - Chinese IM receives incorrect/duplicated key events in text fields in webpages in Safari. - <http://webkit.org/b/89048> - <rdar://problem/11449702> +2012-10-03 Christophe Dumez <christophe.dumez@intel.com> - Reviewed by Darin Adler. + [EFL][WK2] Implement focus/unfocus in UIClient + https://bugs.webkit.org/show_bug.cgi?id=98253 - Send the DidReceiveEvent message with the DispatchMessageEvenWhenWaitingForSyncReply flag - for keyboard events. This ensures that it always arrives before the corresponding synchronous - InterpretQueuedKeyEvent message. + Reviewed by Gyuyoung Kim. - The problem was that we relied on DidReceiveEvent / InterpretQueuedKeyEvent always arriving in - the same order they were sent. This was not always true, since DidReceiveEvent (async) would - get deferred during an unrelated waitForSyncReply() whereas InterpretQueuedKeyEvent (sync) - gets dispatched right away. + Implement focus-related functionality in + WebKitEFL's UIClient. - * WebProcess/WebPage/WebPage.cpp: - (WebKit::WebPage::keyEvent): + * UIProcess/API/efl/ewk_view_ui_client.cpp: + (focus): + (unfocus): + (takeFocus): + (ewk_view_ui_client_attach): -2012-06-14 Carlos Garcia Campos <cgarcia@igalia.com> +2012-10-03 Carlos Garcia Campos <cgarcia@igalia.com> - [GTK] Add input methods submenu item to the default context menu for editable content - https://bugs.webkit.org/show_bug.cgi?id=80600 + [GTK] WebKitWebView doesn't emit notify:favicon when it changes in some cases in WebKit2 + https://bugs.webkit.org/show_bug.cgi?id=98153 Reviewed by Martin Robinson. - * GNUmakefile.am: Add new files to compilation. - * UIProcess/API/gtk/WebKitContextMenuClient.cpp: Added. - (getContextMenuFromProposedMenu): Call webkitWebViewContextMenu(). - (attachContextMenuClientToView): Add implementation for - getContextMenuFromProposedMenu callback. - * UIProcess/API/gtk/WebKitContextMenuClient.h: Added. + The main problem is that it relies on icon-ready signal to be + emitted by the favicon database, but that signal is only emitted + when the icon is loaded from the network or imported from the + database, but not when the icon is already in memory. The way to + detect if a web page doesn't have a favicon or it's unknown it's + also incorrectly done and the wrong error is returned for pages + not having a favicon. + + * UIProcess/API/gtk/WebKitFaviconDatabase.cpp: + (GetFaviconSurfaceAsyncData): Add a GError field. + (getIconSurfaceSynchronously): Add a GError parameter and fill it + accordingly. Use imageForPageURL() instead of + nativeImageForPageURL() because the latter always returns NULL for + empty images, so it's not possible to know whether it's an empty + image or not. If the image is empty is because the web page is + known by the database and it doesn't have a favicon. + (processPendingIconsForURI): Pass the data error to + getIconSurfaceSynchronously(). Don't set the icon if the request + has been cancelled. + (webkitFaviconDatabaseGetFavicon): Pass NULL as error to + getIconSurfaceSynchronously(). + (setErrorForAsyncResult): Fill also error for + WEBKIT_FAVICON_DATABASE_ERROR_FAVICON_UNKNOWN. + (webkit_favicon_database_get_favicon): If we get NULL as icon in + the first place, check the error code returned by + getIconSurfaceSynchronously() and return early if the page doesn't + have a favicon. Remove the cancelled signal to avoid race + conditions. + (webkit_favicon_database_get_favicon_finish): Errors are processed + before now, so simply propagate the error if any or return the + favicon. * UIProcess/API/gtk/WebKitWebView.cpp: - (webkitWebViewConstructed): Attach context menu client to view. - (webkitWebViewCreateAndAppendDefaultMenuItems): Helper function to - add default context menu items to the new context menu items vector. - (webkitWebViewShouldShowInputMethodsMenu): Helper function to - check whether to show the input methods submenu according to the - gtk-show-input-method-menu GTK+ setting. - (webkitWebViewCreateAndAppendInputMethodsMenuItem): Helper - function to add input methods submenu to the new context menu - items vector. - (webkitWebViewContextMenu): Create a new context menu items vector - containing default items and input methods submenu in case of - editable content. The active content menu is populated using that - new vector. - * UIProcess/API/gtk/WebKitWebViewBase.cpp: - (webkitWebViewBaseSetActiveContextMenu): Set the active context menu. - (webkitWebViewBaseGetActiveContextMenu): Get the active context menu. - * UIProcess/API/gtk/WebKitWebViewBasePrivate.h: - * UIProcess/API/gtk/WebKitWebViewPrivate.h: - * UIProcess/gtk/WebContextMenuProxyGtk.cpp: - (WebKit::WebContextMenuProxyGtk::append): Helper method to add a - new item to the context menu. - (WebKit::WebContextMenuProxyGtk::populate): Add items to the - context menu. - (WebKit::WebContextMenuProxyGtk::showContextMenu): Populate the - menu with the given items and popup the menu if it's not empty. - (WebKit::WebContextMenuProxyGtk::hideContextMenu): Get the GtkMenu - from the WebCore ContextMenu to popdown it. - (WebKit::WebContextMenuProxyGtk::WebContextMenuProxyGtk): Call - webkitWebViewBaseSetActiveContextMenu() to set the menu as the current - active one for the view. - (WebKit::WebContextMenuProxyGtk::~WebContextMenuProxyGtk): Call - webkitWebViewBaseSetActiveContextMenu() with NULL to reset the - current active context of the view. GtkMenu is destroyed by - WebCore ContextMenu in its destructor. - * UIProcess/gtk/WebContextMenuProxyGtk.h: - -2012-06-14 Christophe Dumez <christophe.dumez@intel.com> - - [WK2] Add implementation for registerIntentService in WebFrameLoaderClient - https://bugs.webkit.org/show_bug.cgi?id=88399 - - Reviewed by Kenneth Rohde Christiansen. - - Add implementation for registerIntentService() in - WebFrameLoaderClient. - - * CMakeLists.txt: - * GNUmakefile.list.am: - * Shared/API/c/WKBase.h: - * Shared/APIClientTraits.h: - * Shared/APIObject.h: - * Shared/IntentServiceInfo.cpp: Added. - (WebKit): - (WebKit::IntentServiceInfo::encode): - (WebKit::IntentServiceInfo::decode): - * Shared/IntentServiceInfo.h: Added. - (CoreIPC): - (WebKit): - (IntentServiceInfo): - * Target.pri: - * UIProcess/API/C/WKAPICast.h: - (WebKit): - * UIProcess/API/C/WKPage.h: - * UIProcess/API/gtk/WebKitLoaderClient.cpp: - (attachLoaderClientToView): - * UIProcess/WebIntentServiceInfo.cpp: Added. - (WebKit): - (WebKit::WebIntentServiceInfo::WebIntentServiceInfo): - * UIProcess/WebIntentServiceInfo.h: Added. - (WebKit): - (WebIntentServiceInfo): - (WebKit::WebIntentServiceInfo::create): - (WebKit::WebIntentServiceInfo::~WebIntentServiceInfo): - (WebKit::WebIntentServiceInfo::action): - (WebKit::WebIntentServiceInfo::payloadType): - (WebKit::WebIntentServiceInfo::href): - (WebKit::WebIntentServiceInfo::title): - (WebKit::WebIntentServiceInfo::disposition): - (WebKit::WebIntentServiceInfo::type): - * UIProcess/WebLoaderClient.cpp: - (WebKit): - (WebKit::WebLoaderClient::registerIntentServiceForFrame): - * UIProcess/WebLoaderClient.h: - (WebKit): - (WebLoaderClient): - * UIProcess/WebPageProxy.cpp: - (WebKit): - (WebKit::WebPageProxy::registerIntentServiceForFrame): - * UIProcess/WebPageProxy.h: - (WebKit): - (WebPageProxy): - * UIProcess/WebPageProxy.messages.in: - * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: - (WebKit): - (WebKit::WebFrameLoaderClient::registerIntentService): - * WebProcess/WebCoreSupport/WebFrameLoaderClient.h: - (WebFrameLoaderClient): + (_WebKitWebViewPrivate): Keep a reference of the favicon. + (webkitWebViewCancelFaviconRequest): Cancel any async operation to + get the favicon. + (webkitWebViewUpdateFavicon): Check if favicon has changed and + save it emitting also notify::favicon signal. + (iconReadyCallback): Only update the favicon if we don't have one + already. + (webkitWebViewFinalize): Call webkitWebViewCancelFaviconRequest(). + (getFaviconReadyCallback): Update the favicon. + (webkitWebViewRequestFavicon): Request a new favicon. + (webkitWebViewLoadChanged): Try to get the favicon when the load + has been committed and the URI is the final one. + (webkit_web_view_get_favicon): Return the cached favicon. + * UIProcess/API/gtk/tests/TestWebKitFaviconDatabase.cpp: + (serverCallback): + (testSetDirectory): + (testGetFavicon): + (testWebViewFavicon): -2012-06-14 Carlos Garcia Campos <cgarcia@igalia.com> +2012-10-02 Carlos Garcia Campos <cgarcia@igalia.com> - [WK2] Add WKHitTestResultIsContentEditable() - https://bugs.webkit.org/show_bug.cgi?id=80597 + [GTK] Add API to get the web view that initiated a custom URI request to WebKit2 GTK+ + https://bugs.webkit.org/show_bug.cgi?id=97895 Reviewed by Martin Robinson. - * Shared/WebHitTestResult.cpp: - (WebKit::WebHitTestResult::Data::encode): Encode isContentEditable. - (WebKit::WebHitTestResult::Data::decode): Decode isContentEditable. - * Shared/WebHitTestResult.h: - (Data): Add isContentEditable. - (WebKit::WebHitTestResult::Data::Data): Initialize - isContentEditable. - (WebKit::WebHitTestResult::isContentEditable): Returns whether - hit test result target is editable content. - * UIProcess/API/C/WKHitTestResult.cpp: - (WKHitTestResultIsContentEditable): C API to get whether hit test - result target is editable content. - * UIProcess/API/C/WKHitTestResult.h: - * UIProcess/API/gtk/WebKitHitTestResult.cpp: - (webkitHitTestResultCreate): Add - WEBKIT_HIT_TEST_RESULT_CONTEXT_EDITABLE flags to the context if - hit test result target is editable content. - (webkit_hit_test_result_context_is_editable): Returns TRUE if - WEBKIT_HIT_TEST_RESULT_CONTEXT_EDITABLE flags is present in - context. - * UIProcess/API/gtk/WebKitHitTestResult.h: - * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Add new symbols. - * UIProcess/API/gtk/tests/TestWebKitWebView.cpp: - (testWebViewMouseTarget): Add tests for - WEBKIT_HIT_TEST_RESULT_CONTEXT_EDITABLE. - -2012-06-14 Grzegorz Czajkowski <g.czajkowski@samsung.com> - - [WK2] Fix client interface size for WKPageLoaderClient. - https://bugs.webkit.org/show_bug.cgi?id=88764 - - Reviewed by Anders Carlsson. - - Fixes offset of WKPageLoaderClient for version 0 by adding didDetectXSSForFrame. - The offset should be off the first new callback that was added in the new version. - - * Shared/APIClientTraits.cpp: - (WebKit): - -2012-06-13 Christophe Dumez <christophe.dumez@intel.com> - - [WK2] Add implementation for dispatchIntent in WebFrameLoaderClient - https://bugs.webkit.org/show_bug.cgi?id=88340 - - Reviewed by Kenneth Rohde Christiansen. - - Add implementation for dispatchIntent() in WebFrameLoaderClient. - - * CMakeLists.txt: - * GNUmakefile.list.am: - * Shared/API/c/WKBase.h: - * Shared/APIClientTraits.h: - * Shared/APIObject.h: - * Shared/IntentData.cpp: Added. - (WebKit): - (WebKit::IntentData::encode): - (WebKit::IntentData::decode): - * Shared/IntentData.h: Added. - (CoreIPC): - (WebKit): - (IntentData): - * Target.pri: - * UIProcess/API/C/WKAPICast.h: - (WebKit): - * UIProcess/API/C/WKPage.h: - * UIProcess/API/gtk/WebKitLoaderClient.cpp: - (attachLoaderClientToView): - * UIProcess/WebIntentData.cpp: Added. - (WebKit): - (WebKit::WebIntentData::WebIntentData): - (WebKit::WebIntentData::data): - * UIProcess/WebIntentData.h: Added. - (WebKit): - (WebIntentData): - (WebKit::WebIntentData::create): - (WebKit::WebIntentData::~WebIntentData): - (WebKit::WebIntentData::action): - (WebKit::WebIntentData::payloadType): - (WebKit::WebIntentData::extras): - (WebKit::WebIntentData::suggestions): - (WebKit::WebIntentData::type): - * UIProcess/WebLoaderClient.cpp: - (WebKit): - (WebKit::WebLoaderClient::didReceiveIntentForFrame): - * UIProcess/WebLoaderClient.h: - (WebKit): - (WebLoaderClient): - * UIProcess/WebPageProxy.cpp: - (WebKit): - (WebKit::WebPageProxy::didReceiveIntentForFrame): - * UIProcess/WebPageProxy.h: - (WebKit): - (WebPageProxy): - * UIProcess/WebPageProxy.messages.in: - * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: - (WebKit::WebFrameLoaderClient::dispatchIntent): - -2012-06-13 Tim Horton <timothy_horton@apple.com> - - Rename _swapView:with: to _replaceView:with: - https://bugs.webkit.org/show_bug.cgi?id=89037 - - Reviewed by Darin Adler. - - _swapView:with: is a misnomer - after calling it, the first view is no longer - contained within the view hierarchy. "Replace" is a more accurate term. - - * UIProcess/mac/WKFullScreenWindowController.mm: - (-[WKFullScreenWindowController enterFullScreen:]): - (-[WKFullScreenWindowController finishedExitFullScreenAnimation:]): - (-[WKFullScreenWindowController _replaceView:with:]): - -2012-06-13 Martin Robinson <mrobinson@igalia.com> - - [GTK] Add an accelerated compositing implementation for WebKit2 - https://bugs.webkit.org/show_bug.cgi?id=86037 - - Reviewed by Alejandro G. Castro. - - Add an implementation of LayerTreeHost for GTK+ that uses TextureMapperGL. - Later this implementation will fall back to using the ImageBuffer TextureMapper. - - * GNUmakefile.am: Add new files to the compilation. - * Shared/LayerTreeContext.h: - (LayerTreeContext): The GTK+ version of the LayerTreeContext just holds window handle. - * Shared/gtk/LayerTreeContextGtk.cpp: Copied from Source/WebKit2/WebProcess/WebPage/LayerTreeHost.cpp. - * WebProcess/WebPage/gtk/LayerTreeHostGtk.h: Added. - * WebProcess/WebPage/gtk/LayerTreeHostGtk.cpp: Added. - Add this LayerTreeHost implementation that just creates a GL context from the widget X11 window ID. - Later implementations might find a more cross-platform solution. - * WebProcess/WebPage/gtk/WebPageGtk.cpp: - (WebKit::WebPage::platformInitialize): Initialize the native window handle to be zero. - (WebKit::WebPage::widgetMapped): When mapping the widget, try to get the native window - handle and send it to the WebProcess. - -2012-06-13 Andras Becsi <andras.becsi@nokia.com> - - [Qt][WK2] ASSERT(m_rawAttributes.initialScale > 0) in QtViewportHandler::initialRect() - https://bugs.webkit.org/show_bug.cgi?id=89026 - - Reviewed by Csaba Osztrogonác. - - Only act on viewport attribute changes if the layout size is valid. - - * UIProcess/qt/QtViewportHandler.cpp: - (WebKit::QtViewportHandler::setInitialScaleIfNeeded): - (WebKit::QtViewportHandler::viewportAttributesChanged): - -2012-06-13 Brent Fulgham <bfulgham@webkit.org> - - [WinCairo] Build fix after Windows export definition file change. - - * win/WebKit2CFLite.def: Add missing symbol exports. - -2012-06-13 Allan Sandfeld Jensen <allan.jensen@nokia.com> - - [Qt] Fixed visible content rect lost during page-load - https://bugs.webkit.org/show_bug.cgi?id=88991 - - Reviewed by Kenneth Rohde Christiansen. - - * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: - (WebKit::WebFrameLoaderClient::transitionToCommittedForNewPage): - -2012-06-13 Sheriff Bot <webkit.review.bot@gmail.com> - - Unreviewed, rolling out r120209. - http://trac.webkit.org/changeset/120209 - https://bugs.webkit.org/show_bug.cgi?id=89007 - - Broke the WebKit2 mac build. (Requested by andersca on - #webkit). - - * CMakeLists.txt: - * GNUmakefile.list.am: - * Shared/API/c/WKBase.h: - * Shared/APIClientTraits.h: - * Shared/APIObject.h: - * Shared/IntentData.cpp: Removed. - * Shared/IntentData.h: Removed. - * Target.pri: - * UIProcess/API/C/WKAPICast.h: - (WebKit): - * UIProcess/API/C/WKPage.h: - * UIProcess/API/gtk/WebKitLoaderClient.cpp: - (attachLoaderClientToView): - * UIProcess/WebIntentData.cpp: Removed. - * UIProcess/WebIntentData.h: Removed. - * UIProcess/WebLoaderClient.cpp: - * UIProcess/WebLoaderClient.h: - (WebKit): - (WebLoaderClient): - * UIProcess/WebPageProxy.cpp: - * UIProcess/WebPageProxy.h: - (WebKit): - (WebPageProxy): - * UIProcess/WebPageProxy.messages.in: - * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: - (WebKit::WebFrameLoaderClient::dispatchIntent): - -2012-06-13 Alexis Menard <alexis.menard@openbossa.org> - - Web Inspector: add a way to get the remote inspector url for a given page. - https://bugs.webkit.org/show_bug.cgi?id=88902 - - Reviewed by Jocelyn Turcotte. - - Expose the remote inspector url for a given page in the API. If you want - to create a web view and load directly the inspector for the page you want to inspect, - it helps to get the url as it is impossible to figure it out from the API layer. - - * UIProcess/API/qt/qquickwebview.cpp: - (QQuickWebViewExperimental::remoteInspectorUrl): - * UIProcess/API/qt/qquickwebview_p.h: - * UIProcess/InspectorServer/WebInspectorServer.cpp: - (WebKit): - (WebKit::WebInspectorServer::inspectorUrlForPageID): - * UIProcess/InspectorServer/WebInspectorServer.h: - (WebInspectorServer): - * UIProcess/InspectorServer/WebSocketServer.cpp: - (WebKit::WebSocketServer::WebSocketServer): - (WebKit::WebSocketServer::listen): - (WebKit::WebSocketServer::close): - * UIProcess/InspectorServer/WebSocketServer.h: - (WebKit::WebSocketServer::bindAddress): - (WebKit::WebSocketServer::port): - (WebKit::WebSocketServer::serverState): - (WebSocketServer): - * UIProcess/InspectorServer/qt/WebInspectorServerQt.cpp: - (WebKit::remoteInspectorPagePath): - (WebKit): - (WebKit::WebInspectorServer::inspectorUrlForPageID): - (WebKit::WebInspectorServer::buildPageList): - * UIProcess/WebInspectorProxy.h: - (WebKit::WebInspectorProxy::remoteInspectionPageID): - -2012-06-13 Christophe Dumez <christophe.dumez@intel.com> - - [WK2] Add implementation for dispatchIntent in WebFrameLoaderClient - https://bugs.webkit.org/show_bug.cgi?id=88340 - - Reviewed by Kenneth Rohde Christiansen. - - Add implementation for dispatchIntent() in WebFrameLoaderClient. - - * CMakeLists.txt: - * GNUmakefile.list.am: - * Shared/API/c/WKBase.h: - * Shared/APIClientTraits.h: - * Shared/APIObject.h: - * Shared/IntentData.cpp: Added. - (WebKit): - (WebKit::IntentData::encode): - (WebKit::IntentData::decode): - * Shared/IntentData.h: Added. - (CoreIPC): - (WebKit): - (IntentData): - * Target.pri: - * UIProcess/API/C/WKAPICast.h: - (WebKit): - * UIProcess/API/C/WKPage.h: - * UIProcess/API/gtk/WebKitLoaderClient.cpp: - (attachLoaderClientToView): - * UIProcess/WebIntentData.cpp: Added. - (WebKit): - (WebKit::WebIntentData::WebIntentData): - (WebKit::WebIntentData::data): - * UIProcess/WebIntentData.h: Added. - (WebKit): - (WebIntentData): - (WebKit::WebIntentData::create): - (WebKit::WebIntentData::~WebIntentData): - (WebKit::WebIntentData::action): - (WebKit::WebIntentData::payloadType): - (WebKit::WebIntentData::extras): - (WebKit::WebIntentData::suggestions): - (WebKit::WebIntentData::type): - * UIProcess/WebLoaderClient.cpp: - (WebKit): - (WebKit::WebLoaderClient::didReceiveIntentForFrame): - * UIProcess/WebLoaderClient.h: - (WebKit): - (WebLoaderClient): + The message DidReceiveURIRequest is now sent to the page that + initiated the request that forwards the mesassage to the + WebSoupRequestManagerProxy. + + * UIProcess/API/C/soup/WKSoupRequestManager.h: Update + didReceiveURIRequest callback to receive the initiating page ID. + * UIProcess/API/efl/ewk_context_request_manager_client.cpp: + (didReceiveURIRequest): Update the callback API change. + * UIProcess/API/gtk/WebKitRequestManagerClient.cpp: + (didReceiveURIRequest): Pass the initiating page to the + WebKitURISchemeRequest constructor. + * UIProcess/API/gtk/WebKitURISchemeRequest.cpp: + (_WebKitURISchemeRequestPrivate): Keep a reference to the + WebPageProxy that initiatesd the request. + (webkitURISchemeRequestCreate): Save the initiating page. + (webkit_uri_scheme_request_get_web_view): Return the view widget + of the initiating WebPageProxy. + * UIProcess/API/gtk/WebKitURISchemeRequest.h: + * UIProcess/API/gtk/WebKitURISchemeRequestPrivate.h: + * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Add new symbol. + * UIProcess/API/gtk/tests/TestWebKitWebContext.cpp: * UIProcess/WebPageProxy.cpp: - (WebKit): - (WebKit::WebPageProxy::didReceiveIntentForFrame): + (WebKit::WebPageProxy::didReceiveURIRequest): Forward the request + to the soup request manager proxy. * UIProcess/WebPageProxy.h: - (WebKit): - (WebPageProxy): - * UIProcess/WebPageProxy.messages.in: - * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: - (WebKit::WebFrameLoaderClient::dispatchIntent): - -2012-06-13 Balazs Kelemen <kbalazs@webkit.org> - - [Qt][WK2] Scanning plugins blocks the UI for a long time - https://bugs.webkit.org/show_bug.cgi?id=88535 - - Reviewed by Simon Hausmann. - - Implement a persistent cache for the meta data of plugins. - This way the UI process will not block for too long when - it's time to scan the plugins (except the first time). - The cache is a json file stored in a standard hidden cache - directory. - - * Shared/qt/QtDefaultDataLocation.cpp: Added. - (WebKit): - (WebKit::defaultDataLocation): - * Shared/qt/QtDefaultDataLocation.h: Added. - (WebKit): - Added a common helper for the path we use to - put stuff into. - - * Target.pri: - * UIProcess/Plugins/qt/PluginProcessProxyQt.cpp: - (WebKit::cacheFile): - (WebKit): - (WebKit::readMetaDataFromCacheFile): - (WebKit::writeToCacheFile): - (WebKit::appendToCacheFile): - (WebKit::tryReadPluginMetaDataFromCacheFile): - (WebKit::PluginProcessProxy::scanPlugin): - * UIProcess/qt/WebContextQt.cpp: - -2012-06-13 Kenneth Rohde Christiansen <kenneth@webkit.org> - - [Qt] Do not set contents pos to the current position - https://bugs.webkit.org/show_bug.cgi?id=88990 - - Reviewed by Laszlo Gombos. - - This is basically an optimization but it also solves flickering - in some cases. - - * UIProcess/API/qt/qquickwebview.cpp: - (QQuickWebView::setContentPos): - -2012-06-12 MORITA Hajime <morrita@google.com> - - Shadow Pseudo ID should be able to nest to point nested shadow DOM. - https://bugs.webkit.org/show_bug.cgi?id=62218 - - Reviewed by Dimitri Glazkov. - - * win/WebKit2.def: - * win/WebKit2CFLite.def: - -2012-06-12 Kenneth Rohde Christiansen <kenneth@webkit.org> - - Unreviewed build fix. - - * UIProcess/qt/QtViewportHandler.cpp: - (WebKit::QtViewportHandler::initialRect): - -2012-06-11 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> - - Using extrernal ICU library on case unsensitive drives will not work - https://bugs.webkit.org/show_bug.cgi?id=70913 - - Reviewed by Csaba Osztrogonác. - - * WebProcess/WebPage/UpdateAtlas.cpp: - -2012-06-12 Kenneth Rohde Christiansen <kenneth@webkit.org> - - [Qt] Do not move/scale content while the user is interacting with it - https://bugs.webkit.org/show_bug.cgi?id=88872 - - Reviewed by Simon Hausmann. - - Don't try moving content into valid bounds when the content - size changes and the user is interacting with the content. - - Only apply the viewport initial scale after user interaction - has ended. - - * UIProcess/qt/QtViewportHandler.cpp: - (WebKit::ViewportUpdateDeferrer::~ViewportUpdateDeferrer): - (WebKit::QtViewportHandler::setInitialScaleIfNeeded): - (WebKit::QtViewportHandler::viewportAttributesChanged): - (WebKit::QtViewportHandler::pageContentsSizeChanged): - (WebKit::QtViewportHandler::initialRect): - (WebKit): - * UIProcess/qt/QtViewportHandler.h: - (QtViewportHandler): - -2012-06-11 Kaustubh Atrawalkar <kaustubh@motorola.com> - - [DRT] LTC:: counterValueForElementById() could be moved to Internals. - https://bugs.webkit.org/show_bug.cgi?id=84406 - - Reviewed by Hajime Morita. - - Exporting Internals::counterValueForElement symbols for the win build. - - * win/WebKit2.def: - -2012-06-11 Ryuan Choi <ryuan.choi@samsung.com> - - [CMAKE][WK2] Make WebProcess target name more clear. - https://bugs.webkit.org/show_bug.cgi?id=88767 - - Reviewed by Ryosuke Niwa. - - * CMakeLists.txt: Change WebProcess_NAME to WebProcess_EXECUTABLE_NAME. - -2012-06-11 Alexis Menard <alexis.menard@openbossa.org> - - [CSS3 Backgrounds and Borders] Protect box-decoration-break behind a feature flag. - https://bugs.webkit.org/show_bug.cgi?id=88804 - - Reviewed by Tony Chang. - - Protect box-decoration-break behind a feature flag enabled by default. - - * Configurations/FeatureDefines.xcconfig: - -2012-06-11 Gyuyoung Kim <gyuyoung.kim@samsung.com> - - [CMAKE][EFL] Remove duplicated executable output path - https://bugs.webkit.org/show_bug.cgi?id=88765 - - Reviewed by Daniel Bates. - - CMake files for EFL port have redefined executable output path. However, EFL port doesn't - need to define again because it is already defined in top-level CMake file. - - * CMakeLists.txt: - -2012-06-11 Anders Carlsson <andersca@apple.com> - - Pass the right color space over to the web process so we can set it on our CA context - https://bugs.webkit.org/show_bug.cgi?id=88819 - <rdar://problem/11629050> - - Reviewed by John Sullivan. - - * Platform/mac/LayerHostingContext.h: - (LayerHostingContext): - * Platform/mac/LayerHostingContext.mm: - (WebKit::LayerHostingContext::createForPort): - (WebKit::LayerHostingContext::createForWindowServer): - Use a single constructor and explicitly set up the parameters of the constructed object. - - (WebKit::LayerHostingContext::setColorSpace): - (WebKit::LayerHostingContext::colorSpace): - Add getter and setter. - - * Scripts/webkit2/messages.py: - (struct_or_class): - WebKit::ColorSpaceData is a struct. - - * Shared/WebPageCreationParameters.cpp: - Encode and decode the color space parameter. - - * Shared/WebPageCreationParameters.h: - Add the color space. - - * Shared/mac/ColorSpaceData.h: Added. - * Shared/mac/ColorSpaceData.mm: Added. - Add a new class that represents a color space that can be sent over the wire. - - * UIProcess/API/mac/PageClientImpl.h: - * UIProcess/API/mac/PageClientImpl.mm: - (WebKit::PageClientImpl::colorSpace): - Call through to the WKView. - - * UIProcess/API/mac/WKView.mm: - (-[WKView _windowDidChangeBackingProperties:]): - Fix whitespace. - - (-[WKView viewDidChangeBackingProperties]): - Check if our new color space is different from the current one and null the current one out if that is the case, - it will be reinitialized by the next call to -[WKView _colorSpace]. - - (-[WKView _colorSpace:]): - Compute the color space. If we're not in a window we'll get the main screen's color space. - - * UIProcess/DrawingAreaProxy.h: - (WebKit::DrawingAreaProxy::colorSpaceDidChange): - Add empty stub. - - * UIProcess/PageClient.h: - Add colorSpace getter. - - * UIProcess/WebPageProxy.cpp: - (WebKit::WebPageProxy::creationParameters): - Initialize the color space. - - * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h: - * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm: - (WebKit::TiledCoreAnimationDrawingAreaProxy::colorSpaceDidChange): - Send the new color space over to the web process. - - * UIProcess/mac/WebPageProxyMac.mm: - (WebKit::WebPageProxy::colorSpace): - Call through to the page client. - - * WebKit2.xcodeproj/project.pbxproj: - Add ColorSpaceData.h and ColorSpaceData.mm. - - * WebProcess/WebPage/DrawingArea.h: - * WebProcess/WebPage/DrawingArea.messages.in: - Add SetColorSpace message. - - * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm: - (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea): - Set the color space from the creation parameters. - - (WebKit::TiledCoreAnimationDrawingArea::setColorSpace): - Set the color space on the layer hosting context. - - (WebKit::TiledCoreAnimationDrawingArea::updateLayerHostingContext): - Make sure we apply the color space from the previous layer hosting context if one exists. - -2012-06-11 Anders Carlsson <andersca@apple.com> - - Crash when a plug-in tries to use the NPRuntime API with JavaScript disabled - https://bugs.webkit.org/show_bug.cgi?id=88797 - <rdar://problem/11574844> - - Reviewed by Brady Eidson. - - * PluginProcess/PluginControllerProxy.cpp: - (WebKit::PluginControllerProxy::initialize): - Handle the windowNPObjectID being 0. - - (WebKit::PluginControllerProxy::windowScriptNPObject): - Handle m_windownPObject being null. - - * WebProcess/Plugins/PluginView.cpp: - (WebKit::PluginView::windowScriptNPObject): - Return null if JavaScript is disabled. - - (WebKit::PluginView::pluginElementNPObject): - Ditto. - -2012-06-11 Kenneth Rohde Christiansen <kenneth@webkit.org> - - Add QML api for setting device width and height - https://bugs.webkit.org/show_bug.cgi?id=88777 - - Reviewed by Simon Hausmann. - - Add the new API and set the default values to 0 (unset). The - current values were introduced by Qt and only Qt depends on them. - - * Shared/WebPreferencesStore.h: - (WebKit): - * UIProcess/API/qt/qquickwebview.cpp: - (QQuickWebViewExperimental::deviceWidth): - (QQuickWebViewExperimental::setDeviceWidth): - (QQuickWebViewExperimental::deviceHeight): - (QQuickWebViewExperimental::setDeviceHeight): - * UIProcess/API/qt/qquickwebview_p.h: - * UIProcess/qt/QtViewportHandler.cpp: - (WebKit::QtViewportHandler::viewportItemSizeChanged): - * WebProcess/WebPage/WebPage.cpp: - (WebKit::WebPage::sendViewportAttributesChanged): - -2012-06-11 Michael Brüning <michael.bruning@nokia.com> - - [Qt][WK2] Compute and set cache capacities using the current CacheModel - https://bugs.webkit.org/show_bug.cgi?id=73918 - - Reviewed by Kenneth Rohde Christiansen. - - Added implementation of cache model for Qt WK 2 port including supporting - functionality such as WebProcess creation parameters and default values - for disk cache directories. - - * Shared/WebProcessCreationParameters.cpp: - (WebKit::WebProcessCreationParameters::encode): - (WebKit::WebProcessCreationParameters::decode): - * Shared/WebProcessCreationParameters.h: - (WebProcessCreationParameters): - * UIProcess/qt/WebContextQt.cpp: - (WebKit::defaultDiskCacheDirectory): - (WebKit): - (WebKit::WebContext::platformInitializeWebProcess): - * WebProcess/qt/WebProcessQt.cpp: - (WebKit::physicalMemorySizeInBytes): - (WebKit::WebProcess::platformSetCacheModel): - (WebKit::WebProcess::platformInitializeWebProcess): - -2012-06-10 Darin Adler <darin@apple.com> - - Remove unneeded callRemovedLastRef function from TreeShared refactoring - https://bugs.webkit.org/show_bug.cgi?id=88653 - - Reviewed by Sam Weinig. - - * win/WebKit2.def: Export removedLastRef instead of callRemovedLastRef. - * win/WebKit2CFLite.def: Ditto. - -2012-06-10 Ryuan Choi <ryuan.choi@samsung.com> - - [EFL][WK2] Add and refactor ewk API in order to support MiniBrowser without WK API. - https://bugs.webkit.org/show_bug.cgi?id=84124 - - Reviewed by Chang Shu. - - Modify ewk_view and add ewk_context to provide a platform-depedent WebKit2 - API. - This patch provides the minimum to support MiniBrowser. - - * PlatformEfl.cmake: add ewk_context.cpp. - * UIProcess/API/efl/EWebKit2.h: Added. - * UIProcess/API/efl/ewk_context.cpp: Added. - (_Ewk_Context): - (createDefaultWebContext): - (ewk_context_WKContext_get): - (ewk_context_default_get): - * UIProcess/API/efl/ewk_context.h: Added. - * UIProcess/API/efl/ewk_context_private.h: Added. - * UIProcess/API/efl/ewk_view.cpp: - (_Ewk_View_Private_Data): - (_ewk_view_priv_del): - (ewk_view_base_add): - (ewk_view_add_with_context): - (ewk_view_add): - (ewk_view_uri_set): - (ewk_view_uri_get): - * UIProcess/API/efl/ewk_view.h: - * UIProcess/API/efl/ewk_view_private.h: - -2012-06-09 Sukolsak Sakshuwong <sukolsak@google.com> - - Add UNDO_MANAGER flag - https://bugs.webkit.org/show_bug.cgi?id=87908 - - Reviewed by Tony Chang. - - * Configurations/FeatureDefines.xcconfig: - -2012-06-08 Brent Fulgham <bfulgham@webkit.org> - [WinCairo] Build fix after Windows export definition file change. - - * win/WebKit2CFLite.def: This file needs to be kept in sync with - WebKit2.def (aside from the WebKitInterface exports.) - -2012-06-08 Viatcheslav Ostapenko <ostapenko.viatcheslav@nokia.com> - - [Qt] [WK2] API tests randomly assert in WebLayerTreeRenderer::assignImageToLayer - https://bugs.webkit.org/show_bug.cgi?id=88667 - - Reviewed by Noam Rosenthal. - - Move deactivation of WebLayerTreeRenderer from LayerTreeHostProxy::purgeBackingStores - to WebLayerTreeRenderer::purgeGLResources. LayerTreeHostProxy::purgeBackingStores is - invoked on main thread after going through call gate and it is too late to deactivate - renderer here, because some update messages are able to go through. - WebLayerTreeRenderer::purgeGLResources is called directly from render node deallocation - and it is right place to deactivate renderer. - - * UIProcess/LayerTreeHostProxy.cpp: - (WebKit::LayerTreeHostProxy::purgeBackingStores): - * UIProcess/WebLayerTreeRenderer.cpp: - (WebKit::WebLayerTreeRenderer::purgeGLResources): - -2012-06-08 Carlos Garcia Campos <cgarcia@igalia.com> - - [GTK] Add API to get the library version to WebKit2 GTK+ - https://bugs.webkit.org/show_bug.cgi?id=88426 - - Reviewed by Martin Robinson. - - * GNUmakefile.am: - * GNUmakefile.list.am: - * UIProcess/API/gtk/WebKitVersion.cpp: Added. - (webkit_get_major_version): - (webkit_get_minor_version): - (webkit_get_micro_version): - * UIProcess/API/gtk/WebKitVersion.h.in: Added. - * UIProcess/API/gtk/docs/webkit2gtk-docs.sgml: Add new symbols. - * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Add new section - for WebKitVersion. - * UIProcess/API/gtk/tests/GNUmakefile.am: - * UIProcess/API/gtk/tests/TestWebKitVersion.cpp: Added. - (testWebKitVersion): - (testWebKitCheckVersion): - (beforeAll): - (afterAll): - * UIProcess/API/gtk/webkit2.h: Include WebKitVersion.h. - -2012-06-08 Dan Bernstein <mitz@apple.com> - - Tried to fix the Snow Leopard build after r119806. - - * WebKit2Prefix.h: - -2012-06-08 Andy Estes <aestes@apple.com> - - [WebKit2] Move Mac-specific bits from config.h to WebKit2Prefix.h - https://bugs.webkit.org/show_bug.cgi?id=88625 - - Reviewed by Dan Bernstein. - - Since the Mac supports prefix headers, there is no point in having - Mac-specific code in WebKit2's config.h. Move it to WebKit2Prefix.h. - - * WebKit2Prefix.h: - * config.h: - -2012-06-07 Kentaro Hara <haraken@chromium.org> - - Reduce Node object size from 72 byte to 64 byte - https://bugs.webkit.org/show_bug.cgi?id=88528 - - Reviewed by Ryosuke Niwa. - - Added a symbol for callRemovedLastRef(). - - * mac/WebKit2.order: - * win/WebKit2.def: - * win/WebKit2CFLite.def: - -2012-06-07 Andy Estes <aestes@apple.com> - - [WebKit2] Explicitly include CoreFoundation.h in config.h - https://bugs.webkit.org/show_bug.cgi?id=88619 - - Reviewed by Dan Bernstein. - - WebKit2 relies (probably unintentionally) on CoreFoundation.h being - included by CoreGraphics.h (via CGSession.h), but some versions of - CoreGraphics headers don't include CoreFoundation.h. WebKit2 should - include it explicitly in config.h. - - * config.h: Import CoreFoundation.h. - -2012-06-07 Andy Estes <aestes@apple.com> - - [WebKit2] Only include Cocoa.h on platforms that use AppKit - https://bugs.webkit.org/show_bug.cgi?id=88517 - - Reviewed by Sam Weinig. - - * WebKit2Prefix.h: Include Platform.h to get USE() macros. GTK needs to - include autotoolsconfig.h before including Platform.h, so do that first - if building on GTK. Then, if compiling an Objective-C file, it's safe - to include Foundation.h, but not necessarily Cocoa.h; only include the - latter if USE(APPKIT) is true. - * config.h: There's no need to import Cocoa.h since this is already - imported in the prefix header. - -2012-06-07 Anders Carlsson <andersca@apple.com> - - Search highlight does not scroll with the content of the page, and find overlay doesn't work, on large-enough window - https://bugs.webkit.org/show_bug.cgi?id=88577 - <rdar://problem/11430118> - - Reviewed by John Sullivan. - - Prevent the page overlay layer from falling into tiled mode. - - * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm: - (WebKit::TiledCoreAnimationDrawingArea::createPageOverlayLayer): - -2012-06-07 Alexander Færøy <ahf@0x90.dk> - - Add QML API tests for Device Pixel Ratio - https://bugs.webkit.org/show_bug.cgi?id=88531 - - Reviewed by Kenneth Rohde Christiansen. - - This patch adds an initial test case for the QML device pixel ratio - API. The test currently fails and is therefore marked as being - expected to fail. This will be fixed in a separated patch. - - * UIProcess/API/qt/tests/qmltests/WebView/tst_devicePixelRatio.qml: Added. - -2012-06-07 Christophe Dumez <christophe.dumez@intel.com> - - [EFL][WK2] WebKit2-EFL does not link in debug mode - https://bugs.webkit.org/show_bug.cgi?id=88518 - - Unreviewed. Fix WebKit2-EFL linking error in debug mode. - - * CMakeLists.txt: - -2012-06-07 Simon Pena <spena@igalia.com> - - [GTK] Fix broken build due to missing <SECTION> in GTK-DOC - https://bugs.webkit.org/show_bug.cgi?id=88525 - - Unreviewed gardening. Added missing <SECTION> tag. - - * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: - -2012-06-07 Carlos Garcia Campos <cgarcia@igalia.com> - - [GTK] Add API to register custom URI schemes to WebKit2 GTK+ API - https://bugs.webkit.org/show_bug.cgi?id=84133 - - Reviewed by Martin Robinson. - - * GNUmakefile.list.am: Add new files to compilation. - * UIProcess/API/gtk/WebKitPrivate.h: - * UIProcess/API/gtk/WebKitRequestManagerClient.cpp: Added. - (didReceiveURIRequest): Callback emitted by the C API when a - request for a custom URI scheme has been received. Call - webkitWebContextReceivedURIRequest() to handle the request. - (didFailToLoadURIRequest): Callback emitted by the C API when a - request for a custom URI scheme failed to load. Call - webkitWebContextDidFailToLoadURIRequest() to noitfy the web - context. - (attachRequestManagerClientToContext): Initialize the - WKSoupRequestManagerClient. - * UIProcess/API/gtk/WebKitRequestManagerClient.h: Added. - * UIProcess/API/gtk/WebKitURISchemeRequest.cpp: Added. - (webkit_uri_scheme_request_init): - (webkitURISchemeRequestFinalize): - (webkit_uri_scheme_request_class_init): - (webkitURISchemeRequestCreate): Create a new - WebKitURISchemeRequest for the given URI and request identifier. - (webkitURISchemeRequestGetID): Return the request identifier. - (webkitURISchemeRequestCancel): Cancel the request operation. - (webkit_uri_scheme_request_get_scheme): Return the scheme of the - request. - (webkit_uri_scheme_request_get_uri): Return the full URI of the - request. - (webkit_uri_scheme_request_get_path): Return the path of the URI. - (webkitURISchemeRequestReadCallback): Read callback emitted when - reading the contents of the input stream. - (webkit_uri_scheme_request_finish): Finish the request by reading - the contents of the input stream and sending the data to the - WebProcess. - * UIProcess/API/gtk/WebKitURISchemeRequest.h: Added. - * UIProcess/API/gtk/WebKitURISchemeRequestPrivate.h: Added. - * UIProcess/API/gtk/WebKitWebContext.cpp: - (WebKitURISchemeHandler::WebKitURISchemeHandler): Helper struct to - save callback and user data of registered URI schemes. - (createDefaultWebContext): Initialize the SoupRequestManager. - (webkit_web_context_register_uri_scheme): Public API to register a - custom URI scheme providing a callback that will be called to - handle requests for that URI scheme. - (webkitWebContextGetRequestManager): Helper private method to - return the SoupRequestManager. - (webkitWebContextReceivedURIRequest): Get the - WebKitURISchemeHandler for the given request identifier and call - the callback. Save the request in the request map. - (webkitWebContextDidFailToLoadURIRequest): Cancel the ongoing - request. - (webkitWebContextDidFinishURIRequest): Remove the request from the - map. - * UIProcess/API/gtk/WebKitWebContext.h: - * UIProcess/API/gtk/WebKitWebContextPrivate.h: - * UIProcess/API/gtk/docs/webkit2gtk-docs.sgml: Add - WebKitURISchemeRequest section. - * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Add new symbols. - * UIProcess/API/gtk/docs/webkit2gtk.types: Add - webkit_uri_scheme_request_get_type. - * UIProcess/API/gtk/tests/TestWebKitWebContext.cpp: - (testWebContextURIScheme): - (beforeAll): - * UIProcess/API/gtk/webkit2.h: Include WebKitURISchemeRequest.h. - -2012-06-07 Andras Becsi <andras.becsi@nokia.com> - - [Qt][WK2] setPageItemRectVisible() is not guarded by ViewportUpdateDeferrer at scaleAnimationValueChanged() - https://bugs.webkit.org/show_bug.cgi?id=87954 - - Reviewed by Kenneth Rohde Christiansen. - - Resetting the end value, the easing curve or the duration of the scale animation triggers - a recalculation of the animation interval. This might change the current value of the - animated property. - Since guarding of setPageItemRectVisible() relies on animation state change we have to - make sure we only act on animation value changes if the animation is in active state. - - * UIProcess/qt/QtViewportHandler.cpp: - (WebKit::QtViewportHandler::QtViewportHandler): - (WebKit::QtViewportHandler::animatePageItemRectVisible): - (WebKit::QtViewportHandler::scaleAnimationValueChanged): - -2012-06-06 Carlos Garcia Campos <cgarcia@igalia.com> - - [SOUP] WebSoupRequestManager should handle loading errors and zero-length replies - https://bugs.webkit.org/show_bug.cgi?id=88087 - - Reviewed by Martin Robinson. - - * UIProcess/API/C/soup/WKSoupRequestManager.h: + (WebPageProxy): Add didReceiveURIRequest(). + * UIProcess/WebPageProxy.messages.in: Add DidReceiveURIRequest + message. * UIProcess/soup/WebSoupRequestManagerClient.cpp: - (WebKit::WebSoupRequestManagerClient::didFailToLoadURIRequest): - Call didFailToLoadURIRequest in the client if present. + (WebKit::WebSoupRequestManagerClient::didReceiveURIRequest): + Pass the inititing page to the client callback. * UIProcess/soup/WebSoupRequestManagerClient.h: + (WebSoupRequestManagerClient): * UIProcess/soup/WebSoupRequestManagerProxy.cpp: - (WebKit::WebSoupRequestManagerProxy::WebSoupRequestManagerProxy): - Initialize m_loadFailed. - (WebKit::WebSoupRequestManagerProxy::didReceiveURIRequestData): - Don't send more data to the web process if the resource failed to - load. - (WebKit::WebSoupRequestManagerProxy::didFailToLoadURIRequest): Set - m_loadFailed and notifiy the client calling didFailToLoadURIRequest. + (WebKit::WebSoupRequestManagerProxy::didReceiveURIRequest): Pass + the inititing page to the client. * UIProcess/soup/WebSoupRequestManagerProxy.h: - * UIProcess/soup/WebSoupRequestManagerProxy.messages.in: Add - DidFailToLoadURIRequest message. - * WebProcess/soup/WebKitSoupRequestGeneric.cpp: - (webkitSoupRequestGenericSendAsync): Pass the cancellable to the - WebSoupRequestManager. + (WebSoupRequestManagerProxy): + * UIProcess/soup/WebSoupRequestManagerProxy.messages.in: Remove + DidReceiveURIRequest message. + * WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.cpp: + (WebKit::WebFrameNetworkingContext::WebFrameNetworkingContext): + Save the pageID of the WebFrame. + (WebKit::WebFrameNetworkingContext::initiatingPageID): Return the + inititing page ID. + * WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.h: * WebProcess/soup/WebSoupRequestManager.cpp: - (WebKit::WebSoupRequestAsyncData::WebSoupRequestAsyncData): Helper - struct to save requests. - (WebSoupRequestAsyncData): Add a weak pointer to invalidate the - request when it's destroyed before the operation has finished. - (WebKit::WebSoupRequestAsyncData::~WebSoupRequestAsyncData): - Remove the weak pointer. - (WebKit::WebSoupRequestAsyncData::requestFailed): Return whther - the request failed. - (WebKit::WebSoupRequestAsyncData::releaseResult): Return the - result and clear the pointer. - (WebKit::WebSoupRequestManager::didHandleURIRequest): Create and - empty memory stream for zero-length replies instead of creating an - error. - (WebKit::WebSoupRequestManager::didReceiveURIRequestData): If the - request failed and more data expected from the UI process, send a - message to the UI process to notify that the resource load failed. - (WebKit::WebSoupRequestManager::send): Save request information in - the request map. - * WebProcess/soup/WebSoupRequestManager.h: - -2012-06-06 Andy Estes <aestes@apple.com> - - Wrap uppercaseWord, lowercaseWord, and capitalizeWord with USE(APPKIT) - https://bugs.webkit.org/show_bug.cgi?id=88504 - - Reviewed by Dan Bernstein. - - uppercaseWord, lowercaseWord, and capitalizeWord are methods declared - by NSResponder that subclasses are expected to implement. WebKit should - only support these implementations on platforms that use AppKit. + (WebKit::WebSoupRequestManager::send): Send DidReceiveURIRequest + message to the WebPage that initiated the request. - * UIProcess/WebPageProxy.h: - * WebProcess/WebCoreSupport/WebEditorClient.h: - * WebProcess/WebCoreSupport/mac/WebEditorClientMac.mm: - * WebProcess/WebPage/WebPage.cpp: - * WebProcess/WebPage/WebPage.h: - * WebProcess/WebPage/WebPage.messages.in: - -2012-06-06 chandra Shekar Vallala <chandra.vallala@motorola.com> - - [WK2-Gtk]Compilation errors with flag CONTEXT_MENUS=0 - https://bugs.webkit.org/show_bug.cgi?id=87842 - - Reviewed by Martin Robinson. - - Fix for compilation errors while building webkit2-gtk with CONTEXT_MENUS=0 - - * UIProcess/gtk/WebContextMenuProxyGtk.cpp: Added code under CONTEXT_MENUS CC - * UIProcess/gtk/WebContextMenuProxyGtk.h: Ditto - * WebProcess/WebCoreSupport/gtk/WebContextMenuClientGtk.cpp: Ditto - -2012-06-06 Michael Brüning <michael.bruning@nokia.com> - - [Qt][WK2] Add preferredMinimumContentsWidth to the viewport info in MiniBrowser. - https://bugs.webkit.org/show_bug.cgi?id=88327 - - Reviewed by Kenneth Rohde Christiansen. - - * UIProcess/API/qt/qquickwebview.cpp: - (QQuickWebViewExperimental::setPreferredMinimumContentsWidth): - * UIProcess/API/qt/qquickwebview_p.h: - -2012-06-06 Tim Horton <timothy_horton@apple.com> - - WebPage::windowIsVisible is incorrect during resumePainting - https://bugs.webkit.org/show_bug.cgi?id=88374 - <rdar://problem/11587039> - - Reviewed by Simon Fraser. - - Currently, when changing window visibility, WKView calls viewStateDidChange(ViewIsVisible) - and then _updateWindowVisibility. This means that during viewStateDidChange, the WebPage's - windowIsVisible state is incorrect. - - viewStateDidChange(ViewIsVisible) can end up in (one of the DrawingArea implementations)::resumePainting(), - which uses windowIsVisible to determine whether or not to unpause requestAnimationFrame. - - This results in a state where, with some configurations, doing the following: - - 1. requestAnimationFrame() - 2. requestFullScreen() - 3. requestAnimationFrame() - 4. cancelFullScreen() - 5. requestAnimationFrame() - - Will cause the second and third rAF calls to have no effect. Even after cancelFullScreen() is called, - the fact that we have had unpaired suspend/resumeScriptedAnimations will cause the suspend count - on the ScriptedAnimationController to never return to zero, which will cause us to never - recover rAF functionality. - - The fix is very simple: we should _updateWindowVisibility *before* viewStateDidChange, so that it is - always correct for any code called underneath that method. - - * UIProcess/API/mac/WKView.mm: - (-[WKView viewDidMoveToWindow]): - (-[WKView _windowDidOrderOffScreen:]): - (-[WKView _windowDidOrderOnScreen:]): - -2012-06-05 Dinu Jacob <dinu.jacob@nokia.com> - - [Qt][WK2] Use Component.onCompleted in API tests for single and multi file upload tests. - https://bugs.webkit.org/show_bug.cgi?id=88247 - - Reviewed by Kenneth Rohde Christiansen. - - With r116936, Component.onCompleted can be used for callback instead of the - 1s timer in single and multi file upload tests. - - * UIProcess/API/qt/tests/qmltests/WebView/tst_multiFileUpload.qml: - * UIProcess/API/qt/tests/qmltests/WebView/tst_singleFileUpload.qml: - -2012-06-04 Stephanie Lewis <slewis@apple.com> - - https://bugs.webkit.org/show_bug.cgi?id=88370 - Memory sampler should trigger low memory signal - - Reviewed by Geoff Garen. - - Send low memory signal when running the memory sampler. We'd - like to test memory that cannot be freed. - - * Shared/WebMemorySampler.cpp: - (WebKit::WebMemorySampler::sampleTimerFired): - * Shared/WebMemorySampler.h: - (WebMemorySampler): - * Shared/mac/WebMemorySampler.mac.mm: - (WebKit): - (WebKit::WebMemorySampler::sendMemoryPressureEvent): - -2012-06-05 Brady Eidson <beidson@apple.com> - - <rdar://problem/11575898> and https://bugs.webkit.org/show_bug.cgi?id=88372 - REGRESSION(110494): Can no longer drag-and-drop links into FileMaker Pro 12 - - - Before r110494 we used to write the NSStringPboardType to the pasteboard. - After r110494 we write NSURLPboardType instead. - That's basically a no-op, but the NSStringPboardType needs to be restored. - - Before r110494 we wrote the link destination URL to the pasteboard. - After r110494 we write the image src URL if the link is an image. - We need to revert to writing the link URL. - - Fortunately these changes can be accomplished with a 2-line fix. - - Reviewed by Enrica Casucci. - - * UIProcess/API/mac/WKView.mm: - (-[WKView _setPromisedData:WebCore::withFileName:withExtension:withTitle:withURL:withVisibleURL:withArchive:WebCore::forPasteboard:]): - n - -2012-06-05 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> - - [Qt] Implement log channel initialization for WebKit2 - - Reviewed by Alexis Menard. - - * Platform/Logging.cpp: - (WebKit): - * Platform/Logging.h: - (WebKit): - * Platform/qt/LoggingQt.cpp: Copied from Source/WebKit2/Platform/gtk/LoggingGtk.cpp - (WebKit): - (WebKit::initializeLogChannel): - * Target.pri: - -2012-06-05 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> - - WebLayerTreeRenderer behaves wrongly when no contentsScale is set. - https://bugs.webkit.org/show_bug.cgi?id=88357 - - Reviewed by Alexis Menard. - - The contentsScale needs to get a default value in case no - value is explicitely set yet. - This fixes the blank-until-resize problem when running MiniBrowser - in --desktop mode. - - * UIProcess/WebLayerTreeRenderer.cpp: - (WebKit::WebLayerTreeRenderer::WebLayerTreeRenderer): - -2012-06-05 Alexis Menard <alexis.menard@openbossa.org> - - [Qt] Don't propagate viewport size changes if the viewport is empty. - https://bugs.webkit.org/show_bug.cgi?id=88336 +2012-10-02 Zan Dobersek <zandobersek@gmail.com> - Reviewed by Tor Arne Vestbø. + Unreviewed build fix for the GTK port after r130207. + Use proper file separators for new entries. - Qt Quick sequentially set the x, y, width, height of the view. We really want to - start propagating further when the size of the viewport becomes valid, i.e. both - height and width are defined. In any case lower level classes are discarding an empty - size such as WebPage::sendViewportAttributesChanged() so it was pointless to send the size - through the IPC bus for nothing. - - * UIProcess/API/qt/qquickwebview.cpp: - (QQuickWebViewLegacyPrivate::updateViewportSize): - -2012-06-05 Carlos Garcia Campos <cgarcia@igalia.com> - - [GTK] Add webkit_download_get_received_data_length to WebKit2 GTK+ API - https://bugs.webkit.org/show_bug.cgi?id=88323 - - Reviewed by Martin Robinson. - - * UIProcess/API/gtk/WebKitDownload.cpp: - (webkit_download_get_received_data_length): - * UIProcess/API/gtk/WebKitDownload.h: - * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: - * UIProcess/API/gtk/tests/TestDownloads.cpp: - -2012-06-05 Dongwoo Im <dw.im@samsung.com> - - Add 'isProtocolHandlerRegistered' and 'unregisterProtocolHandler'. - https://bugs.webkit.org/show_bug.cgi?id=73176 - - Reviewed by Adam Barth. - - Two more APIs are added in Custom Scheme Handler specification. - http://dev.w3.org/html5/spec/Overview.html#custom-handlers - One is 'isProtocolHandlerRegistered' to query whether the specific URL - is registered or not. - The other is 'unregisterProtocolHandler' to remove the registered URL. - - * Configurations/FeatureDefines.xcconfig: Add a macro 'ENABLE_CUSTOM_SCHEME_HANDLER'. - -2012-06-05 Christophe Dumez <christophe.dumez@intel.com> - - [EFL][WK2] WebKit2-EFL does not link with gold linker - https://bugs.webkit.org/show_bug.cgi?id=88295 - - Unreviewed. Fix linking when using gold linker. - - * PlatformEfl.cmake: - -2012-06-05 Mario Sanchez Prada <msanchez@igalia.com> - - [GTK][WK2] Implement API for Geolocation permission requests in the GTK port - https://bugs.webkit.org/show_bug.cgi?id=83879 - - Reviewed by Carlos Garcia Campos. - - Added a new kind of permission request for supporting the - Geolocation API in WebKit2GTK+. - - New WebKitGeolocationPermissionRequest class, implementing the - WebKitPermissionRequest interface, to enabling client applications - to allow or deny geolocation permission requests. - - * GNUmakefile.list.am: Added new files. - * UIProcess/API/gtk/WebKitGeolocationPermissionRequest.cpp: Added. - (_WebKitGeolocationPermissionRequestPrivate): - (webkitGeolocationPermissionRequestAllow): - (webkitGeolocationPermissionRequestDeny): - (webkit_permission_request_interface_init): - (webkit_geolocation_permission_request_init): - (webkitGeolocationPermissionRequestFinalize): - (webkit_geolocation_permission_request_class_init): - (webkitGeolocationPermissionRequestCreate): - * UIProcess/API/gtk/WebKitGeolocationPermissionRequest.h: Added. - (_WebKitGeolocationPermissionRequest): - (_WebKitGeolocationPermissionRequestClass): - * UIProcess/API/gtk/WebKitGeolocationPermissionRequestPrivate.h: Added. - - Include WKGeolocationPermissionRequest.h in WebKitPrivate.h, so we - can use it from the new WebKitGeolocationPermissionRequest class. - - * UIProcess/API/gtk/WebKitPrivate.h: Added new include. - - Implement geolocation permission requests in the UI client. - - * UIProcess/API/gtk/WebKitUIClient.cpp: - (decidePolicyForGeolocationPermissionRequest): Create a new - instance of the WebKitGeolocationPermissionRequest class and call - to webkitWebViewMakePermissionRequest(). - (attachUIClientToView): Provide an implementation function for - decidePolicyForGeolocationPermissionRequest. - * UIProcess/API/gtk/WebKitWebView.h: Add new element to - WebKitPermissionRequestType enumeration for geolocation requests. - * UIProcess/API/gtk/webkit2.h: Added header file for - WebKitGeolocationPermissionRequest - - New unit tests to test allowing and denying permission requests. - - * UIProcess/API/gtk/tests/TestWebKitWebView.cpp: - (testWebViewPermissionRequests): New test that loads a simple HTML - with JavaScript code requesting the current location. - (beforeAll): Added new test. - - Updated documentation files. - - * UIProcess/API/gtk/docs/webkit2gtk-docs.sgml: - * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: - -2012-06-04 Sadrul Habib Chowdhury <sadrul@chromium.org> - - [chromium] Fix software rendering for device-scale-factor > 1 - https://bugs.webkit.org/show_bug.cgi?id=88136 - - Reviewed by Darin Fisher. - - Export WebCore::Page::setDeviceScaleFactor and WebCore::Settings::setDefaultDeviceScaleFactor. - - * win/WebKit2.def: - * win/WebKit2CFLite.def: - -2012-06-04 Andy Estes <aestes@apple.com> - - Use ENABLE() and USE() macros in a few more places - https://bugs.webkit.org/show_bug.cgi?id=88245 - - Reviewed by Anders Carlsson. - - * UIProcess/API/C/WKPluginSiteDataManager.cpp: Only include npapi.h if - Netscape plug-in API is enabled. - * UIProcess/mac/CorrectionPanel.h: Wrap with USE(AUTOCORRECTION_PANEL) - * WebProcess/Authentication/AuthenticationManager.cpp: Use the stub - version of tryUsePlatformCertificateInfoForChallenge if - Security.framework isn't available. - * WebProcess/WebProcess.messages.in: Only generate two messages if - Security.framework is available. - * WebProcess/mac/KeychainItemShimMethods.mm: Wrap with - USE(SECURITY_FRAMEWORK). - -2012-06-04 Andy Estes <aestes@apple.com> - - Add stub WebKit2 implementations of PLUGIN_PROXY_FOR_VIDEO methods declared in FrameLoaderClient - https://bugs.webkit.org/show_bug.cgi?id=88244 - - Reviewed by Anders Carlsson. - - * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: - (WebKit::WebFrameLoaderClient::createMediaPlayerProxyPlugin): Add a stub implementation. - (WebKit::WebFrameLoaderClient::hideMediaPlayerProxyPlugin): Ditto. - (WebKit::WebFrameLoaderClient::showMediaPlayerProxyPlugin): Ditto. - * WebProcess/WebCoreSupport/WebFrameLoaderClient.h: - -2012-06-04 Mario Sanchez Prada <msanchez@igalia.com> - - [GTK][WK2] Implement geolocation provider for the GTK port - https://bugs.webkit.org/show_bug.cgi?id=83877 - - Reviewed by Carlos Garcia Campos. - - Add a new client-based geolocation provider for WebKit2GTK+, relying the - new Geoclue-based geolocation provider available in WebCore. - - * GNUmakefile.am: * GNUmakefile.list.am: - * UIProcess/API/gtk/WebKitGeolocationProvider.cpp: Added. - (toGeolocationProvider): - (startUpdatingCallback): - (stopUpdatingCallback): - (WebKitGeolocationProvider::~WebKitGeolocationProvider): - (WebKitGeolocationProvider::create): - (WebKitGeolocationProvider::WebKitGeolocationProvider): - (WebKitGeolocationProvider::startUpdating): - (WebKitGeolocationProvider::stopUpdating): - (WebKitGeolocationProvider::notifyPositionChanged): - (WebKitGeolocationProvider::notifyErrorOccurred): - * UIProcess/API/gtk/WebKitGeolocationProvider.h: Added. - * UIProcess/API/gtk/WebKitPrivate.h: - * UIProcess/API/gtk/WebKitWebContext.cpp: - (_WebKitWebContextPrivate): - (createDefaultWebContext): - -2012-06-04 Zalan Bujtas <zbujtas@gmail.com> - - [Qt][WK2] Rename QtViewportInteractionEngine to QtViewportHandler. - https://bugs.webkit.org/show_bug.cgi?id=88226 - - Reviewed by Kenneth Rohde Christiansen. - - * Target.pri: - * UIProcess/API/qt/qquickwebpage_p_p.h: - (WebKit): - * UIProcess/API/qt/qquickwebview.cpp: - (QQuickWebViewFlickablePrivate::~QQuickWebViewFlickablePrivate): - (QQuickWebViewFlickablePrivate::onComponentComplete): - (QQuickWebViewFlickablePrivate::didChangeViewportProperties): - (QQuickWebViewFlickablePrivate::updateViewportSize): - (QQuickWebViewFlickablePrivate::pageDidRequestScroll): - (QQuickWebViewFlickablePrivate::didChangeContentsSize): - * UIProcess/API/qt/qquickwebview_p.h: - (WebKit): - * UIProcess/API/qt/qquickwebview_p_p.h: - (WebKit): - (QQuickWebViewPrivate::viewportHandler): - (QQuickWebViewFlickablePrivate::viewportHandler): - (QQuickWebViewFlickablePrivate): - * UIProcess/API/qt/qwebkittest.cpp: - (QWebKitTest::contentsScale): - (QWebKitTest::devicePixelRatio): - (QWebKitTest::initialScale): - (QWebKitTest::minimumScale): - (QWebKitTest::maximumScale): - (QWebKitTest::isScalable): - (QWebKitTest::layoutSize): - * UIProcess/qt/QtGestureRecognizer.cpp: - (WebKit::QtGestureRecognizer::viewportHandler): - * UIProcess/qt/QtGestureRecognizer.h: - (WebKit): - * UIProcess/qt/QtPanGestureRecognizer.cpp: - (WebKit::QtPanGestureRecognizer::update): - (WebKit::QtPanGestureRecognizer::finish): - (WebKit::QtPanGestureRecognizer::cancel): - * UIProcess/qt/QtPinchGestureRecognizer.cpp: - (WebKit::QtPinchGestureRecognizer::update): - (WebKit::QtPinchGestureRecognizer::finish): - (WebKit::QtPinchGestureRecognizer::cancel): - * UIProcess/qt/QtViewportHandler.cpp: Copied from Source/WebKit2/UIProcess/qt/QtViewportInteractionEngine.cpp. - (WebKit::ViewportUpdateDeferrer::ViewportUpdateDeferrer): - (WebKit::ViewportUpdateDeferrer::~ViewportUpdateDeferrer): - (ViewportUpdateDeferrer): - (WebKit::QtViewportHandler::suspendPageContent): - (WebKit::QtViewportHandler::resumePageContent): - (WebKit::QtViewportHandler::cssScaleFromItem): - (WebKit::QtViewportHandler::itemScaleFromCSS): - (WebKit::QtViewportHandler::itemCoordFromCSS): - (WebKit::QtViewportHandler::itemRectFromCSS): - (WebKit::QtViewportHandler::QtViewportHandler): - (WebKit::QtViewportHandler::~QtViewportHandler): - (WebKit::QtViewportHandler::innerBoundedCSSScale): - (WebKit::QtViewportHandler::outerBoundedCSSScale): - (WebKit::QtViewportHandler::viewportAttributesChanged): - (WebKit::QtViewportHandler::pageContentsSizeChanged): - (WebKit::QtViewportHandler::setPageItemRectVisible): - (WebKit::QtViewportHandler::animatePageItemRectVisible): - (WebKit::QtViewportHandler::flickMoveStarted): - (WebKit::QtViewportHandler::flickMoveEnded): - (WebKit::QtViewportHandler::pageItemPositionChanged): - (WebKit::QtViewportHandler::pageContentPositionRequested): - (WebKit::QtViewportHandler::scaleAnimationStateChanged): - (WebKit::QtViewportHandler::scaleAnimationValueChanged): - (WebKit::QtViewportHandler::touchBegin): - (WebKit::QtViewportHandler::touchEnd): - (WebKit::QtViewportHandler::computePosRangeForPageItemAtScale): - (WebKit::QtViewportHandler::focusEditableArea): - (WebKit::QtViewportHandler::zoomToAreaGestureEnded): - (WebKit::QtViewportHandler::nearestValidBounds): - (WebKit::QtViewportHandler::setCSSScale): - (WebKit::QtViewportHandler::currentCSSScale): - (WebKit::QtViewportHandler::scrollAnimationActive): - (WebKit::QtViewportHandler::panGestureActive): - (WebKit::QtViewportHandler::panGestureStarted): - (WebKit::QtViewportHandler::panGestureRequestUpdate): - (WebKit::QtViewportHandler::panGestureEnded): - (WebKit::QtViewportHandler::panGestureCancelled): - (WebKit::QtViewportHandler::scaleAnimationActive): - (WebKit::QtViewportHandler::cancelScrollAnimation): - (WebKit::QtViewportHandler::interruptScaleAnimation): - (WebKit::QtViewportHandler::pinchGestureActive): - (WebKit::QtViewportHandler::pinchGestureStarted): - (WebKit::QtViewportHandler::pinchGestureRequestUpdate): - (WebKit::QtViewportHandler::pinchGestureEnded): - (WebKit::QtViewportHandler::pinchGestureCancelled): - (WebKit::QtViewportHandler::visibleContentsRect): - (WebKit::QtViewportHandler::informVisibleContentChange): - (WebKit::QtViewportHandler::viewportItemSizeChanged): - (WebKit::QtViewportHandler::scaleContent): - * UIProcess/qt/QtViewportHandler.h: Copied from Source/WebKit2/UIProcess/qt/QtViewportInteractionEngine.h. - (QtViewportHandler): - * UIProcess/qt/QtViewportInteractionEngine.cpp: Removed. - * UIProcess/qt/QtViewportInteractionEngine.h: Removed. - * UIProcess/qt/QtWebPageEventHandler.cpp: - (WebKit::QtWebPageEventHandler::QtWebPageEventHandler): - (WebKit::QtWebPageEventHandler::setViewportHandler): - (WebKit::QtWebPageEventHandler::inputPanelVisibleChanged): - (WebKit::QtWebPageEventHandler::doneWithTouchEvent): - (WebKit::QtWebPageEventHandler::didFindZoomableArea): - * UIProcess/qt/QtWebPageEventHandler.h: - (WebKit): - (QtWebPageEventHandler): - (WebKit::QtWebPageEventHandler::viewportHandler): - -2012-06-04 David Kilzer <ddkilzer@apple.com> - - BUILD FIX: FeatureDefines.xcconfig should match across projects - - * Configurations/FeatureDefines.xcconfig: - - Add missing ENABLE_LEGACY_CSS_VENDOR_PREFIXES. - -2012-06-04 Allan Sandfeld Jensen <allan.jensen@nokia.com> - - [Qt] Tap-to-zoom overshoot animation. - https://bugs.webkit.org/show_bug.cgi?id=87108 - - Reviewed by Tor Arne Vestbø. - Reverts the change in animation, so the default is more "neutral". - This should be made configurable later. +2012-10-02 Joone Hur <joone.hur@intel.com> - * UIProcess/qt/QtViewportInteractionEngine.cpp: - (WebKit::QtViewportInteractionEngine::animatePageItemRectVisible): + Unreviewed, GTK+,Efl debug build fix after r130225. -2012-06-04 Andras Becsi <andras.becsi@nokia.com> + This patch allows to include the static xErrorString variable when LOG_DISABLED is 0. - [Qt][WK2] Refactor the tap gesture recognizer - https://bugs.webkit.org/show_bug.cgi?id=88096 - - Reviewed by Simon Hausmann. - - Refactor the tap gesture recognizer so that its internal state machine is - self contained and independent of input event types. - Also change the internal API for tap highlighting to make the code easier - to understand on the caller side. - - This patch makes the tap gesture recognizer more robust, consistent with - other gesture recognizers and fixes some issues related to highlighting - and link activation with respect to native touch events. - - * UIProcess/qt/QtTapGestureRecognizer.cpp: - (WebKit::QtTapGestureRecognizer::QtTapGestureRecognizer): - (WebKit::QtTapGestureRecognizer::withinDistance): - (WebKit::QtTapGestureRecognizer::update): - (WebKit::QtTapGestureRecognizer::finish): - (WebKit::QtTapGestureRecognizer::cancel): - (WebKit::QtTapGestureRecognizer::highlightTimeout): - (WebKit::QtTapGestureRecognizer::singleTapTimeout): - (WebKit::QtTapGestureRecognizer::tapAndHoldTimeout): - (WebKit::QtTapGestureRecognizer::reset): - * UIProcess/qt/QtTapGestureRecognizer.h: - (QtTapGestureRecognizer): - * UIProcess/qt/QtWebPageEventHandler.cpp: - (WebKit::QtWebPageEventHandler::QtWebPageEventHandler): - (WebKit::QtWebPageEventHandler::activateTapHighlight): - (WebKit::QtWebPageEventHandler::deactivateTapHighlight): + * PluginProcess/unix/PluginProcessMainUnix.cpp: (WebKit): - (WebKit::QtWebPageEventHandler::handleSingleTapEvent): - (WebKit::QtWebPageEventHandler::handleDoubleTapEvent): - (WebKit::QtWebPageEventHandler::doneWithTouchEvent): - * UIProcess/qt/QtWebPageEventHandler.h: - (QtWebPageEventHandler): - -2012-06-02 Geoffrey Garen <ggaren@apple.com> - - Try to fix the Windows build. - - * win/WebKit2.def: - * win/WebKit2CFLite.def: - -2012-06-02 Andy Estes <aestes@apple.com> - - [WebKit2] Use USE(), ENABLE(), and HAVE() macros in more places - https://bugs.webkit.org/show_bug.cgi?id=88182 - Reviewed by Sam Weinig. - - Use USE(APPKIT): - * Shared/mac/NativeWebKeyboardEventMac.mm: - * Shared/mac/NativeWebMouseEventMac.mm: - * Shared/mac/NativeWebWheelEventMac.mm: - * Shared/mac/WebEventFactory.h: - * UIProcess/API/mac/WKTextInputWindowController.h: - * UIProcess/API/mac/WKTextInputWindowController.mm: - * UIProcess/PageClient.h: - * UIProcess/WebPageProxy.h: - - Use ENABLE(NETSCAPE_PLUGIN_API): - * UIProcess/API/C/WKPluginSiteDataManager.cpp: - (WKPluginSiteDataManagerClearSiteData): - (WKPluginSiteDataManagerClearAllSiteData): - - Use USE(AUTOCORRECTION_PANEL): - * UIProcess/API/mac/PageClientImpl.h: - * UIProcess/API/mac/PageClientImpl.mm: - (WebKit::PageClientImpl::showCorrectionPanel): - (WebKit::PageClientImpl::dismissCorrectionPanel): - (WebKit::PageClientImpl::dismissCorrectionPanelSoon): - * UIProcess/mac/CorrectionPanel.mm: - - Use HAVE(HOSTED_CORE_ANIMATION): - * UIProcess/mac/WebContextMac.mm: - - Put ENABLE(FULLSCREEN_API) in the right place: - * UIProcess/mac/WebFullScreenManagerProxyMac.mm: - - Remove unnecessary use of USE(APPKIT): - * UIProcess/mac/WebPageProxyMac.mm: - - Use USE(SECURITY_FRAMEWORK): - * WebProcess/Authentication/mac/AuthenticationManager.mac.mm: - - Use ENABLE(CONTEXT_MENUS): - * WebProcess/WebCoreSupport/mac/WebContextMenuClientMac.mm: - - Use USE(SECURITY_FRAMEWORK): - * WebProcess/WebProcess.h: - - Remove unnecessary use of USE(SECURITY_FRAMEWORK): - * WebProcess/mac/WebProcessMac.mm: +2012-10-02 Sam Weinig <sam@webkit.org> -2012-06-02 Andy Estes <aestes@apple.com> + Fix a typo and add some \n's to make Mark happy. - Remove a duplicate INIT() from WebSystemInterface.mm - https://bugs.webkit.org/show_bug.cgi?id=88181 + Rubber-stamped by Mark "logging must be fast" Rowe. - Reviewed by Anders Carlsson. - - * WebProcess/WebCoreSupport/mac/WebSystemInterface.mm: - (InitWebCoreSystemInterface): - -2012-06-02 Andy Estes <aestes@apple.com> - - Remove unnecessary import of <Cocoa/Cocoa.h> - https://bugs.webkit.org/show_bug.cgi?id=88180 - - Reviewed by Sam Weinig. - - * UIProcess/mac/WKFullKeyboardAccessWatcher.h: - -2012-06-02 Andy Estes <aestes@apple.com> - - Ensure cpu_type_t is defined by including <mach/machine.h> - https://bugs.webkit.org/show_bug.cgi?id=88178 - - Reviewed by Anders Carlsson. - - * Shared/Plugins/PluginModuleInfo.h: + * WebProcess/InjectedBundle/mac/InjectedBundleMac.mm: + (WebKit::InjectedBundle::load): -2012-06-02 Sam Weinig <sam@webkit.org> +2012-10-02 Sam Weinig <sam@webkit.org> - InjectedBundles' sandbox extensions don't do what we think they do - https://bugs.webkit.org/show_bug.cgi?id=88177 + Add Objective-C API for the InjectedBundle + https://bugs.webkit.org/show_bug.cgi?id=98222 Reviewed by Anders Carlsson. - This cannot be tested with our current infrastructure (or any modifications of the - infrastructure I can think of) since it relies on the bundle being put outside - the build directory where WebKit is put. - - * WebProcess/InjectedBundle/mac/InjectedBundleMac.cpp: - (WebKit::InjectedBundle::load): - Use SandboxExtension::consumePermanently() rather than consume(), otherwise, - nulling out the SandboxExtension a few lines later invalidates the extension - we just consumed. - -2012-06-02 Dan Bernstein <mitz@apple.com> - - Reverted the last change. + Add skeleton of the Objective-C API for the InjectedBundle. * WebKit2.xcodeproj/project.pbxproj: + Add new API files. + + * WebProcess/InjectedBundle/API/mac: Added. + * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.h: Added. + * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.mm: Added. + (-[WKWebProcessPlugIn _initWithPrincipalClassInstance:injectedBundle:]): + Initialization method for the WKWebProcessPlugIn object. This object will act as the WKBundleRef + object does in the C-SPI. + (+[WKWebProcessPlugIn _shared]): + Access the shared instance. + * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInInternal.h: Added. -2012-06-02 Dan Bernstein <mitz@apple.com> - - Stop treating two Python scripts as private headers. - - * WebKit2.xcodeproj/project.pbxproj: Removed model.py and parser.py from the Copy Headers - build phase. - -2012-06-02 Zeno Albisser <zeno@webkit.org> - - Fix and enable WebGL for WebKit2 on Qt. - https://bugs.webkit.org/show_bug.cgi?id=86214 - - Added glue code to make use of GraphicsSurface - as a backend for the webgl-canvas in case of WK2. - - Reviewed by Noam Rosenthal. - - * UIProcess/API/qt/qwebpreferences.cpp: - (QWebPreferencesPrivate::testAttribute): - (QWebPreferencesPrivate::setAttribute): - (QWebPreferences::webGLEnabled): - (QWebPreferences::setWebGLEnabled): - * UIProcess/API/qt/qwebpreferences_p.h: - * UIProcess/API/qt/qwebpreferences_p_p.h: - Added WebGLEnabled enum to allow enabling/disabling of - WebGL using QWebPreferences. - - * UIProcess/LayerTreeHostProxy.cpp: - (WebKit::LayerTreeHostProxy::syncCanvas): - Dispatch syncCanvas calls to the apropriate - WebLayerTreeRenderer. - - * UIProcess/LayerTreeHostProxy.h: - (LayerTreeHostProxy): - * UIProcess/LayerTreeHostProxy.messages.in: - * UIProcess/WebLayerTreeRenderer.h: - (WebLayerTreeRenderer): - * UIProcess/WebLayerTreeRenderer.cpp: - (WebKit::WebLayerTreeRenderer::syncCanvas): - (WebKit::WebLayerTreeRenderer::deleteLayer): - (WebKit::WebLayerTreeRenderer::purgeGLResources): - Create a TextureMapperSurfaceBackingStore for the canvas - if necessary and pass or update the graphicsSurfaceToken - for to be used with the backing store. - - * WebProcess/WebCoreSupport/WebGraphicsLayer.cpp: - (WebCore::WebGraphicsLayer::WebGraphicsLayer): - (WebCore): - (WebCore::WebGraphicsLayer::setContentsToCanvas): - (WebCore::WebGraphicsLayer::syncCanvas): - Copy the multisample framebuffer contents onto the GraphicsSurface. - Notify the UIProcess of the availability of a new texture. - (WebCore::WebGraphicsLayer::syncCompositingStateForThisLayerOnly): - Sync the canvas as well. - - * WebProcess/WebCoreSupport/WebGraphicsLayer.h: - Added a pure virtual function syncCanvas. - This is guarded by PLATFORM(QT). - (WebGraphicsLayerClient): - (WebGraphicsLayer): - - * WebProcess/WebPage/qt/LayerTreeHostQt.cpp: - (WebKit::LayerTreeHostQt::syncLayerChildren): - (WebKit): - (WebKit::LayerTreeHostQt::syncCanvas): - * WebProcess/WebPage/qt/LayerTreeHostQt.h: - (LayerTreeHostQt): - -2012-06-01 Brady Eidson <beidson@apple.com> - - <rdar://problem/11335622> and https://bugs.webkit.org/show_bug.cgi?id=88119 - REGRESSION (r99448) Zero-sized plug-ins no longer get an NPP_SetWindow call - - Followup to r119260 - - Rubber-stamped by Anders Carlsson. - - * WebProcess/Plugins/Netscape/NetscapePlugin.cpp: - (WebKit::NetscapePlugin::callSetWindow): Set the m_hasCalledSetWindow here... - (WebKit::NetscapePlugin::geometryDidChange): ...instead of here. - -2012-06-01 Brady Eidson <beidson@apple.com> - - <rdar://problem/11335622> and https://bugs.webkit.org/show_bug.cgi?id=88119 - REGRESSION (r99448) Zero-sized plug-ins no longer get an NPP_SetWindow call - - Reviewed by Oliver Hunt. - - Add a flag to NetscapePlugin to track whether or not NPP_SetWindow has ever been called. - Check this flag in geometryDidChange to make sure every plug-in gets the call at least once. - - "Everybody gets one. Tell him, Peter." - "Apparently everybody gets one." - "Bingo." - - * WebProcess/Plugins/Netscape/NetscapePlugin.cpp: - (WebKit::NetscapePlugin::NetscapePlugin): - (WebKit::NetscapePlugin::geometryDidChange): - * WebProcess/Plugins/Netscape/NetscapePlugin.h: - (NetscapePlugin): - -2012-06-01 Dinu Jacob <dinu.jacob@nokia.com> - - [WK2] WebLayerTreeRenderer::setContentsSize called synchronously - https://bugs.webkit.org/show_bug.cgi?id=88091 - - Reviewed by Noam Rosenthal. - - Do not call WebLayerTreeRenderer::setContentsSize synchronously - from LayerTreeHostProxy. - - * UIProcess/LayerTreeHostProxy.cpp: - (WebKit::LayerTreeHostProxy::setContentsSize): - -2012-06-01 Dinu Jacob <dinu.jacob@nokia.com> - - [Qt][WK2] Set QWebKitTest::isScalable default as false - https://bugs.webkit.org/show_bug.cgi?id=88095 - - Reviewed by Tor Arne Vestbø. - - Set QWebKitTest::isScalable default as false - - * UIProcess/API/qt/qwebkittest.cpp: - (QWebKitTest::isScalable): - -2012-06-01 Allan Sandfeld Jensen <allan.jensen@nokia.com> - - [Qt] Remove QtViewportInteractionEngine::pageItemSizeChanged. - https://bugs.webkit.org/show_bug.cgi?id=88082 - - Reviewed by Kenneth Rohde Christiansen. - - The function was causing flickering, and after testing it was verified - that it was no longer needed either. - - * UIProcess/qt/QtViewportInteractionEngine.cpp: - (WebKit::QtViewportInteractionEngine::QtViewportInteractionEngine): - * UIProcess/qt/QtViewportInteractionEngine.h: - (QtViewportInteractionEngine): - -2012-06-01 Dinu Jacob <dinu.jacob@nokia.com> - - [Qt][WK2] Contents not rendered in MiniBrowser for some pages - https://bugs.webkit.org/show_bug.cgi?id=87922 - - Reviewed by Kenneth Rohde Christiansen. - - Set drawing area visible contents rect if new visible contents rect is different from - the previous one. - - * UIProcess/qt/QtViewportInteractionEngine.cpp: - (WebKit::QtViewportInteractionEngine::informVisibleContentChange): - * UIProcess/qt/QtViewportInteractionEngine.h: - (QtViewportInteractionEngine): - -2012-06-01 Kenneth Rohde Christiansen <kenneth@webkit.org> - - [Qt] Move suspension to QtViewportInteractionEngine - https://bugs.webkit.org/show_bug.cgi?id=88078 - - Reviewed by Simon Hausmann. - - Next step is to take care of visibility changes. - - * UIProcess/API/qt/qquickwebview.cpp: - (QQuickWebViewFlickablePrivate::QQuickWebViewFlickablePrivate): - (QQuickWebViewFlickablePrivate::onComponentComplete): - * UIProcess/API/qt/qquickwebview_p.h: - * UIProcess/API/qt/qquickwebview_p_p.h: - (QQuickWebViewPrivate): - (QQuickWebViewFlickablePrivate): - * UIProcess/qt/QtViewportInteractionEngine.cpp: - (WebKit::ViewportUpdateDeferrer::ViewportUpdateDeferrer): - (WebKit::ViewportUpdateDeferrer::~ViewportUpdateDeferrer): - (WebKit::QtViewportInteractionEngine::suspendPageContent): - (WebKit): - (WebKit::QtViewportInteractionEngine::resumePageContent): - * UIProcess/qt/QtViewportInteractionEngine.h: - (QtViewportInteractionEngine): - -2012-06-01 Dinu Jacob <dinu.jacob@nokia.com> - - [Qt][W2] Qml Error in ViewportInfoItem.qml in MiniBrowser - https://bugs.webkit.org/show_bug.cgi?id=87999 - - Reviewed by Kenneth Rohde Christiansen. - - Return default viewport attributes rather than invalid QVariant. - - * UIProcess/API/qt/qwebkittest.cpp: - (QWebKitTest::contentsScale): - (QWebKitTest::devicePixelRatio): - (QWebKitTest::initialScale): - (QWebKitTest::minimumScale): - (QWebKitTest::maximumScale): - (QWebKitTest::isScalable): - (QWebKitTest::layoutSize): - -2012-05-31 Kenneth Rohde Christiansen <kenneth@webkit.org> - - [Qt] Clean up our viewport handling mess - https://bugs.webkit.org/show_bug.cgi?id=87977 - - Reviewed by Simon Hausmann. - - Consolidated functionality from QQuickWebViewPrivate* into - ViewportInteractionEngine that belongs there, in preparation for - renaming ViewportInteractionEngine in the future. - - Remove unneeded methods and move others to private. - - * UIProcess/API/qt/qquickwebview.cpp: - (QQuickWebViewFlickablePrivate::QQuickWebViewFlickablePrivate): - (QQuickWebViewFlickablePrivate::onComponentComplete): - (QQuickWebViewFlickablePrivate::didChangeViewportProperties): - (QQuickWebViewFlickablePrivate::updateViewportSize): - (QQuickWebViewFlickablePrivate::_q_resume): - (QQuickWebViewFlickablePrivate::pageDidRequestScroll): - * UIProcess/API/qt/qquickwebview_p.h: - * UIProcess/API/qt/qquickwebview_p_p.h: - (QQuickWebViewPrivate): - (QQuickWebViewFlickablePrivate): - * UIProcess/qt/QtViewportInteractionEngine.cpp: - (WebKit::ViewportUpdateDeferrer::~ViewportUpdateDeferrer): - (WebKit::QtViewportInteractionEngine::QtViewportInteractionEngine): - (WebKit::QtViewportInteractionEngine::viewportAttributesChanged): - (WebKit::QtViewportInteractionEngine::pageContentsSizeChanged): - (WebKit::QtViewportInteractionEngine::pageItemPositionChanged): - (WebKit::QtViewportInteractionEngine::pageContentPositionRequested): - (WebKit::QtViewportInteractionEngine::visibleContentsRect): - (WebKit): - (WebKit::QtViewportInteractionEngine::informVisibleContentChange): - (WebKit::QtViewportInteractionEngine::viewportItemSizeChanged): - * UIProcess/qt/QtViewportInteractionEngine.h: - (WebKit): - (QtViewportInteractionEngine): - -2012-05-31 Hajime Morrita <morrita@chromium.org> - - REGRESSION(r117572): editing/spelling/spellcheck-async-remove-frame.html crashes on Mac - https://bugs.webkit.org/show_bug.cgi?id=86859 - - Reviewed by Ryosuke Niwa. - - * WebProcess/WebCoreSupport/WebEditorClient.cpp: - (WebKit::WebEditorClient::requestCheckingOfString): - * WebProcess/WebCoreSupport/WebEditorClient.h: - -2012-05-31 Andy Estes <aestes@apple.com> - - [WebKit2] Remove nested #if conditions from messages.in files - https://bugs.webkit.org/show_bug.cgi?id=88039 - - Reviewed by Filip Pizlo. - - The code generator that processes messages.in files can't handle nested - #if conditions. Sadly I added said conditions in r117700 but failed to - verify the generated result. Un-nest the conditions I added. - - * UIProcess/WebPageProxy.messages.in: - * WebProcess/WebPage/WebPage.messages.in: - -2012-05-31 Andy Estes <aestes@apple.com> - - Disentangle code that relies on USE(AUTOMATIC_TEXT_REPLACEMENT) from that which merely relies on PLATFORM(MAC) - https://bugs.webkit.org/show_bug.cgi?id=87933 - - Reviewed by Dan Bernstein. - - * WebProcess/WebCoreSupport/WebEditorClient.h: - * WebProcess/WebCoreSupport/mac/WebEditorClientMac.mm: - -2012-05-31 Carlos Garcia Campos <cgarcia@igalia.com> - - [GTK] Add webkit_download_get_request to WebKit2 GTK+ API - https://bugs.webkit.org/show_bug.cgi?id=87957 - - Reviewed by Martin Robinson. - - * UIProcess/API/gtk/WebKitDownload.cpp: - (webkit_download_get_request): Return the WebKitURIRequest - representing the request that originated the download. - * UIProcess/API/gtk/WebKitDownload.h: - * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Add new symbol. - * UIProcess/API/gtk/tests/TestDownloads.cpp: - (testDownloadLocalFile): - (testDownloadRemoteFile): - -2012-05-31 Carlos Garcia Campos <cgarcia@igalia.com> - - [SOUP] WebProcess crashes when a download is started from an existing ResourceHandle - https://bugs.webkit.org/show_bug.cgi?id=87953 - - Reviewed by Martin Robinson. - - The output stream to write the downloaded data is created in the - didReceiveResponse callback of the download client. When a - download is created for an existing ResourceHandle (this happens - for example when policy decision is download), the response has - already been received. In this case we should make sure that the - download client is notified about the response, so that when data - actually arrives the output stream has already been created. - - * WebProcess/Downloads/soup/DownloadSoup.cpp: - (WebKit::Download::startWithHandle): - -2012-05-31 Carlos Garcia Campos <cgarcia@igalia.com> - - [GTK] Fix webkit_web_view_can_execute_editing_command() API doc - https://bugs.webkit.org/show_bug.cgi?id=87930 - - Reviewed by Martin Robinson. - - * UIProcess/API/gtk/WebKitWebView.cpp: - -2012-05-31 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> - - [Qt] Simplify QT_VERSION_CHECKS for Qt5 by introducing HAVE(QT5) - https://bugs.webkit.org/show_bug.cgi?id=87955 - - Reviewed by Simon Hausmann. - - * UIProcess/API/qt/tests/publicapi/tst_publicapi.cpp: - -2012-05-31 Zalan Bujtas <zbujtas@gmail.com> - - [Qt][WK2] Add missing ViewportUpdateDeferrer guarding to setPageItemRectVisible() calls. - https://bugs.webkit.org/show_bug.cgi?id=87936 - - Reviewed by Kenneth Rohde Christiansen. - - * UIProcess/qt/QtViewportInteractionEngine.cpp: - (WebKit::QtViewportInteractionEngine::viewportAttributesChanged): - (WebKit::QtViewportInteractionEngine::pageContentsSizeChanged): - -2012-05-31 Keunsoon Lee <keunsoon.lee@samsung.com> - - [EFL][WK2] Add WKURLRequestEfl and WKURLResponseEfl - https://bugs.webkit.org/show_bug.cgi?id=70231 - - Reviewed by Chang Shu. - - These codes can be used for WKPageDecidePolicyForResponseCallback on page policy callbacks. - The callback conveys WKURLResponseRef and WKURLRequestRef as parameter. - - By the way, EFL browser needs content type from response to decide correct policy. - Another information, cookie, is necessary with similar reason. - But, there is no way to obtain such information on WebKit2 main stream, except for WKURLRequestCopyURL(). - - So, EFL port created those files to extract necessary information from WKURLResponseRef and WKURLRequestRef, - and not to desturb WebKit2 main stream. - - * Shared/API/c/efl/WKURLRequestEfl.cpp: Added. - (WKURLRequestEflCopyCookies): extracting cookie information from WKURLRequestRef. - * Shared/API/c/efl/WKURLRequestEfl.h: Added. - * Shared/API/c/efl/WKURLResponseEfl.cpp: Added. - (WKURLResponseEflCopyContentType): extracting content type (i.e. MIME type) from WKURLResponseRef. - * Shared/API/c/efl/WKURLResponseEfl.h: Added. - * Shared/efl/WebCoreArgumentCodersEfl.cpp: Added. - (CoreIPC): - (CoreIPC::::encode): - (CoreIPC::::decode): - * Shared/efl/WebURLRequestEfl.cpp: Added. - (WebKit): - (WebKit::WebURLRequestEfl::WebURLRequestEfl): - (WebKit::WebURLRequestEfl::cookies): obtaining cookie information from ResourceRequest. - * Shared/efl/WebURLRequestEfl.h: Added. - (WebKit): - (WebURLRequestEfl): - (WebKit::WebURLRequestEfl::create): - * Shared/efl/WebURLResponseEfl.cpp: Added. - (WebKit): - (WebKit::WebURLResponseEfl::WebURLResponseEfl): - (WebKit::WebURLResponseEfl::contentType): obtaining content type (i.e. MIME type) from ResourceResponse. - * Shared/efl/WebURLResponseEfl.h: Added. - (WebKit): - (WebURLResponseEfl): - (WebKit::WebURLResponseEfl::create): - -2012-05-31 Gyuyoung Kim <gyuyoung.kim@samsung.com> - - [EFL][WK2] Rename ewk_private.h to ewk_view_private.h - https://bugs.webkit.org/show_bug.cgi?id=87923 - - Reviewed by Kenneth Rohde Christiansen. - - EFL WK1 decided to divide up ewk_private.h into each file's XXX_private.h file in order to maintain - internal functions more easily. EFL WK2 needs to adjust this as well. - - * UIProcess/API/efl/PageClientImpl.cpp: - * UIProcess/API/efl/ewk_view_private.h: Renamed from Source/WebKit2/UIProcess/API/efl/ewk_private.h. - (WebCore): - * UIProcess/cairo/BackingStoreCairo.cpp: - -2012-05-31 Andy Estes <aestes@apple.com> - - Move the specification of framework and library linking out of WebKit2.xcodeproj and into WebKit2.xcconfig - https://bugs.webkit.org/show_bug.cgi?id=87932 - - Reviewed by Dan Bernstein. - - Doing this makes it easier to vary linking based on SDK or other factors. - - * Configurations/WebKit2.xcconfig: Create FRAMEWORK_AND_LIBRARY_LDFLAGS, - which specifies the same list of frameworks and libraries that were - previously in WebKit2's 'Link Binary With Libraries' build phase, and - append it to $(OTHER_LDFLAGS). - * WebKit2.xcodeproj/project.pbxproj: Remove all frameworks and - libraries from the 'Link Binary With Libraries' build phase. - -2012-05-30 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com> - - [GTK] [WK2] Memory leak in webkitWebViewBaseStartDrag - https://bugs.webkit.org/show_bug.cgi?id=87756 - - Reviewed by Carlos Garcia Campos. - - Fixed memory leaks in drag and drop by using adoptRef instead - of just getting new references. - - * UIProcess/API/gtk/WebKitWebViewBase.cpp: - (webkitWebViewBaseStartDrag): - -2012-05-30 Luiz Agostini <luiz.agostini@nokia.com> - - [Qt] handled touchmove events should not cancel tap gesture recognition - https://bugs.webkit.org/show_bug.cgi?id=87808 - - Reviewed by Kenneth Rohde Christiansen. - - Tap gesture recognition should not be canceled if a touchmove event is handled - by the web process. - - * UIProcess/qt/QtWebPageEventHandler.cpp: - (WebKit::QtWebPageEventHandler::doneWithTouchEvent): - -2012-05-30 Mario Sanchez Prada <msanchez@igalia.com> - - [GTK][WK2] Errors in documentation about webkit_web_view_run_javascript() - https://bugs.webkit.org/show_bug.cgi?id=87866 - - Reviewed by Martin Robinson. - - * UIProcess/API/gtk/WebKitWebView.cpp: Fix errors. - -2012-05-30 Andy Estes <aestes@apple.com> - - WebProcessMainMac.mm doesn't need to import WKView.h. - - Rubber-stamped by Anders Carlsson. - - * WebProcess/mac/WebProcessMainMac.mm: - -2012-05-30 Marcelo Lira <marcelo.lira@openbossa.org> - - WebKit2: Implement layoutTestController.setPluginsEnabled() in WebKitTestRunner. - https://bugs.webkit.org/show_bug.cgi?id=58593 - - Adds the ability to change the pluginsEnabled flag in WebCore::Settings - to WebKitTestRunner's LayoutTestController. The flag is modified via the - public C API of the WebProcess. - - Reviewed by Darin Adler. - - * WebProcess/InjectedBundle/API/c/WKBundle.cpp: - (WKBundleSetPluginsEnabled): - * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h: - * WebProcess/InjectedBundle/InjectedBundle.cpp: - (WebKit::InjectedBundle::setPluginsEnabled): Calls the setPluginsEnabled - method for the WebCore::Settings of each WebCore::Page in the current - page group. - (WebKit): * WebProcess/InjectedBundle/InjectedBundle.h: - (InjectedBundle): - -2012-05-30 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org> - - HashTable.h has using directives for std::pair and std::make_pair - https://bugs.webkit.org/show_bug.cgi?id=29919 - - Reviewed by Darin Adler. - - Change code to use std::pair and std::make_pair. - - * UIProcess/Launcher/mac/DynamicLinkerEnvironmentExtractor.mm: - (WebKit::DynamicLinkerEnvironmentExtractor::processEnvironmentVariable): - * UIProcess/WebContext.cpp: - (WebKit::WebContext::postMessageToInjectedBundle): - -2012-05-30 Kenneth Rohde Christiansen <kenneth@webkit.org> - - Unreviewed: Fix wrongly typed Qt slot. - - * UIProcess/qt/QtViewportInteractionEngine.cpp: - (WebKit::QtViewportInteractionEngine::QtViewportInteractionEngine): - -2012-05-30 Kenneth Rohde Christiansen <kenneth@webkit.org> - - [Qt] Move ViewportAttribute related methods to the interaction engine. - https://bugs.webkit.org/show_bug.cgi?id=87855 - - Reviewed by Simon Hausmann. - - Move the logic of didChange{ViewportProperties|ContentsSize} to the - interaction engine and update our testing object. - - * UIProcess/API/qt/qquickwebview.cpp: - (QQuickWebViewLegacyPrivate::QQuickWebViewLegacyPrivate): - (QQuickWebViewFlickablePrivate::didChangeViewportProperties): - (QQuickWebViewFlickablePrivate::didChangeContentsSize): - * UIProcess/API/qt/qquickwebview_p_p.h: - (QQuickWebViewPrivate): - * UIProcess/API/qt/qwebkittest.cpp: - (QWebKitTest::contentsScale): - (QWebKitTest::devicePixelRatio): - (QWebKitTest::initialScale): - (QWebKitTest::minimumScale): - (QWebKitTest::maximumScale): - (QWebKitTest::isScalable): - (QWebKitTest::layoutSize): - * UIProcess/qt/QtViewportInteractionEngine.cpp: - (WebKit::QtViewportInteractionEngine::viewportAttributesChanged): - (WebKit): - (WebKit::QtViewportInteractionEngine::pageContentsSizeChanged): - * UIProcess/qt/QtViewportInteractionEngine.h: - (QtViewportInteractionEngine): - -2012-05-30 Kenneth Rohde Christiansen <kenneth@webkit.org> - - [Qt] Do renames in ViewportInteractionEngine as agreed upon - https://bugs.webkit.org/show_bug.cgi?id=87845 - - Reviewed by Simon Hausmann. - - Mostly moving methods around and renaming them to be more - consistent and avoid terminology clashes. - - * UIProcess/API/qt/qquickwebview.cpp: - (QQuickWebViewFlickablePrivate::didChangeViewportProperties): - (QQuickWebViewFlickablePrivate::pageDidRequestScroll): - (QQuickWebViewFlickablePrivate::didChangeContentsSize): - * UIProcess/qt/QtViewportInteractionEngine.cpp: - (WebKit::boundPosition): - (WebKit): - (WebKit::QtViewportInteractionEngine::QtViewportInteractionEngine): - (WebKit::QtViewportInteractionEngine::setPageItemRectVisible): - (WebKit::QtViewportInteractionEngine::animatePageItemRectVisible): - (WebKit::QtViewportInteractionEngine::flickMoveStarted): - (WebKit::QtViewportInteractionEngine::flickMoveEnded): - (WebKit::QtViewportInteractionEngine::pageItemPositionChanged): - (WebKit::QtViewportInteractionEngine::pageContentPositionRequest): - (WebKit::QtViewportInteractionEngine::scaleAnimationValueChanged): - (WebKit::QtViewportInteractionEngine::computePosRangeForPageItemAtScale): - (WebKit::QtViewportInteractionEngine::focusEditableArea): - (WebKit::QtViewportInteractionEngine::zoomToAreaGestureEnded): - (WebKit::QtViewportInteractionEngine::nearestValidBounds): - (WebKit::QtViewportInteractionEngine::cancelScrollAnimation): - (WebKit::QtViewportInteractionEngine::pinchGestureEnded): - (WebKit::QtViewportInteractionEngine::pageItemSizeChanged): - * UIProcess/qt/QtViewportInteractionEngine.h: - (WebKit::QtViewportInteractionEngine::setDevicePixelRatio): - (QtViewportInteractionEngine): - -2012-05-30 Mariusz Grzegorczyk <mariusz.g@samsung.com>, Ryuan Choi <ryuan.choi@samsung.com> - - [EFL][WK2] Fix WebKit2-EFL build - https://bugs.webkit.org/show_bug.cgi?id=83693 - - Reviewed by Carlos Garcia Campos. - - * CMakeLists.txt: Move IDL generator codes to generate port specific *.messages.in. - * PlatformEfl.cmake: Add soup related files after r115411 and includes to fix build break. - * UIProcess/API/efl/PageClientImpl.cpp: Fix build break with ENABLE_TOUCH_EVENTS. - (WebKit): - (WebKit::PageClientImpl::doneWithTouchEvent): - * UIProcess/API/efl/PageClientImpl.h: - (PageClientImpl): - * WebProcess/WebCoreSupport/WebChromeClient.cpp: Fix build break with ENABLE_INPUT_TYPE_COLOR and ENABLE_REGISTER_PROTOCOL_HANDLER. - (WebKit): - (WebKit::WebChromeClient::createColorChooser): - * WebProcess/WebCoreSupport/WebChromeClient.h: - (WebChromeClient): - * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: Fix build break with ENABLE_WEB_INTENTS - (WebKit): - (WebKit::WebFrameLoaderClient::dispatchIntent): - * WebProcess/WebCoreSupport/WebFrameLoaderClient.h: - (WebCore): - (WebFrameLoaderClient): - * WebProcess/WebProcess.cpp: Guard PLATFORM_STRATEGIES codes. - (WebKit::WebProcess::didGetPlugins): - * WebProcess/soup/WebSoupRequestManager.cpp: Try to share with EFL port. - (WebKit::WebSoupRequestManager::didHandleURIRequest): - -2012-05-30 Kenneth Rohde Christiansen <kenneth@webkit.org> - - [Qt] Variable renaming as preparation of further refactoring. - - Rubberstamped by Simon Hausmann. - - Change m_viewport to m_viewportItem and m_content to m_pageItem. - - * UIProcess/qt/QtViewportInteractionEngine.cpp: - (WebKit::QtViewportInteractionEngine::QtViewportInteractionEngine): - (WebKit::QtViewportInteractionEngine::setItemRectVisible): - (WebKit::QtViewportInteractionEngine::animateItemRectVisible): - (WebKit::QtViewportInteractionEngine::flickableMoveStarted): - (WebKit::QtViewportInteractionEngine::flickableMoveEnded): - (WebKit::QtViewportInteractionEngine::flickableMovingPositionUpdate): - (WebKit::QtViewportInteractionEngine::scaleAnimationStateChanged): - (WebKit::QtViewportInteractionEngine::pagePositionRequest): - (WebKit::QtViewportInteractionEngine::computePosRangeForItemAtScale): - (WebKit::QtViewportInteractionEngine::focusEditableArea): - (WebKit::QtViewportInteractionEngine::zoomToAreaGestureEnded): - (WebKit::QtViewportInteractionEngine::nearestValidBounds): - (WebKit::QtViewportInteractionEngine::reset): - (WebKit::QtViewportInteractionEngine::setCSSScale): - (WebKit::QtViewportInteractionEngine::currentCSSScale): - (WebKit::QtViewportInteractionEngine::scrollAnimationActive): - (WebKit::QtViewportInteractionEngine::panGestureActive): - (WebKit::QtViewportInteractionEngine::panGestureStarted): - (WebKit::QtViewportInteractionEngine::panGestureRequestUpdate): - (WebKit::QtViewportInteractionEngine::panGestureEnded): - (WebKit::QtViewportInteractionEngine::panGestureCancelled): - (WebKit::QtViewportInteractionEngine::cancelScrollAnimation): - (WebKit::QtViewportInteractionEngine::pinchGestureStarted): - (WebKit::QtViewportInteractionEngine::pinchGestureRequestUpdate): - (WebKit::QtViewportInteractionEngine::scaleContent): - * UIProcess/qt/QtViewportInteractionEngine.h: - (QtViewportInteractionEngine): - -2012-05-30 Zalan Bujtas <zbujtas@gmail.com> - - [Qt][WK2] Do not use anonymous variables for ViewportUpdateDeferrer. - https://bugs.webkit.org/show_bug.cgi?id=87831 - - Reviewed by Kenneth Rohde Christiansen. - - * UIProcess/qt/QtViewportInteractionEngine.cpp: - (WebKit::QtViewportInteractionEngine::pagePositionRequest): - (WebKit::QtViewportInteractionEngine::cancelScrollAnimation): - (WebKit::QtViewportInteractionEngine::itemSizeChanged): - -2012-05-30 Carlos Garcia Campos <cgarcia@igalia.com> - - Unreviewed. Fix WebKit2GTK+ API tests in the bots. - - * UIProcess/API/gtk/tests/TestWebKitWebView.cpp: - (testWebViewCanShowMIMEType): Remove the check for multimedia and - plugins MIME types since they depend on the configuration and they - are not available in the bots. - -2012-05-29 Jer Noble <jer.noble@apple.com> - - Noticeable delay taking an HTML5 trailer fullscreen. - https://bugs.webkit.org/show_bug.cgi?id=87794 - - Reviewed by Darin Adler. - - Work around a not-entirely understood delay when using the results of a CGWindowListCreateImage() - call as the contents of a placeholder view. The backing of the resulting CGImageRef resides on - the WindowServer, and drawing that image requires synchronous calls to the WindowServer process. - By copying the image data, up front, into our own process, we can avoid those synchronous calls - later and avoid the delay-causing drawing behavior. - - * UIProcess/mac/WKFullScreenWindowController.mm: - (CGImageDeepCopy): Added a helper function which copies the image data into a new CGImage. - (-[WKFullScreenWindowController enterFullScreen:]): Use the above. - -2012-05-29 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com> - - [GTK] [WK2] Reproducible crash in performDragControllerAction - https://bugs.webkit.org/show_bug.cgi?id=87744 - - Reviewed by Martin Robinson. - - Fix a crash by using deref() instead of delete to dereference and - release the platformData of DragData. - - * WebProcess/WebPage/WebPage.cpp: - (WebKit::WebPage::performDragControllerAction): - -2012-05-29 Simon Pena <spena@igalia.com> - - [GTK] Missing field initializers for WKPageLoaderClient and WKPageUIClient - https://bugs.webkit.org/show_bug.cgi?id=87745 - - Reviewed by Carlos Garcia Campos. - - Add missing initializers for WKPageLoaderClient and - WKPageUIClient, for callbacks WKPagePluginDidFailCallback and - WKPageUnavailablePluginButtonClickedCallback, introduced in - revision r116716. - - * UIProcess/API/gtk/WebKitLoaderClient.cpp: - (attachLoaderClientToView): Initialize WKPagePluginDidFailCallback - * UIProcess/API/gtk/WebKitUIClient.cpp: - (attachUIClientToView): Initialize callback - WKPageUnavailablePluginButtonClickedCallback - -2012-05-29 Carlos Garcia Campos <cgarcia@igalia.com> - - [GTK] Policy decision headers are not included in the main webkit2.h header - https://bugs.webkit.org/show_bug.cgi?id=87753 - - Reviewed by Martin Robinson. - - * UIProcess/API/gtk/webkit2.h: Include - WebKitNavigationPolicyDecision.h and WebKitResponsePolicyDecision.h. - -2012-05-29 Carlos Garcia Campos <cgarcia@igalia.com> - - [GTK] Add webkit_web_view_can_show_mime_type() to WebKit2 GTK+ API - https://bugs.webkit.org/show_bug.cgi?id=85998 - - Reviewed by Martin Robinson. - - And use it in the default handler of WebKitWebView::decide-policy - signal to decide whether to use or ignore a response policy - decision depending on whether the mime type of the response can be - displayed in the WebView or not. - - * UIProcess/API/gtk/WebKitURIResponse.cpp: - (webkitURIResponseGetProperty): Add getter for mime-type property. - (webkit_uri_response_class_init): Add mime-type property. - (webkit_uri_response_get_mime_type): Return the mime type of the - response. - * UIProcess/API/gtk/WebKitURIResponse.h: - * UIProcess/API/gtk/WebKitWebView.cpp: - (webkitWebViewDecidePolicy): In case of response policy decisions, - use the URI response to decide what to do: download if the - response is an attachment, use if the mime type is supported by - the web view or ignore otherwise. - (webkit_web_view_can_show_mime_type): Returns whether the given - mime type can be displayed in the WebView or not. - * UIProcess/API/gtk/WebKitWebView.h: - * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Add new symbols. - * UIProcess/API/gtk/tests/TestResources.cpp: - (testWebResourceResponse): - (testWebResourceMimeType): - (serverCallback): - (beforeAll): - * UIProcess/API/gtk/tests/TestWebKitWebView.cpp: - (testWebViewCanShowMIMEType): - (beforeAll): - -2012-05-29 David Barr <davidbarr@chromium.org> - - Introduce ENABLE_CSS_IMAGE_RESOLUTION compile flag - https://bugs.webkit.org/show_bug.cgi?id=87685 - - Reviewed by Eric Seidel. - - Add a configuration option for CSS image-resolution support, disabling it by default. - - * Configurations/FeatureDefines.xcconfig: - -2012-05-29 Kenneth Rohde Christiansen <kenneth@webkit.org> - - [Qt] Move tests from DesktopBehavior which can be made to work - https://bugs.webkit.org/show_bug.cgi?id=87736 - - Rubberstamped by Simon Hausmann. - - Move and modify the following tests to WebView/ and make them - use touch events. - - * UIProcess/API/qt/tests/qmltests/WebView/tst_itemSelector.qml: Renamed from Source/WebKit2/UIProcess/API/qt/tests/qmltests/DesktopBehavior/tst_itemSelector.qml. - * UIProcess/API/qt/tests/qmltests/WebView/tst_messaging.qml: Renamed from Source/WebKit2/UIProcess/API/qt/tests/qmltests/DesktopBehavior/tst_messaging.qml. - * UIProcess/API/qt/tests/qmltests/WebView/tst_multiFileUpload.qml: Renamed from Source/WebKit2/UIProcess/API/qt/tests/qmltests/DesktopBehavior/tst_multiFileUpload.qml. - * UIProcess/API/qt/tests/qmltests/WebView/tst_singleFileUpload.qml: Renamed from Source/WebKit2/UIProcess/API/qt/tests/qmltests/DesktopBehavior/tst_singleFileUpload.qml. - -2012-05-29 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> - - [Qt] Sync up favicon-implementation with WebView url changes in r118158 - - https://bugs.webkit.org/show_bug.cgi?id=87133 - - We now base64-encode the page url in the image-provider url, so that any - normalization done by QUrl will not mess up the page-url. The logic of - creating and parsing the provider-url has been moved into the image - provider, to keep it in one place. - - We were also releasing icons (even ones we hadn't retained), which we can't - do since we don't know when the icon url is no longer in use. - - Reviewed-by Simon Hausmann. - - * UIProcess/API/qt/qquickwebview.cpp: - (QQuickWebViewPrivate::initialize): - (QQuickWebViewPrivate::loadProgressDidChange): - (QQuickWebViewPrivate::_q_onUrlChanged): - (QQuickWebViewPrivate::_q_onIconChangedForPageURL): - (QQuickWebViewPrivate::updateIcon): - (QQuickWebView::icon): - * UIProcess/API/qt/qquickwebview_p.h: - * UIProcess/API/qt/qquickwebview_p_p.h: - (QQuickWebViewPrivate): - * UIProcess/API/qt/qwebiconimageprovider.cpp: - (QWebIconImageProvider::iconURLForPageURLInContext): - (QWebIconImageProvider::requestImage): - * UIProcess/API/qt/qwebiconimageprovider_p.h: - (WebKit): - * UIProcess/API/qt/tests/qmltests/WebView/tst_favIconLoad.qml: - * UIProcess/qt/QtWebIconDatabaseClient.cpp: - (WebKit::QtWebIconDatabaseClient::didChangeIconForPageURL): - (WebKit::QtWebIconDatabaseClient::iconForPageURL): - (WebKit): - (WebKit::QtWebIconDatabaseClient::iconImageForPageURL): - * UIProcess/qt/QtWebIconDatabaseClient.h: - (QtWebIconDatabaseClient): - -2012-05-29 Kenneth Rohde Christiansen <kenneth@webkit.org> - - [Qt][WK2] Fix failing qmltests::FitToView::test_basic() - https://bugs.webkit.org/show_bug.cgi?id=87236 - - Reviewed by Simon Hausmann. - - The fix is a combination of things. First of all some events - were emitted at the wrong times or when nothing had changed. - - We also initialized the view saying it was suspended which is - not correct. - - Another bug was that the touch tap, didn't result in marking - the view as having user interaction. This was recently fixed - in r118493. - - * UIProcess/API/qt/qquickwebpage.cpp: - (QQuickWebPage::setContentsScale): - * UIProcess/API/qt/qquickwebview.cpp: - (QQuickWebViewFlickablePrivate::QQuickWebViewFlickablePrivate): - - Make sure pageIsSuspended is initialized to false. - - (QQuickWebViewFlickablePrivate::_q_onInformVisibleContentChange): - - Early bail out if there is no change. - - Inform contentScaleCommitted if the scale changed since last time. - - (QQuickWebViewFlickablePrivate::didChangeContentsSize): - - Make sure to commit the right signals, ie. *Changed and not *Committed. - - * UIProcess/API/qt/qquickwebview_p.h: - * UIProcess/API/qt/qwebkittest.cpp: - (touchPoint): - (QWebKitTest::sendTouchEvent): - (QWebKitTest::touchTap): - (QWebKitTest::touchDoubleTap): - - Add proper touch emulation for the testing system. Call directly - to our WebKit API (avoid Qt event loop) to ensure all events gets - delivered. - - * UIProcess/API/qt/qwebkittest_p.h: - * UIProcess/qt/QtViewportInteractionEngine.cpp: - (WebKit::QtViewportInteractionEngine::setItemRectVisible): - - Assert that a ViewportUpdateDeferrer is always used when calling - this method. - - (WebKit::QtViewportInteractionEngine::animateItemRectVisible): - - Remove work around now we have the proper fix in place. - - (WebKit::QtViewportInteractionEngine::pagePositionRequest): - - Do not send the informVisibleContentChange manually, use the - ViewportUpdateDeferrer instead. + Store an NSBundle rather than a CFBundleRef as the platform bundle. - (WebKit::QtViewportInteractionEngine::cancelScrollAnimation): - - Add missing ViewportUpdateDeferrer. - - (WebKit::QtViewportInteractionEngine::pinchGestureStarted): - - No reason to emit informVisibleContentChange before pinch - start, as it is always done on end (due to the ViewportUpdateDeferrer). - - (WebKit::QtViewportInteractionEngine::itemSizeChanged): - - Add missing ViewportUpdateDeferrer. - -2012-05-29 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org> - - [Qt] [WK2] Allow user to inject JS scripts when the page loads - https://bugs.webkit.org/show_bug.cgi?id=85827 - - Reviewed by Simon Hausmann. - - Create a new experimental property to list URLs of JS scripts that should be - loaded when a page is loaded. These scripts will run in the normal JS environment - of the page. - - The supported URL schemes are file:/// and qrc:///. The scripts are read from the - UI process and transfered to the Web process. - - Together with the experimental messaging API this provides a way for the - application to manipulate the DOM (by injecting a script that does the - manipulation and communicating with it via postMessage). This covers some of the - use cases of QWebElement in our WK1 API. - - * UIProcess/API/qt/qquickwebview.cpp: - (QQuickWebViewPrivate::didRelaunchProcess): - (readUserScript): - (QQuickWebViewPrivate::updateUserScripts): - (QQuickWebViewExperimental::userScripts): - (QQuickWebViewExperimental::setUserScripts): - * UIProcess/API/qt/qquickwebview_p.h: - * UIProcess/API/qt/qquickwebview_p_p.h: - (QQuickWebViewPrivate): - * UIProcess/API/qt/tests/qmltests/WebView.pro: - * UIProcess/API/qt/tests/qmltests/WebView/tst_userScripts.qml: Added. - * UIProcess/API/qt/tests/qmltests/common/append-document-title.js: Added. - * UIProcess/API/qt/tests/qmltests/common/big-user-script.js: Added. - * UIProcess/API/qt/tests/qmltests/common/change-document-title.js: Added. - * UIProcess/API/qt/tests/qmltests/resources.qrc: Added. - * UIProcess/WebPageProxy.h: - (WebPageProxy): - * UIProcess/qt/WebPageProxyQt.cpp: - (WebKit::WebPageProxy::setUserScripts): - (WebKit): - * WebProcess/WebPage/WebPage.h: - (WebPage): - * WebProcess/WebPage/WebPage.messages.in: - * WebProcess/WebPage/qt/WebPageQt.cpp: - (WebKit::WebPage::setUserScripts): - (WebKit): - -2012-05-29 Sheriff Bot <webkit.review.bot@gmail.com> - - Unreviewed, rolling out r118752. - http://trac.webkit.org/changeset/118752 - https://bugs.webkit.org/show_bug.cgi?id=87731 - - incomplete patch (Requested by cmarcelo on #webkit). - - * UIProcess/API/qt/qquickwebview.cpp: - (QQuickWebViewPrivate::didRelaunchProcess): - * UIProcess/API/qt/qquickwebview_p.h: - * UIProcess/API/qt/qquickwebview_p_p.h: - (QQuickWebViewPrivate): - * UIProcess/API/qt/tests/qmltests/WebView.pro: - * UIProcess/WebPageProxy.h: - (WebPageProxy): - * UIProcess/qt/WebPageProxyQt.cpp: - * WebProcess/WebPage/WebPage.h: - (WebPage): - * WebProcess/WebPage/WebPage.messages.in: - * WebProcess/WebPage/qt/WebPageQt.cpp: - -2012-05-21 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org> - - [Qt] [WK2] Allow user to inject JS scripts when the page loads - https://bugs.webkit.org/show_bug.cgi?id=85827 - - Reviewed by Simon Hausmann. - - Create a new experimental property to list URLs of JS scripts that should be - loaded when a page is loaded. These scripts will run in the normal JS environment - of the page. - - The supported URL schemes are file:/// and qrc:///. The scripts are read from the - UI process and transfered to the Web process. - - Together with the experimental messaging API this provides a way for the - application to manipulate the DOM (by injecting a script that does the - manipulation and communicating with it via postMessage). This covers some of the - use cases of QWebElement in our WK1 API. - - * UIProcess/API/qt/qquickwebview.cpp: - (QQuickWebViewPrivate::didRelaunchProcess): - (readUserScript): - (QQuickWebViewPrivate::updateUserScripts): - (QQuickWebViewExperimental::userScripts): - (QQuickWebViewExperimental::setUserScripts): - * UIProcess/API/qt/qquickwebview_p.h: - * UIProcess/API/qt/qquickwebview_p_p.h: - (QQuickWebViewPrivate): - * UIProcess/API/qt/tests/qmltests/WebView.pro: - * UIProcess/API/qt/tests/qmltests/WebView/tst_userScripts.qml: Added. - * UIProcess/API/qt/tests/qmltests/common/append-document-title.js: Added. - * UIProcess/API/qt/tests/qmltests/common/big-user-script.js: Added. - * UIProcess/API/qt/tests/qmltests/common/change-document-title.js: Added. - * UIProcess/API/qt/tests/qmltests/resources.qrc: Added. - * UIProcess/WebPageProxy.h: - (WebPageProxy): - * UIProcess/qt/WebPageProxyQt.cpp: - (WebKit::WebPageProxy::setUserScripts): - (WebKit): - * WebProcess/WebPage/WebPage.h: - (WebPage): - * WebProcess/WebPage/WebPage.messages.in: - * WebProcess/WebPage/qt/WebPageQt.cpp: - (WebKit::WebPage::setUserScripts): - (WebKit): - -2012-05-29 Carlos Garcia Campos <cgarcia@igalia.com> - - [GTK] Add return value information to WebKitWebView::load-failed signal documentation - https://bugs.webkit.org/show_bug.cgi?id=87704 - - Reviewed by Martin Robinson. - - * UIProcess/API/gtk/WebKitWebView.cpp: - (webkit_web_view_class_init): - -2012-05-29 Carlos Garcia Campos <cgarcia@igalia.com> - - [GTK] Add WebKitWebInspector.h to the list of WebKit2 GTK public headers - https://bugs.webkit.org/show_bug.cgi?id=87703 - - Reviewed by Martin Robinson. - - * GNUmakefile.list.am: Add WebKitWebInspector.h to webkit2gtk_h_api. - -2012-05-25 Jesus Sanchez-Palencia <jesus.palencia@openbossa.org> - - WebKitTestRunner needs to support layoutTestController.setJavaScriptProfilingEnabled - https://bugs.webkit.org/show_bug.cgi?id=42328 - - Reviewed by Eric Seidel. - - Removed unneeded setJavaScriptProfilingEnabled function from WTR after its - move to windows.internals.settings. - - * WebProcess/InjectedBundle/API/c/WKBundleInspector.cpp: - * WebProcess/InjectedBundle/API/c/WKBundleInspector.h: - * WebProcess/WebPage/WebInspector.cpp: - (WebKit::WebInspector::setJavaScriptProfilingEnabled): - * win/WebKit2.def: + * WebProcess/InjectedBundle/mac/InjectedBundleMac.cpp: Removed. + * WebProcess/InjectedBundle/mac/InjectedBundleMac.mm: Copied from Source/WebKit2/WebProcess/InjectedBundle/mac/InjectedBundleMac.cpp. + (WebKit::InjectedBundle::load): + If a principal class is provided and no WKBundleInitialize function is present in the bundle, use the principal class + as the initialization point. The principal class must conform to the WKWebProcessPlugIn protocol and if a + webProcessPlugInInitialize: method is present, it is called. -2012-05-28 No'am Rosenthal <noam.rosenthal@nokia.com> +2012-10-02 Dan Bernstein <mitz@apple.com> - Remove unused argument coders for animation - https://bugs.webkit.org/show_bug.cgi?id=87435 + Fixed a crash when the localization option is not passed to the web process. Reviewed by Sam Weinig. - Left the used argument coders only, behind a proper USE(UI_SIDE_COMPOSITING) flag. - - * Shared/WebCoreArgumentCoders.cpp: - (CoreIPC): - * Shared/WebCoreArgumentCoders.h: - -2012-05-28 Gyuyoung Kim <gyuyoung.kim@samsung.com> - - Move allowRoundingHacks to Internals interface - https://bugs.webkit.org/show_bug.cgi?id=87328 - - Reviewed by Hajime Morita. - - * win/WebKit2.def: Add setAllowsRoundingHacks() to symbol filter. - -2012-05-26 Geoffrey Garen <ggaren@apple.com> - - WebKit should be lazy-finalization-safe (esp. the DOM) v2 - https://bugs.webkit.org/show_bug.cgi?id=87581 - - Reviewed by Oliver Hunt. - - * WebProcess/Plugins/Netscape/JSNPObject.cpp: - (WebKit::JSNPObject::destroy): - (WebKit::JSNPObject::leakNPObject): - * WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp: - (WebKit::NPRuntimeObjectMap::finalize): Use static_cast instead of jsCast because - jsCast does Structure-based validation, and our Structure is not guaranteed - to be alive when we get finalized. - -2012-05-25 Maciej Stachowiak <mjs@apple.com> - - REGRESSION (r116720): Subframe PDF scrolls extremely slowly - https://bugs.webkit.org/show_bug.cgi?id=87557 - <rdar://problem/11499408> - - Reviewed by Anders Carlsson. - - It's not possible to make an automated test for this. - - * WebProcess/Plugins/PDF/BuiltInPDFView.mm: - (WebKit::BuiltInPDFView::wantsWheelEvents): Return true instead of false and delete - misleading comment. While the built-in PDF view would get added to the set of scrollable - areas anyway, there are some code paths that check wantsWheelEvents explicitly, so it seems - necessary to reutrn true. - -2012-05-25 Brady Eidson <beidson@apple.com> - - https://bugs.webkit.org/show_bug.cgi?id=87418 - WebBackForwardList should separate "has no current index" from the integer value of the current index - - This patch also renames "m_current" to "m_currentIndex" for clarity and symmetry with - other variable names that reference "index", - - It also removes the m_closed and m_enabled flags which were never actually used. - - Reviewed by Darin Adler. - - * UIProcess/WebBackForwardList.cpp: - (WebKit::WebBackForwardList::WebBackForwardList): - (WebKit::WebBackForwardList::addItem): - (WebKit::WebBackForwardList::goToItem): - (WebKit::WebBackForwardList::currentItem): - (WebKit::WebBackForwardList::backItem): - (WebKit::WebBackForwardList::forwardItem): - (WebKit::WebBackForwardList::itemAtIndex): - (WebKit::WebBackForwardList::backListCount): - (WebKit::WebBackForwardList::forwardListCount): - (WebKit::WebBackForwardList::backListAsImmutableArrayWithLimit): - (WebKit::WebBackForwardList::forwardListAsImmutableArrayWithLimit): - (WebKit::WebBackForwardList::clear): - - * UIProcess/WebBackForwardList.h: - (WebKit::WebBackForwardList::currentIndex): - (WebBackForwardList): - - * UIProcess/cf/WebBackForwardListCF.cpp: - (WebKit::WebBackForwardList::createCFDictionaryRepresentation): - (WebKit::WebBackForwardList::restoreFromCFDictionaryRepresentation): - -2012-05-25 Beth Dakin <bdakin@apple.com> - - https://bugs.webkit.org/show_bug.cgi?id=87529 - Background tabs hosted in window server flash before painting - when they first become active - - Reviewed by Anders Carlsson. - - Initialize to LayerHostingModeInWindowServer if that is - available to avoid having to re-make the context and re-set - everything later on. - * UIProcess/WebPageProxy.cpp: - (WebKit::WebPageProxy::WebPageProxy): - -2012-05-25 Mario Sanchez Prada <msanchez@igalia.com> - - [GTK][WK2] Implement API for generic permission requests - https://bugs.webkit.org/show_bug.cgi?id=84018 - - Reviewed by Martin Robinson. - - Added new 'permission-request' signal to WebKitWebView, to be - fired when WebKit needs confirmation from the user on whether to - allow or deny certain operations, such as sharing the user's - location with web site through the Geolocation API. - - New WebKitPermissionRequest interface, providing allow() and - deny() operations, to be called over the objects implementing it - when emitted along with the new 'permission-request' signal. - - * UIProcess/API/gtk/WebKitPermissionRequest.cpp: Added. - (webkit_permission_request_default_init): - (webkit_permission_request_allow): - (webkit_permission_request_deny): - * UIProcess/API/gtk/WebKitPermissionRequest.h: Added. - (_WebKitPermissionRequestIface): - * GNUmakefile.am: Added new files. - - Added the new signal to WebKitWebView, providing a default handler - that will just deny the request when the signal is not handled. - - * UIProcess/API/gtk/WebKitWebView.cpp: - (webkitWebViewDecidePermissionRequest): Default handler. - (webkit_web_view_class_init): Declare the new signal and connect - to the default handler. - (webkitWebViewMakePermissionRequest): Helper function to create a - make a new permission request and emit the new signal signal. - * UIProcess/API/gtk/WebKitWebView.h: - (_WebKitWebViewClass): - * UIProcess/API/gtk/WebKitWebViewPrivate.h: Declare the creational - function webkitWebViewMakePermissionRequest for internal use only. - - Updated documentation files. - - * UIProcess/API/gtk/docs/webkit2gtk-docs.sgml: - * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: - -2012-05-25 Grzegorz Czajkowski <g.czajkowski@samsung.com> - - [WK2] Fix client interface size for WKPageContextMenuClient. - https://bugs.webkit.org/show_bug.cgi?id=87472 - - Reviewed by Carlos Garcia Campos. - - Add correct offset for version 1 and 2 of WKPageContextMenuClient. - Revision 109750 introduces a new API and increases size of interfaceSizesByVersion - but the table is not properly initialized for newly introduced version 2. - - * Shared/APIClientTraits.cpp: - (WebKit): - -2012-05-24 Andreas Kling <kling@webkit.org> - - Mac bots crashing under PluginInfo destructor. - <http://webkit.org/b/87414> - <rdar://problem/11527172> - - Reviewed by Darin Adler. - - We can't safely pass WTF::String to another thread without a deref() race, - so pass the PluginInfo vector by pointer instead of by value. - - * UIProcess/WebContext.cpp: - (WebKit::WebContext::sendDidGetPlugins): - (WebKit::WebContext::handleGetPlugins): - * UIProcess/WebContext.h: - -2012-05-25 Zalan Bujtas <zbujtas@gmail.com> - - [Qt][WK2] Fix failing qmltests::FitToView::test_basic() - https://bugs.webkit.org/show_bug.cgi?id=87236 - - Reviewed by Kenneth Rohde Christiansen. - - Rename contentViewportChanged to informVisibleContentChange() to - reflect its functionality better. Centralize m_hadUserInteraction flag - setting and add assertions on it to ensure that designated - functions are called only on user interaction. - - * UIProcess/API/qt/qquickwebview.cpp: - (QQuickWebViewFlickablePrivate::onComponentComplete): - (QQuickWebViewFlickablePrivate::updateViewportSize): - (QQuickWebViewFlickablePrivate::_q_onInformVisibleContentChange): - (QQuickWebViewFlickablePrivate::_q_resume): - * UIProcess/API/qt/qquickwebview_p.h: - * UIProcess/API/qt/qquickwebview_p_p.h: - (QQuickWebViewPrivate::_q_onInformVisibleContentChange): - (QQuickWebViewFlickablePrivate): - * UIProcess/qt/QtViewportInteractionEngine.cpp: - (WebKit::ViewportUpdateDeferrer::~ViewportUpdateDeferrer): - (WebKit::QtViewportInteractionEngine::flickableMovingPositionUpdate): - (WebKit::QtViewportInteractionEngine::pagePositionRequest): - (WebKit::QtViewportInteractionEngine::touchBegin): - (WebKit::QtViewportInteractionEngine::focusEditableArea): - (WebKit::QtViewportInteractionEngine::zoomToAreaGestureEnded): - (WebKit::QtViewportInteractionEngine::panGestureStarted): - (WebKit::QtViewportInteractionEngine::pinchGestureStarted): - * UIProcess/qt/QtViewportInteractionEngine.h: - (QtViewportInteractionEngine): - -2012-05-24 Tim Horton <timothy_horton@apple.com> - - Add feature defines for web-facing parts of CSS Regions and Exclusions - https://bugs.webkit.org/show_bug.cgi?id=87442 - <rdar://problem/10887709> - - Reviewed by Dan Bernstein. - - * Configurations/FeatureDefines.xcconfig: - -2012-05-24 Geoffrey Garen <ggaren@apple.com> - - WebKit should be lazy-finalization-safe (esp. the DOM) - https://bugs.webkit.org/show_bug.cgi?id=87456 - - Reviewed by Filip Pizlo. - - * WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp: - (WebKit::NPRuntimeObjectMap::getOrCreateJSObject): Use the new idioms. - - (WebKit::NPRuntimeObjectMap::invalidate): Check for null while iterating, - since that's possible now. - - (WebKit::NPRuntimeObjectMap::finalize): Use the new idioms. - -2012-05-24 Brady Eidson <beidson@apple.com> - - Fix the build after http://trac.webkit.org/changeset/118441 - Also fix a glaring bug with the new code, will run it by original reviewer retroactively. - - * UIProcess/cf/WebBackForwardListCF.cpp: - (WebKit::WebBackForwardList::restoreFromCFDictionaryRepresentation): Fix up the types of the ? operands - to appease super-strict compilers. Don't allow negative indexes (besides the -1 "No index" index). - -2012-05-24 Brady Eidson <beidson@apple.com> - - <rdar://problem/10090764> and https://bugs.webkit.org/show_bug.cgi?id=87417 - (Unrepro) Crashes saving session state in WebBackForwardList - - Reviewed by Darin Adler. - - * UIProcess/WebBackForwardList.cpp: - (WebKit::WebBackForwardList::addItem): Null check the proposed item and also m_page, to make - sure the page hasn't been closed making this list inactive. Be more aggressive about - clearing the current entries out if there is no current item index. - (WebKit::WebBackForwardList::itemAtIndex): Early null return if there is no current index. - (WebKit::WebBackForwardList::clear): Don't put the current item back in the array if there was - no current item. - - * UIProcess/cf/WebBackForwardListCF.cpp: - (WebKit::WebBackForwardList::createCFDictionaryRepresentation): Don't create a meaningless WebURL. - Don't successfully return a dictionary if any of the entries were null. Be more aggressive about - validating the current index we plan to return in the dictionary. - (WebKit::WebBackForwardList::restoreFromCFDictionaryRepresentation): More aggressively validate the - current index read from disk. Replace a meaningless sanity check with our typical ASSERT. - -2012-05-24 Anders Carlsson <andersca@apple.com> - - Make sure that the layer hosting mode is up-to-date when reconnecting to a new web process - https://bugs.webkit.org/show_bug.cgi?id=87421 - <rdar://problem/11510337> - - Reviewed by Beth Dakin. - - Send over the layer hosting mode as part of the web page creation parameters and create the right - layer hosting context based on the mode. - - * Shared/WebPageCreationParameters.cpp: - (WebKit::WebPageCreationParameters::encode): - (WebKit::WebPageCreationParameters::decode): - * Shared/WebPageCreationParameters.h: - (WebPageCreationParameters): - * UIProcess/WebPageProxy.cpp: - (WebKit::WebPageProxy::creationParameters): - * WebProcess/WebPage/WebPage.cpp: - (WebKit::WebPage::WebPage): - * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h: - (TiledCoreAnimationDrawingArea): - * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm: - (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea): - (WebKit::TiledCoreAnimationDrawingArea::setLayerHostingMode): - (WebKit): - (WebKit::TiledCoreAnimationDrawingArea::updateLayerHostingContext): - -2012-05-24 John Mellor <johnme@chromium.org> - - Font Boosting: Add compile flag and runtime setting - https://bugs.webkit.org/show_bug.cgi?id=87394 - - Reviewed by Adam Barth. - - Add ENABLE_FONT_BOOSTING. - - * Configurations/FeatureDefines.xcconfig: - -2012-05-24 Yael Aharon <yael.aharon@nokia.com> - - [Qt] Stop using the flag FIXED_POSITION_CREATES_STACKING_CONTEXT - https://bugs.webkit.org/show_bug.cgi?id=87392 - - Reviewed by Antonio Gomes. - - Turn on the setting setFixedPositionCreatesStackingContext. - - * WebProcess/WebPage/WebPage.cpp: - (WebKit::WebPage::setResizesToContentsUsingLayoutSize): - -2012-05-24 Alexey Proskuryakov <ap@apple.com> - - [WK2] Let the client give local files universal access on a case by case basis - https://bugs.webkit.org/show_bug.cgi?id=87174 - <rdar://problem/11024330> - - Reviewed by Maciej Stachowiak. - - * WebProcess/InjectedBundle/API/c/WKBundlePage.h: - * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp: - (WebKit::InjectedBundlePageLoaderClient::shouldForceUniversalAccessFromLocalURL): - * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h: - * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: - (WebKit::WebFrameLoaderClient::shouldForceUniversalAccessFromLocalURL): - * WebProcess/WebCoreSupport/WebFrameLoaderClient.h: - * WebProcess/qt/QtBuiltinBundlePage.cpp: - (WebKit::QtBuiltinBundlePage::QtBuiltinBundlePage): - Added glue code to call bundle client. - -2012-05-24 Alexander Færøy <alexander.faeroy@nokia.com> - - Reorder arguments to compare() in the QML WebView tests - https://bugs.webkit.org/show_bug.cgi?id=87374 - - Reviewed by Simon Hausmann. - - Based on patch by Kenneth Rohde Christiansen. - - The reordering is necessary to get correct information printed when - the tests fails. Without this, the test suite will display the bogus - value and not the expected value. - - This patch also removes the delayed windowShown since this is not - needed anymore, due to us using the touch events instead of mouse - events. - - * UIProcess/API/qt/tests/qmltests/WebView/tst_doubleTapToZoom.qml: - -2012-05-24 Allan Sandfeld Jensen <allan.jensen@nokia.com> - - [Qt] Tiles not painted after wheel or keyboard scroll. - https://bugs.webkit.org/show_bug.cgi?id=87358 - - Reviewed by Kenneth Rohde Christiansen. - - After performing a scroll requested from the WebProcess we also need - to inform the painting layer of the viewport change. - - * UIProcess/qt/QtViewportInteractionEngine.cpp: - (WebKit::QtViewportInteractionEngine::pagePositionRequest): - -2012-05-24 Andras Becsi <andras.becsi@nokia.com> - - [Qt][WK2] Fix bounce-back animation on pinch->pan - https://bugs.webkit.org/show_bug.cgi?id=87266 - - Reviewed by Kenneth Rohde Christiansen. - - If ending an out-of-bounds pinch gesture with releasing one finger - (transition to a pan gesture) the bounce back animation blinks in - the end position immediately first, then animates the content back - into bounds. - - QtViewportInteractionEngine::cancelScrollAnimation should return - early if there is no active kinetic animation. - - * UIProcess/qt/QtViewportInteractionEngine.cpp: - (WebKit::QtViewportInteractionEngine::cancelScrollAnimation): - -2012-05-23 Ojan Vafai <ojan@chromium.org> - - add back the ability to disable flexbox - https://bugs.webkit.org/show_bug.cgi?id=87147 - - Reviewed by Tony Chang. - - * Configurations/FeatureDefines.xcconfig: - -2012-05-23 Jer Noble <jer.noble@apple.com> - - REGRESSION (117623) - Entering/exiting fullscreen HTML5 videos, there is a quick animated fade - https://bugs.webkit.org/show_bug.cgi?id=87294 - - Reviewed by Darin Adler. - - When setting the sublayers array on the layer hosting view, wrap the call in a CATransaction which disables - animations. - - * UIProcess/API/mac/WKView.mm: - (-[WKView _updateAcceleratedCompositingMode:WebKit::]): - -2012-05-23 Dinu Jacob <dinu.jacob@nokia.com> - - [Qt][Wk2] Assertion failure when selecting an option in select list with size attribute greater than one - https://bugs.webkit.org/show_bug.cgi?id=86974 - - Reviewed by Simon Hausmann. - - Select list with size attribute greater than one will not initially have any - item in selected state (if no option has 'selected' tag), resulting in - m_selectedModelIndex in WebPopupMenuProxyQt to be invalid. Hence, need to check - whether the old index is invalid before accessing the item at that index. - - * UIProcess/API/qt/tests/qmltests/DesktopBehavior/tst_itemSelector.qml: Added new test that - tests selection in a select list with size attribute value of 2. - * UIProcess/API/qt/tests/qmltests/common/selectwithsize.html: Added. - * UIProcess/qt/WebPopupMenuProxyQt.cpp: - (WebKit::PopupMenuItemModel::select): Check whether old index is valid before accessing - the item at that index. - -2012-05-23 Jer Noble <jer.noble@apple.com> - - REGRESSION (r116188): After exiting full screen, Safari window is frozen, then inline video speeds through frames as it catches up with audio - https://bugs.webkit.org/show_bug.cgi?id=87206 - - Reviewed by Darin Adler. - - When re-enabling the Safari window's autodisplay flag, also force the window to re-display. - Otherwise, the window will not repaint itself until it is forced to by user interaction. - - * UIProcess/mac/WKFullScreenWindowController.mm: - (-[WKFullScreenWindowController completeFinishExitFullScreenAnimationAfterRepaint]): - -2012-05-23 Martin Robinson <mrobinson@igalia.com> - - [GTK] [WebKit2] Add an API to enable and disable composited layer indicators - https://bugs.webkit.org/show_bug.cgi?id=87053 - - Reviewed by Carlos Garcia Campos. - - Add a WebKitSetting that allows the client to enable and disable debug - borders and repaint counters for accelerated content. - - * UIProcess/API/gtk/WebKitSettings.cpp: - (webKitSettingsSetProperty): Added. - (webKitSettingsGetProperty): Added. - (webkit_settings_class_init): Add the new property. - (webkit_settings_set_draw_compositing_indicators): Added. - (webkit_settings_get_draw_compositing_indicators): Added. - * UIProcess/API/gtk/WebKitSettings.h: - * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Add the new API points to the - documentation. - * UIProcess/API/gtk/test/TestWebKitSettings.h: Add a new unit test. - -2012-05-23 Michael Brüning <michael.bruning@nokia.com> - - [Qt][WK2] Small refactoring WebPage::confirmComposition. - https://bugs.webkit.org/show_bug.cgi?id=87243 - - Reviewed by Kenneth Rohde Christiansen. - - Change nested if into an early return to reduce complexity. - - * WebProcess/WebPage/qt/WebPageQt.cpp: - (WebKit::WebPage::confirmComposition): - -2012-05-22 Alexander Færøy <alexander.faeroy@nokia.com> - - [Qt] Missing tests for the evaluateJavaScript API - https://bugs.webkit.org/show_bug.cgi?id=86351 - - Reviewed by Kenneth Rohde Christiansen. - - * UIProcess/API/qt/tests/qmltests/WebView/tst_evaluateJavaScript.qml: - * UIProcess/API/qt/tests/qmltests/common/evaluatejavascript.html: Added. - -2012-05-23 Allan Sandfeld Jensen <allan.jensen@nokia.com> - - [Qt] FloatSize Qt Support - https://bugs.webkit.org/show_bug.cgi?id=87237 - - Reviewed by Andreas Kling. - - Basic cleanup possible to new Qt support in FloatSize. - - * UIProcess/API/qt/qquickwebpage.cpp: - (QQuickWebPagePrivate::updateSize): - * UIProcess/API/qt/qwebkittest.cpp: - (QWebKitTest::layoutSize): - -2012-04-18 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> - - [Qt] Make the web view's url property follow the active url - - https://bugs.webkit.org/show_bug.cgi?id=77554 - - The url property of the webview now reflects the 'active' url of the - page, which maps to either the currently loading url, in the case of - an ongoing load, or the result of a load, even when the load failed. - - In practice this means that setting the url though QML, or navigating - to a new url in the page by e.g clicking, will both instantly change - the url-property of the webview to the target url. This differs from - earlier behavior, where we would update the url when the load - committed. - - An optional argument is added to loadHtml(), to allow setting - the unreachable url when providing replacement content for failed - loads. - - Finally, the location bar in the minibrowser is updated to behave - a bit more like normal browsers in terms of when the url will change - and how active focus is handled. - - Reviewed by Simon Hausmann. - - * UIProcess/API/qt/qquickwebview.cpp: - (QQuickWebViewPrivate::onComponentComplete): - (QQuickWebView::reload): - (QQuickWebView::url): - (QQuickWebView::setUrl): - (QQuickWebView::loadHtml): - * UIProcess/API/qt/qquickwebview_p.h: - * UIProcess/API/qt/tests/qmltests/DesktopBehavior.pro: - * UIProcess/API/qt/tests/qmltests/WebView.pro: - * UIProcess/API/qt/tests/qmltests/WebView/tst_loadUrl.qml: - * UIProcess/API/qt/tests/qmltests/common/link.html: Added. - * UIProcess/API/qt/tests/qmltests/common/redirect.html: Added. - * UIProcess/qt/QtWebPageLoadClient.cpp: - (QtWebPageLoadClient::QtWebPageLoadClient): - (QtWebPageLoadClient::didStartProvisionalLoadForFrame): - (QtWebPageLoadClient::didReceiveServerRedirectForProvisionalLoadForFrame): - (QtWebPageLoadClient::didCommitLoadForFrame): - (QtWebPageLoadClient::dispatchLoadFailed): - (QtWebPageLoadClient::didFailProvisionalLoadWithErrorForFrame): - (QtWebPageLoadClient::didFailLoadWithErrorForFrame): - * UIProcess/qt/QtWebPageLoadClient.h: - (QtWebPageLoadClient): - -2012-05-23 Simon Hausmann <simon.hausmann@nokia.com> - - [Qt] Race condition in LayerTreeHost/Proxy can cause blank rendering - https://bugs.webkit.org/show_bug.cgi?id=87239 - - Reviewed by Kenneth Rohde Christiansen. - - On the UI process side the WebLayerTreeRenderer/LayerTreeHostProxy pair is - created with m_active = false, which makes it ignore any incoming layer updates. - It remains inactive until the ContentsSGNode is created and setActive(true) is called. - - On the web process side the LayerTreeHost is created with m_waitingForUIProcess = false. - - Those two variables must be in sync, otherwise a race condition can - happen: The web process sends updates to the ui process before the - ContentsSGNode is created. This can happen for example when re-using an - existing WebProcess to create a QQuickWebView and load a page very fast - from the disk cache. The update arrives on the ui process side, but it - is discarded because setActive(true) hasn't been called yet. As a - result any updates that would for example create and populate the tiles - required for rendering are ignored. - - This patch ensures that the variables are initialized with the same values and that calling - setActive(true) will trigger the rendering of the next frame. - - * UIProcess/WebLayerTreeRenderer.cpp: - (WebKit::WebLayerTreeRenderer::setActive): - * WebProcess/WebPage/qt/LayerTreeHostQt.cpp: - (WebKit::LayerTreeHostQt::LayerTreeHostQt): - -2012-05-23 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> - - [Qt] Make QtWebError return the failing URL as a QString instead of QUrl - - We don't want to use QUrl inside QtWebKit (only in the API layer), due - to how QUrl normalizes the url. - - Reviewed by Simon Hausmann. - - * UIProcess/qt/QtWebError.cpp: - (WebKit::QtWebError::url): - * UIProcess/qt/QtWebError.h: - -2012-05-22 Carlos Garcia Campos <cgarcia@igalia.com> - - [GTK] Add inspector API to WebKit2 GTK+ - https://bugs.webkit.org/show_bug.cgi?id=87113 - - Reviewed by Martin Robinson. - - * GNUmakefile.list.am: Add new files to compilation. - * UIProcess/API/C/gtk/WKInspectorClientGtk.cpp: Added. - (WKInspectorSetInspectorClientGtk): - * UIProcess/API/C/gtk/WKInspectorClientGtk.h: Added. - * UIProcess/API/gtk/WebKitPrivate.h: - * UIProcess/API/gtk/WebKitWebInspector.cpp: Added. - (webkitWebInspectorFinalize): - (webkit_web_inspector_init): - (webkit_web_inspector_class_init): - (openWindow): Emit WebKitWebInspector::open-window singal. - (didClose): Emit WebKitWebInspector::closed signal. - (bringToFront): Emit WebKitWebInspector::bring-to-front singal. - (inspectedURLChanged): Set the inspected URI and emit - GObject::notify signal if it changed. - (attach): Emit WebKitWebInspector::attach signal. - (detach): Emit WebKitWebInspector::detach signal. - (didChangeAttachedHeight): Set the attached height and emit - GObject::notify signal if it changed. - (webkitWebInspectorCreate): Ceate a new WebKitWebInspector object - for the given WKInspector. Also initialize and set the inspector - client. - (webkit_web_inspector_get_web_view): Return the web view used to - render the inspector. - (webkit_web_inspector_get_inspected_uri): Return the URI that is - being inspected. - (webkit_web_inspector_is_attached): Whether the inspector view is - currently attached. - (webkit_web_inspector_attach): Request to attach the inspector. - (webkit_web_inspector_detach): Request to detach the inspector. - (webkit_web_inspector_show): Request to show the inspector. - (webkit_web_inspector_close): Request to close the inspector. - (webkit_web_inspector_get_attached_height): Return the height that - the inspector view should have when attached. - * UIProcess/API/gtk/WebKitWebInspector.h: Added. - * UIProcess/API/gtk/WebKitWebInspectorPrivate.h: Added. - * UIProcess/API/gtk/WebKitWebView.cpp: - (webkit_web_view_get_inspector): Return the WebKitWebInspector - associated to the web view. - * UIProcess/API/gtk/WebKitWebView.h: - * UIProcess/API/gtk/docs/webkit2gtk-docs.sgml: Add new section for - WebKitWebInspector. - * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Ad new symbols. - * UIProcess/API/gtk/docs/webkit2gtk.types: Add - webkit_web_inspector_get_type. - * UIProcess/API/gtk/tests/GNUmakefile.am: Add new test for the - inspector API. - * UIProcess/API/gtk/tests/TestInspector.cpp: Added. - (testInspectorDefault): - (testInspectorCustom): - (testInspectorWindowDestroyed): - (beforeAll): - (afterAll): - * UIProcess/API/gtk/tests/WebViewTest.cpp: - (WebViewTest::showInWindowAndWaitUntilMapped): Add optional - parameter to create a toplevel or popup window. - (WebViewTest::resizeView): Helper function to set the widget - allocation to a given size. - * UIProcess/API/gtk/tests/WebViewTest.h: - * UIProcess/API/gtk/webkit2.h: Include WebKitWebInspector.h - * UIProcess/WebInspectorProxy.h: - (WebKit::WebInspectorProxy::inspectorView): Return the view used - to render the inspector. - * UIProcess/gtk/WebInspectorClientGtk.cpp: Added. - (WebKit::WebInspectorClientGtk::openWindow): - (WebKit::WebInspectorClientGtk::didClose): - (WebKit::WebInspectorClientGtk::bringToFront): - (WebKit::WebInspectorClientGtk::inspectedURLChanged): - (WebKit::WebInspectorClientGtk::attach): - (WebKit::WebInspectorClientGtk::detach): - (WebKit::WebInspectorClientGtk::didChangeAttachedHeight): - * UIProcess/gtk/WebInspectorClientGtk.h: Added. - * UIProcess/gtk/WebInspectorProxyGtk.cpp: - (WebKit::inspectorViewDestroyed): Close the inspector page when - the inspector view is destroyed, instead of when the inspector - window is deleted, because the inspector view can now be inside a - window created by the user. - (WebKit::WebInspectorProxy::initializeInspectorClientGtk): - Initialze the inspector client. - (WebKit::WebInspectorProxy::platformCreateInspectorPage): Add a - weak pointer to the inspector view to make sure it's NULL when - destroyed. - (WebKit::WebInspectorProxy::createInspectorWindow): Call - openWindow on the inspector client, and return early if the - callback was handled. - (WebKit::WebInspectorProxy::platformOpen): Connect to destroy - signal of the inspector view to close the page when the view is - destroyed. - (WebKit::WebInspectorProxy::platformDidClose): Call didClose on - the inspector client. - (WebKit::WebInspectorProxy::platformBringToFront): Call - bringToFront on the inspector client, and return early if the - callback was handled. - (WebKit::WebInspectorProxy::platformInspectedURLChanged): Call - inspectedURLChanged on the inspector client. - (WebKit::WebInspectorProxy::platformAttach): Call attach on the - inspector client and return if the callback was handled. - (WebKit::WebInspectorProxy::platformDetach): Call detach on the - inspector client and return if the callback was handled. - (WebKit::WebInspectorProxy::platformSetAttachedWindowHeight): Call - didChangeAttachedHeight on the inspector client. - -2012-05-22 Anders Carlsson <andersca@apple.com> - - Functions dispatched by dispatchAfterEnsuringUpdatedScrollPosition can be called after drawing area has been destroyed - https://bugs.webkit.org/show_bug.cgi?id=87173 - <rdar://problem/11474087> - - Reviewed by Beth Dakin. - - Don't try to call forceRepaint if the drawing area has already been destroyed. - - * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm: - (WebKit::TiledCoreAnimationDrawingArea::forceRepaintAsync): - -2012-05-22 Anders Carlsson <andersca@apple.com> - - Crash when a plug-in view outlives its containing WebPage - https://bugs.webkit.org/show_bug.cgi?id=87163 - <rdar://problem/10849258> - - Reviewed by Dan Bernstein. - - In rare cases, when a plug-in is kept alive for some reason it can outlive its WebPage. When that happens, - the PluginView destructor will try to access the (deleted) web page and we'll crash. - - Fix this by making the WebPage destructor iterate over all the registered plug-ins and null out the m_webPage pointer. - Don't try to access the WebPage object if it's null. - - Also, remove PLATFORM(MAC) ifdefs around the HashSet of known plug-in views as well as the member functions that access the set; - we want this to be cross platform now. - - * WebProcess/Plugins/PluginView.cpp: - (WebKit::PluginView::PluginView): - (WebKit::PluginView::~PluginView): - (WebKit::PluginView::webPageDestroyed): - (WebKit): - * WebProcess/Plugins/PluginView.h: - (PluginView): - * WebProcess/WebPage/WebPage.cpp: - (WebKit::WebPage::~WebPage): - (WebKit::WebPage::scalePage): - (WebKit): - * WebProcess/WebPage/WebPage.h: - (WebPage): + * PluginProcess/mac/PluginProcessMainMac.mm: + (WebKit::PluginProcessMain): Changed to not call WKSetDefaultLocalization + with the empty string. + * WebProcess/mac/WebProcessMainMac.mm: + (WebKit::WebProcessMain): Ditto. -== Rolled over to ChangeLog-2012-05-22 == +== Rolled over to ChangeLog-2012-10-02 == diff --git a/Source/WebKit2/ChangeLog-2012-10-02 b/Source/WebKit2/ChangeLog-2012-10-02 new file mode 100644 index 000000000..20e00f6ba --- /dev/null +++ b/Source/WebKit2/ChangeLog-2012-10-02 @@ -0,0 +1,21927 @@ +2012-10-02 Alexey Proskuryakov <ap@apple.com> + + <rdar://problem/12407920> Need to keep track of messages posted to injected bundle before creating a page + https://bugs.webkit.org/show_bug.cgi?id=98210 + + Reviewed by Anders Carlsson. + + Restore the pending message functionality, but only for shared process mode, and + under a different name. + + * UIProcess/WebContext.cpp: + (WebKit::WebContext::setProcessModel): + (WebKit::WebContext::createNewWebProcess): + (WebKit::WebContext::postMessageToInjectedBundle): + * UIProcess/WebContext.h: + +2012-10-02 Adrian Perez de Castro <aperez@igalia.com> + + Unix plugin process: xErrorString does not need to be defined in release builds + https://bugs.webkit.org/show_bug.cgi?id=98174 + + Reviewed by Alexey Proskuryakov. + + The static xErrorString variable is used only for logging purposes, + so it causes a warning when doing relese builds (or, in general, + when logging is enabled). This disables building in the string + when LOG_DISABLED is defined. + + Also, made the more constant by changing the "const char*" type + to "const char[]". + + * PluginProcess/unix/PluginProcessMainUnix.cpp: + (WebKit): + +2012-10-02 Anders Carlsson <andersca@apple.com> + + Fix crash in WebGeolocationManager constructor. + + Defer adding the location manager until there actually is a connection. + + * WebProcess/Geolocation/WebGeolocationManager.cpp: + (WebKit::WebGeolocationManager::WebGeolocationManager): + (WebKit::WebGeolocationManager::registerWebPage): + * WebProcess/Geolocation/WebGeolocationManager.h: + (WebGeolocationManager): + +2012-10-02 Anders Carlsson <andersca@apple.com> + + Fix build. + + * WebProcess/Geolocation/WebGeolocationManager.cpp: + (WebKit::WebGeolocationManager::WebGeolocationManager): + +2012-10-02 Anders Carlsson <andersca@apple.com> + + Fix infinite recursion inside WebProcess constructor + https://bugs.webkit.org/show_bug.cgi?id=98206 + + Reviewed by Brian Weinstein. + + Don't call WebProcess::shared from the WebGeolocationManager constructor since it is invoked from the WebProcess constructor. + + * WebProcess/Geolocation/WebGeolocationManager.cpp: + (WebKit::WebGeolocationManager::WebGeolocationManager): + +2012-10-02 Hugo Parente Lima <hugo.lima@openbossa.org> + + [WK2] Move some tiled backing store/viewport functions from Qt to generic WebKit2 sources + https://bugs.webkit.org/show_bug.cgi?id=98199 + + Reviewed by Noam Rosenthal. + + Move commitPageTransitionViewport from Qt to WebKit2. + + * UIProcess/WebPageProxy.cpp: + (WebKit): + (WebKit::WebPageProxy::commitPageTransitionViewport): + * UIProcess/qt/WebPageProxyQt.cpp: + * WebProcess/WebPage/WebPage.cpp: + (WebKit): + (WebKit::WebPage::commitPageTransitionViewport): + * WebProcess/WebPage/WebPage.h: + (WebPage): + * WebProcess/WebPage/WebPage.messages.in: + * WebProcess/WebPage/qt/WebPageQt.cpp: + +2012-10-02 Anders Carlsson <andersca@apple.com> + + Build fixes. + + * PluginProcess/mac/PluginProcessMac.mm: + (WebKit::beginModal): + * UIProcess/Plugins/mac/PluginProcessProxyMac.mm: + (WebKit::PluginProcessProxy::getPluginProcessSerialNumber): + (WebKit::PluginProcessProxy::makePluginProcessTheFrontProcess): + (WebKit::PluginProcessProxy::makeUIProcessTheFrontProcess): + (WebKit::PluginProcessProxy::exitFullscreen): + +2012-10-02 Alexey Proskuryakov <ap@apple.com> + + <rdar://problem/12407139> WebKit2 should provide API that returns all pages in the same process as a given page + https://bugs.webkit.org/show_bug.cgi?id=98193 + + Reviewed by Sam Weinig. + + * UIProcess/API/C/WKPage.cpp: + (WKPageCopyRelatedPages): + * UIProcess/API/C/WKPagePrivate.h: + * UIProcess/WebPageProxy.cpp: + (WebKit::WebPageProxy::relatedPages): + * UIProcess/WebPageProxy.h: + * UIProcess/WebProcessProxy.cpp: + (WebKit::WebProcessProxy::pages): + * UIProcess/WebProcessProxy.h: + Added. This should work once a process has crashed, too. + +2012-10-02 Anders Carlsson <andersca@apple.com> + + Allow LayerTreeHost subclasses to return a custom GraphicsLayerFactory + https://bugs.webkit.org/show_bug.cgi?id=98179 + + Reviewed by Andreas Kling. + + Implement ChromeClient::graphicsLayerFactory and have it call the DrawingArea's graphicsLayerFactory which + for DrawingAreaImpl then calls down to the layer tree host. Make LayerTreeCoordinator implement GraphicsLayerFactory and + make it create CoordinatedGraphicsLayers. + + * WebProcess/WebCoreSupport/WebChromeClient.cpp: + (WebKit::WebChromeClient::graphicsLayerFactory): + (WebKit): + * WebProcess/WebCoreSupport/WebChromeClient.h: + (WebChromeClient): + * WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp: + (WebKit::LayerTreeCoordinator::createGraphicsLayer): + (WebKit): + (WebKit::LayerTreeCoordinator::graphicsLayerFactory): + * WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.h: + (LayerTreeCoordinator): + * WebProcess/WebPage/DrawingArea.h: + (WebCore): + (WebKit::DrawingArea::graphicsLayerFactory): + * WebProcess/WebPage/DrawingAreaImpl.cpp: + (WebKit::DrawingAreaImpl::graphicsLayerFactory): + (WebKit): + * WebProcess/WebPage/DrawingAreaImpl.h: + (DrawingAreaImpl): + * WebProcess/WebPage/LayerTreeHost.h: + (WebCore): + (WebKit::LayerTreeHost::graphicsLayerFactory): + (LayerTreeHost): + +2012-10-01 Anders Carlsson <andersca@apple.com> + + Attempt to simplify IPC message dispatching logic in WebKit2 + https://bugs.webkit.org/show_bug.cgi?id=98097 + + Reviewed by Sam Weinig. + + Move the Connection::MessageReceiver class to its own header file. Add a MessageReceiverMap helper class + that will be used for dispatching messages based on message class (and eventually destination ID). + + Convert AuthenticationManager and WebGeolocationManager over to this new mechanism. + + * CMakeLists.txt: + * GNUmakefile.list.am: + Add new files. + + * Platform/CoreIPC/Connection.cpp: + (CoreIPC::Connection::dispatchMessage): + Check with the message receiver map first before calling Connection::Client::didReceiveMessage. + + * Platform/CoreIPC/Connection.h: + (CoreIPC::Connection::addMessageReceiver): + Call through to the message receiver map. + + * Platform/CoreIPC/MessageID.h: + (CoreIPC::MessageID::messageClass): + Rename MessageClassReserved to MessageClassInvalid. + + (MessageID): + * Platform/CoreIPC/MessageReceiver.h: + Move MessageReceiver from Connection.h to its own file. + + * Platform/CoreIPC/MessageReceiverMap.cpp: + New helper class. + + (CoreIPC::MessageReceiverMap::addMessageReceiver): + Add the receiver to the map of receivers. + + (CoreIPC::MessageReceiverMap::dispatchMessage): + Check if we have any registered receivers for this message class. + + * Platform/CoreIPC/MessageReceiverMap.h: + New file. + + * Target.pri: + Add new files. + + * WebKit2.xcodeproj/project.pbxproj: + Add new files. + + * WebProcess/Authentication/AuthenticationManager.cpp: + (WebKit::AuthenticationManager::AuthenticationManager): + * WebProcess/Authentication/AuthenticationManager.h: + (AuthenticationManager): + Register the authentication manager as a message receiver. + + * WebProcess/Geolocation/WebGeolocationManager.cpp: + (WebKit::WebGeolocationManager::WebGeolocationManager): + * WebProcess/Geolocation/WebGeolocationManager.h: + (WebGeolocationManager): + Register the geolocation manager as a message receiver. + + * WebProcess/WebProcess.cpp: + (WebKit::WebProcess::didReceiveMessage): + Remove checks for authentication manager and geolocation manager messages. + + * win/WebKit2.vcproj: + Add new files. + +2012-10-02 Carlos Garcia Campos <cgarcia@igalia.com> + + [GTK] Programs/WebKit2APITests/TestCookieManager fails + https://bugs.webkit.org/show_bug.cgi?id=98176 + + Reviewed by Martin Robinson. + + The problem is that the soup server has a g_assert_not_reached() + for unknown paths, but know /favicon.icon might be requested. + + * UIProcess/API/gtk/tests/TestCookieManager.cpp: + (serverCallback): Ignore unknown paths. + +2012-10-02 Hugo Parente Lima <hugo.lima@openbossa.org> + + [WK2] PageViewportControllerClient.h uses WebCore class without declaring them + https://bugs.webkit.org/show_bug.cgi?id=98070 + + Reviewed by Kenneth Rohde Christiansen. + + This patch just add forward declarations for code correctness. + + * UIProcess/PageViewportControllerClient.h: + (WebCore): + +2012-10-02 Jocelyn Turcotte <jocelyn.turcotte@digia.com> + + Fix tst_QQuickWebView::scrollRequest after r130029 + https://bugs.webkit.org/show_bug.cgi?id=98045 + + Reviewed by Simon Hausmann. + + The test needs to show the window and wait for the loadVisuallyCommitted() + signal like did in the QML API auto tests. + + * UIProcess/API/qt/tests/qquickwebview/tst_qquickwebview.cpp: + (tst_QQuickWebView::scrollRequest): + * UIProcess/API/qt/tests/util.cpp: + (waitForViewportReady): + * UIProcess/API/qt/tests/util.h: + +2012-10-02 Jinwoo Song <jinwoo7.song@samsung.com> + + [EFL][WK2] Use correct gtest macro for testing true/false + https://bugs.webkit.org/show_bug.cgi?id=98142 + + Reviewed by Laszlo Gombos. + + Using EXPECT_EQ(true/false, ...) makes clang trip when it tries to convert + true/false to a pointer. Tests should use EXPECT_TRUE/FALSE instead. + + * UIProcess/API/efl/tests/test_ewk2_view.cpp: + (showPopupMenu): + (TEST_F): + +2012-10-01 Brady Eidson <beidson@apple.com> + + Remove the Safari 2 -> Safari 3 icon database import code. + https://bugs.webkit.org/show_bug.cgi?id=98113 + + Reviewed by Maciej Stachowiak. + + Nuke the performImport() IconDatabaseClient method. + + * UIProcess/WebIconDatabase.cpp: + (WebKit): + * UIProcess/WebIconDatabase.h: + (WebIconDatabase): + +2012-10-01 Christophe Dumez <christophe.dumez@intel.com> + + Fix compilation warnings + https://bugs.webkit.org/show_bug.cgi?id=98020 + + Reviewed by Gyuyoung Kim. + + Fix compilation warnings related to ewk_view. + + * UIProcess/API/efl/ewk_view.cpp: + (_ewk_view_feed_touch_event_using_touch_point_list_of_evas): + (_ewk_view_on_touch_down): + (_ewk_view_on_touch_up): + (_ewk_view_on_touch_move): + * UIProcess/API/efl/ewk_view_ui_client.cpp: + (exceededDatabaseQuota): + +2012-10-01 Claudio Saavedra <csaavedra@igalia.com> + + [GTK][WK2] Save the download uri as file metadata + https://bugs.webkit.org/show_bug.cgi?id=98043 + + Reviewed by Carlos Garcia Campos. + + gio/gvfs can store file metadata, let's use this to + store the download uri. + + * WebProcess/Downloads/soup/DownloadSoup.cpp: + (WebKit::DownloadClient::didReceiveResponse): Save + the download uri as metadata. + +2012-10-01 Andras Becsi <andras.becsi@digia.com> + + [Qt][WK2] Device pixel ratio lost upon relaunch of the web process + https://bugs.webkit.org/show_bug.cgi?id=97908 + + Reviewed by Jocelyn Turcotte. + + Use setIntrinsicDeviceScaleFactor instead of setCustomDeviceScaleFactor + when setting the device pixel ratio to make the setting permanent. + + * UIProcess/API/qt/qquickwebview.cpp: + (QQuickWebViewPrivate::didRelaunchProcess): + (QQuickWebViewExperimental::setDevicePixelRatio): + +2012-09-27 Jocelyn Turcotte <jocelyn.turcotte@digia.com> + + [Qt] Fix viewport QML auto tests after the viewport changes + https://bugs.webkit.org/show_bug.cgi?id=97781 + + Reviewed by Simon Hausmann. + + Since the viewport controller has to hold any QML-side viewport updates + while it applies and render the new requested position, this has the + effect of blocking all those tests if the view is not visible (thus + disabling the tile rendering completely in the web process). + The viewport should be unlocked after the first rendered frame for + static contents. + + Fix those tests by forcing the QQuickView to be visible and by making + them wait for the first frame rather than the earlier end of provisional load. + + * UIProcess/API/qt/tests/qmltests/WebView/tst_doubleTapToZoom.qml: + * UIProcess/API/qt/tests/qmltests/WebView/tst_fitToView.qml: + * UIProcess/API/qt/tests/qmltests/WebView/tst_wheelEventHandling.qml: + * UIProcess/API/qt/tests/qmltests/common/TestWebView.qml: + +2012-09-27 Jocelyn Turcotte <jocelyn.turcotte@digia.com> + + [Qt] Add a loadVisuallyCommitted() signal + https://bugs.webkit.org/show_bug.cgi?id=97780 + + Reviewed by Kenneth Rohde Christiansen. + + This signal is emitted when the first DidRenderFrame message is received from + the web process after loadCommitted. + + * UIProcess/API/qt/qquickwebview.cpp: + (QQuickWebViewPrivate::QQuickWebViewPrivate): + (QQuickWebViewPrivate::loadDidCommit): + (QQuickWebViewPrivate::setNeedsDisplay): + * UIProcess/API/qt/qquickwebview_p.h: + * UIProcess/API/qt/qquickwebview_p_p.h: + (QQuickWebViewPrivate): + +2012-09-27 Jocelyn Turcotte <jocelyn.turcotte@digia.com> + + [Qt] Move Qt-only related methods from WebPageProxy.cpp to WebPageProxyQt.cpp + + Reviewed by Simon Hausmann. + + * UIProcess/WebPageProxy.cpp: + * UIProcess/qt/WebPageProxyQt.cpp: + (WebKit::WebPageProxy::didFindZoomableArea): + (WebKit): + (WebKit::WebPageProxy::findZoomableAreaForPoint): + (WebKit::WebPageProxy::didReceiveMessageFromNavigatorQtObject): + (WebKit::WebPageProxy::authenticationRequiredRequest): + (WebKit::WebPageProxy::proxyAuthenticationRequiredRequest): + (WebKit::WebPageProxy::certificateVerificationRequest): + +2012-09-27 Jocelyn Turcotte <jocelyn.turcotte@digia.com> + + [Qt] Decide when to apply a scrolled position to the viewport based on the rect covered by the tiles + https://bugs.webkit.org/show_bug.cgi?id=97777 + + Reviewed by Kenneth Rohde Christiansen. + + This patch achieves two things: + - Apply a short scroll position request directly if we already have rendered tiles + at this position. + - Since our visible rect request is asynchronous, the next frame might not always + be the one covering this position. This will wait for a frame that does to apply it. + + * UIProcess/API/qt/raw/qrawwebview_p_p.h: + (QRawWebViewPrivate::didRenderFrame): + * UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.cpp: + (WebKit::LayerTreeCoordinatorProxy::didRenderFrame): + * UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.h: + (LayerTreeCoordinatorProxy): + * UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.messages.in: + * UIProcess/PageClient.h: + (PageClient): + * UIProcess/PageViewportController.cpp: + (WebKit::PageViewportController::didCommitLoad): + (WebKit::PageViewportController::didRenderFrame): + (WebKit::PageViewportController::pageDidRequestScroll): + * UIProcess/PageViewportController.h: + (PageViewportController): + * UIProcess/WebPageProxy.h: + (WebPageProxy): + * UIProcess/qt/QtPageClient.cpp: + (WebKit::QtPageClient::didRenderFrame): + * UIProcess/qt/QtPageClient.h: + (QtPageClient): + * UIProcess/qt/WebPageProxyQt.cpp: + (WebKit::WebPageProxy::didRenderFrame): + * WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.h: + (WebCore::CoordinatedGraphicsLayer::coverRect): + * WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp: + (WebKit::LayerTreeCoordinator::flushPendingLayerChanges): + +2012-09-27 Jocelyn Turcotte <jocelyn.turcotte@digia.com> + + [Qt] Delay viewport position, scale and contents size updates until tiles are rendered + https://bugs.webkit.org/show_bug.cgi?id=97775 + + Reviewed by Kenneth Rohde Christiansen. + + A few events from the web process can cause the viewport position or scale to be + adjusted in the UI process: + - Scroll position request + - Viewport attributes (initialScale, minimumScale) + - Contents size change + + We previously applied those updates directly to the viewport, which would then in turn + produce a corresponding visible rect request to the web process to render the contents + at the new position/scale. This could leave the viewport showing the old content, either + by scaling the tiles, or by showing checkerboard if no contents was rendered at this + position yet. When the web process was done rendering new tiles, the proper tiles + were then shown to the user. + Since many of these updates happen during page load, all producing an iterative adjustment + to the viewport, this could show sharpness and position jitter until the final rendering + was done. + + This patch makes those updates go through the PageViewportController first and then to the + QQuickWebView rather than the other way around, and keep them pending until the + LayerTreeHostProxy reports that the new tiles are ready to be shown. Since the rendering + is blocked until the page first layout is done, this apply the modifications to + the viewport only once when the first frame is ready to be shown. + + * UIProcess/API/qt/qquickwebview.cpp: + * UIProcess/API/qt/qquickwebview_p_p.h: + (QQuickWebViewFlickablePrivate): + * UIProcess/API/qt/raw/qrawwebview_p_p.h: + (QRawWebViewPrivate::didRenderFrame): + * UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.cpp: + (WebKit::LayerTreeCoordinatorProxy::didRenderFrame): + * UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.h: + (LayerTreeCoordinatorProxy): + * UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.messages.in: + * UIProcess/PageClient.h: + (PageClient): + * UIProcess/PageViewportController.cpp: + (WebKit::PageViewportController::didCommitLoad): + (WebKit::PageViewportController::didChangeContentsSize): + (WebKit::PageViewportController::didRenderFrame): + (WebKit::PageViewportController::initialViewportReady): + (WebKit::PageViewportController::pageDidRequestScroll): + (WebKit::PageViewportController::didChangeContentsVisibility): + (WebKit::PageViewportController::resumeContent): + (WebKit::PageViewportController::applyScaleAfterRenderingContents): + (WebKit): + (WebKit::PageViewportController::applyPositionAfterRenderingContents): + (WebKit::PageViewportController::updateMinimumScaleToFit): + * UIProcess/PageViewportController.h: + (PageViewportController): + * UIProcess/PageViewportControllerClient.h: + (PageViewportControllerClient): + * UIProcess/WebPageProxy.h: + (WebPageProxy): + * UIProcess/qt/PageViewportControllerClientQt.cpp: + (WebKit::PageViewportControllerClientQt::didChangeContentsSize): + * UIProcess/qt/PageViewportControllerClientQt.h: + (PageViewportControllerClientQt): + * UIProcess/qt/QtPageClient.cpp: + (WebKit::QtPageClient::didRenderFrame): + (WebKit): + (WebKit::QtPageClient::didChangeContentsSize): + * UIProcess/qt/QtPageClient.h: + (QtPageClient): + * UIProcess/qt/QtWebPageLoadClient.cpp: + (WebKit::QtWebPageLoadClient::didCommitLoad): + * UIProcess/qt/WebPageProxyQt.cpp: + (WebKit::WebPageProxy::didRenderFrame): + (WebKit): + * WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp: + (WebKit::LayerTreeCoordinator::flushPendingLayerChanges): + +2012-09-27 Jocelyn Turcotte <jocelyn.turcotte@digia.com> + + [Qt] Wait for the UI process before re-enabling rendering during page load + https://bugs.webkit.org/show_bug.cgi?id=97773 + + Reviewed by Kenneth Rohde Christiansen. + + During page navigation, WebCore might ask asynchronously the UI process to + scroll to an anchor or restored history position and the UI process will + return the corresponding visible rect to be rendered by the web process. + + To avoid rendering tiles for the invalidated area by the new page layout at + the wrong position, we should do an extra message round-trip to the UI + process before resuming the rendering. + Assuming that all messages are handled in order by both the web and UI process, + sending the round-trip request in the web process once we sent all scroll + requests, contents size and viewport attributes updates and then handling + the round-trip response, we make sure that final visible rect request have + been handled already. + + * UIProcess/API/qt/raw/qrawwebview.cpp: + (QRawWebViewPrivate::pageTransitionViewportReady): + * UIProcess/API/qt/raw/qrawwebview_p_p.h: + (QRawWebViewPrivate): + * UIProcess/PageClient.h: + (PageClient): + * UIProcess/PageViewportController.cpp: + (WebKit::PageViewportController::pageTransitionViewportReady): + (WebKit): + * UIProcess/PageViewportController.h: + (PageViewportController): + * UIProcess/WebPageProxy.h: + (WebPageProxy): + * UIProcess/WebPageProxy.messages.in: + * UIProcess/qt/QtPageClient.cpp: + (WebKit::QtPageClient::pageTransitionViewportReady): + (WebKit): + * UIProcess/qt/QtPageClient.h: + (QtPageClient): + * UIProcess/qt/WebPageProxyQt.cpp: + (WebKit::WebPageProxy::commitPageTransitionViewport): + (WebKit): + (WebKit::WebPageProxy::pageTransitionViewportReady): + * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: + (WebKit::WebFrameLoaderClient::WebFrameLoaderClient): + (WebKit::WebFrameLoaderClient::dispatchDidLayout): + (WebKit::WebFrameLoaderClient::frameLoadCompleted): + (WebKit::WebFrameLoaderClient::provisionalLoadStarted): + * WebProcess/WebCoreSupport/WebFrameLoaderClient.h: + (WebFrameLoaderClient): + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::didStartPageTransition): + (WebKit): + (WebKit::WebPage::didCompletePageTransition): + * WebProcess/WebPage/WebPage.h: + (WebPage): + * WebProcess/WebPage/WebPage.messages.in: + * WebProcess/WebPage/qt/WebPageQt.cpp: + (WebKit::WebPage::commitPageTransitionViewport): + (WebKit): + +2012-10-01 Alberto Garcia <agarcia@igalia.com> + + WebPrintOperationGtk destructor should be virtual + https://bugs.webkit.org/show_bug.cgi?id=98002 + + Reviewed by Carlos Garcia Campos. + + WebPrintOperationGtk is an abstract class which can be deleted + using a pointer to itself, yet its destructor is not virtual. + Fixes -Wdelete-non-virtual-dtor. + + * WebProcess/WebPage/gtk/WebPrintOperationGtk.h: + (WebPrintOperationGtk): + +2012-09-30 Mario Sanchez Prada <msanchez@igalia.com> + + [WK2][GTK] Add API to get the favicon for a WebKitWebView + https://bugs.webkit.org/show_bug.cgi?id=96477 + + Reviewed by Carlos Garcia Campos. + + Provide a new simple API to synchronously try to get the favicon + associated with a WebView, if any, and to keep track of changes on + it, through a new GObject property. + + * UIProcess/API/gtk/WebKitWebView.cpp: + (_WebKitWebViewPrivate): + (webkitWebViewIconReadyCallback): Callback to handle the + 'icon-ready' signal coming from WebKitFaviconDatabase. + (webkitWebViewWatchForChangesInFavicon): Connects to the + 'icon-ready' signal from WebKitFaviconDatabase, to keep track of + changes in favicons, that must be related to the current view. + (webkitWebViewDisconnectFaviconDatabaseSignalHandlers): + Disconnects the handler for 'icon-ready' if needed. + (webkitWebViewGetProperty): Updated for the new "favicon" property . + (webkitWebViewFinalize): Disconnect the new signal handler. + (webkit_web_view_class_init): Definition of the new property. + (webkitWebViewEmitLoadChanged): Make sure we will be watching for + changes in the favicon from WEBKIT_LOAD_STARTED on. + (webkit_web_view_get_favicon): New API funtcion, returning the + current favicon for the WebView, if any, or NULL otherwise. + * UIProcess/API/gtk/WebKitWebView.h: + + Internally expose a way to try to get the favicon associated to a + page URL synchronously, through WebKitFaviconDatabase. + + * UIProcess/API/gtk/WebKitFaviconDatabase.cpp: + (webkitFaviconDatabaseGetFaviconSync): New internal function, it + will return either 0 or a valid pointer to a cairo_surface_t. + * UIProcess/API/gtk/WebKitFaviconDatabasePrivate.h: + + Add unit tests for checking this new API. + + * UIProcess/API/gtk/tests/TestWebKitFaviconDatabase.cpp: + (testWebViewFavicon): New unit test. + (beforeAll): Add the test to the test suite. + +2012-09-30 Mario Sanchez Prada <msanchez@igalia.com> + + [WK2][GTK] Fix issues with WebKitFaviconDatabase in debug builds + https://bugs.webkit.org/show_bug.cgi?id=97966 + + Reviewed by Carlos Garcia Campos. + + Fix failing ASSERTs detected when running the unit tests from + TestWebKitFaviconDatabase in debug builds. + + * UIProcess/API/gtk/WebKitFaviconDatabase.cpp: + (webkitFaviconDatabaseDispose): Close IconDatabase here, which is + the right place to do it according to GObject documentation. + (webkitFaviconDatabaseFinalize): Just destroy the private data + structure and chain up to parent class's finalize method. + (webkit_favicon_database_class_init): Override dispose method. + + * UIProcess/API/gtk/tests/TestWebKitFaviconDatabase.cpp: + (webkitFaviconDatabaseFinalizedCallback): Delete files when the + WebKitFaviconDatabase is being finalized, since by that time the + IconDatabase from WebCore will be already closed. + (afterAll): Add a weak reference to WebKitFaviconDatabase and + provide a GWeakNotify callback (webkitFaviconDatabaseFinalizedCallback). + +2012-09-29 Byungwoo Lee <bw80.lee@samsung.com> + + [EFL] Fix build error : Link webkit2 library to ewk2UnitTestInjectedBundleSample. + https://bugs.webkit.org/show_bug.cgi?id=97622 + + Reviewed by Gyuyoung Kim. + + There is no dependency between ewk2UnitTestInjectedBundleSample and + webkit2 library. + + Because of this, on the first build, compiler tries to build + injected_bundle_sample.cpp before the forwarding headers are created. + This makes build error that the header file 'WebKit2/WKBaseSoup.h' + cannot be found. + + To prevent this, webkit2 library is linked to ewk2UnitTestInjectedBundleSample. + + * PlatformEfl.cmake: + +2012-09-28 Mariusz Grzegorczyk <mariusz.g@samsung.com> + + [WK2][GTK][EFL] Share WebKit2-GTK plugin process implementation with EFL port + https://bugs.webkit.org/show_bug.cgi?id=91844 + + Reviewed by Simon Hausmann. + + Implement windowless plugin and functions needed to launch PluginProcess. + + * GNUmakefile.am: Change files and folders related to plugin process from gtk to unix. + * GNUmakefile.list.am: Change files and folders related to plugin process from gtk to unix. + * Platform/Logging.cpp: Add Plugins channel for LOG. + (WebKit): + (WebKit::getChannelFromName): + (WebKit::initializeLogChannelsIfNecessary): + * Platform/Logging.h: + (WebKit): + * PlatformEfl.cmake: Add files needed by plugin process. + * PluginProcess/unix/PluginControllerProxyUnix.cpp: Renamed from Source/WebKit2/PluginProcess/gtk/PluginControllerProxyGtk.cpp. + (WebKit): + (WebKit::PluginControllerProxy::platformInitialize): Add macros for gtk/efl differents. + (WebKit::PluginControllerProxy::platformDestroy): + (WebKit::PluginControllerProxy::platformGeometryDidChange): + * PluginProcess/unix/PluginProcessMainUnix.cpp: Renamed from Source/WebKit2/PluginProcess/gtk/PluginProcessMainGtk.cpp. + (WebKit): + (WebKit::webkitXError): + (WebKit::PluginProcessMainUnix): + * PluginProcess/unix/PluginProcessMainUnix.h: Renamed from Source/WebKit2/PluginProcess/gtk/PluginProcessMainGtk.h. + (WebKit): + * PluginProcess/unix/PluginProcessUnix.cpp: Renamed from Source/WebKit2/PluginProcess/gtk/PluginProcessGtk.cpp. + (WebKit): + (WebKit::PluginProcess::platformInitialize): + * UIProcess/Plugins/unix/PluginProcessProxyUnix.cpp: Renamed from Source/WebKit2/UIProcess/Plugins/gtk/PluginProcessProxyGtk.cpp. + (WebKit): + (WebKit::PluginProcessProxy::platformInitializePluginProcess): + (WebKit::PluginProcessProxy::scanPlugin): + * UIProcess/efl/WebPageProxyEfl.cpp: Add stubs. + (WebKit::WebPageProxy::createPluginContainer): + (WebKit): + (WebKit::WebPageProxy::windowedPluginGeometryDidChange): + * WebProcess/Plugins/Netscape/unix/PluginProxyUnix.cpp: Renamed from Source/WebKit2/WebProcess/Plugins/Netscape/gtk/PluginProxyGtk.cpp. + (WebKit): + (WebKit::PluginProxy::needsBackingStore): + * WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp: Plugin's windowless implementation. + (WebKit::getPluginDisplay): + (WebKit::x11Screen): + (WebKit::displayDepth): + (WebKit::rootWindowID): + (WebKit::NetscapePlugin::x11HostDisplay): + (WebKit::NetscapePlugin::platformPaint): + * config.h: + * unix/PluginMainUnix.cpp: Renamed from Source/WebKit2/gtk/PluginMainGtk.cpp. + (main): + +2012-09-28 Anders Carlsson <andersca@apple.com> + + Remove Java bridge + https://bugs.webkit.org/show_bug.cgi?id=97954 + + Reviewed by Sam Weinig. + + The Java bridge is not used by any port; Mac now has a NPAPI Java plug-in. + + * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: + * WebProcess/WebCoreSupport/WebFrameLoaderClient.h: + (WebFrameLoaderClient): + +2012-09-28 Dan Bernstein <mitz@apple.com> + + <rdar://problem/12398537> WebKit2 lacks API for disabling document.cookie like -[WebView _setCookieEnabled:] + https://bugs.webkit.org/show_bug.cgi?id=97939 + + Reviewed by Sam Weinig. + + * Shared/WebPreferencesStore.h: + (WebKit): Defined CookieEnabled key with a default value of true. + * UIProcess/API/C/WKPreferences.cpp: + (WKPreferencesSetCookieEnabled): Added this setter. + (WKPreferencesGetCookieEnabled): Added this getter. + * UIProcess/API/C/WKPreferencesPrivate.h: + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::updatePreferences): Added a call to Settings::setCookieEnabled to push the + preference into Settings. + +2012-09-28 Sam Weinig <sam@webkit.org> + + Fix pluralization of Info.plist key. + + Rubber-stamped by Anders Carlsson. + + * WebProcessService/Info.plist: + * WebProcessServiceForWebKitDevelopment/Info.plist: + It's _MultipleInstances, not _MultipleInstance. :( + +2012-09-28 Anders Carlsson <andersca@apple.com> + + Pass the correct path length to _NSGetExecutablePath + https://bugs.webkit.org/show_bug.cgi?id=97935 + + Reviewed by Sam Weinig. + + * WebProcessServiceForWebKitDevelopment/WebProcessServiceForWebKitDevelopmentMain.mm: + (WebProcessServiceForWebKitDevelopmentEventHandler): + Initialize pathLength before passing it to _NSGetExecutablePath. + +2012-09-28 Alberto Garcia <agarcia@igalia.com> + + WebKitLoaderClient: add missing initializer. + https://bugs.webkit.org/show_bug.cgi?id=97930 + + Reviewed by Martin Robinson. + + WKPageLoaderClient is missing the initializer for the didLayout + field. Fixes -Wmissing-field-initializers. + + * UIProcess/API/gtk/WebKitLoaderClient.cpp: + (attachLoaderClientToView): + +2012-09-28 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> + + Code inside FrameLoaderClient::canShowMIMEType() implementations can be shared among different WK ports + https://bugs.webkit.org/show_bug.cgi?id=97547 + + Reviewed by Adam Barth. + + Newly added WebCore::MIMETypeRegistry::canShowMIMEType() function is used + inside WebKit::WebPageProxy::canShowMIMEType() and WKBundlePageCanShowMIMEType(). + + * UIProcess/WebPageProxy.cpp: + (WebKit::WebPageProxy::canShowMIMEType): + * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp: + (WKBundlePageCanShowMIMEType): + +2012-09-28 Byungwoo Lee <bw80.lee@samsung.com> + + [EFL][WK2] {Vibration,Battery,NetworkInfo}Provider should contain WKContextRef instead of proxy. + https://bugs.webkit.org/show_bug.cgi?id=97839 + + Reviewed by Kenneth Rohde Christiansen. + + VibrationProvider has WKRetainPtr<WKVibrationRef> m_wkVibrationRef + which has reference for object WebVibrationProxy. + The WebVibrationProxy instance is a member of WebContext who has it + as RefPtr<WebVibrationProxy>. + + A member of one class is shared with another class, but there is no + relation between the two classes. + + This can become a problem when WebContext is deleted before the + VibrationProvider, WebVibrationProxy will be alive without WebContext, + because VibrationProvider also has the reference for WebVibrationProxy. + + This is a problem because WebVibrationProxy should be a member of + WebContext. + + To prevent this, I changed the VibrationProvider to have + WKRetainPtr<WKContextRef> instead of WKRetainPtr<WKVibrationRef>. + Same for BatteryProvider and NetworkInfoProvider. + + * UIProcess/API/efl/BatteryProvider.cpp: + (BatteryProvider::create): + (BatteryProvider::BatteryProvider): + (BatteryProvider::didChangeBatteryStatus): + * UIProcess/API/efl/BatteryProvider.h: + (BatteryProvider): + * UIProcess/API/efl/NetworkInfoProvider.cpp: + (NetworkInfoProvider::create): + (NetworkInfoProvider::NetworkInfoProvider): + * UIProcess/API/efl/NetworkInfoProvider.h: + (NetworkInfoProvider): + * UIProcess/API/efl/VibrationProvider.cpp: + (VibrationProvider::create): + (VibrationProvider::VibrationProvider): + * UIProcess/API/efl/VibrationProvider.h: + (VibrationProvider): + * UIProcess/API/efl/ewk_context.cpp: + (_Ewk_Context::_Ewk_Context): + +2012-09-28 Mario Sanchez Prada <msanchez@igalia.com> + + [WK2][GTK] Implement new Favicons API + https://bugs.webkit.org/show_bug.cgi?id=96476 + + Reviewed by Carlos Garcia Campos. + + New object wrapping the internal IconDatabase from WebCore, + providing a simple asynchronous API to retrieve the favicon + associated to a page URL, and two more functions to simple query + the internal database for the URI of the icon associated to a + page, if any, and to clear the state of the internal database. + + * UIProcess/API/gtk/WebKitFaviconDatabase.cpp: Added. + (_WebKitFaviconDatabasePrivate): + (webkit_favicon_database_init): + (webkitFaviconDatabaseFinalize): + (webkit_favicon_database_class_init): + (GetFaviconSurfaceAsyncData): New structure used to pass data + across the asynchronous implementation of get_favicon(). + (GetFaviconSurfaceAsyncData::~GetFaviconSurfaceAsyncData): + Disconnects the cancellable if needed. + (getIconSurfaceSynchronously): Synchronously returns a pointer to + the cairo_surface with the icon's data, if available. + (deletePendingIconRequests): Removes the full list of + icon requests for a page URL. + (processPendingIconsForURI): Process any icon request that + might be still pending. + (iconDataReadyForPageURLCallback): Called from WebIconDatabase + when new data is ready for a favicon. + (webkitFaviconDatabaseCreate): Create the WebKitFaviconDatabase + object and initializes the API client for WKIconDatabaseClient. + (getOrCreatePendingIconRequests): Returns (if available) or + creates a new icon request, to be appended to the list of requests + for the same page URL. + (getIconSurfaceCancelled): Handle the case of a request being + cancelled. Must happen on the main thread. + (getIconSurfaceCancelledCallback): Callback used with + g_cancellable_connect(), which ensure getIconSurfaceCancelled() is + called from the main thread. + (setErrorForAsyncResult): Helper to set errors in the result. + (webkit_favicon_database_error_quark): New function, providint the + new error domain for errors of type WebKitFaviconDatabaseError. + (webkit_favicon_database_get_favicon): New API function, providing + an asynchronous mechanism to query the favicon for a page URL. + (webkit_favicon_database_get_favicon_finish): New API function to + finish the asyncrhonous request started with get_favicon(). + (webkit_favicon_database_get_favicon_uri): New API function + to easily retrieve, if available, the URI of a favicon. + (webkit_favicon_database_clear): New API function to clear the + state of the internal icon database. + * UIProcess/API/gtk/WebKitFaviconDatabase.h: Added. + (_WebKitFaviconDatabase): + (_WebKitFaviconDatabaseClass): + * UIProcess/API/gtk/WebKitFaviconDatabasePrivate.h: Added to + internally expose webkitFaviconDatabaseCreate() to WebKitWebContext. + * UIProcess/API/gtk/WebKitPrivate.h: Import WebKit2/WKIconDatabase.h. + * GNUmakefile.list.am: Added new files. + + Add a new getter in WebIconDatabase for m_urlImportCompleted. + + * UIProcess/WebIconDatabase.cpp: + (WebKit::WebIconDatabase::isUrlImportCompleted): Added this simple + getter to allow knowing from WebKitFaviconDatabase whether the + initial import has finished, needed for making some decisions. + (WebKit): + * UIProcess/WebIconDatabase.h: + (WebIconDatabase): + + New API in WebKitWebContext to allow obtaining a valid instance of + WebKitFaviconDatabase and to set/get the local path to be used. + + * UIProcess/API/gtk/WebKitWebContext.cpp: + (_WebKitWebContextPrivate): + (webkit_web_context_set_favicon_database_path): New API to allow + setting a path for the icon database, other than the default one. + (webkit_web_context_get_favicon_database_path): New API to + retrieve the path for the icon database currently in use. + (webkit_web_context_get_favicon_database): New API to get a valid + and properly initialized instance of WebKitFaviconDatabase. + * UIProcess/API/gtk/WebKitWebContext.h: + + Make sure we have a default path set for the icon database. + + * UIProcess/gtk/WebContextGtk.cpp: + (WebKit::WebContext::platformDefaultIconDatabasePath): Return the + default path to be used for the icon database. + + Add unit tests for checking this new API. + + * UIProcess/API/gtk/tests/TestWebKitFaviconDatabase.cpp: Added. + (serverCallback): Callback for the test server. + (testSetDirectory): New unit test, checks the ability to set and + get a specific directory path for the icon database. + (testClearDatabase): New unit test, checks the ability to clear + the data in the icon database. + (testGetFavicon): New unit test, checks the ability to get a + favicon from the icon database in different situations. + (testGetFaviconURI): New unit test, checks the ability to retrieve + the URI for the favicon, if any, associated to a web page. + (deleteDatabaseFiles): Helper function to remove temporary files. + (beforeAll): Initialize the test server and add the unit tests. + (afterAll): Delete the test server and clean up. + +2012-09-28 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com> + + [EFL] Unreviewed test fixes after r129892. + + * UIProcess/API/efl/tests/test_ewk2_context.cpp: + (TEST_F): Fix a copy&paste error that changed the test + expectations. + * UIProcess/API/efl/tests/test_ewk2_cookie_manager.cpp: + (TEST_F): Revert the change here since it was already in the right + format before. + +2012-09-28 Jinwoo Song <jinwoo7.song@samsung.com> + + [EFL][WK2] Some expected and actual parameters in unit tests are reversed + https://bugs.webkit.org/show_bug.cgi?id=97624 + + Reviewed by Laszlo Gombos. + + According to the gtest guide, ASSERT_XXX, EXPECT_XXX(expected, actual) are recommended + but some unit tests do not follow this.(http://code.google.com/p/googletest/wiki/Primer) + Google Test's failure messages are optimized for this convention. + + * UIProcess/API/efl/tests/test_ewk2_back_forward_list.cpp: + (TEST_F): + * UIProcess/API/efl/tests/test_ewk2_context.cpp: + (schemeRequestCallback): + (TEST_F): + * UIProcess/API/efl/tests/test_ewk2_cookie_manager.cpp: + (TEST_F): + * UIProcess/API/efl/tests/test_ewk2_download_job.cpp: + (on_download_requested): + (on_download_finished): + * UIProcess/API/efl/tests/test_ewk2_intents.cpp: + (onIntentServiceRegistration): + (onIntentReceived): + (TEST_F): + * UIProcess/API/efl/tests/test_ewk2_refptr_evas_object.cpp: + (TEST_F): + * UIProcess/API/efl/tests/test_ewk2_view.cpp: + (TEST_F): + (onFormAboutToBeSubmitted): + (checkBasicPopupMenuItem): + (showPopupMenu): + (showColorPicker): + +2012-09-28 Balazs Kelemen <kbalazs@webkit.org> + + [Qt] QRawWebView tests are broke after r129545 + https://bugs.webkit.org/show_bug.cgi?id=97907 + + Reviewed by Noam Rosenthal. + + The issue here is that we set up the page loader client before initializing the page + so the message we send in WebPageProxy::initializeLoaderClient will be lost since the + page does not exists at the web process side yet. The trivial fix would be to reorder + initialization. In this patch I also moved to the new model of observing layout changes + via WKPageDidLayoutCallback since the old one will be deprecated at some time. + + * UIProcess/API/qt/tests/qrawwebview/tst_qrawwebview.cpp: + (WebView::WebView): + (WebView::didLayout): + +2012-09-28 Gyuyoung Kim <gyuyoung.kim@samsung.com> + + Unreviewed, rolling out r129863. + http://trac.webkit.org/changeset/129863 + https://bugs.webkit.org/show_bug.cgi?id=97173 + + Broken debug WK2 layout test + + * PlatformEfl.cmake: + * UIProcess/API/efl/EWebKit2.h: + * UIProcess/API/efl/ewk_context.cpp: + (_Ewk_Context::_Ewk_Context): + (_Ewk_Context::~_Ewk_Context): + * UIProcess/API/efl/ewk_main.cpp: + (ewk_init): + (ewk_shutdown): + * UIProcess/API/efl/ewk_main.h: Added. + * UIProcess/API/efl/ewk_main_private.h: Removed. + * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp: + (EWK2UnitTest::EWK2UnitTestBase::SetUp): + (EWK2UnitTest::EWK2UnitTestBase::TearDown): + * WebProcess/efl/WebProcessMainEfl.cpp: + (WebKit::WebProcessMainEfl): + +2012-09-28 Christophe Dumez <christophe.dumez@intel.com> + + [EFL][WK2] exceededDatabaseQuota event is not handled + https://bugs.webkit.org/show_bug.cgi?id=97882 + + Reviewed by Kenneth Rohde Christiansen. + + Handle exceededDatabaseQuota callback from WKPageUIClient so + that we let the browser a chance to decide what to do when + the database quota is reached. If the browser does not handle + this, then we return a realistic default quota (5MB as + recommended by the spec). + + * UIProcess/API/efl/ewk_view.cpp: + (ewk_view_database_quota_exceeded): + * UIProcess/API/efl/ewk_view.h: + * UIProcess/API/efl/ewk_view_private.h: + * UIProcess/API/efl/ewk_view_ui_client.cpp: + (exceededDatabaseQuota): + (ewk_view_ui_client_attach): + +2012-09-28 Kai Koehne <kai.koehne@digia.com> + + [Qt] Use qInstallMessageHandler() + https://bugs.webkit.org/show_bug.cgi?id=96648 + + Reviewed by Jocelyn Turcotte. + + qInstallMsgHandler() got deprecated in Qt 5. + + * PluginProcess/qt/PluginProcessMainQt.cpp: + (WebKit::messageHandler): + (WebKit::PluginProcessMain): + * UIProcess/API/qt/tests/util.cpp: + (messageHandler): + (suppressDebugOutput): + * qt/MainQt.cpp: + (messageHandler): + (main): + +2012-09-28 Byungwoo Lee <bw80.lee@samsung.com> + + [EFL][WK2] Clear provider on destructor of {Vibration,Battery,NetworkInfo}Provider. + https://bugs.webkit.org/show_bug.cgi?id=97528 + + Reviewed by Kenneth Rohde Christiansen. + + Constructor of {Vibration,Battery,NetworkInfo}Provider set provider + but the destructor of the classes doesn't clear provider. + This can make a problem about accessing dangling pointer. + + For preventing this problem, clear provider on destructor. + + * UIProcess/API/efl/BatteryProvider.cpp: + (BatteryProvider::~BatteryProvider): + * UIProcess/API/efl/NetworkInfoProvider.cpp: + (NetworkInfoProvider::~NetworkInfoProvider): + * UIProcess/API/efl/VibrationProvider.cpp: + (VibrationProvider::~VibrationProvider): + +2012-09-28 Christophe Dumez <christophe.dumez@intel.com> + + [EFL][WK2] NetworkInfo provider is not initialized in Ewk_Context + https://bugs.webkit.org/show_bug.cgi?id=97865 + + Reviewed by Kenneth Rohde Christiansen. + + Initialize NetworkInfo provider for EFL port in Ewk_Context + with the other providers. + + * UIProcess/API/efl/ewk_context.cpp: + (_Ewk_Context): + (_Ewk_Context::_Ewk_Context): + +2012-09-28 Eunmi Lee <eunmi15.lee@samsung.com> + + [EFL][WK2] Refactoring initialization and shutdown codes of EFL libraries. + https://bugs.webkit.org/show_bug.cgi?id=97173 + + Reviewed by Gyuyoung Kim. + + Initialize and shutdown the EFL libraries in the ewk_main.cpp for ui + process and WebProcessMainEfl.cpp for web process. + Additionally, initialization and shutdown are done when ewk_context is + created and deleted, so ewk_{init,shutdown} APIs are changed to + internal function and applications don't have to call them. + + * PlatformEfl.cmake: + * UIProcess/API/efl/EWebKit2.h: + * UIProcess/API/efl/ewk_context.cpp: + (_Ewk_Context::_Ewk_Context): + (_Ewk_Context::~_Ewk_Context): + * UIProcess/API/efl/ewk_main.cpp: + (ewk_init): + (ewk_shutdown): + * UIProcess/API/efl/ewk_main.h: Removed. + * UIProcess/API/efl/ewk_main_private.h: Added. + * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp: + (EWK2UnitTest::EWK2UnitTestBase::SetUp): + (EWK2UnitTest::EWK2UnitTestBase::TearDown): + * WebProcess/efl/WebProcessMainEfl.cpp: + (WebKit::WebProcessMainEfl): + +2012-09-27 Beth Dakin <bdakin@apple.com> + + https://bugs.webkit.org/show_bug.cgi?id=97823 + Need to bump the WKBundlePageLoaderClient version after the addition of didLayout + + Reviewed by Brady Eidson. + + Bump the version. + * Shared/APIClientTraits.cpp: + (WebKit): + * Shared/APIClientTraits.h: + * WebProcess/InjectedBundle/API/c/WKBundlePage.h: + +2012-09-27 Helder Correia <helder.correia@nokia.com> + + [Cairo] Unnecessary creation of ShareableBitmap's for directly composited images + https://bugs.webkit.org/show_bug.cgi?id=97745 + + Reviewed by Martin Robinson. + + In LayerTreeCoordinator::adoptImageBackingStore(), there is a + PLATFORM(QT) code path to check for identical images, but nothing is + done for Cairo, which results in the occurrence of avoidable resource + allocations. + + The issue happens in e.g. http://www.webkit.org/blog-files/leaves/, + where there are many leaves flying around while they're produced out of + only four bitmaps. + + This patch uses pointers to cairo_surface_t's as the key to the hashmap + that caches bitmaps. This can be safely done since we own the references. + We artificially increment the surface references in adoptImageBackingStore() + and decrement them in releaseImageBackingStore(). + + * WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp: + (WebKit::LayerTreeCoordinator::adoptImageBackingStore): + (WebKit::LayerTreeCoordinator::releaseImageBackingStore): + +2012-09-27 Anders Carlsson <andersca@apple.com> + + Stop using dispatch_get_current_queue + https://bugs.webkit.org/show_bug.cgi?id=97806 + <rdar://problem/12379094> + + Reviewed by Mark Rowe. + + * Platform/mac/WorkQueueMac.cpp: + (WorkQueueAndFunction::WorkQueueAndFunction): + (WorkQueueAndFunction): + (WorkQueue::executeFunction): + (WorkQueue::dispatch): + (WorkQueue::dispatchAfterDelay): + Keep track of the associated work queue so we can get it in WorkQueue::executeFunction. + + * UIProcess/Launcher/mac/ProcessLauncherMac.mm: + (WebKit::setUpTerminationNotificationHandler): + We don't care about which queue the termination notification is delivered on since we only want to call + waitpid on the child pid so we can just use a global queue. + + * UIProcess/mac/WebInspectorProxyMac.mm: + (-[WKWebInspectorProxyObjCAdapter inspectedViewFrameDidChange:]): + Use dispatch_get_main_queue here. + +2012-09-27 Mario Sanchez Prada <msanchez@igalia.com> + + [WK2] IconDatabase: Add a way to notify when icon data is available + https://bugs.webkit.org/show_bug.cgi?id=63945 + + Rubber stamped by Anders Carlsson. + + Update version of WKIconDatabaseClient and API traits. + + * Shared/APIClientTraits.cpp: + (WebKit): + * Shared/APIClientTraits.h: + * UIProcess/API/C/WKIconDatabase.h: + +2012-09-27 Balazs Kelemen <kbalazs@webkit.org> + + [Qt][WK2] REGRESSION(r128980): It broke all QRawWebView API test + https://bugs.webkit.org/show_bug.cgi?id=97561 + + Reviewed by Noam Rosenthal. + + Make sure we always send the very first RenderNextFrame message. + Before r128980 it was working accidentally because in the common + case the web process sent a DeleteCompositingLayer message at some + point before the forced repaint would time out and we was sending + the first RenderNextFrame when reacting to that. + + * UIProcess/API/qt/raw/qrawwebview.cpp: + (QRawWebView::setActive): Set the LayerTreeRenderer to active + as well. In the QQuickWebView case it is handled by the QtWebPageSGNode. + (QRawWebView::layerTreeRenderer): Added a convenience getter + for the LayerTreeRenderer. + (QRawWebView::paint): + * UIProcess/API/qt/raw/qrawwebview_p.h: + (WebKit): + * UIProcess/API/qt/tests/qrawwebview/tst_qrawwebview.cpp: + (tst_qrawwebview::tst_qrawwebview): Added a call to addQtWebProcessToPath + to make my and the follower users of this test easier. + +2012-09-27 Eunmi Lee <eunmi15.lee@samsung.com> + + [EFL][WK2] Process touch events using mouse and multi events of Evas. + https://bugs.webkit.org/show_bug.cgi?id=96906 + + Reviewed by Kenneth Rohde Christiansen. + + Provide default behavior for processing touch events in the ewk_view if + application wants to use it. + We can to process touch events using mouse and multi events because the + Evas creates mouse events for first touch and multi events for second and + third touch. It can be modified when Evas starts to support event type + for touch events. + + * UIProcess/API/efl/ewk_view.cpp: + (_Ewk_View_Private_Data): + (_Ewk_View_Private_Data::_Ewk_View_Private_Data): + (_ewk_view_feed_touch_event_using_touch_point_list_of_evas): + (_ewk_view_on_touch_down): + (_ewk_view_on_touch_up): + (_ewk_view_on_touch_move): + (ewk_view_touch_events_enabled_set): + (ewk_view_touch_events_enabled_get): + * UIProcess/API/efl/ewk_view.h: + * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp: + (EWK2UnitTest::EWK2UnitTestBase::mouseDown): + (EWK2UnitTest): + (EWK2UnitTest::EWK2UnitTestBase::mouseUp): + (EWK2UnitTest::EWK2UnitTestBase::mouseMove): + (EWK2UnitTest::EWK2UnitTestBase::multiDown): + (EWK2UnitTest::EWK2UnitTestBase::multiUp): + (EWK2UnitTest::EWK2UnitTestBase::multiMove): + * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h: + (EWK2UnitTestBase): + * UIProcess/API/efl/tests/test_ewk2_view.cpp: + (TEST_F): + +2012-09-27 Jinwoo Song <jinwoo7.song@samsung.com> + + [EFL][WK2] Add callback functions for WKPageFindClient + https://bugs.webkit.org/show_bug.cgi?id=97431 + + Reviewed by Laszlo Gombos. + + Add didFailToFindString() and didCountStringMatches() for WKPageFindClient's callback functions. + The unit test for didFindString() and didFailToFindString() have beend added. The unit test for + didCountStringMatches() needs a API which wraps the WKPageCountStringMatches but it is not exists yet. + Additionaly, I changed the 'unsinged int' to 'unsigned' in the parameter type and removed unnecessary + type conversion. + + * UIProcess/API/efl/ewk_view.cpp: + (ewk_view_text_find): + * UIProcess/API/efl/ewk_view.h: + * UIProcess/API/efl/ewk_view_find_client.cpp: + (didFindString): + (didFailToFindString): + (didCountStringMatches): + (ewk_view_find_client_attach): + * UIProcess/API/efl/tests/test_ewk2_view.cpp: + (onTextFound): + (TEST_F): + +2012-09-27 Allan Sandfeld Jensen <allan.jensen@digia.com> + + Unify event handling of middle mouse button. + https://bugs.webkit.org/show_bug.cgi?id=97690 + + Reviewed by Tony Chang. + + Remove Qt and GTK port specific handling of middle mouse button press. + + * WebProcess/WebPage/WebPage.cpp: + (WebKit::handleMouseEvent): + * WebProcess/WebPage/WebPage.h: + (WebPage): + * WebProcess/WebPage/gtk/WebPageGtk.cpp: + (WebKit): + * WebProcess/WebPage/qt/WebPageQt.cpp: + +2012-09-27 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> + + [WK2] Injected bundle API implementation should use toWTFString() + https://bugs.webkit.org/show_bug.cgi?id=97766 + + Reviewed by Kenneth Rohde Christiansen. + + Injected bundle API implementation should call toWTFString() rather than convert + WKStringRef and WKURLRef to their impls and then call string() method directly. + The rational for that are both safety (toWTFString checks the given pointer) and + code readability. + + * WebProcess/InjectedBundle/API/c/WKBundle.cpp: + (WKBundlePostMessage): + (WKBundlePostSynchronousMessage): + (WKBundleOverrideBoolPreferenceForTestRunner): + (WKBundleAddOriginAccessWhitelistEntry): + (WKBundleRemoveOriginAccessWhitelistEntry): + (WKBundleClearApplicationCacheForOrigin): + (WKBundleGetAppCacheUsageForOrigin): + (WKBundleSetApplicationCacheOriginQuota): + (WKBundleResetApplicationCacheOriginQuota): + (WKBundlePageNumberForElementById): + (WKBundleSetUserStyleSheetLocation): + (WKBundleSetWebNotificationPermission): + * WebProcess/InjectedBundle/API/c/WKBundleFrame.cpp: + (WKBundleFramePauseAnimationOnElementWithId): + (WKBundleFramePauseTransitionOnElementWithId): + (WKBundleFrameAllowsFollowingLink): + (WKBundleFrameCopySuggestedFilenameForResourceWithURL): + (WKBundleFrameCopyMIMETypeForResourceWithURL): + (WKBundleFrameSetTextDirection): + * WebProcess/InjectedBundle/API/c/WKBundleInspector.cpp: + (WKBundleInspectorEvaluateScriptForTest): + * WebProcess/InjectedBundle/API/c/WKBundleIntent.cpp: + (WKBundleIntentCreate): + * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp: + (WKBundlePageExecuteEditingCommand): + (WKBundlePageIsEditingCommandEnabled): + (WKBundlePageHasLocalDataForURL): + (WKBundlePageFindString): + (WKBundlePageSetComposition): + (WKBundlePageConfirmCompositionWithText): + (WKBundlePageCanShowMIMEType): + +2012-09-27 Mario Sanchez Prada <msanchez@igalia.com> + + [WK2] IconDatabase: Add a way to notify when icon data is available + https://bugs.webkit.org/show_bug.cgi?id=63945 + + Reviewed by Anders Carlsson. + + Provide new API to notify the API layer when icon data is + available, and use it from the implementation layer when needed, + that is, either when the data has been loaded from the network or + imported from disk. + + Added new callback to WKIconDatabaseClient API. + + * UIProcess/API/C/WKIconDatabase.h: Added new callback. + * UIProcess/WebIconDatabaseClient.cpp: + (WebKit::WebIconDatabaseClient::iconDataReadyForPageURL): + Implementation of the new callback at this level in the UI + process, by using its implementation in the API layer if present. + * UIProcess/WebIconDatabaseClient.h: + (WebIconDatabaseClient): Added new callback. + + Implemented WebFrameLoaderClient::dispatchDidReceiveIcon, so we + get notified in the UI process when loading a new icon. + + * UIProcess/WebIconDatabase.messages.in: Added new message to + notify the UI process: DidReceiveIconForPageURL. + * UIProcess/WebIconDatabase.cpp: + (WebKit::WebIconDatabase::notifyIconDataReadyForPageURL): New + private helper function to notify the API layer both that new icon + data is ready and that the icon has changed. + (WebKit::WebIconDatabase::didReceiveIconForPageURL): + Implementation of the new message added, by calling + notifyIconDataReadyForPageURL() to notify the API layer. + (WebKit::WebIconDatabase::didImportIconDataForPageURL): Call + notifyIconDataReadyForPageURL() from here as well. + * UIProcess/WebIconDatabase.h: Added new prototypes. + * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: + (WebKit::WebFrameLoaderClient::dispatchDidReceiveIcon): Send a + message to the UI process telling a new icon has been received. + +2012-09-26 Sam Weinig <sam@webkit.org> + + Fix XPCServices symlink to not be to an absolute path + in the build products directory. + + Reviewed by Dan Bernstein. + + * WebKit2.xcodeproj/project.pbxproj: + +2012-09-26 Anders Carlsson <andersca@apple.com> + + Stop using CFURLCreateDataAndPropertiesFromResource + https://bugs.webkit.org/show_bug.cgi?id=97728 + <rdar://problem/12379035> + + Reviewed by Tim Horton. + + Replace a call to CFURLCreateDataAndPropertiesFromResource with -[NSData initWithContentsOfURL:] + and add the necessary casts to make the compiler happy. + + * Shared/Plugins/Netscape/mac/NetscapePluginModuleMac.mm: + (WebKit::contentsOfPropertyListAtURL): + +2012-09-26 Alexey Proskuryakov <ap@apple.com> + + [WK2] Update WebPageProxy::reattachToWebProcess() for multi-web process mode + https://bugs.webkit.org/show_bug.cgi?id=97726 + + Reviewed by Anders Carlsson. + + * UIProcess/WebContext.cpp: + (WebKit::WebContext::ensureSharedWebProcess): createNewWebProcess() now takes care + of adding the new process to m_processes. + (WebKit::WebContext::createNewWebProcess): Every time we call this function, we need + to add the result to m_processes. Better do it internally to avoid mistakes. + (WebKit::WebContext::warmInitialProcess): Updated for the above. + (WebKit::WebContext::createWebPage): Ditto. + (WebKit::WebContext::relaunchProcessIfNecessary): This function makes no sense in + multi-web process mode. Assert that we didnt get here accidentally. + + * UIProcess/WebContext.h: (WebKit::WebContext::sendToAllProcessesRelaunchingThemIfNecessary): + Only call relaunchProcessIfNecessary in single process mode. The functionality that + needs this behavior will be greatly refactored for multi-web process. + + * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::reattachToWebProcess): + We already know that we need a new process, "relaunch if necessary" is not the + right logic. Also added a few more assertions checking that process state is + as expected. + + * UIProcess/WebResourceCacheManagerProxy.cpp: + (WebKit::WebResourceCacheManagerProxy::getCacheOrigins): Removed relaunchProcessIfNecessary(). + It will be called inside sendToAllProcessesRelaunchingThemIfNecessary(). + + * UIProcess/Plugins/WebPluginSiteDataManager.cpp: + (WebKit::WebPluginSiteDataManager::getSitesWithData): Ditto. + (WebKit::WebPluginSiteDataManager::clearSiteData): Ditto. + +2012-09-26 Carlos Garcia Campos <cgarcia@igalia.com> + + [GTK] Don't use the C API internally in WebKitJavascriptResult + https://bugs.webkit.org/show_bug.cgi?id=96780 + + Reviewed by Gustavo Noronha Silva. + + Using the C++ classes directly instead of the C API wrappers we + avoid a lot of toImpl/toAPI casts, string conversions and + allocations. The code is also a lot simpler and easier to read. + + * UIProcess/API/gtk/WebKitJavascriptResult.cpp: + (_WebKitJavascriptResult::_WebKitJavascriptResult): + (webkitJavascriptResultCreate): + * UIProcess/API/gtk/WebKitJavascriptResultPrivate.h: + * UIProcess/API/gtk/WebKitWebView.cpp: + (webkitWebViewRunJavaScriptCallback): + +2012-09-26 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> + + [WK2][WTR] Policy client: dumping from decidePolicyForResponse callback + https://bugs.webkit.org/show_bug.cgi?id=97034 + + Reviewed by Kenneth Rohde Christiansen. + + Added suggested filename getter to WKURLResponse interface and also added a property showing whether the response + is attachment. + + * Shared/API/c/WKURLResponse.cpp: + (WKURLResponseSuggestedFilename): + (WKURLResponseIsAttachment): + * Shared/API/c/WKURLResponse.h: + +2012-09-26 Martin Robinson <mrobinson@igalia.com> + + [GTK] Use XDamage to simplify RedirectedXCompositeWindow + https://bugs.webkit.org/show_bug.cgi?id=97267 + + Reviewed by Alejandro G. Castro. + + Use XDamage to queue redraws of the widget when redirecting accelerated compositing + to an offscreen window. This allows removing a finicky timer-based approach, improves + performance, and allows simplifying things greatly. + + * GNUmakefile.am: Add the XDamage CFLAGS and LIBS to the appropriate places. + * UIProcess/API/gtk/WebKitWebViewBase.cpp: + (_WebKitWebViewBasePrivate): Remove readyToRenderAcceleratedCompositingResults as + it's no longer necessary. + (webkit_web_view_base_init): Handle the situation where the RedirectedXCompositeWindow + is null. + (webkitWebViewRenderAcceleratedCompositingResults): Ditto. + (resizeWebKitWebViewBaseFromAllocation): Ditto. + (webkitWebViewBaseCreateWebPage): Ditto. + (redirectedWindowDamagedCallback): Added. + * UIProcess/WebPageProxy.h: Remove InvalidateWidget message. + * UIProcess/WebPageProxy.messages.in: Ditto. + * UIProcess/gtk/WebPageProxyGtk.cpp: Ditto. + * WebProcess/WebPage/WebPage.h: Ditto. + * WebProcess/WebPage/gtk/LayerTreeHostGtk.cpp: + (WebKit::LayerTreeHostGtk::compositeLayersToContext): No longer need to + trigger the invalidateWindow message. + * WebProcess/WebPage/gtk/WebPageGtk.cpp: Ditto. + +2012-09-25 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com> + + [DRT][WTR] Support overriding the 'WebKitDisplayImagesKey' preference + https://bugs.webkit.org/show_bug.cgi?id=96883 + + Reviewed by Kenneth Rohde Christiansen. + + * WebProcess/InjectedBundle/InjectedBundle.cpp: + (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner): Add + support for changing + WebPreferencesKey::loadsImagesAutomaticallyKey(). + +2012-09-25 Dan Bernstein <mitz@apple.com> + + Try to fix non-Mac builds. + + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::updatePreferences): + +2012-09-25 Dan Bernstein <mitz@apple.com> + + WebKit2 part of <rdar://problem/11455228> [mac] Stop using screen fonts + https://bugs.webkit.org/show_bug.cgi?id=97620 + + Reviewed by John Sullivan. + + * Shared/WebPreferencesStore.h: + (WebKit): Changed the default value of the screenFontSubstitutionEnabled preference to false. + * Shared/WebProcessCreationParameters.cpp: + (WebKit::WebProcessCreationParameters::WebProcessCreationParameters): Added an initializer for + the new shouldForceScreenFontSubstitution data member. + (WebKit::WebProcessCreationParameters::encode): Added encoding of shouldForceScreenFontSubstitution. + (WebKit::WebProcessCreationParameters::decode): Added decoding of shouldForceScreenFontSubstitution. + * Shared/WebProcessCreationParameters.h: + (WebProcessCreationParameters): Added shouldForceScreenFontSubstitution boolean data member. + * UIProcess/mac/WebContextMac.mm: + (WebKit::WebContext::platformInitializeWebProcess): Added code to set shouldForceScreenFontSubstitution + in the process creation parameters to the value of the NSFontDefaultScreenFontSubstitutionEnabled user + defaults key. + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::updatePreferences): Changed to enable screen font substitution also if + shouldForceScreenFontSubstitution() is true. + * WebProcess/WebProcess.h: + (WebKit::WebProcess::shouldForceScreenFontSubstitution): Added this getter. + (WebProcess): Added m_shouldForceScreenFontSubstitution boolean data member. + * WebProcess/mac/WebProcessMac.mm: + (WebKit::WebProcess::platformInitializeWebProcess): Added initialization of + m_shouldForceScreenFontSubstitution from the creation parameters. + +2012-09-25 Alexey Proskuryakov <ap@apple.com> + + Get rid of WebContext::m_pendingMessagesToPostToInjectedBundle + https://bugs.webkit.org/show_bug.cgi?id=94368 + + Reviewed by Anders Carlsson. + + It doesn't appear to be of any use. + + * UIProcess/WebContext.cpp: + (WebKit::WebContext::createNewWebProcess): + (WebKit::WebContext::postMessageToInjectedBundle): + * UIProcess/WebContext.h: + +2012-09-24 Simon Fraser <simon.fraser@apple.com> + + <rdar://problem/12351906> Have DumpRenderTree and WebKitTestRunner crash logs show which test crashed + + Reviewed by Mark Rowe. + + Use a new WebKitSytemInterface function to add data to crash logs about which + test was running when the crash happened. + + * WebProcess/WebCoreSupport/mac/WebSystemInterface.mm: + (InitWebCoreSystemInterface): Hook up the function pointer for [wk|WK]SetCrashReportApplicationSpecificInformation. + +2012-09-25 Beth Dakin <bdakin@apple.com> + + Build fix. I removed this function as a part of + https://bugs.webkit.org/show_bug.cgi?id=95397 but it is + still needed for nightlies and open source builds. + + * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp: + (WKBundlePageSetPaintedObjectsCounterThreshold): + * WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h: + +2012-09-25 Beth Dakin <bdakin@apple.com> + + https://bugs.webkit.org/show_bug.cgi?id=95397 + Need to merge didFirstVisuallyNonEmptyLayout and + didNewFirstVisuallyNonEmptyLayout + -and corresponding- + <rdar://problem/10791680> + + Reviewed by Sam Weinig. + + The new API has two parts. First, the client has to opt into which + layout milestones they are interested in hearing about using + WKPageListenForLayoutMilestones or + WKBundlePageListenForLayoutMilestones(). Then, WebKit will call + the didLayout(WKLayoutMilestones) callback on the appropriate + clients when the specified layout milestones have fired. didLayout + takes the WKLayoutMilestones bit mask, which will indicate which + milestones have fired since it is possible for two to fire at the + same time. + + Define WKLayoutMilestoneOptions. + * Shared/API/c/WKPageLoadTypes.h: + + Define conversions between WKLayoutMilestoneOptions and + WebCore::LayoutMilestoneOptions + * Shared/API/c/WKSharedAPICast.h: + (WebKit::toWKLayoutMilestoneOptions): + (WebKit): + (WebKit::toLayoutMilestoneOptions): + + New API. + * UIProcess/API/C/WKPage.cpp: + (WKPageListenForLayoutMilestones): + * UIProcess/API/C/WKPage.h: + * UIProcess/WebLoaderClient.cpp: + (WebKit::WebLoaderClient::didLayout): + (WebKit): + * UIProcess/WebLoaderClient.h: + (WebLoaderClient): + + didFirstLayoutForFrame, didFirstVisuallyNonEmptyLayoutForFrame, + and didNewFirstVisuallyNonEmptyLayout are now implemented with + didLayout under the hood. So if those old callbacks have been + defined, be sure to add the appropriate layout milestones here for + backwards-compatibility. + * UIProcess/WebPageProxy.cpp: + (WebKit::WebPageProxy::initializeLoaderClient): + + New API. + (WebKit::WebPageProxy::listenForLayoutMilestones): + (WebKit): + (WebKit::WebPageProxy::didLayout): + * UIProcess/WebPageProxy.h: + (WebPageProxy): + * UIProcess/WebPageProxy.messages.in: + + New API. And remove the now-unnecessary + WKBundlePageSetPaintedObjectsCounterThreshold. + * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp: + (WKBundlePageListenForLayoutMilestones): + * WebProcess/InjectedBundle/API/c/WKBundlePage.h: + * WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h: + + New API. + * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp: + (WebKit::InjectedBundlePageLoaderClient::didNewFirstVisuallyNonEmptyLayout): + (WebKit): + (WebKit::InjectedBundlePageLoaderClient::didLayout): + * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h: + (InjectedBundlePageLoaderClient): + + Remove dispatchDidFirstLayout, + dispatchDidFirstVisuallyNonEmptyLayout, and + dispatchDidNewFirstVisuallyNonEmptyLayout. They are now replaced + by dispatchDidLayout(LayoutMilestoneOptions) + * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: + (WebKit::WebFrameLoaderClient::dispatchDidLayout): + * WebProcess/WebCoreSupport/WebFrameLoaderClient.h: + (WebFrameLoaderClient): + + didFirstLayoutForFrame, didFirstVisuallyNonEmptyLayoutForFrame, + and didNewFirstVisuallyNonEmptyLayout are now implemented with + didLayout under the hood. So if those old callbacks have been + defined, be sure to add the appropriate layout milestones here for + backwards-compatibility. + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::initializeInjectedBundleLoaderClient): + (WebKit): + + Call into WebCore to set the layout milestones. + (WebKit::WebPage::listenForLayoutMilestones): + * WebProcess/WebPage/WebPage.h: + (WebPage): + * WebProcess/WebPage/WebPage.messages.in: + + Account for the new member of PageLoadClient. + * WebProcess/qt/QtBuiltinBundlePage.cpp: + (WebKit::QtBuiltinBundlePage::QtBuiltinBundlePage): + +2012-09-25 Carlos Garcia Campos <cgarcia@igalia.com> + + [GTK][EFL] Disk cache is never dumped to disk in WebKit2 + https://bugs.webkit.org/show_bug.cgi?id=97583 + + Reviewed by Martin Robinson. + + The problem is that WebProcess::platformTerminate(), where the + cache is currently dumped, is not called when the web process + finishes because the UI process closes the connection. The cache + is created and loaded in the main() so it can also be flushed and + dumped there, so that we also make sure it's always called when + the process finishes normally when the main loop quits. + + * WebProcess/efl/WebProcessMainEfl.cpp: + (WebKit::WebProcessMainEfl): Flush and dump the disk cache when + the main loop returns. + * WebProcess/gtk/WebProcessMainGtk.cpp: + (WebKit::WebProcessMainGtk): Ditto. + * WebProcess/soup/WebProcessSoup.cpp: + (WebKit::WebProcess::platformTerminate): Do not flush and dump + the disk cache. + +2012-09-25 Benjamin Poulain <bpoulain@apple.com> + + Add missing support for Geolocation tests on WebKit2 + https://bugs.webkit.org/show_bug.cgi?id=97518 + + Reviewed by Sam Weinig. + + The existing API for reporting error does not support passing and error message. + + The interface UIProcess<->WebProcess is changed to take an error message, the + existing API now pass a null String, and the new function + WKGeolocationManagerProviderDidFailToDeterminePositionWithErrorMessage() provide + the extended support with error message. + + * UIProcess/API/C/WKGeolocationManager.cpp: + (WKGeolocationManagerProviderDidFailToDeterminePositionWithErrorMessage): + * UIProcess/API/C/WKGeolocationManager.h: + * UIProcess/WebGeolocationManagerProxy.cpp: + (WebKit::WebGeolocationManagerProxy::providerDidFailToDeterminePosition): + * UIProcess/WebGeolocationManagerProxy.h: + (WebGeolocationManagerProxy): + * WebProcess/Geolocation/WebGeolocationManager.cpp: + (WebKit::WebGeolocationManager::didFailToDeterminePosition): + * WebProcess/Geolocation/WebGeolocationManager.h: + (WebGeolocationManager): + * WebProcess/Geolocation/WebGeolocationManager.messages.in: + +2012-09-25 Akash Vaswani <avaswani@apple.com> + + Crash after clicking in plugin at kauaiexplorer.com + <rdar://problem/11525987/> and https://bugs.webkit.org/show_bug.cgi?id=90925 + + Reviewed by Sam Weinig. + + Bug: Clicking the plugin to navigate away from the page caused the browser to crash. + This is because it is possible for a beforeunload handler to destroy the plugin + while it is still needed. In this case the handler set visibility to "none" and + then accessed a property on the plugin script object. This forced a layout + that destroyed the plugin. + Fix: Protecting PluginView objects until they are no longer required. + This was done by adding a RefPtr at the beginning of performURLRequest() + + * WebProcess/Plugins/PluginView.cpp: + (WebKit::PluginView::performURLRequest): + +2012-09-25 Carlos Garcia Campos <cgarcia@igalia.com> + + [GTK] Don't kill automatically the web process when the ui process finishes + https://bugs.webkit.org/show_bug.cgi?id=97580 + + Reviewed by Martin Robinson. + + We use prctl(PR_SET_PDEATHSIG, SIGKILL); in linux to make sure the + web process is killed when the UI process finishes. This is not + needed any more since now the web process stops the main loop when + the connection with the UI process is closed in + WebProcess::didClose(). This approach is better because it works + for any platform and makes the web process finish normally from + main(). + + * UIProcess/Launcher/gtk/ProcessLauncherGtk.cpp: + (WebKit::childSetupFunction): Don't call prctl(PR_SET_PDEATHSIG, + SIGKILL) in the child process. + +2012-09-25 Benjamin Poulain <benjamin@webkit.org> + + Build fix, GeolocationClientMock should not be included by WebProcess InjectedBundle + + Unreviewed. + + The patch r129252 removes the dependencies on GeolocationClientMock, r129444 removes + GeolocationClientMock from the Mac port. The #include breaks new Mac build. + + * WebProcess/InjectedBundle/InjectedBundle.cpp: + +2012-09-25 Jocelyn Turcotte <jocelyn.turcotte@digia.com> + + [Qt] PageViewportController: Consolidate positionRangeForViewportAtScale and boundPosition + https://bugs.webkit.org/show_bug.cgi?id=97222 + + Reviewed by Kenneth Rohde Christiansen. + + Those methods are used together everywhere, merge them into a single + clampViewportToContents method. + + * UIProcess/PageViewportController.cpp: + (WebKit::PageViewportController::innerBoundedViewportScale): + (WebKit::PageViewportController::outerBoundedViewportScale): + (WebKit::PageViewportController::clampViewportToContents): + (WebKit): + (WebKit::PageViewportController::pageDidRequestScroll): + (WebKit::PageViewportController::syncVisibleContents): + * UIProcess/PageViewportController.h: + (PageViewportController): + (WebKit): + * UIProcess/qt/PageViewportControllerClientQt.cpp: + (WebKit::PageViewportControllerClientQt::focusEditableArea): + (WebKit::PageViewportControllerClientQt::zoomToAreaGestureEnded): + (WebKit::PageViewportControllerClientQt::nearestValidVisibleContentsRect): + +2012-09-25 Jocelyn Turcotte <jocelyn.turcotte@digia.com> + + [Qt] Unify the PageViewportController<->Client interface regarding positions + https://bugs.webkit.org/show_bug.cgi?id=97220 + + Reviewed by Kenneth Rohde Christiansen. + + - Make sure that css units are used for all position arguments + - Make sure that all positions represent the viewport relatively to the contents + rather than the other way around + - Delay clamping the viewport to the contents size in the controller rather than in the client + + * UIProcess/API/qt/qquickwebview.cpp: + (QQuickWebViewFlickablePrivate::updateViewportSize): + * UIProcess/PageViewportController.cpp: + (WebKit::PageViewportController::pageDidRequestScroll): + (WebKit::PageViewportController::didChangeViewportSize): + (WebKit::PageViewportController::didChangeContentsVisibility): + (WebKit::PageViewportController::syncVisibleContents): + (WebKit::PageViewportController::positionRangeForViewportAtScale): + * UIProcess/PageViewportController.h: + (PageViewportController): + * UIProcess/PageViewportControllerClient.h: + (PageViewportControllerClient): + * UIProcess/qt/PageViewportControllerClientQt.cpp: + (WebKit::PageViewportControllerClientQt::animateContentRectVisible): + (WebKit::PageViewportControllerClientQt::focusEditableArea): + (WebKit::PageViewportControllerClientQt::zoomToAreaGestureEnded): + (WebKit::PageViewportControllerClientQt::nearestValidVisibleContentsRect): + (WebKit::PageViewportControllerClientQt::setViewportPosition): + (WebKit::PageViewportControllerClientQt::updateViewportController): + * UIProcess/qt/PageViewportControllerClientQt.h: + (PageViewportControllerClientQt): + +2012-09-25 Jocelyn Turcotte <jocelyn.turcotte@digia.com> + + [Qt] Make sure that desktop pages honour the devicePixelRatio + https://bugs.webkit.org/show_bug.cgi?id=97215 + + Reviewed by Kenneth Rohde Christiansen. + + The desktopWidth given to computeViewportAttributes is expected to be pixel-ratio adjusted already. + We need to make sure that the viewport size is divided by the pixel ratio to prevent + the equivalent of a 1.0 devicePixelRatio to be in effect once viewportSize.width() is larger + than layoutFallbackWidth. + + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::sendViewportAttributesChanged): + +2012-09-25 Simon Pena <spena@igalia.com> + + [GTK] Add Undo / Redo method to WebKit2 GTK+ API + https://bugs.webkit.org/show_bug.cgi?id=97553 + + Reviewed by Martin Robinson. + + Add the macros for Undo / Redo support, and include them + in the documentation. + + * UIProcess/API/gtk/WebKitEditingCommands.h: + * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: + +2012-09-25 Jocelyn Turcotte <jocelyn.turcotte@digia.com> + + [Qt] Abstract as much devicePixelRatio logic as possible behind PageViewportController + https://bugs.webkit.org/show_bug.cgi?id=97214 + + Reviewed by Kenneth Rohde Christiansen. + + Currently the client is required to multiply the scales it receives each bime by the + devicePixelRatio. This shouldn't be required since essentially, the only places that the + devicePixelRatio should be in use, is to adjust the layout size, multiply the base scale + and for scale constants. + + Other related changes: + - Make sure that the controller and it's client are only exchanging effective scales + (cssScale * devicePixelRatio) + - Remove members duplicating m_rawAttributes values + - Use a separate member for the minimum scale to fit the page, separate from the viewport arguments + - Make sure that the minimum scale to fit is adjusted if the contents size isn't + updated after the viewport attributes changed + - Make the scale conversion functions private to discourage this logic from spreading in the client + + * UIProcess/PageViewportController.cpp: + (WebKit::PageViewportController::PageViewportController): + (WebKit::PageViewportController::innerBoundedViewportScale): + (WebKit::PageViewportController::outerBoundedViewportScale): + (WebKit): + (WebKit::PageViewportController::devicePixelRatio): + (WebKit::PageViewportController::didChangeContentsSize): + (WebKit::PageViewportController::didChangeViewportAttributes): + (WebKit::PageViewportController::resumeContent): + (WebKit::PageViewportController::updateMinimumScaleToFit): + * UIProcess/PageViewportController.h: + (PageViewportController): + (WebKit::PageViewportController::minimumContentsScale): + (WebKit::PageViewportController::maximumContentsScale): + (WebKit::PageViewportController::currentContentsScale): + (WebKit::PageViewportController::fromViewportScale): + (WebKit::PageViewportController::toViewportScale): + * UIProcess/qt/PageViewportControllerClientQt.cpp: + (WebKit::PageViewportControllerClientQt::focusEditableArea): + (WebKit::PageViewportControllerClientQt::zoomToAreaGestureEnded): + (WebKit::PageViewportControllerClientQt::nearestValidVisibleContentsRect): + (WebKit::PageViewportControllerClientQt::setContentsRectToNearestValidBounds): + (WebKit::PageViewportControllerClientQt::pinchGestureRequestUpdate): + +2012-09-25 Simon Pena <spena@igalia.com> + + [GTK] Fix typo in accessing union field in a GdkEvent in a WebKit2 unit test + https://bugs.webkit.org/show_bug.cgi?id=97564 + + Reviewed by Martin Robinson. + + In the WebViewTest::moveMouseTo method, the wrong field in + a union was being accessed in a GdkEvent: instead of the button + field, we were supposed to act on the motion one. This patch + fixes the typo. + + * UIProcess/API/gtk/tests/WebViewTest.cpp: + (WebViewTest::mouseMoveTo): + +2012-09-25 Carlos Garcia Campos <cgarcia@igalia.com> + + [GTK] Don't use the C API internally in WebKitFindController + https://bugs.webkit.org/show_bug.cgi?id=96775 + + Reviewed by Gustavo Noronha Silva. + + Using the C++ classes directly instead of the C API wrappers we + avoid a lot of toImpl/toAPI casts, string conversions and + allocations. The code is also a lot simpler and easier to read. + + * UIProcess/API/gtk/WebKitFindController.cpp: + (getPage): + (webkitFindControllerConstructed): + (webKitFindControllerPerform): + (webkit_find_controller_search_next): + (webkit_find_controller_search_previous): + (webkit_find_controller_search_finish): + +2012-09-25 Jocelyn Turcotte <jocelyn.turcotte@digia.com> + + [Qt] Apply the devicePixelRatio as soon as possible + https://bugs.webkit.org/show_bug.cgi?id=97211 + + Reviewed by Kenneth Rohde Christiansen. + + Having to wait for the contents size to apply the devicePixelRatio can + be problematic since the devicePixelRatio affects the layout width, which + then affects the contents size. + + Fix the initial issue that this was working around by preventing the + early return if useFixedLayout() is true. + + * UIProcess/API/qt/qquickwebview.cpp: + (QQuickWebViewPrivate::QQuickWebViewPrivate): + (QQuickWebViewFlickablePrivate::didChangeContentsSize): + (QQuickWebViewExperimental::devicePixelRatio): + (QQuickWebViewExperimental::setDevicePixelRatio): + * UIProcess/API/qt/qquickwebview_p_p.h: + (QQuickWebViewPrivate::didChangeContentsSize): + (QQuickWebViewPrivate): + * UIProcess/DrawingAreaProxyImpl.cpp: + (WebKit::DrawingAreaProxyImpl::sendUpdateBackingStoreState): + +2012-09-25 Jocelyn Turcotte <jocelyn.turcotte@digia.com> + + [Qt] Don't render at scale 1.0 when doing a pinch-zoom out + https://bugs.webkit.org/show_bug.cgi?id=97212 + + Reviewed by Kenneth Rohde Christiansen. + + When the user starts pinching this creates extra rendering that is bound to the + page size and can be considerably big, reducing performance and peaking the tile + memory usage. + + Fixing this might require a different approach that we could experiment with. + + * UIProcess/qt/PageViewportControllerClientQt.cpp: + (WebKit::PageViewportControllerClientQt::animateContentRectVisible): + (WebKit::PageViewportControllerClientQt::pinchGestureRequestUpdate): + +2012-09-25 Michael Brüning <michael.bruning@digia.com> + + [Qt][WK2] Focus out is not handled properly + https://bugs.webkit.org/show_bug.cgi?id=96997 + + Reviewed by Simon Hausmann. + + Adds a handler for QQuickWebView::itemChange event that is sent to + QQuickItems when their focus has been changed to replace focusOutEvent. + + This fixes the problem because the focus has been updated when + itemChange is called, while it is not yet update when focusOutEvent + is called. + + * UIProcess/API/qt/qquickwebview.cpp: Removed focusOutEvent. + (QQuickWebView::itemChange): Added in place of focusOutEvent. + * UIProcess/API/qt/qquickwebview_p.h: + * UIProcess/qt/QtWebPageEventHandler.cpp: + (WebKit::QtWebPageEventHandler::handleFocusLost): Renamed from handleFocusOutEvent, parameter removed. + * UIProcess/qt/QtWebPageEventHandler.h: + (QtWebPageEventHandler): + +2012-09-25 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> + + [WK2] Supported media MIME types are not included to the list of shown MIME types. + https://bugs.webkit.org/show_bug.cgi?id=97552 + + Reviewed by Kenneth Rohde Christiansen. + + Added supported media MIME types to the list of shown MIME types in order to fix + media tests regression after r129479. + + * UIProcess/WebPageProxy.cpp: + (WebKit::WebPageProxy::canShowMIMEType): + * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp: + (WKBundlePageCanShowMIMEType): + +2012-09-25 KwangYong Choi <ky0.choi@samsung.com> + + [EFL][WK2] Added hideColorPicker test case + https://bugs.webkit.org/show_bug.cgi?id=97522 + + Reviewed by Kenneth Rohde Christiansen. + + Added a test case for removing input element during color picker is shown. + + * UIProcess/API/efl/tests/test_ewk2_view.cpp: + (setColorPickerColor): + (showColorPicker): + (hideColorPicker): + (TEST_F): + +2012-09-25 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> + + [WK2][WTR] WTR bundle client loads binary data as text + https://bugs.webkit.org/show_bug.cgi?id=97532 + + Reviewed by Kenneth Rohde Christiansen. + + Added WKBundlePageCanShowMIMEType() function to WKBundlePage private API. + This function is put to WKBundlePage to keep consistency with WebKit::WebPageProxy::canShowMIMEType(). + Actually it does not need anything from page. + + * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp: + (WKBundlePageCanShowMIMEType): + * WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h: + +2012-09-25 Carlos Garcia Campos <cgarcia@igalia.com> + + [GTK] Don't use the C API internally in WebKitWebView + https://bugs.webkit.org/show_bug.cgi?id=96767 + + Reviewed by Gustavo Noronha Silva. + + Using the C++ classes directly instead of the C API wrappers we + avoid a lot of toImpl/toAPI casts, string conversions and + allocations. The code is also a lot simpler and easier to read. + + * UIProcess/API/gtk/WebKitContextMenuClient.cpp: + (getContextMenuFromProposedMenu): + * UIProcess/API/gtk/WebKitResourceLoadClient.cpp: + (didInitiateLoadForResource): + * UIProcess/API/gtk/WebKitUIClient.cpp: + (createNewPage): + (runJavaScriptPrompt): + (mouseDidMoveOverElement): + (printFrame): + * UIProcess/API/gtk/WebKitURIRequest.cpp: + (webkitURIRequestCreateForResourceRequest): + (webkitURIRequestGetResourceRequest): + * UIProcess/API/gtk/WebKitURIRequestPrivate.h: + * UIProcess/API/gtk/WebKitWebView.cpp: + (allowModalDialogsChanged): + (zoomTextOnlyChanged): + (webkitWebViewSetSettings): + (webkitWebViewConstructed): + (webkitWebViewUpdateURI): + (webkitWebViewCreateNewPage): + (webkitWebViewRunJavaScriptPrompt): + (webkitWebViewMouseTargetChanged): + (webkitWebViewPrintFrame): + (webkitWebViewResourceLoadStarted): + (webkitWebViewPopulateContextMenu): + (webkit_web_view_load_uri): + (webkit_web_view_load_html): + (webkit_web_view_load_alternate_html): + (webkit_web_view_load_plain_text): + (webkit_web_view_load_request): + (webkit_web_view_reload): + (webkit_web_view_reload_bypass_cache): + (webkit_web_view_stop_loading): + (webkit_web_view_go_back): + (webkit_web_view_can_go_back): + (webkit_web_view_go_forward): + (webkit_web_view_can_go_forward): + (webkit_web_view_get_custom_charset): + (webkit_web_view_set_custom_charset): + (webkit_web_view_go_to_back_forward_list_item): + (webkit_web_view_set_settings): + (webkit_web_view_set_zoom_level): + (webkit_web_view_get_zoom_level): + (webkit_web_view_can_execute_editing_command): + (webkit_web_view_execute_editing_command): + (webkit_web_view_run_javascript): + (webkit_web_view_get_inspector): + (webkit_web_view_can_show_mime_type): + (ViewSaveAsyncData): + (getContentsAsMHTMLDataCallback): + (webkit_web_view_save): + (webkit_web_view_save_finish): + (webkit_web_view_save_to_file): + * UIProcess/API/gtk/WebKitWebViewBase.cpp: + (webkitWebViewBaseCreate): + (webkitWebViewBaseCreateWebPage): + * UIProcess/API/gtk/WebKitWebViewBasePrivate.h: + * UIProcess/API/gtk/WebKitWebViewPrivate.h: + +2012-09-24 Bo Liu <boliu@chromium.org> + + Reland "Add in-place reload behavior to ImagesEnabled setting" with optimizations + https://bugs.webkit.org/show_bug.cgi?id=97055 + + Reviewed by Adam Barth. + + Relanding 128780, 128676, 128645. Was reverted in 128914 due to + performance regression in Chromium. + + New changes in addition to previously reverted patches: + + Refactored CachedResource::requestResource, loadResource, and + revalidateResource. Moved CachedResource::load method to end of + requestResource so there is one place where load is called for all + resources. + + Added a enum parameter for requestResource and + determineRevalidationPolicy so that FrameLoaderClient::allowImage call + do not need to be called multiple times. + + Removed CachedImage::load call in requestImage so it is not called + twice. + + Removed unnecessary Frame.h includes in CachedResource and + CachedImage. + + Removed dead load() method declaration in CachedImage. + + Updated text expectation for two image-permissions tests to reflect + the removed calls to allowImage. + + * win/WebKit2.def: + +2012-09-24 Sam Weinig <sam@webkit.org> + + WKProcessGroup can't load injected bundle with file URL + <rdar://problem/12322774> + https://bugs.webkit.org/show_bug.cgi?id=97520 + + Reviewed by Anders Carlsson. + + * UIProcess/API/mac/WKProcessGroup.mm: + (-[WKProcessGroup initWithInjectedBundleURL:]): + Fix typo. We need to pass the string as path, not as a URL. + +2012-09-24 Sam Weinig <sam@webkit.org> + + Use NSUserDefaults rather than an environment variable to control whether to use an XPC Service for the WebProcess + https://bugs.webkit.org/show_bug.cgi?id=97514 + + Reviewed by Anders Carlsson. + + * GNUmakefile.list.am: + * PlatformEfl.cmake: + * Target.pri: + Add new files. + + * UIProcess/Launcher/ProcessLauncher.h: + * UIProcess/WebProcessProxy.cpp: + (WebKit::WebProcessProxy::connect): + Move platform specific launch options to a new function, platformConnect. + + * UIProcess/WebProcessProxy.h: + * UIProcess/efl/WebProcessProxyEfl.cpp: Added. + Move Efl specific launch options here. + + (WebKit::WebProcessProxy::platformConnect): + * UIProcess/gtk/WebProcessProxyGtk.cpp: Added. + Add stub. + + (WebKit::WebProcessProxy::platformConnect): + * UIProcess/mac/WebProcessProxyMac.mm: + (WebKit::WebProcessProxy::platformConnect): + Move Mac specific launch option setting here, and switch from + using an environment variable to NSUserDefaults. + + * UIProcess/qt/WebProcessProxyQt.cpp: Added. + (WebKit::WebProcessProxy::platformConnect): + Add stub. + + * UIProcess/win/WebProcessProxyWin.cpp: + (WebKit::WebProcessProxy::platformConnect): + Add stub. + +2012-09-24 Laszlo Gombos <l.gombos@samsung.com> + + [GTK][EFL] Remove cairo prefix from include statements + https://bugs.webkit.org/show_bug.cgi?id=97509 + + Reviewed by Gyuyoung Kim. + + Make the build system consistent by always assuming that directory + that includes the cairo headers is included in the include path. + + * UIProcess/cairo/BackingStoreCairo.cpp: + * WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp: + +2012-09-24 Sheriff Bot <webkit.review.bot@gmail.com> + + Unreviewed, rolling out r129388. + http://trac.webkit.org/changeset/129388 + https://bugs.webkit.org/show_bug.cgi?id=97477 + + Caused an assertion in a WebKit2 unit test (Requested by + abarth on #webkit). + + * win/WebKit2.def: + +2012-09-24 Simon Pena <spena@igalia.com> + + [GTK] Add Select All method to WebKit2 GTK+ API + https://bugs.webkit.org/show_bug.cgi?id=97460 + + Reviewed by Martin Robinson. + + Following the same approach used when added Cut, Copy and Paste, + the Select All method is added to the WebKit2 GTK+ API. + + This introduces a new macro in the WebKitEditingCommands, + updates the documentation, and includes a new unit test. + + * UIProcess/API/gtk/WebKitEditingCommands.h: Add a new macro for + the Select All command. + * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Include the Select All + command in the documentation. + * UIProcess/API/gtk/tests/TestWebViewEditor.cpp: Cover the new command + with a unit test. + (testWebViewEditorSelectAll): + (beforeAll): + +2012-09-24 Bo Liu <boliu@chromium.org> + + Reland "Add in-place reload behavior to ImagesEnabled setting" with optimizations + https://bugs.webkit.org/show_bug.cgi?id=97055 + + Reviewed by Adam Barth. + + Relanding 128780, 128676, 128645. Was reverted in 128914 due to + performance regression in Chromium. + + New changes in addition to previously reverted patches: + + Refactored CachedResource::requestResource, loadResource, and + revalidateResource. Moved CachedResource::load method to end of + requestResource so there is one place where load is called for all + resources. + + Added a enum parameter for requestResource and + determineRevalidationPolicy so that FrameLoaderClient::allowImage call + do not need to be called multiple times. + + Removed CachedImage::load call in requestImage so it is not called + twice. + + Removed unnecessary Frame.h includes in CachedResource and + CachedImage. + + Removed dead load() method declaration in CachedImage. + + Updated text expectation for two image-permissions tests to reflect + the removed calls to allowImage. + + * win/WebKit2.def: + +2012-09-24 Joone Hur <joone.hur@intel.com>, Gustavo Noronha Silva <gustavo.noronha@collabora.com> + + [GTK] Implement GraphicsLayer using Clutter + https://bugs.webkit.org/show_bug.cgi?id=73767 + + Reviewed by Martin Robinson. + + Fixed link errors by adding Clutter library and header to WebKit2 build. + + * GNUmakefile.am: + +2012-09-24 Carlos Garcia Campos <cgarcia@igalia.com> + + [GTK] WebKitWebView:is-loading is not updated when the is loaded is started by link clicked navigation action + https://bugs.webkit.org/show_bug.cgi?id=97458 + + Reviewed by Xan Lopez. + + WebKitWebView:is-loading is set to TRUE when the load is started + by using the API. We want to make sure that both URI and + is-loading are updated before load-started is emitted, so we can + update both right before emitting load-started. + + * UIProcess/API/gtk/WebKitWebView.cpp: + (webkitWebViewEmitLoadChanged): Update both uri and is-loading + properties before emitting load-changed signal with + WEBKIT_LOAD_STARTED. + (webkit_web_view_load_uri): Don't call + webkitWebViewSetIsLoading(). + (webkit_web_view_load_html): Ditto. + (webkit_web_view_load_alternate_html): Ditto. + (webkit_web_view_load_plain_text): Ditto. + (webkit_web_view_load_request): Ditto. + (webkit_web_view_reload): Ditto. + (webkit_web_view_reload_bypass_cache): Ditto. + (webkit_web_view_go_back): Ditto. + (webkit_web_view_go_forward): Ditto. + (webkit_web_view_go_to_back_forward_list_item): Ditto. + +2012-09-24 Byungwoo Lee <bw80.lee@samsung.com> + + [EFL][WK2] Change the install path for libewk2UnitTestInjectedBundleSample.so. + https://bugs.webkit.org/show_bug.cgi?id=97302 + + Reviewed by Gyuyoung Kim. + + libewk2UnitTestInjectedBundleSample.so file is created under the + Source directory. + Change install directory for the library to under the build directory. + + * PlatformEfl.cmake: + * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestEnvironment.cpp: + (EWK2UnitTest::EWK2UnitTestEnvironment::injectedBundleSample): + +2012-09-24 Vivek Galatage <vivekgalatage@gmail.com> + + Web Inspector: implement testing harness for pure protocol tests. + https://bugs.webkit.org/show_bug.cgi?id=90675 + + Reviewed by Yury Semikhatsky. + + Adding the export symbol definitions required on Apple Windows and WinCairo + ports to support Inspector Protocol testing harness. + + * win/WebKit2.def: + * win/WebKit2CFLite.def: + +2012-09-24 KwangYong Choi <ky0.choi@samsung.com> + + [EFL][WK2] Invalid featuring of INPUT_TYPE_COLOR in test_ewk2_view. + https://bugs.webkit.org/show_bug.cgi?id=97430 + + Reviewed by Kenneth Rohde Christiansen. + + The tests of ewk_view_context_get and ewk_view_feed_touch_event are not related to + INPUT_TYPE_COLOR. These tests should be moved to outside of INPUT_TYPE_COLOR block. + + * UIProcess/API/efl/tests/test_ewk2_view.cpp: + (TEST_F): + +2012-09-23 Seokju Kwon <seokju.kwon@samsung.com> + + [EFL][WK2] Add setting to toggle developer extensions + https://bugs.webkit.org/show_bug.cgi?id=96974 + + Reviewed by Kenneth Rohde Christiansen. + + This is required to allow the user to inspect pages. (Web inspector) + + * UIProcess/API/efl/ewk_settings.cpp: + (ewk_settings_developer_extras_enabled_set): + (ewk_settings_developer_extras_enabled_get): + * UIProcess/API/efl/ewk_settings.h: + * UIProcess/API/efl/tests/test_ewk2_settings.cpp: + (TEST_F): + +2012-09-23 Byungwoo Lee <bw80.lee@gmail.com> + + Fix build warnings : -Wunused-parameter, -Wparentheses, -Wuninitialized. + https://bugs.webkit.org/show_bug.cgi?id=97306 + + Reviewed by Benjamin Poulain. + + Fix build warning about -Wunused-parameter on Connection.cpp, + WKEinaSharedString.cpp, ewk_view_loader_client.cpp, WebPage.cpp by + using ASSERT_UNUSED() macro or removing parameter name. + Fix build warning about -Wuninitialized on WebEventFactory.cpp by + continueing the loop at the default switch case not to use the + uninitialized variable. + + * Platform/CoreIPC/Connection.cpp: + (CoreIPC::Connection::waitForSyncReply): + * Shared/efl/WebEventFactory.cpp: + (WebKit::WebEventFactory::createWebTouchEvent): + * UIProcess/API/cpp/efl/WKEinaSharedString.cpp: + (WKEinaSharedString::WKEinaSharedString): + * UIProcess/API/efl/ewk_view_loader_client.cpp: + (didSameDocumentNavigationForFrame): + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::SandboxExtensionTracker::beginLoad): + +2012-09-22 Sam Weinig <sam@webkit.org> + + Install WebProcess XPC services into the right places + https://bugs.webkit.org/show_bug.cgi?id=97385 + + Reviewed by Anders Carlsson. + + * Configurations/WebProcessService.xcconfig: + Update INSTALL_PATH to go into WebKit2.framework/Versions/A/XPCServices. + + * Configurations/WebProcessServiceForWebKitDevelopment.xcconfig: + Since this config file is almost identical to WebProcessService.xcconfig, + just #include it and change the one thing that is different, the INFOPLIST_FILE + + * WebKit2.xcodeproj/project.pbxproj: + Follow XPC procedure and copy the services into the right place, WebKit2.framework/Versions/A/XPCServices + in all builds except production builds where it is not necessary. Also add a symlink like everyone else + does. + +2012-09-22 Sam Weinig <sam@webkit.org> + + Allow setting a custom path to where the plug-in sandbox profiles are being kept + https://bugs.webkit.org/show_bug.cgi?id=97399 + + Reviewed by Anders Carlsson. + + Add a new default to allow controlling where to look for plug-in sandbox profiles + called "PlugInSandboxProfileDirectoryPath". + + * PluginProcess/mac/PluginProcessMac.mm: + (WebKit::initializeSandbox): + Use the passed in sandboxProfileDirectoryPath instead of hard coding /usr/share/sandbox/. + + (WebKit::PluginProcess::platformInitialize): + * Shared/Plugins/PluginProcessCreationParameters.cpp: + (WebKit::PluginProcessCreationParameters::encode): + (WebKit::PluginProcessCreationParameters::decode): + * Shared/Plugins/PluginProcessCreationParameters.h: + (PluginProcessCreationParameters): + * UIProcess/Plugins/mac/PluginProcessProxyMac.mm: + (WebKit::PluginProcessProxy::platformInitializePluginProcess): + Grab the sandboxProfileDirectoryPath from standardUserDefaults and pass it to + the plug-in. + +2012-09-21 Sam Weinig <sam@webkit.org> + + Fix the Lion and Snow Leopard builds. + + * UIProcess/Launcher/mac/ProcessLauncherMac.mm: + (WebKit::connectToWebProcessServiceForWebKitDevelopment): + (WebKit::createWebProcessServiceForWebKitDevelopment): + (WebKit::createWebProcessService): + +2012-09-21 Sam Weinig <sam@webkit.org> + + WebProcess XPC services need have their environment set without disrupting all other XPC services + https://bugs.webkit.org/show_bug.cgi?id=95161 + + Reviewed by Anders Carlsson. + + Replace the WebKit2Service with two new XPC services, the WebProcessService, which is only used + when installed on the system, and the WebProcessServiceForWebKitDevelopment which is used at all + other times. We need both services because XPC can't in general be configured to have a custom + environment at runtime, and thus WebProcessServiceForWebKitDevelopment has the ability to re-exec + itself into a desired state. That capability is rather undesirable for installed usage, where we + don't want to allow arbitrary changes to the environment of the service, which would allow breaking + the App Sandbox. + + * Configurations/WebProcessService.xcconfig: Copied from Source/WebKit2/Configurations/WebKit2Service.xcconfig. + * Configurations/WebProcessServiceForWebKitDevelopment.xcconfig: Renamed from Source/WebKit2/Configurations/WebKit2Service.xcconfig. + Add new configuration files. + + * Platform/mac/WorkQueueMac.cpp: + (WorkQueue::registerMachPortEventHandler): + (WorkQueue::unregisterMachPortEventHandler): + Add helpful assertions. Without them, we confusingly crash a bit later in HashTable code. + + * UIProcess/Launcher/mac/ProcessLauncherMac.mm: + (WebKit::addDYLDEnvironmentAdditions): + Factor out environment additions to this helper function. + + (WebKit::connectToWebProcessServiceForWebKitDevelopment): + (WebKit::createWebProcessServiceForWebKitDevelopment): + Add functionality to setup the webkit development service via re-exec. + + (WebKit::createWebProcessService): + Add functionality to connect to the installed WebProcess service. + + (WebKit::createProcess): + Factor out posix_spawn based launching into this helper function. + + (WebKit::ProcessLauncher::launchProcess): + Call the correct process creation function based on launch data and install state. + + * WebKit2.xcodeproj/project.pbxproj: + Add new files to the project. + + * WebProcess/mac/WebProcessServiceEntryPoints.h: Renamed from Source/WebKit2/WebProcess/mac/WebProcessXPCServiceMain.h. + * WebProcess/mac/WebProcessServiceEntryPoints.mm: Renamed from Source/WebKit2/WebProcess/mac/WebProcessXPCServiceMain.mm. + (WebKit::WebProcessServiceEventHandler): + (WebProcessServiceMain): + (InitializeWebProcessForWebProcessServiceForWebKitDevelopment): + Rename to WebProcessServiceEntryPoints since this is now used for both the WebProcessService and the + WebProcessServiceForWebKitDevelopment. + + * WebProcessService/Info.plist: Copied from Source/WebKit2/WebKit2Service/Info.plist. + * WebProcessService/WebProcessServiceMain.mm: Renamed from Source/WebKit2/WebKit2Service/MainMacService.mm. + Add main for the WebProcessService which just calls into the WebProcessServiceEntryPoints in WebKit2.framework. + + * WebProcessServiceForWebKitDevelopment/Info.plist: Renamed from Source/WebKit2/WebKit2Service/Info.plist. + * WebProcessServiceForWebKitDevelopment/WebProcessServiceForWebKitDevelopmentMain.mm: Added. + Add main for the WebProcessServiceForWebKitDevelopment, which can't just call directly into WebProcessServiceEntryPoints + as the framework path might not be set up correctly. This is also where we re-exec ourselves when required. + +2012-09-21 Anders Carlsson <andersca@apple.com> + + Fix WebKit2 sandbox profile. + + Instead of using #pragmas, just disable all warnings in DerivedSources.make. I suspect + that passing -traditional to the preprocessor disables support for #pragmas but I'm afraid + to change it to something else. + + * DerivedSources.make: + * WebProcess/com.apple.WebProcess.sb.in: + +2012-09-21 Benjamin Poulain <bpoulain@apple.com> + + fast/dom/Geolocation/disconnected-frame.html test asserts + https://bugs.webkit.org/show_bug.cgi?id=97376 + + Reviewed by Alexey Proskuryakov. + + In GeolocationPermissionRequestManager::cancelRequestForGeolocation, we access an iterator + after its value has been removed from the table. + There are two problems with that: + -The iterator is no longer valid after the container has been modified. + -If it was the last element, the table has been freed and the iterator points to deleted memory. + + We solve the issue by keeping a copy of the ID. We could have inverted the order of the calls + but that would make the issue less visible for future change. + + Testing covered by fast/dom/Geolocation/disconnected-frame.html. + + * WebProcess/Geolocation/GeolocationPermissionRequestManager.cpp: + (WebKit::GeolocationPermissionRequestManager::cancelRequestForGeolocation): + +2012-09-21 Sam Weinig <sam@webkit.org> + + REGRESSION (r120361) Warnings while preprocessing com.apple.WebProcess.sb.in + https://bugs.webkit.org/show_bug.cgi?id=91079 + <rdar://problem/12332660> + + Reviewed by Anders Carlsson. + + * WebProcess/com.apple.WebProcess.sb.in: + Add pragma to ignore the invalid preprocessor warnings. + +2012-09-21 Chris Rogers <crogers@google.com> + + Add Web Audio support for deprecated/legacy APIs + https://bugs.webkit.org/show_bug.cgi?id=97050 + + Reviewed by Eric Carlson. + + * Configurations/FeatureDefines.xcconfig: + +2012-09-21 Benjamin Poulain <bpoulain@apple.com> + + [WK2] Add basic testing support for Geolocation + https://bugs.webkit.org/show_bug.cgi?id=97278 + + Reviewed by Kenneth Rohde Christiansen. + + * Shared/API/c/WKNumber.h: Fix an unfortunate copy-paste :) + + * WebProcess/InjectedBundle/API/c/WKBundle.cpp: + * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h: + * WebProcess/InjectedBundle/InjectedBundle.cpp: + * WebProcess/InjectedBundle/InjectedBundle.h: + (InjectedBundle): + Remove the code forcing the Geolocation permissions. It was working around the normal + Geolocation code and updating all the GeolocationController, which is a terrible idea. + +2012-09-21 Alexey Proskuryakov <ap@apple.com> + + [WK2] Make Web Inspector work in multiple web process mode + https://bugs.webkit.org/show_bug.cgi?id=97354 + + Reviewed by Timothy Hatcher. + + * UIProcess/mac/WebInspectorProxyMac.mm: (WebKit::WebInspectorProxy::platformCreateInspectorPage): + Tell WKView that it's related to original page, making inspector page be in the same process. + +2012-09-21 Carlos Garcia Campos <cgarcia@igalia.com> + + [GTK] Implement ViewState methods in PageClientImpl in WebKit2 + https://bugs.webkit.org/show_bug.cgi?id=97202 + + Reviewed by Martin Robinson. + + Implement isViewWindowActive(), isViewFocused(), isViewVisible() + and isViewInWindow() in PageClientImpl. + + * GNUmakefile.list.am: Add new files to compilation. + * UIProcess/API/C/gtk/WKView.cpp: + (WKViewSetFocus): New private method used by WTR to focus the + WebView. + * UIProcess/API/C/gtk/WKViewPrivate.h: Added. + * UIProcess/API/gtk/PageClientImpl.cpp: + (WebKit::PageClientImpl::isViewWindowActive): Return + webkitWebViewBaseIsInWindowActive(). + (WebKit::PageClientImpl::isViewFocused): Return + webkitWebViewBaseIsFocused(). + (WebKit::PageClientImpl::isViewVisible): Return + webkitWebViewBaseIsVisible(). + (WebKit::PageClientImpl::isViewInWindow): Return + webkitWebViewBaseIsInWindow(). + * UIProcess/API/gtk/WebKitWebViewBase.cpp: + (webkitWebViewBaseNotifyResizerSize): Updated to not receive the + window as parameter since it's now saved in the instance struct. + (toplevelWindowResizeGripVisibilityChanged): Update to + webkitWebViewBaseNotifyResizerSize() API change. + (toplevelWindowFocusInEvent): Update ViewWindowIsActive flag and + notify the WebPageProxy if it changed. + (toplevelWindowFocusOutEvent): Ditto. + (webkitWebViewBaseSetToplevelOnScreenWindow): Set the toplevel + on-screen window where the view is currently added and notify + WebPageProxy if it changed. + (webkitWebViewBaseRealize): Call + webkitWebViewBaseSetToplevelOnScreenWindow() if the view has been + added to an on-screen window. + (webkitWebViewBaseFinalize): Reset the toplevel on-screen window + to make sure all signals are disconnected when the view is + destroyed. + (webkit_web_view_base_init): Remove unneeded initialization. + (resizeWebKitWebViewBaseFromAllocation): Update to + webkitWebViewBaseNotifyResizerSize() API change. + (webkitWebViewBaseMap): Update ViewIsVisible flag and notify + WebPageProxy if it changed. + (webkitWebViewBaseUnmap): Ditto. + (webkitWebViewBaseFocusInEvent): Call webkitWebViewBaseSetFocus() + passing true to focus the view. + (webkitWebViewBaseFocusOutEvent): Call webkitWebViewBaseSetFocus() + passing false to unfocus the view. + (webkitWebViewBaseParentSet): Reset the toplevel on-screen window + if the view is re-parented. + (webkit_web_view_base_class_init): Add implementations for map and + parent-set virtual functions. + (webkitWebViewBaseSetFocus): Update the ViewIsFocused and notify + WebPageProxy if it changed. + (webkitWebViewBaseIsInWindowActive): + (webkitWebViewBaseIsFocused): + (webkitWebViewBaseIsVisible): + (webkitWebViewBaseIsInWindow): + * UIProcess/API/gtk/WebKitWebViewBasePrivate.h: + * UIProcess/API/gtk/tests/TestWebKitWebView.cpp: + (testWebViewMouseTarget): Use a GTK_WINDOW_TOPLEVEL instead of + POPUP for this test to make sure the view receives focus change + events. + +2012-09-21 Carlos Garcia Campos <cgarcia@igalia.com> + + [GTK] Add WebKitWebView:is-loading property to WebKit2 GTK+ API + https://bugs.webkit.org/show_bug.cgi?id=97330 + + Reviewed by Xan Lopez. + + WebKitWebView:is-loading property allows to monitor when the view + is loading something without having to deal with load-changed + signal and all the details of the load status. This also allows to + know when a new load is started before it goes to STARTED status. + + * UIProcess/API/gtk/WebKitWebView.cpp: + (webkitWebViewGetProperty): Implement getter for is-loading + property. + (webkit_web_view_class_init): Add is-loading property. + (webkitWebViewSetIsLoading): Set whether web view is loading a + page and emit notify signal if the is-loading property has + changed. Also update the active URI when a new load operation has + started. + (webkitWebViewEmitLoadChanged): Set is-loading to FALSE when load + finishes. + (webkitWebViewLoadFailed): Set is-loading to FALSE when load fails. + (webkit_web_view_load_uri): Set is-loading to TRUE. + (webkit_web_view_load_html): Ditto. + (webkit_web_view_load_alternate_html): Ditto. + (webkit_web_view_load_plain_text): Ditto. + (webkit_web_view_load_request): Ditto. + (webkit_web_view_reload): Ditto. + (webkit_web_view_reload_bypass_cache): Ditto. + (webkit_web_view_is_loading): Return whether the view is loading a + page. + (webkit_web_view_go_back): Set is-loading to TRUE. + (webkit_web_view_go_forward): Ditto. + (webkit_web_view_go_to_back_forward_list_item): Ditto. + * UIProcess/API/gtk/WebKitWebView.h: + * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Add new symbol. + * UIProcess/API/gtk/tests/LoadTrackingTest.cpp: + (loadChangedCallback): + (loadFailedCallback): + * UIProcess/API/gtk/tests/TestLoaderClient.cpp: + (testWebViewIsLoading): + (beforeAll): + +2012-09-20 Eunmi Lee <eunmi15.lee@samsung.com> + + [EFL][WK2] Add API to feed touch event. + https://bugs.webkit.org/show_bug.cgi?id=96903 + + Reviewed by Kenneth Rohde Christiansen. + + The applications will use this API to feed touch event to the view + when they want to generate touch event from their own event processor. + WTR also will use this API to generate touch event with multiple touch + points for passing test cases of touch event in the WebKit2/EFL. + + * PlatformEfl.cmake: + * UIProcess/API/efl/EWebKit2.h: + * UIProcess/API/efl/ewk_view.cpp: + (ewk_view_feed_touch_event): + * UIProcess/API/efl/ewk_view.h: + * UIProcess/API/efl/tests/test_ewk2_view.cpp: + (TEST_F): + +2012-09-20 Patrick Gansterer <paroga@webkit.org> + + Add String::numberToStringFixedWidth() + https://bugs.webkit.org/show_bug.cgi?id=96330 + + Reviewed by Benjamin Poulain. + + * win/WebKit2.def: + * win/WebKit2CFLite.def: + +2012-09-17 Jon Lee <jonlee@apple.com> + + Safari 6 notifications' onclick handlers can't call window.open() + https://bugs.webkit.org/show_bug.cgi?id=96959 + <rdar://problem/12132427> + + Reviewed by Darin Adler. + + The click is not being treated as a user gesture when the message is sent to the web process. + + * WebProcess/Notifications/WebNotificationManager.cpp: + (WebKit::WebNotificationManager::didClickNotification): Gets called when the user clicks on the + platform notification. Set UserGestureIndicator to show the click event is due to user gesture. + +2012-09-20 Eunmi Lee <eunmi15.lee@samsung.com> + + [EFL][WK2] Add APIs to create, delete and get ewk_context. + https://bugs.webkit.org/show_bug.cgi?id=89186 + + Reviewed by Kenneth Rohde Christiansen. + + Provide APIs to create ewk_context with or without injected bundle path + and delete created ewk_context. + Additionally, the ewk_view can be created with ewk_context which is not + default context, so we have to get ewk_context from ewk_view. + + * PlatformEfl.cmake: + * UIProcess/API/efl/PageClientImpl.cpp: + (WebKit::PageClientImpl::handleDownloadRequest): + * UIProcess/API/efl/ewk_context.cpp: + (_Ewk_Context): + (_Ewk_Context::_Ewk_Context): + (ewk_context_ref): + (ewk_context_unref): + (ewk_context_new): + (ewk_context_new_with_injected_bundle_path): + * UIProcess/API/efl/ewk_context.h: + * UIProcess/API/efl/ewk_view.cpp: + (_Ewk_View_Private_Data): + (_Ewk_View_Private_Data::_Ewk_View_Private_Data): + (_ewk_view_priv_del): + (_ewk_view_initialize): + (ewk_view_context_get): + * UIProcess/API/efl/ewk_view.h: + * UIProcess/API/efl/tests/InjectedBundle/injected_bundle_sample.cpp: Added. + * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestEnvironment.cpp: + (EWK2UnitTest::EWK2UnitTestEnvironment::injectedBundleSample): + (EWK2UnitTest): + * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestEnvironment.h: + (EWK2UnitTestEnvironment): + * UIProcess/API/efl/tests/test_ewk2_context.cpp: + (TEST_F): + * UIProcess/API/efl/tests/test_ewk2_cookie_manager.cpp: + (TEST_F): + * UIProcess/API/efl/tests/test_ewk2_view.cpp: + (TEST_F): + +2012-09-20 KwangYong Choi <ky0.choi@samsung.com> + + [EFL][WK2] Implemented color picker API + https://bugs.webkit.org/show_bug.cgi?id=91832 + + Reviewed by Kenneth Rohde Christiansen. + + Add support for color picker API for EFL port in WebKit2. + + The external application can implement input picker by overriding + smart class function. + + * UIProcess/API/efl/ewk_view.cpp: + (_Ewk_View_Private_Data): + (_Ewk_View_Private_Data::_Ewk_View_Private_Data): + (ewk_view_color_picker_request): + (ewk_view_color_picker_dismiss): + (ewk_view_color_picker_color_set): + * UIProcess/API/efl/ewk_view.h: + * UIProcess/API/efl/ewk_view_private.h: + * UIProcess/API/efl/ewk_view_ui_client.cpp: + (showColorPicker): + (hideColorPicker): + (ewk_view_ui_client_attach): + * UIProcess/API/efl/tests/test_ewk2_view.cpp: + (onColorPickerDone): + (setColorPickerColor): + (showColorPicker): + (hideColorPicker): + (TEST_F): + +2012-09-20 Balazs Kelemen <kbalazs@webkit.org> + + [CoordinatedGraphics] Don't reset m_shouldSyncFrame in flushPendingLayerChanges + https://bugs.webkit.org/show_bug.cgi?id=97108 + + Reviewed by Noam Rosenthal. + + Stop ignoring if m_shouldSyncFrame has been set between the two + layer flush. It can be set during layout in several situations, + for example when a layer is deleted or changed state. We want to + send the DidRenderFrame message at the next flush in those situations + so the UI process will apply the changes as soon as possible. + + * WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp: + (WebKit::LayerTreeCoordinator::flushPendingLayerChanges): + +2012-09-20 Byungwoo Lee <bw80.lee@samsung.com> + + [EFL][WK2] Check timeout on waitUntilLoadFinished() and waitUntilTitleChangedTo(). + https://bugs.webkit.org/show_bug.cgi?id=97081 + + Reviewed by Gyuyoung Kim. + + Add assertion to check timeout on waitUntilLoadFinished() and + waitUntilTitleChangedTo(). + Set the default timeout for the functions as 10 seconds. + + * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h: + (EWK2UnitTestBase): + * UIProcess/API/efl/tests/test_ewk2_back_forward_list.cpp: + (TEST_F): + * UIProcess/API/efl/tests/test_ewk2_context.cpp: + (TEST_F): + * UIProcess/API/efl/tests/test_ewk2_view.cpp: + (TEST_F): + +2012-09-20 Jinwoo Song <jinwoo7.song@samsung.com> + + [EFL] Change the log macro names to be more consistent with EINA LOG + https://bugs.webkit.org/show_bug.cgi?id=97158 + + Reviewed by Kenneth Rohde Christiansen. + + Some log macro names in WebKit2 are inconsistent with EINA LOG names + such as WRN/INF not WARN/INFO. + + #define WRN(...) EINA_LOG_DOM_WARN(_ewk_log_dom, __VA_ARGS__) + #define INF(...) EINA_LOG_DOM_INFO(_ewk_log_dom, __VA_ARGS__) + + This patch changes the such names to be consistent with EINA LOG's names. + + * UIProcess/API/efl/ewk_main.cpp: + (ewk_init): + * UIProcess/API/efl/ewk_private.h: + * UIProcess/API/efl/ewk_view.cpp: + (ewk_view_webprocess_crashed): + +2012-09-20 Christophe Dumez <christophe.dumez@intel.com> + + [EFL][WK2] Same page navigation does not update view URI + https://bugs.webkit.org/show_bug.cgi?id=97094 + + Reviewed by Kenneth Rohde Christiansen. + + Handle didSameDocumentNavigationForFrame callback in + WKPageLoaderClient in order to update the view URI. + This fixes issues with the view URI not being updated + in case of a same page navigation. + + * UIProcess/API/efl/ewk_view_loader_client.cpp: + (didSameDocumentNavigationForFrame): + (ewk_view_loader_client_attach): + * UIProcess/API/efl/ewk_view_private.h: + * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp: + (CallbackDataTimer): + (EWK2UnitTest::CallbackDataTimer::CallbackDataTimer): + (EWK2UnitTest::CallbackDataTimer::~CallbackDataTimer): + (EWK2UnitTest::CallbackDataTimer::isDone): + (EWK2UnitTest::CallbackDataTimer::setDone): + (EWK2UnitTest::CallbackDataTimer::didTimeOut): + (EWK2UnitTest::CallbackDataTimer::setTimedOut): + (EWK2UnitTest): + (CallbackDataExpectedValue): + (EWK2UnitTest::CallbackDataExpectedValue::CallbackDataExpectedValue): + (EWK2UnitTest::CallbackDataExpectedValue::expectedValue): + (EWK2UnitTest::onLoadFinished): + (EWK2UnitTest::timeOutWhileWaitingUntilLoadFinished): + (EWK2UnitTest::EWK2UnitTestBase::waitUntilLoadFinished): + (EWK2UnitTest::onTitleChanged): + (EWK2UnitTest::timeOutWhileWaitingUntilTitleChangedTo): + (EWK2UnitTest::EWK2UnitTestBase::waitUntilTitleChangedTo): + (EWK2UnitTest::onURIChanged): + (EWK2UnitTest::timeOutWhileWaitingUntilURIChangedTo): + (EWK2UnitTest::EWK2UnitTestBase::waitUntilURIChangedTo): Add convenience function to test + framework in order to wait until the view URI changes to a given value. + * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h: + (EWK2UnitTestBase): + * UIProcess/API/efl/tests/resources/same_page_navigation.html: Added. + * UIProcess/API/efl/tests/test_ewk2_view.cpp: + (TEST_F): Add corresponding unit test to verify fix and prevent regressions + in the future. + +2012-09-19 Dan Bernstein <mitz@apple.com> + + WebKit2 part of adding a setting and API for disabling screen font substitution + https://bugs.webkit.org/show_bug.cgi?id=97168 + + Reviewed by Tim Horton. + + * Shared/WebPreferencesStore.h: + (WebKit): Defined ScreenFontSubstitutionEnabled key with a default value of true. + * UIProcess/API/C/WKPreferences.cpp: + (WKPreferencesSetScreenFontSubstitutionEnabled): Added this setter. + (WKPreferencesGetScreenFontSubstitutionEnabled): Added this getter. + * UIProcess/API/C/WKPreferencesPrivate.h: + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::updatePreferences): Added a call to Settings::setScreenFontSubstitutionEnabled + to push the preference into Settings. + +2012-09-19 Jinwoo Song <jinwoo7.song@samsung.com> + + Fix unused parameter compile warnings in WebKit/WebKit2 + https://bugs.webkit.org/show_bug.cgi?id=96742 + + Reviewed by Gyuyoung Kim. + + Fix unused parameter compile warning messages(-Wunused-parameter) in WebKit2 during EFL build. + WebCore's warning messages were fixed in r128570. + + * Shared/FontInfo.cpp: + (WebKit::FontInfo::encode): + (WebKit::FontInfo::decode): + * Shared/PlatformPopupMenuData.cpp: + (WebKit::PlatformPopupMenuData::encode): + (WebKit::PlatformPopupMenuData::decode): + * Shared/SandboxExtension.h: + (WebKit::SandboxExtension::createHandleForTemporaryFile): + * Shared/ShareableSurface.cpp: + (WebKit::ShareableSurface::create): + * Shared/WebMemorySampler.cpp: + (WebKit::WebMemorySampler::appendCurrentMemoryUsageToFile): + * UIProcess/API/C/WKPage.cpp: + (WKPageGetContentsAsMHTMLData): + * UIProcess/API/C/WKPluginSiteDataManager.cpp: + (WKPluginSiteDataManagerClearSiteData): + (WKPluginSiteDataManagerClearAllSiteData): + * UIProcess/API/C/WKPreferences.cpp: + (WKPreferencesSetHixie76WebSocketProtocolEnabled): + (WKPreferencesGetHixie76WebSocketProtocolEnabled): + * UIProcess/API/efl/BatteryProvider.cpp: + (startUpdatingCallback): + (stopUpdatingCallback): + * UIProcess/API/efl/PageClientImpl.cpp: + (WebKit::PageClientImpl::doneWithTouchEvent): + * UIProcess/API/efl/VibrationProvider.cpp: + (vibrateCallback): + (cancelVibrationCallback): + * UIProcess/API/efl/ewk_context_download_client.cpp: + (decideDestinationWithSuggestedFilename): + (didCreateDestination): + * UIProcess/API/efl/ewk_view.cpp: + (_ewk_view_on_focus_in): + (_ewk_view_on_focus_out): + (_ewk_view_on_mouse_wheel): + (_ewk_view_on_mouse_down): + (_ewk_view_on_mouse_up): + (_ewk_view_on_mouse_move): + (_ewk_view_on_key_down): + (_ewk_view_on_key_up): + (_ewk_view_smart_move): + (ewk_view_contents_size_changed): + * UIProcess/API/efl/ewk_view_find_client.cpp: + (didFindString): + * UIProcess/API/efl/ewk_view_form_client.cpp: + (willSubmitForm): + * UIProcess/API/efl/ewk_view_loader_client.cpp: + (didReceiveIntentForFrame): + (registerIntentServiceForFrame): + (didFinishLoadForFrame): + (didFailLoadWithErrorForFrame): + (didStartProvisionalLoadForFrame): + (didReceiveServerRedirectForProvisionalLoadForFrame): + (didFailProvisionalLoadWithErrorForFrame): + (didChangeBackForwardList): + * UIProcess/API/efl/ewk_view_policy_client.cpp: + (decidePolicyForNavigationAction): + (decidePolicyForNewWindowAction): + (decidePolicyForResponseCallback): + * UIProcess/DrawingAreaProxy.h: + (WebKit::DrawingAreaProxy::update): + (WebKit::DrawingAreaProxy::didUpdateBackingStoreState): + * UIProcess/DrawingAreaProxyImpl.cpp: + (WebKit::DrawingAreaProxyImpl::didUpdateBackingStoreState): + (WebKit::DrawingAreaProxyImpl::enterAcceleratedCompositingMode): + (WebKit::DrawingAreaProxyImpl::updateAcceleratedCompositingMode): + * UIProcess/FindIndicator.cpp: + (WebKit::FindIndicator::draw): + * UIProcess/GeolocationPermissionRequestManagerProxy.cpp: + (WebKit::GeolocationPermissionRequestManagerProxy::didReceiveGeolocationPermissionDecision): + * UIProcess/Plugins/unix/PluginInfoStoreUnix.cpp: + (WebKit::PluginInfoStore::shouldUsePlugin): + * UIProcess/WebContext.cpp: + (WebKit::WebContext::setHTTPPipeliningEnabled): + * UIProcess/WebFullScreenManagerProxy.cpp: + (WebKit::WebFullScreenManagerProxy::supportsFullScreen): + * UIProcess/WebPageProxy.cpp: + (WebKit::WebPageProxy::sessionStateData): + (WebKit::WebPageProxy::recommendedScrollbarStyleDidChange): + (WebKit::WebPageProxy::didBlockInsecurePluginVersion): + * UIProcess/WebProcessProxy.cpp: + (WebKit::WebProcessProxy::createWebPage): + * UIProcess/efl/TextCheckerEfl.cpp: + (WebKit::TextChecker::continuousSpellCheckingEnabledStateChanged): + (WebKit::TextChecker::grammarCheckingEnabledStateChanged): + * UIProcess/efl/WebFullScreenManagerProxyEfl.cpp: + (WebKit::WebFullScreenManagerProxy::beganEnterFullScreen): + (WebKit::WebFullScreenManagerProxy::beganExitFullScreen): + * UIProcess/efl/WebPageProxyEfl.cpp: + (WebKit::WebPageProxy::standardUserAgent): + (WebKit::WebPageProxy::getEditorCommandsForKeyEvent): + * WebProcess/Downloads/soup/DownloadSoup.cpp: + (WebKit::Download::start): + (WebKit::Download::startWithHandle): + (WebKit::Download::didDecideDestination): + (WebKit::Download::receivedCredential): + (WebKit::Download::receivedRequestToContinueWithoutCredential): + (WebKit::Download::receivedCancellation): + * WebProcess/Geolocation/WebGeolocationManager.cpp: + (WebKit::WebGeolocationManager::didChangePosition): + * WebProcess/IconDatabase/WebIconDatabaseProxy.cpp: + (WebKit::WebIconDatabaseProxy::synchronousIconForPageURL): + (WebKit::WebIconDatabaseProxy::synchronousIconURLForPageURL): + (WebKit::WebIconDatabaseProxy::synchronousIconDataKnownForIconURL): + (WebKit::WebIconDatabaseProxy::synchronousLoadDecisionForIconURL): + (WebKit::WebIconDatabaseProxy::iconDataForIconURL): + * WebProcess/InjectedBundle/API/c/WKBundleFrame.cpp: + (WKBundleFrameCopyWebArchiveFilteringSubframes): + * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp: + (WKAccessibilityRootObject): + (WKAccessibilityFocusedObject): + * WebProcess/InjectedBundle/InjectedBundle.cpp: + (WebKit::InjectedBundle::setGeoLocationPermission): + (WebKit::InjectedBundle::didReceiveMessage): + (WebKit::InjectedBundle::webNotificationID): + * WebProcess/Notifications/WebNotificationManager.cpp: + (WebKit::WebNotificationManager::initialize): + (WebKit::WebNotificationManager::didUpdateNotificationDecision): + (WebKit::WebNotificationManager::didRemoveNotificationDecisions): + (WebKit::WebNotificationManager::policyForOrigin): + (WebKit::WebNotificationManager::notificationIDForTesting): + (WebKit::WebNotificationManager::show): + (WebKit::WebNotificationManager::cancel): + (WebKit::WebNotificationManager::clearNotifications): + (WebKit::WebNotificationManager::didDestroyNotification): + (WebKit::WebNotificationManager::didShowNotification): + (WebKit::WebNotificationManager::didClickNotification): + (WebKit::WebNotificationManager::didCloseNotifications): + * WebProcess/Plugins/PluginView.cpp: + (WebKit::PluginView::paint): + * WebProcess/WebCoreSupport/WebChromeClient.cpp: + (WebKit::WebChromeClient::addMessageToConsole): + (WebKit::WebChromeClient::contentsSizeChanged): + (WebKit::WebChromeClient::customHighlightRect): + (WebKit::WebChromeClient::paintCustomHighlight): + (WebKit::WebChromeClient::supportsFullScreenForElement): + * WebProcess/WebCoreSupport/WebContextMenuClient.cpp: + (WebKit::WebContextMenuClient::downloadURL): + * WebProcess/WebCoreSupport/WebDragClient.cpp: + (WebKit::WebDragClient::dragSourceActionMaskForPoint): + * WebProcess/WebCoreSupport/WebEditorClient.cpp: + (WebKit::WebEditorClient::shouldEraseMarkersAfterChangeSelection): + * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: + (WebKit::WebFrameLoaderClient::dispatchDidCancelAuthenticationChallenge): + (WebKit::WebFrameLoaderClient::dispatchDidLoadResourceFromMemoryCache): + (WebKit::WebFrameLoaderClient::shouldStopLoadingForHistoryItem): + (WebKit::WebFrameLoaderClient::canShowMIMEType): + (WebKit::WebFrameLoaderClient::canShowMIMETypeAsHTML): + (WebKit::WebFrameLoaderClient::representationExistsForURLScheme): + (WebKit::WebFrameLoaderClient::generatedMIMETypeForURLScheme): + (WebKit::WebFrameLoaderClient::createFrame): + (WebKit::WebFrameLoaderClient::createJavaAppletWidget): + (WebKit::WebFrameLoaderClient::registerForIconNotification): + * WebProcess/WebCoreSupport/WebInspectorClient.cpp: + (WebKit::WebInspectorClient::drawRect): + * WebProcess/WebPage/DrawingArea.h: + (WebKit::DrawingArea::forceRepaintAsync): + (WebKit::DrawingArea::updateBackingStoreState): + * WebProcess/WebPage/FindController.cpp: + (WebKit::FindController::mouseEvent): + * WebProcess/WebPage/LayerTreeHost.cpp: + (WebKit::LayerTreeHost::create): + * WebProcess/WebPage/LayerTreeHost.h: + (WebKit::LayerTreeHost::forceRepaintAsync): + * WebProcess/WebPage/TapHighlightController.cpp: + (WebKit::TapHighlightController::drawRect): + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::getWebArchiveOfFrame): + * WebProcess/WebProcess.cpp: + (WebKit::WebProcess::getSitesWithPluginData): + (WebKit::WebProcess::clearPluginSiteData): + * WebProcess/soup/WebKitSoupRequestGeneric.cpp: + (webkitSoupRequestGenericSendFinish): + * WebProcess/soup/WebKitSoupRequestInputStream.cpp: + (webkitSoupRequestInputStreamReadAsync): + (webkitSoupRequestInputStreamReadFinish): + +2012-09-19 Pratik Solanki <psolanki@apple.com> + + Warning in SandboxExtension.h if WEB_PROCESS_SANDBOX is not enabled + https://bugs.webkit.org/show_bug.cgi?id=97137 + + Reviewed by Benjamin Poulain. + + m_size is only used when WEB_PROCESS_SANDBOX is enabled, so move its declaration inside + #if ENABLE(WEB_PROCESS_SANDBOX). + + * Shared/SandboxExtension.h: + (HandleArray): + +2012-09-19 Sudarsana Nagineni <sudarsana.nagineni@intel.com> + + [WTR] Memory leaks in TestRunner::deliverWebIntent() + https://bugs.webkit.org/show_bug.cgi?id=97111 + + Reviewed by Kenneth Rohde Christiansen. + + Fix memory leaks in WKBundleIntentCreate() by adopting strings + created with WKStringCreateWithUTF8CString(). + + * WebProcess/InjectedBundle/API/c/WKBundleIntent.cpp: + (WKBundleIntentCreate): + +2012-09-19 Christophe Dumez <christophe.dumez@intel.com> + + [EFL][WK2] fast/forms/select-writing-direction-natural.html is failing + https://bugs.webkit.org/show_bug.cgi?id=97082 + + Reviewed by Kenneth Rohde Christiansen. + + WebChromeClient::selectItemWritingDirectionIsNatural() now returns + true for EFL-WK2, consistently with EFL-WK1, so that the style + is properly adjusted in RenderMenuList::adjustInnerStyle(). + + * WebProcess/WebCoreSupport/WebChromeClient.cpp: + (WebKit::WebChromeClient::selectItemWritingDirectionIsNatural): + +2012-09-19 Carlos Garcia Campos <cgarcia@igalia.com> + + [GTK] Add API to get/set the security policy of a given URI scheme to WebKit2 GTK+ + https://bugs.webkit.org/show_bug.cgi?id=96497 + + Reviewed by Martin Robinson. + + Add WebKitSecurityManager object associated to a WebKitWebContext + to get/set the security policy of a URI scheme. + + * GNUmakefile.list.am: Add new files to compilation. + * Shared/WebProcessCreationParameters.cpp: + (WebKit::WebProcessCreationParameters::encode): Encode the list of + schemes to be reigstered as Local, NoAccess, DisplayIsolated and + CORSEnabled. + (WebKit::WebProcessCreationParameters::decode): Decode the list of + schemes to be reigstered as Local, NoAccess, DisplayIsolated and + CORSEnabled. + * Shared/WebProcessCreationParameters.h: + (WebProcessCreationParameters): Add new parameters to be able to + register schemes as Local, NoAccess, DisplayIsolated and + CORSEnabled. + * UIProcess/API/gtk/WebKitSecurityManager.cpp: Added. + (webkit_security_manager_init): + (webkitSecurityManagerFinalize): + (webkit_security_manager_class_init): + (webkitSecurityManagerCreate): Private function to create the + WebKitSecurityManager object associated to the given + WebKitWebContext. + (registerSecurityPolicyForURIScheme): + (checkSecurityPolicyForURIScheme): + (webkit_security_manager_register_uri_scheme_as_local): + (webkit_security_manager_uri_scheme_is_local): + (webkit_security_manager_register_uri_scheme_as_no_access): + (webkit_security_manager_uri_scheme_is_no_access): + (webkit_security_manager_register_uri_scheme_as_display_isolated): + (webkit_security_manager_uri_scheme_is_display_isolated): + (webkit_security_manager_register_uri_scheme_as_secure): + (webkit_security_manager_uri_scheme_is_secure): + (webkit_security_manager_register_uri_scheme_as_cors_enabled): + (webkit_security_manager_uri_scheme_is_cors_enabled): + (webkit_security_manager_register_uri_scheme_as_empty_document): + (webkit_security_manager_uri_scheme_is_empty_document): + * UIProcess/API/gtk/WebKitSecurityManager.h: Added. + * UIProcess/API/gtk/WebKitSecurityManagerPrivate.h: Added. + * UIProcess/API/gtk/WebKitWebContext.cpp: + (webkit_web_context_get_security_manager): Return the + WebKitSecurityManager object, creating it before if it doesn't exist. + * UIProcess/API/gtk/WebKitWebContext.h: + * UIProcess/API/gtk/docs/webkit2gtk-docs.sgml: Add new section for + WebKitSecurityManager. + * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Add new symbols. + * UIProcess/API/gtk/tests/TestWebKitWebContext.cpp: + (testWebContextSecurityPolicy): + (beforeAll): + * UIProcess/API/gtk/webkit2.h: Add WebKitSecurityManager.h. + * UIProcess/WebContext.cpp: + (WebKit::WebContext::createNewWebProcess): Copy new vector + schemes. + (WebKit::WebContext::registerURLSchemeAsLocal): Send a message to + WebProcess to register the given URL scheme as Local. + (WebKit::WebContext::registerURLSchemeAsNoAccess): Send a message + to WebProcess to register the given URL scheme as NoAccess. + (WebKit::WebContext::registerURLSchemeAsDisplayIsolated): Send a + message to WebProcess to register the given URL scheme as + DisplayIsolated. + (WebKit::WebContext::registerURLSchemeAsCORSEnabled): Send a + message to WebProcess to register the given URL scheme as + CORSEnabled. + * UIProcess/WebContext.h: + (WebContext): + * WebProcess/WebProcess.cpp: + (WebKit::WebProcess::registerURLSchemeAsLocal): Register the + given URL scheme as Local in the SchemeRegistry. + (WebKit::WebProcess::registerURLSchemeAsNoAccess): Register the + given URL scheme as NoAccess in the SchemeRegistry. + (WebKit::WebProcess::registerURLSchemeAsDisplayIsolated): Register + the given URL scheme as DisplayIsolated in the SchemeRegistry. + (WebKit::WebProcess::registerURLSchemeAsCORSEnabled): Register the + given URL scheme as CORSEnabled in the SchemeRegistry. + * WebProcess/WebProcess.h: + * WebProcess/WebProcess.messages.in: Add new messages. + +2012-09-19 Balazs Kelemen <kbalazs@webkit.org> + + [Texmap] Potential crash in TextureMapperLayer because of referencing deleted mask/replica layer + https://bugs.webkit.org/show_bug.cgi?id=96919 + + Reviewed by Noam Rosenthal. + + Delay syncing deleted layers until flushPendingLayerChanges so the UI side state + will contain all changes related to the deletion of a layer. This saves us from + referencing a deleted layer. + + * WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp: + (WebKit::LayerTreeCoordinator::flushPendingLayerChanges): + (WebKit::LayerTreeCoordinator::detachLayer): + * WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.h: + (LayerTreeCoordinator): + +2012-09-19 Byungwoo Lee <bw80.lee@samsung.com> + + [EFL][WK2] waitUntilTitleChangedTo() and waitUntilLoadFinished() needs timeout. + https://bugs.webkit.org/show_bug.cgi?id=96910 + + Reviewed by Kenneth Rohde Christiansen. + + Currently, the waitUntilTitleChangedTo() and waitUntilLoadFinished() + functions doesn't handle timeout by itself. + And if there are some failed cases that loading is not finished or + title is not changed to the expected string, test case just stopped + with timeout and there is no more information about this such as line + number. + + To handle timeout status more properly, timeout parameter is added to + these functions. + + * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp: + (EWK2UnitTest::LoadFinishedData::LoadFinishedData): + (LoadFinishedData): + (EWK2UnitTest::LoadFinishedData::~LoadFinishedData): + (EWK2UnitTest): + (EWK2UnitTest::onLoadFinished): + (EWK2UnitTest::timeOutWhileWaitingUntilLoadFinished): + (EWK2UnitTest::EWK2UnitTestBase::waitUntilLoadFinished): + (EWK2UnitTest::TitleChangedData::TitleChangedData): + (TitleChangedData): + (EWK2UnitTest::TitleChangedData::~TitleChangedData): + (EWK2UnitTest::onTitleChanged): + (EWK2UnitTest::timeOutWhileWaitingUntilTitleChangedTo): + (EWK2UnitTest::EWK2UnitTestBase::waitUntilTitleChangedTo): + * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h: + (EWK2UnitTestBase): + +2012-09-18 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-18 Sailesh Agrawal <sail@chromium.org> + + Chromium: Scrollbar with tickmarks doesn't respond to clicks + https://bugs.webkit.org/show_bug.cgi?id=96049 + + Reviewed by Beth Dakin. + + Update exported symbols. + + * win/WebKit2.def: + * win/WebKit2CFLite.def: + +2012-09-18 Jinwoo Song <jinwoo7.song@samsung.com> + + [EFL][WK2] Add log macros for EINA_LOG_DOM_XXX series + https://bugs.webkit.org/show_bug.cgi?id=97061 + + Reviewed by Gyuyoung Kim. + + EFL Webkit2 is using the EINA_LOG_DOM_XXX series in several places to log a message on the specified domain and format. + This patch adds log macros to simplify these logging codes. + + * UIProcess/API/efl/ewk_main.cpp: + (ewk_init): + * UIProcess/API/efl/ewk_private.h: + * UIProcess/API/efl/ewk_view.cpp: + (ewk_view_webprocess_crashed): + +2012-09-17 Martin Robinson <mrobinson@igalia.com> + + [WebKit2] [GTK] Add API for controlling the user agent + https://bugs.webkit.org/show_bug.cgi?id=95697 + + Reviewed by Carlos Garcia Campos. + + Add API for changing the user agent in WebKit2. This adds two styles of + setting the user agent: complete override and a method that just inserts + the application name and version, but preserves the carefully crafted user agent + in the library. + + * UIProcess/API/gtk/WebKitSettings.cpp: + (_WebKitSettingsPrivate): Added a new field to store the user agent. + This is stored in the private data structure, because we can only + set the user agent when attaching the settings to the page. + (webKitSettingsSetProperty): Add hooks for the new user agent property. + (webKitSettingsGetProperty): Ditto. + (webkit_settings_class_init): Ditto. + (webkitSettingsAttachSettingsToPage): Ditto. + (webkit_settings_get_user_agent): Added. + (webkit_settings_set_user_agent): Added. + (webkit_settings_set_user_agent_with_application_name): Added. + * UIProcess/API/gtk/WebKitSettings.h: Added new methods. + * UIProcess/API/gtk/WebKitWebView.cpp: Update the glue for the settings + when attaching and detaching from WebViews. + * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Added new methods to + the documentation. + * UIProcess/API/gtk/tests/TestWebKitSettings.cpp: Test the new user agent + property. + (testWebKitSettingsUserAgent): Ditto. + (beforeAll): Ditto. + * UIProcess/gtk/WebPageProxyGtk.cpp: + (WebKit::WebPageProxy::standardUserAgent): Now use the shared WebCore + code when setting the user agent. + +2012-09-18 Ryuan Choi <ryuan.choi@samsung.com> + + [EFL][WK2] Implement PageClientImpl::isViewFocused. + https://bugs.webkit.org/show_bug.cgi?id=97015 + + Reviewed by Gyuyoung Kim. + + WebKit2/Efl always returns true for PageClientImpl::isViewFocused. + So window.onblur events will not be generated when webview lost focus. + + This patch implements isViewFocused to return the current focus of webview. + + * UIProcess/API/efl/PageClientImpl.cpp: + (WebKit::PageClientImpl::isViewFocused): + +2012-09-18 Byungwoo Lee <bw80.lee@samsung.com> + + Title string should be changed when document.title is set to ''. + https://bugs.webkit.org/show_bug.cgi?id=96793 + + Reviewed by Kenneth Rohde Christiansen. + + Added unit test for setting document.title and checking the title + string with title,changed signal and ewk_view_title_get() function. + + * UIProcess/API/efl/tests/test_ewk2_view.cpp: + (TEST_F): + +2012-09-18 Anders Carlsson <andersca@apple.com> + + Division by zero crash in BackingStore::scroll + https://bugs.webkit.org/show_bug.cgi?id=97046 + <rdar://problem/11722564> + + Reviewed by Dan Bernstein. + + It appears that DrawingAreaImpl::scroll can be called with an empty scroll rect. Do nothing + if that's the case. Also, assert that the scrolling rect in BackingStoreMac is never empty. + + * UIProcess/mac/BackingStoreMac.mm: + (WebKit::BackingStore::scroll): + * WebProcess/WebPage/DrawingAreaImpl.cpp: + (WebKit::DrawingAreaImpl::scroll): + +2012-09-18 Bo Liu <boliu@chromium.org> + + Revert 128780, 128676, 128645 + https://bugs.webkit.org/show_bug.cgi?id=97022 + + Reviewed by Adam Barth. + + I made these revisions to add in-place reload behavior to ImagesEnabled setting. + Reverting this for now due to them causing performance regression in + chromium, possibly caused by increased calls to + PermissionClient::imageAllowed. + + * win/WebKit2.def: + +2012-09-18 Martin Robinson <mrobinson@igalia.com> + + [GTK] [WebKit2] Use XComposite window for accelerated compositing + https://bugs.webkit.org/show_bug.cgi?id=94417 + + Reviewed by Carlos Garcia Campos. + + Instead of rendering directly to the widget's native window, render to an + offscreen window redirected to a Pixmap with XComposite. + + * UIProcess/API/gtk/WebKitWebViewBase.cpp: + (_WebKitWebViewBasePrivate): Added a few members necessary to track the + offscreen window. + (webkit_web_view_base_init): + (renderAcceleratedCompositingResults): Added this helper functions which renders + the results of the accelerated compositing operations during the GTK+ draw loop. + (webkitWebViewBaseDraw): Call renderAcceleratedCompositingResults when appropriate. + (resizeWebKitWebViewBaseFromAllocation): Resize the offscreen window when appropriate. + (webkitWebViewBaseSizeAllocate): Do not call resizeWebKitWebViewBaseFromAllocation when + the actual size of the widget does not change. This prevents destroying and recreating + the offscreen window pixmap when it isn't necessary. + (webkitWebViewBaseMap): We no longer send the window id during map, instead it's sent + as soon as there is WebPageProxy. + (webkitWebViewBaseCreateWebPage): Send the window id of the redirected window to + the WebProcess. + (queueAnotherDrawOfAcceleratedCompositingResults): Added this helper which works + around the issue of slow updates of the pixmap backing the redirected XComposite window. + (webkitWebViewBaseQueueDrawOfAcceleratedCompositingResults): Added this method which + is what the WebProcess uses to force a redraw on the UIProcess side. + * UIProcess/API/gtk/WebKitWebViewBasePrivate.h: Added new method to the list of private methods. + * UIProcess/DrawingAreaProxyImpl.h: + (DrawingAreaProxyImpl): + (WebKit::DrawingAreaProxyImpl::isInAcceleratedCompositingMode): Exposed this method publically + so that it can be used from WebKitWebViewBase. + * UIProcess/WebPageProxy.h: + (WebPageProxy): Renamed widgetMapped to setAcceleratedCompositingWindowId. + * UIProcess/WebPageProxy.messages.in: Ditto. + * UIProcess/gtk/WebPageProxyGtk.cpp: Ditto. + (WebKit::WebPageProxy::setAcceleratedCompositingWindowId): + * WebProcess/WebPage/WebPage.h: + (WebPage): Ditto. + * WebProcess/WebPage/WebPage.messages.in: Ditto. + * WebProcess/WebPage/gtk/LayerTreeHostGtk.cpp: + (WebKit::LayerTreeHostGtk::sizeDidChange): Force a composite to the resized window right + away so that the new window pixmap is updated before the first draw. + (WebKit::LayerTreeHostGtk::compositeLayersToContext): If the composition is for a resize, + first clear the entire GL context so that we don't see black artifacts during resize. + * WebProcess/WebPage/gtk/LayerTreeHostGtk.h: + (LayerTreeHostGtk): Update the signature of compositeLayersToContext. + * WebProcess/WebPage/gtk/WebPageGtk.cpp: + (WebKit::WebPage::setAcceleratedCompositingWindowId): Added. + +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 + + Reviewed by Simon Hausmann. + + * Target.pri: + +2012-09-14 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com> + + WebKitTestRunner needs layoutTestController.setTabKeyCyclesThroughElements + https://bugs.webkit.org/show_bug.cgi?id=42687 + + Reviewed by Kenneth Rohde Christiansen. + + Implement testRunner.setTabKeyCyclesThroughElements for + WebKitTestRunner. + + * WebProcess/InjectedBundle/API/c/WKBundle.cpp: + (WKBundleSetTabKeyCyclesThroughElements): + * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h: + * WebProcess/InjectedBundle/InjectedBundle.cpp: + (WebKit::InjectedBundle::setTabKeyCyclesThroughElements): + (WebKit): + * WebProcess/InjectedBundle/InjectedBundle.h: + (InjectedBundle): + +2012-09-14 Keishi Hattori <keishi@webkit.org> + + Add runtime flag that enables lang attribute for form controls in LayoutTests + https://bugs.webkit.org/show_bug.cgi?id=96636 + + Reviewed by Kent Tamura. + + * win/WebKit2.def: + * win/WebKit2CFLite.def: + +2012-09-14 Grzegorz Czajkowski <g.czajkowski@samsung.com> + + Add method to get the list of all available dictionaries + https://bugs.webkit.org/show_bug.cgi?id=96518 + + Reviewed by Carlos Garcia Campos. + + * UIProcess/API/gtk/WebKitTextChecker.cpp: + (WebKitTextChecker::getSpellCheckingLanguages): + Update the method name that is called inside getSpellCheckingLanguages. + This replace doesn't affect any on API changes. + +2012-09-13 KwangYong Choi <ky0.choi@samsung.com> + + [WK2] Add color picker API support for WebKit2 + https://bugs.webkit.org/show_bug.cgi?id=95058 + + Reviewed by Gyuyoung Kim. + + Add support for color picker API to WebKit2. + + * CMakeLists.txt: + * GNUmakefile.list.am: + * Shared/API/c/WKBase.h: + * Shared/APIClientTraits.cpp: + (WebKit): + * Shared/APIClientTraits.h: + * Shared/APIObject.h: + * Target.pri: + * UIProcess/API/C/WKAPICast.h: + (WebKit): + * UIProcess/API/C/WKColorPickerResultListener.cpp: Added. + (WKColorPickerResultListenerGetTypeID): + (WKColorPickerResultListenerColorSet): + * UIProcess/API/C/WKColorPickerResultListener.h: Added. + * UIProcess/API/C/WKPage.h: + * UIProcess/API/gtk/WebKitUIClient.cpp: + (attachUIClientToView): + * UIProcess/WebColorChooserProxy.cpp: Added. + (WebKit): + (WebKit::WebColorChooserProxy::WebColorChooserProxy): + (WebKit::WebColorChooserProxy::~WebColorChooserProxy): + (WebKit::WebColorChooserProxy::endChooser): + (WebKit::WebColorChooserProxy::setSelectedColor): + * UIProcess/WebColorChooserProxy.h: + (WebColorChooserProxy): + (WebKit::WebColorChooserProxy::create): + * UIProcess/WebColorPickerResultListenerProxy.cpp: Added. + (WebKit): + (WebKit::WebColorPickerResultListenerProxy::WebColorPickerResultListenerProxy): + (WebKit::WebColorPickerResultListenerProxy::~WebColorPickerResultListenerProxy): + (WebKit::WebColorPickerResultListenerProxy::invalidate): + (WebKit::WebColorPickerResultListenerProxy::setColor): + * UIProcess/WebColorPickerResultListenerProxy.h: Added. + (WebKit): + (WebColorPickerResultListenerProxy): + (WebKit::WebColorPickerResultListenerProxy::create): + (WebKit::WebColorPickerResultListenerProxy::type): + * UIProcess/WebPageProxy.cpp: + (WebKit::WebPageProxy::close): + (WebKit::WebPageProxy::showColorChooser): + (WebKit::WebPageProxy::didEndColorChooser): + (WebKit::WebPageProxy::processDidCrash): + * UIProcess/WebPageProxy.h: + (WebKit): + (WebPageProxy): + * UIProcess/WebUIClient.cpp: + (WebKit): + (WebKit::WebUIClient::showColorPicker): + (WebKit::WebUIClient::hideColorPicker): + * UIProcess/WebUIClient.h: + (WebKit): + (WebUIClient): + * WebKit2.xcodeproj/project.pbxproj: + * win/WebKit2.vcproj: + * win/WebKit2Generated.make: + +2012-09-13 KwangYong Choi <ky0.choi@samsung.com> + + [EFL][WK2] Implement missing initializeLogChannel function + https://bugs.webkit.org/show_bug.cgi?id=96478 + + Reviewed by Gyuyoung Kim. + + Implemented log channel initialization function for EFL platform in WebKit2. + + * Platform/Logging.cpp: + (WebKit): + * Platform/Logging.h: + (WebKit): + * Platform/efl/LoggingEfl.cpp: Added. + (WebKit): + (WebKit::initializeLogChannel): Channel is initialized if its name is found in WEBKIT_DEBUG. + * PlatformEfl.cmake: + +2012-09-13 Mark Rowe <mrowe@apple.com> + + <rdar://problem/12283706> WebKit looks for some files on the system even when building against an SDK. + + Reviewed by David Kilzer. + + If an SDK is being used, pass it through to our custom invocations of the preprocessor. + + * DerivedSources.make: + +2012-09-13 Brent Fulgham <bfulgham@webkit.org> + + [WinCairo] Unreviewed build fix for export declarations. + + New entries were added to the standard Windows export definition + file, but were not added to the WinCairo version, breaking the build. + + * win/WebKit2CFLite.def: Incoproate changes from WebKit2.def file. + +2012-09-13 Tim Horton <timothy_horton@apple.com> + + Add optional debug logging when we fall into/out of threaded scrolling + https://bugs.webkit.org/show_bug.cgi?id=93898 + <rdar://problem/12089098> + + Reviewed by Simon Fraser. + + Update the scrolling tree's scrollingPerformanceLoggingEnabled preference + before the early-return if we don't have layer debugging borders on. + + * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm: + (WebKit::TiledCoreAnimationDrawingArea::updatePreferences): + +2012-09-13 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com> + + [WK2][WTR] WebKitTestRunner needs testRunner.callShouldCloseOnWebView + https://bugs.webkit.org/show_bug.cgi?id=96366 + + Reviewed by Anders Carlsson. + + Implement testRunner.callShouldCloseOnWebView for WebKitTestRunner + by calling shouldClose() on the FrameLoader. + + * WebProcess/InjectedBundle/API/c/WKBundleFrame.cpp: + (WKBundleFrameCallShouldCloseOnWebView): + * WebProcess/InjectedBundle/API/c/WKBundleFrame.h: + +2012-09-13 Thiago Marcos P. Santos <thiago.santos@intel.com> + + [EFL] Assertion reached on RenderThemeEFL when setting a theme to an invalid path + https://bugs.webkit.org/show_bug.cgi?id=96649 + + Reviewed by Kenneth Rohde Christiansen. + + Updated the alternative test theme file. It is basically + the default theme with extra padding on the button widget as + specified by the comments on the test case. + + * UIProcess/API/efl/tests/resources/big_button_theme.edj: + +2012-09-13 Balazs Kelemen <kbalazs@webkit.org> + + [WK2] LayerTreeCoordinator should release unused UpdatedAtlases + https://bugs.webkit.org/show_bug.cgi?id=95072 + + Reviewed by Jocelyn Turcotte. + + Release graphic buffers that haven't been used for a while in order to save memory. + This way we can give back memory to the system when no user interaction happens + after a period of time, for example when we are in the background. + + * Shared/ShareableBitmap.h: + * WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp: + (WebKit::LayerTreeCoordinator::LayerTreeCoordinator): + (WebKit::LayerTreeCoordinator::beginContentUpdate): + (WebKit): + (WebKit::LayerTreeCoordinator::scheduleReleaseInactiveAtlases): + (WebKit::LayerTreeCoordinator::releaseInactiveAtlasesTimerFired): + * WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.h: + (LayerTreeCoordinator): + * WebProcess/WebPage/UpdateAtlas.cpp: + (WebKit::UpdateAtlas::UpdateAtlas): + (WebKit::UpdateAtlas::didSwapBuffers): + Don't call buildLayoutIfNeeded here. It's enought to call it in beginPaintingOnAvailableBuffer + and this way we can track whether this atlas is used with m_areaAllocator. + (WebKit::UpdateAtlas::beginPaintingOnAvailableBuffer): + * WebProcess/WebPage/UpdateAtlas.h: + (WebKit::UpdateAtlas::addTimeInactive): + (WebKit::UpdateAtlas::isInactive): + (WebKit::UpdateAtlas::isInUse): + (UpdateAtlas): + +2012-09-13 Lauro Neto <lauro.neto@openbossa.org> + + [Qt][WK2] fast/forms/access-key-for-all-elements.html fails + https://bugs.webkit.org/show_bug.cgi?id=73917 + + Reviewed by Simon Hausmann. + + Access-key tests were failing due to hardcoded Mac OS X in the + Qt WK2 user agent string. This commit moves the WK1 implementation + to a shared one to be used by both versions. + + Use the shared implementation instead of hardcoding the user agent. + + * UIProcess/qt/WebPageProxyQt.cpp: + (WebKit::WebPageProxy::standardUserAgent): + +2012-09-13 Simon Hausmann <simon.hausmann@nokia.com> + + [Qt] Fix build of WTR and the QML2 plugin on Windows + https://bugs.webkit.org/show_bug.cgi?id=96652 + + Reviewed by Tor Arne Vestbø. + + Some components that we build such as WTR or the QML2 plugin include + WebKit2 header files as well as WebKit2's config.h. Only the include + paths of WebKit2 are required for that at the moment (WEBKIT += + webkit2). Only on Windows WebKit2's config.h also includes + WebCore/config.h, which in turn requires to have WebCore/platform in + your include search path. That in turn means that any component that + wants to use WebKit2 headers also needs the WebCore headers, but only + one Windows. It turns out that for the Qt build we don't need it, so + skip it in our configuration and make the include path requirement + the same across all the platforms we build. + + * config.h: + +2012-09-13 Andras Becsi <andras.becsi@nokia.com> + + [Qt][WK2] REGRESSION(r128245): It made zillion API tests fail + https://bugs.webkit.org/show_bug.cgi?id=96531 + + Reviewed by Jocelyn Turcotte. + + Preferences have to be updated after the drawing area was created + for compositing mode to be set. + + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::WebPage): + +2012-09-13 Simon Hausmann <simon.hausmann@nokia.com> + + [Qt] Fix UIProcess build with Qt on Windows + https://bugs.webkit.org/show_bug.cgi?id=96635 + + Reviewed by Csaba Osztrogonác. + + Enabling setShouldCloseConnectionOnProcessTermination on the connection + is something that is only implemented in ConnectionUnix, not + ConnectionWin.cpp, where appears to be built-in functionality. + + * UIProcess/WebConnectionToWebProcess.cpp: + (WebKit::WebConnectionToWebProcess::WebConnectionToWebProcess): + +2012-09-13 Oswald Buddenhagen <oswald.buddenhagen@nokia.com> + + [Qt] Fix build against namespaced Qt + + Reviewed by Tor Arne Vestbø. + + * UIProcess/qt/PageViewportControllerClientQt.h: + +2012-09-13 Michał Pakuła vel Rutka <m.pakula@samsung.com> + + [EFL][Qt][WK2] Implement shared undo controller for EFL and Qt port. + https://bugs.webkit.org/show_bug.cgi?id=92504 + + Reviewed by Kenneth Rohde Christiansen. + + EFL port needs an undo controller similiar to one from Qt port. Instead of + duplicating the code existing class was renamed and moved to UIProcess + directory. + + * PlatformEfl.cmake: + * Target.pri: + * UIProcess/API/efl/PageClientImpl.cpp: + (WebKit::PageClientImpl::registerEditCommand): + (WebKit::PageClientImpl::clearAllEditCommands): + (WebKit::PageClientImpl::canUndoRedo): + (WebKit::PageClientImpl::executeUndoRedo): + * UIProcess/API/efl/PageClientImpl.h: + (PageClientImpl): + * UIProcess/API/qt/qquickwebview_p_p.h: + (QQuickWebViewPrivate): + * UIProcess/DefaultUndoController.cpp: Renamed from Source/WebKit2/UIProcess/qt/QtWebUndoController.cpp. + (WebKit): + (WebKit::DefaultUndoController::registerEditCommand): + (WebKit::DefaultUndoController::clearAllEditCommands): + (WebKit::DefaultUndoController::canUndoRedo): + (WebKit::DefaultUndoController::executeUndoRedo): + * UIProcess/DefaultUndoController.h: Renamed from Source/WebKit2/UIProcess/qt/QtWebUndoController.h. + (WebKit): + (DefaultUndoController): + * UIProcess/qt/QtPageClient.cpp: + (WebKit::QtPageClient::initialize): + * UIProcess/qt/QtPageClient.h: + (WebKit): + (QtPageClient): + +2012-09-13 Christophe Dumez <christophe.dumez@intel.com> + + [EFL][WK2] Make _ref() functions return the object + https://bugs.webkit.org/show_bug.cgi?id=96604 + + Reviewed by Gyuyoung Kim. + + Make _ref() functions return the ref'd object to + make them more convenient to use. Also fix their + usage to make use of the newly returned value. + + This change is consistent with eina_stringshare_ref() + in EFL and g_object_ref() in glib. + + * UIProcess/API/efl/ewk_back_forward_list.cpp: + (createEinaList): + * UIProcess/API/efl/ewk_back_forward_list_item.cpp: + (ewk_back_forward_list_item_ref): + * UIProcess/API/efl/ewk_back_forward_list_item.h: + * UIProcess/API/efl/ewk_context.cpp: + (ewk_context_download_job_add): + * UIProcess/API/efl/ewk_download_job.cpp: + (ewk_download_job_ref): + (ewk_download_job_response_set): + * UIProcess/API/efl/ewk_download_job.h: + * UIProcess/API/efl/ewk_form_submission_request.cpp: + (ewk_form_submission_request_ref): + * UIProcess/API/efl/ewk_form_submission_request.h: + * UIProcess/API/efl/ewk_intent.cpp: + (ewk_intent_ref): + * UIProcess/API/efl/ewk_intent.h: + * UIProcess/API/efl/ewk_intent_service.cpp: + (ewk_intent_service_ref): + * UIProcess/API/efl/ewk_intent_service.h: + * UIProcess/API/efl/ewk_navigation_policy_decision.cpp: + (ewk_navigation_policy_decision_ref): + * UIProcess/API/efl/ewk_navigation_policy_decision.h: + * UIProcess/API/efl/ewk_url_request.cpp: + (ewk_url_request_ref): + * UIProcess/API/efl/ewk_url_request.h: + * UIProcess/API/efl/ewk_url_response.cpp: + (ewk_url_response_ref): + * UIProcess/API/efl/ewk_url_response.h: + * UIProcess/API/efl/ewk_url_scheme_request.cpp: + (ewk_url_scheme_request_ref): + * UIProcess/API/efl/ewk_url_scheme_request.h: + * UIProcess/API/efl/ewk_view.cpp: + (ewk_view_resource_load_initiated): + * UIProcess/API/efl/ewk_web_resource.cpp: + (ewk_web_resource_ref): + * UIProcess/API/efl/ewk_web_resource.h: + +2012-09-12 Sheriff Bot <webkit.review.bot@gmail.com> + + Unreviewed, rolling out r127876. + http://trac.webkit.org/changeset/127876 + https://bugs.webkit.org/show_bug.cgi?id=96600 + + mouse click doesn't work for spin button if spin button in + iframe (Requested by yosin on #webkit). + + * WebProcess/InjectedBundle/InjectedBundleNavigationAction.cpp: + (WebKit::InjectedBundleNavigationAction::InjectedBundleNavigationAction): + * WebProcess/WebPage/WebPage.cpp: + (WebKit::handleContextMenuEvent): + (WebKit::WebPage::highlightPotentialActivation): + (WebKit::WebPage::findZoomableAreaForPoint): + * WebProcess/WebPage/mac/WebPageMac.mm: + (WebKit::WebPage::characterIndexForPoint): + (WebKit::WebPage::performDictionaryLookupAtLocation): + (WebKit::WebPage::shouldDelayWindowOrderingEvent): + (WebKit::WebPage::acceptsFirstMouse): + * win/WebKit2.def: + * win/WebKit2CFLite.def: + +2012-09-12 Brady Eidson <beidson@apple.com> + + Assert in NetscapePlugin::destroy() with async plugin init + <rdar://problem/12277595> and https://bugs.webkit.org/show_bug.cgi?id=96576 + + Reviewed by Anders Carlsson. + + Most of the NPN_* API calls have a plug-in protector during the calls. + NPN_Invoke and NPN_InvokeDefault do not. + + * WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp: + (WebKit::NPN_Invoke): Protect the plug-in during this call. + (WebKit::NPN_InvokeDefault): Ditto. + +2012-09-11 Alexey Proskuryakov <ap@apple.com> + + <rdar://problem/12275537> REGRESSION(r127384): Non-existent directories are no longer created for sandbox paths + https://bugs.webkit.org/show_bug.cgi?id=96442 + + Reviewed by Darin Adler. + + * Shared/SandboxExtension.h: + (WebKit::SandboxExtension::createHandleForReadWriteDirectory): + * Shared/mac/SandboxExtensionMac.mm: + (WebKit::SandboxExtension::createHandleForReadWriteDirectory): + Added a function for read-write configuration directories. It matches + appendReadwriteSandboxDirectory() function behavior from WebProcessMac.mm. + + * UIProcess/WebContext.cpp: + (WebKit::WebContext::createNewWebProcess): + * UIProcess/mac/WebContextMac.mm: + (WebKit::WebContext::platformInitializeWebProcess): + Use the new function for directories that need to be created if they don't exist. + +2012-09-12 Christophe Dumez <christophe.dumez@intel.com> + + [WK2][WKTR] TestRunner needs to implement originsWithApplicationCache + https://bugs.webkit.org/show_bug.cgi?id=96496 + + Reviewed by Kenneth Rohde Christiansen. + + Add Bundle C API to retrieve security origins with + an application cache. This is needed by WebKitTestRunner + to support originsWithApplicationCache. + + * WebProcess/InjectedBundle/API/c/WKBundle.cpp: + (WKBundleCopyOriginsWithApplicationCache): + * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h: + * WebProcess/InjectedBundle/InjectedBundle.cpp: + (WebKit::InjectedBundle::originsWithApplicationCache): + (WebKit): + * WebProcess/InjectedBundle/InjectedBundle.h: + (InjectedBundle): + +2012-09-12 Christophe Dumez <christophe.dumez@intel.com> + + [WK2][WKTR] TestRunner needs to implement dumpApplicationCacheDelegateCallbacks + https://bugs.webkit.org/show_bug.cgi?id=96374 + + Reviewed by Kenneth Rohde Christiansen. + + Add Bundle C API to reset the application cache quota + for a given origin. + + Add new reachedApplicationCacheOriginQuota callback + to WKBundlePageUIClient which is called from + WebChromeClient::reachedApplicationCacheOriginQuota(). + + Those are needed by WebKitTestRunner to dump + information about the application cache callbacks + if instructed to. + + * Shared/APIClientTraits.cpp: + (WebKit): + * Shared/APIClientTraits.h: + * WebProcess/InjectedBundle/API/c/WKBundle.cpp: + (WKBundleSetApplicationCacheOriginQuota): + (WKBundleResetApplicationCacheOriginQuota): + * WebProcess/InjectedBundle/API/c/WKBundlePage.h: + * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h: + * WebProcess/InjectedBundle/InjectedBundle.cpp: + (WebKit::InjectedBundle::resetApplicationCacheOriginQuota): + (WebKit): + * WebProcess/InjectedBundle/InjectedBundle.h: + (InjectedBundle): + * WebProcess/InjectedBundle/InjectedBundlePageUIClient.cpp: + (WebKit::InjectedBundlePageUIClient::didReachApplicationCacheOriginQuota): + (WebKit): + * WebProcess/InjectedBundle/InjectedBundlePageUIClient.h: + (WebKit): + (InjectedBundlePageUIClient): + * WebProcess/WebCoreSupport/WebChromeClient.cpp: + (WebKit::WebChromeClient::reachedApplicationCacheOriginQuota): + * win/WebKit2.def: + * win/WebKit2CFLite.def: + +2012-09-12 Sheriff Bot <webkit.review.bot@gmail.com> + + Unreviewed, rolling out r128280. + http://trac.webkit.org/changeset/128280 + https://bugs.webkit.org/show_bug.cgi?id=96498 + + it broke compilation on windows debug bot (Requested by loislo + on #webkit). + + * Shared/APIClientTraits.cpp: + (WebKit): + * Shared/APIClientTraits.h: + * WebProcess/InjectedBundle/API/c/WKBundle.cpp: + (WKBundleSetApplicationCacheOriginQuota): + * WebProcess/InjectedBundle/API/c/WKBundlePage.h: + * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h: + * WebProcess/InjectedBundle/InjectedBundle.cpp: + * WebProcess/InjectedBundle/InjectedBundle.h: + (InjectedBundle): + * WebProcess/InjectedBundle/InjectedBundlePageUIClient.cpp: + * WebProcess/InjectedBundle/InjectedBundlePageUIClient.h: + (WebKit): + (InjectedBundlePageUIClient): + * WebProcess/WebCoreSupport/WebChromeClient.cpp: + (WebKit::WebChromeClient::reachedApplicationCacheOriginQuota): + +2012-09-12 Byungwoo Lee <bw80.lee@samsung.com> + + [EFL][WK2] WorkQueue::dispatchAfterDelay() doesn't work properly. + https://bugs.webkit.org/show_bug.cgi?id=91179 + + Reviewed by Gyuyoung Kim. + + When UI Process is crashed and WebProcess's ecore main loop is very + busy or lockup also, watchdocCallback() function in the + ChildProcess.cpp doesn't triggered. And this is because of that + WorkQueue::dispatchAfterDelay() function uses ecore timer for getting + timer event. + + For removing the dependency between the dispatchAfterDelay() and ecore + main loop, new timer event mechanism is added to WorkQueue main loop. + + * Platform/WorkQueue.h: + (TimerWorkItem): + (WorkQueue::TimerWorkItem::dispatch): + (WorkQueue::TimerWorkItem::expireTime): + (WorkQueue::TimerWorkItem::expired): + (WorkQueue): + * Platform/efl/WorkQueueEfl.cpp: + (WorkQueue::TimerWorkItem::create): + (WorkQueue::TimerWorkItem::TimerWorkItem): + (WorkQueue::performFileDescriptorWork): + (WorkQueue::getCurrentTime): + (WorkQueue::getNextTimeOut): + (WorkQueue::performTimerWork): + (WorkQueue::workQueueThread): + (WorkQueue::dispatchAfterDelay): + +2012-09-12 Christophe Dumez <christophe.dumez@intel.com> + + [WK2][WKTR] TestRunner needs to implement dumpApplicationCacheDelegateCallbacks + https://bugs.webkit.org/show_bug.cgi?id=96374 + + Reviewed by Kenneth Rohde Christiansen. + + Add Bundle C API to reset the application cache quota + for a given origin. + + Add new reachedApplicationCacheOriginQuota callback + to WKBundlePageUIClient which is called from + WebChromeClient::reachedApplicationCacheOriginQuota(). + + Those are needed by WebKitTestRunner to dump + information about the application cache callbacks + if instructed to. + + * Shared/APIClientTraits.cpp: + (WebKit): + * Shared/APIClientTraits.h: + * WebProcess/InjectedBundle/API/c/WKBundle.cpp: + (WKBundleSetApplicationCacheOriginQuota): + (WKBundleResetApplicationCacheOriginQuota): + * WebProcess/InjectedBundle/API/c/WKBundlePage.h: + * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h: + * WebProcess/InjectedBundle/InjectedBundle.cpp: + (WebKit::InjectedBundle::resetApplicationCacheOriginQuota): + (WebKit): + * WebProcess/InjectedBundle/InjectedBundle.h: + (InjectedBundle): + * WebProcess/InjectedBundle/InjectedBundlePageUIClient.cpp: + (WebKit::InjectedBundlePageUIClient::didReachApplicationCacheOriginQuota): + (WebKit): + * WebProcess/InjectedBundle/InjectedBundlePageUIClient.h: + (WebKit): + (InjectedBundlePageUIClient): + * WebProcess/WebCoreSupport/WebChromeClient.cpp: + (WebKit::WebChromeClient::reachedApplicationCacheOriginQuota): + +2012-09-12 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> + + [WK2] [WTR] WebKitTestRunner needs TestRunner.workerThreadCount + https://bugs.webkit.org/show_bug.cgi?id=96388 + + Reviewed by Kenneth Rohde Christiansen. + + Added WKBundleGetWorkerThreadCount() function to Injected Bundle private API. + + * WebProcess/InjectedBundle/API/c/WKBundle.cpp: + (WKBundleGetWorkerThreadCount): + * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h: + * WebProcess/InjectedBundle/InjectedBundle.cpp: + (WebKit::InjectedBundle::workerThreadCount): Returns count of worker threads. + (WebKit): + * WebProcess/InjectedBundle/InjectedBundle.h: + (InjectedBundle): + +2012-09-12 Darin Adler <darin@apple.com> + + Make NetscapePlugin::m_timers use HashMap<OwnPtr> instead of deleteAllValues + https://bugs.webkit.org/show_bug.cgi?id=96469 + + Reviewed by Dan Bernstein. + + * WebProcess/Plugins/Netscape/NetscapePlugin.cpp: + (WebKit::NetscapePlugin::scheduleTimer): Call release rather than leakPtr when + entering a timer into the map. + (WebKit::NetscapePlugin::unscheduleTimer): Take an existing timer from the map + with the take function rather than the roundabout code needed before. + (WebKit::NetscapePlugin::destroy): Remove now-unneeded call to deleteAllValues. + * WebProcess/Plugins/Netscape/NetscapePlugin.h: Change the value type for + TimerMap to OwnPtr<Timer> rather than Timer*. + +2012-09-11 Anders Carlsson <andersca@apple.com> + + Accelerated compositing should always be forced when using the tiled drawing area + https://bugs.webkit.org/show_bug.cgi?id=96449 + + Reviewed by Andy Estes. + + There's code in WebPage::updatePreferences that will turn off accelerated compositing unless accelerated drawing is enabled. + This should only be done in the non-tiled model, so move the code to DrawingAreaImpl::updatePreferences. + + * WebProcess/WebPage/DrawingArea.h: + (WebKit::DrawingArea::updatePreferences): + This now takes a WebPreferencesStore. + + * WebProcess/WebPage/DrawingAreaImpl.cpp: + (WebKit::DrawingAreaImpl::updatePreferences): + Move code here from WebPage::updatePreferences. + + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::updatePreferences): + Pass the WebPreferencesStore to DrawingArea::updatePreferences. + + * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h: + * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm: + (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea): + Remove call to updatePreferences, it's going to be called by the WebPage object later. + + (WebKit::TiledCoreAnimationDrawingArea::updatePreferences): + This now takes a WebPreferencesStore. + +2012-09-11 Brady Eidson <beidson@apple.com> + + Get rid of the PluginProcessShim for 64-bit plug-ins + <rdar://problem/12068560> and https://bugs.webkit.org/show_bug.cgi?id=96415 + + Reviewed by Anders Carlsson. + + * PluginProcess/PluginProcess.h: + (PluginProcess): + + * PluginProcess/mac/PluginProcessMac.mm: + (WebKit::getCurrentEventButtonState): + (WebKit): + (WebKit::beginModal): Moved from the shim, to be shared with shimmed processes. + (WebKit::endModal): Ditto. + (WebKit::replacedRunModalForWindow): Only used by Cocoa overrides. + (WebKit::PluginProcess::initializeShim): + (WebKit::PluginProcess::initializeCocoaOverrides): + + * PluginProcess/mac/PluginProcessMainMac.mm: + (WebKit::PluginProcessMain): Only call initializeShim for 32-bit processes, always call initializeCocoaOverrides + + * PluginProcess/mac/PluginProcessShim.h: + (PluginProcessShimCallbacks): + * PluginProcess/mac/PluginProcessShim.mm: + (WebKit): + (WebKit::shimModalDialog): Call beginModal/endModal from the shim callbacks. + (WebKit::shimAlert): Ditto. + (WebKit::WebKitPluginProcessShimInitialize): Don't do the Cocoa overrides as they are now handled outside the shim. + +2012-09-11 Marcelo Lira <marcelo.lira@openbossa.org> + + Restore original value of mock scrollbars enabled in InternalSettings + https://bugs.webkit.org/show_bug.cgi?id=87680 + + Reviewed by Adam Barth. + + Added backup support for mock scrollbars state in + InternalSettings::Backup, and removed support for these + from Qt's DumpRenderTree. + + * win/WebKit2.def: + +2012-09-11 Brady Eidson <beidson@apple.com> + + We should wait longer before killing the PluginProcess. + <rdar://problem/12067728> and https://bugs.webkit.org/show_bug.cgi?id=96407 + + Reviewed by Anders Carlsson. + + Currently we kill the PluginProcess 15 seconds after the last plug-in is destroyed. + This is short enough that most users will have the process killed many times during browsing sessions, + which is painful because relaunching the process is I/O and kernel intensive. + + In an ideal world we could keep it around forever until the system tells us resources are running low. + + In reality we do want to kill it occasionally to get a clean slate from any plug-in leaks. + + A reasonable balance for now is to set a minimum lifetime of 30 minutes on the plug-in process and to + extend the termination timer from 15 seconds to 10 minutes. + + * PluginProcess/PluginProcess.cpp: + (WebKit::PluginProcess::PluginProcess): + (WebKit::PluginProcess::initializePluginProcess): + (WebKit::PluginProcess::setMinimumLifetime): + (WebKit): + (WebKit::PluginProcess::minimumLifetimeTimerFired): + * PluginProcess/PluginProcess.h: + (PluginProcess): + + * Shared/Plugins/PluginProcessCreationParameters.cpp: + (WebKit::PluginProcessCreationParameters::encode): + (WebKit::PluginProcessCreationParameters::decode): + * Shared/Plugins/PluginProcessCreationParameters.h: + (PluginProcessCreationParameters): + + * UIProcess/Plugins/PluginProcessProxy.cpp: + (WebKit): + (WebKit::PluginProcessProxy::didFinishLaunching): + +2012-09-11 Jinwoo Song <jinwoo7.song@samsung.com> + + Deploy StringBuilder::appendNumber() and StringBuilder::appendLiteral() in more places + https://bugs.webkit.org/show_bug.cgi?id=96344 + + Reviewed by Benjamin Poulain. + + Use StringBuilder::appendNumber() instead of String::number(). Also deploy + StringBuilder::appendLiteral() instead of String::append() in the surrounding code. + + * Shared/WebMemorySampler.cpp: + (WebKit::WebMemorySampler::appendCurrentMemoryUsageToFile): + * UIProcess/InspectorServer/WebSocketServerConnection.cpp: + (WebKit::WebSocketServerConnection::sendHTTPResponseHeader): + * UIProcess/InspectorServer/qt/WebInspectorServerQt.cpp: + (WebKit::WebInspectorServer::inspectorUrlForPageID): + (WebKit::WebInspectorServer::buildPageList): + +2012-09-11 Anders Carlsson <andersca@apple.com> + + Fix speling error in comment. + + * WebProcess/Plugins/Netscape/NetscapePlugin.cpp: + (WebKit::isTransparentSilverlightBackgroundValue): + +2012-09-11 Raphael Kubo da Costa <rakuco@webkit.org> + + [EFL] Rewrite the EFL-related Find modules + https://bugs.webkit.org/show_bug.cgi?id=95237 + + Reviewed by Kenneth Rohde Christiansen. + + * CMakeLists.txt: Stop setting the LINK_FLAGS property. + * PlatformEfl.cmake: Add libraries and include directories for + each Enlightenment Foundation Library used by the port. + +2012-09-11 Christophe Dumez <christophe.dumez@intel.com> + + [WK2][WKTR] TestRunner needs to implement setApplicationCacheOriginQuota + https://bugs.webkit.org/show_bug.cgi?id=96379 + + Reviewed by Kenneth Rohde Christiansen. + + Add Bundle C API to set the application cache quota for a + given security origin. This is needed by WebKitTestRunner + to implement setApplicationCacheOriginQuota(). + + * WebProcess/InjectedBundle/API/c/WKBundle.cpp: + (WKBundleSetApplicationCacheOriginQuota): + * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h: + * WebProcess/InjectedBundle/InjectedBundle.cpp: + (WebKit::InjectedBundle::setApplicationCacheOriginQuota): + (WebKit): + * WebProcess/InjectedBundle/InjectedBundle.h: + (InjectedBundle): + +2012-09-11 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> + + [WK2][WTR] WebKitTestRunner needs testRunner.setSpatialNavigationEnabled + https://bugs.webkit.org/show_bug.cgi?id=96269 + + Reviewed by Kenneth Rohde Christiansen. + + Added a new setter for spacial navigation enabling to Injected Bundle private API. + + * WebProcess/InjectedBundle/API/c/WKBundle.cpp: + (WKBundleSetSpatialNavigationEnabled): + * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h: + * WebProcess/InjectedBundle/InjectedBundle.cpp: + (WebKit::InjectedBundle::setSpatialNavigationEnabled): + (WebKit): + * WebProcess/InjectedBundle/InjectedBundle.h: + (InjectedBundle): + +2012-09-11 Marcelo Lira <marcelo.lira@openbossa.org> + + [Qt][WK2] Page loading status API lacks a status for intentionally stopped loading + https://bugs.webkit.org/show_bug.cgi?id=83062 + + Reviewed by Tor Arne Vestbø. + + When the loading of a page is intentionally interrupted, the loading + status is set to the new state LoadStoppedStatus. This reflects + reality more accurately because the page was not fully loaded + (a LoadSucceededStatus), and it wasn't an unexpected error + (a LoadFailedStatus). + + * UIProcess/API/qt/qquickwebview.cpp: + (QQuickWebViewPrivate::loadDidStop): + * UIProcess/API/qt/qquickwebview_p.h: + * UIProcess/API/qt/qquickwebview_p_p.h: + (QQuickWebViewPrivate): + * UIProcess/API/qt/tests/publicapi/tst_publicapi.cpp: + * UIProcess/API/qt/tests/qmltests/WebView/tst_loadUrl.qml: + * UIProcess/API/qt/tests/qmltests/common/TestWebView.qml: + * UIProcess/qt/QtWebPageLoadClient.cpp: + (WebKit::QtWebPageLoadClient::dispatchLoadStopped): + (WebKit): + (WebKit::QtWebPageLoadClient::dispatchLoadFailed): + * UIProcess/qt/QtWebPageLoadClient.h: + (QtWebPageLoadClient): + +2012-09-11 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> + + [Qt] Add a configure step to the Qt build system + + This allows building the Qt port using just 'qmake WebKit.pro'. Using + the build-webkit script is still supported, and will add slightly more + logic to the build, such as detecting the need for clean or incremental + builds. + + Internally, the build system now uses a new variable, WEBKIT_CONFIG, for + all things related to configuring the build, such as use/have/enable flags, + and these are translated to defines in default_post. Project files should + no longer check contains(DEFINES,...) to detect features, but use the new + enable?(), use?(), and have?() functions. The no_webkit1 and no_webkit2 + options have been translated into WEBKIT_CONFIG options as well, and can + be checked using build?(). + + Reviewed by Simon Hausmann. + + * Target.pri: + * UIProcess/API/qt/tests/tests.pri: + * WebKit2.pri: + * config.h: + +2012-09-11 Christophe Dumez <christophe.dumez@intel.com> + + [WK2][WKTR] TestRunner needs to implement clearApplicationCacheForOrigin + https://bugs.webkit.org/show_bug.cgi?id=96372 + + Reviewed by Kenneth Rohde Christiansen. + + Add Bundle C API to clear the application cache for a + given origin. This is needed by WebKitTestRunner to + implement clearApplicationCacheForOrigin(). + + * WebProcess/InjectedBundle/API/c/WKBundle.cpp: + (WKBundleClearApplicationCacheForOrigin): + * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h: + * WebProcess/InjectedBundle/InjectedBundle.cpp: + (WebKit::InjectedBundle::clearApplicationCacheForOrigin): + (WebKit): + * WebProcess/InjectedBundle/InjectedBundle.h: + (InjectedBundle): + +2012-09-11 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> + + [WK2][WTR] WebKitTestRunner needs layoutTestController.setMinimumTimerInterval + https://bugs.webkit.org/show_bug.cgi?id=96256 + + Reviewed by Kenneth Rohde Christiansen. + + Added new setter for minimum DOM timer interval to InjectedBundle private API. + + * WebProcess/InjectedBundle/API/c/WKBundle.cpp: + (WKBundleSetMinimumTimerInterval): + * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h: + * WebProcess/InjectedBundle/InjectedBundle.cpp: + (WebKit::InjectedBundle::setMinimumTimerInterval): + (WebKit): + * WebProcess/InjectedBundle/InjectedBundle.h: + (InjectedBundle): + +2012-09-11 Kangil Han <kangil.han@samsung.com> + + [WK2][EFL] Fix compile warnings when enable tiled backing store + https://bugs.webkit.org/show_bug.cgi?id=95342 + + Reviewed by Gyuyoung Kim. + + Fixed compile time warning messages when enable tiled backing store. + + * UIProcess/API/efl/ewk_view.cpp: + (ewk_view_accelerated_compositing_mode_enter): Fixed invalid use of 'EINA_SAFETY_ON_NULL_RETURN_VAL' since it used '!' ahead of evasGl value so it is always null. + * WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp: + (WebCore::CoordinatedGraphicsLayer::setChildren): Replaced 'int' i with 'unsigned' because its comparing value is 'size_t'. + * WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp: + (WebKit::LayerTreeCoordinator::renderNextFrame): Replaced 'int' i with 'unsigned' because its comparing value is 'size_t'. + (WebKit::LayerTreeCoordinator::beginContentUpdate): Replaced 'int' i with 'unsigned' because its comparing value is 'size_t'. + +2012-09-11 Byungwoo Lee <bw80.lee@samsung.com> + + [EFL][WK2] WKEinaSharedString needs a function to adopt eina stringshare. + https://bugs.webkit.org/show_bug.cgi?id=96201 + + Reviewed by Kenneth Rohde Christiansen. + + WKEinaSharedString needs a to adopt eina stringshare directly. + + With this adopt function, an instance that is directly created with + eina_stringshare_add() can be easily handled by WKEinaSharedString + without calling eina_stringshare_del() for preventing memory leak. + + * UIProcess/API/cpp/efl/WKEinaSharedString.cpp: + (WKEinaSharedString::adopt): + * UIProcess/API/cpp/efl/WKEinaSharedString.h: + * UIProcess/API/efl/tests/test_ewk2_eina_shared_string.cpp: + (TEST_F): + +2012-09-11 Andras Becsi <andras.becsi@nokia.com> + + [Qt][WK2] Fix the build with recent Qt5 + https://bugs.webkit.org/show_bug.cgi?id=96283 + + Reviewed by Simon Hausmann. + + We should not use deprecated Qt API because doing that results + in build failure since all the deprecated API was disabled + in qtbase (https://codereview.qt-project.org/#change,24890). + + * UIProcess/API/qt/qwebnavigationhistory.cpp: + (QWebNavigationListModel::roleNames): + (QWebNavigationListModel::reset): + * UIProcess/API/qt/qwebnavigationhistory_p.h: + * UIProcess/API/qt/tests/qrawwebview/tst_qrawwebview.cpp: + (WebView::load): + * UIProcess/qt/WebPopupMenuProxyQt.cpp: + (PopupMenuItemModel): + (WebKit::PopupMenuItemModel::PopupMenuItemModel): + (WebKit::PopupMenuItemModel::roleNames): + (WebKit): + +2012-09-11 Christophe Dumez <christophe.dumez@intel.com> + + WTR needs an implementation of applicationCacheDiskUsageForOrigin + https://bugs.webkit.org/show_bug.cgi?id=87188 + + Reviewed by Kenneth Rohde Christiansen. + + Add Bundle private C API to retrieve the application cache + usage for a specific security origin. This is needed by + WebKitTestRunner. + + * WebProcess/InjectedBundle/API/c/WKBundle.cpp: + (WKBundleGetAppCacheUsageForOrigin): + * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h: + * WebProcess/InjectedBundle/InjectedBundle.cpp: + (WebKit::InjectedBundle::appCacheUsageForOrigin): + (WebKit): + * WebProcess/InjectedBundle/InjectedBundle.h: + (InjectedBundle): + +2012-09-11 Zhigang Gong <zhigang.gong@linux.intel.com> + + [EFL][WK2] Add necessary include directory in WebKit2 + https://bugs.webkit.org/show_bug.cgi?id=95173 + + Unreviewed build fix. + + revision r126694: Move TextureMapperGL to use + GraphicsContext3D. modify the TextureMapperGL.h to include + GraphicsContext3D.h. And when enable TEXTURE_MAPPER, + file WebKit2/Shared/ShareableSurface.cpp will include + TextureMapperGL.h then depends on GraphicsContext3D.h + thus it need to add ANGLE director. As currently, this + problem only affect EFL platform, according to Gyuyoung Kim's + suggestion, we add this include dir into EFL private file + PlatformEfl.cmake. Otherwise, the build will fail. + + To trigger this problem by using the following command: + ./Tools/Scripts/build-webkit --efl --3d-rendering --tiled-backing-store + + * CMakeLists.txt: + +2012-09-10 Byungwoo Lee <bw80.lee@samsung.com> + + [EFL][WK2] Build warning : fix warning about extended initializer lists on EWK2UnitTestBase.cpp. + https://bugs.webkit.org/show_bug.cgi?id=95990 + + Reviewed by Gyuyoung Kim. + + Fix build warning about extended initializer lists only available with + -std=c++0x or -std=gnu++0x. + + * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp: + (EWK2UnitTest::ewk2UnitTestBrowserViewSmartClass): + (EWK2UnitTest): + (EWK2UnitTest::EWK2UnitTestBase::EWK2UnitTestBase): + +2012-09-10 Beth Dakin <bdakin@apple.com> + + https://bugs.webkit.org/show_bug.cgi?id=96158 + Need API to suppress scrollbar animations + -and corresponding- + <rdar://problem/12210972> + + Reviewed by Sam Weinig. + + Add suppressScrollbarAnimations as a WebCreationParameter. + * Shared/WebPageCreationParameters.h: + (WebPageCreationParameters): + + New API. Calls into the web process for the setter but not the + getter. + * UIProcess/API/C/WKPage.cpp: + (WKPageSetSuppressScrollbarAnimations): + (WKPageAreScrollbarAnimationsSuppressed): + * UIProcess/API/C/WKPage.h: + * UIProcess/WebPageProxy.cpp: + (WebKit::WebPageProxy::WebPageProxy): + (WebKit::WebPageProxy::setSuppressScrollbarAnimations): + (WebKit): + (WebKit::WebPageProxy::creationParameters): + * UIProcess/WebPageProxy.h: + (WebPageProxy): + (WebKit::WebPageProxy::areScrollbarAnimationsSuppressed): + * WebProcess/WebPage/WebPage.messages.in: + + Call into WebCore. + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::setSuppressScrollbarAnimations): + (WebKit): + * WebProcess/WebPage/WebPage.h: + (WebPage): + + This ScrollableArea area function is re-named by this patch in + WebCore. + * WebProcess/Plugins/PDF/BuiltInPDFView.h: + * WebProcess/Plugins/PDF/BuiltInPDFView.mm: + (WebKit::BuiltInPDFView::scrollbarsCanBeActive): + +2012-09-10 James Robinson <jamesr@chromium.org> + + Unreviewed, rolling out r127837. + http://trac.webkit.org/changeset/127837 + https://bugs.webkit.org/show_bug.cgi?id=93898 + + Broke ScrollingCoordinator on chromium + + * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm: + (WebKit::TiledCoreAnimationDrawingArea::updatePreferences): + +2012-09-10 Jer Noble <jer.noble@apple.com> + + Unreviewed; rolling out r128081. + http://trac.webkit.org/changeset/128081 + https://bugs.webkit.org/show_bug.cgi?id=96134 + + New test http/tests/media/video-donottrack.html fails to run on Apple test bots. + + * Shared/APIClientTraits.h: + * WebProcess/InjectedBundle/API/c/WKBundlePage.h: + * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp: + * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h: + (InjectedBundlePageLoaderClient): + * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: + * WebProcess/WebCoreSupport/WebFrameLoaderClient.h: + (WebFrameLoaderClient): + * WebProcess/qt/QtBuiltinBundlePage.cpp: + (WebKit::QtBuiltinBundlePage::QtBuiltinBundlePage): + +2012-09-07 Jon Lee <jonlee@apple.com> + + Update notifications to latest spec + https://bugs.webkit.org/show_bug.cgi?id=91726 + <rdar://problem/11910451> + + Reviewed by Alexey Proskuryakov. + + Expose lang and dir. + + * UIProcess/API/C/WKNotification.cpp: + (WKNotificationCopyLang): + (WKNotificationCopyDir): + * UIProcess/API/C/WKNotification.h: + * UIProcess/Notifications/WebNotification.cpp: + (WebKit::WebNotification::WebNotification): + * UIProcess/Notifications/WebNotification.h: + (WebKit::WebNotification::create): + (WebKit::WebNotification::lang): + (WebKit::WebNotification::dir): + (WebNotification): + * UIProcess/Notifications/WebNotificationManagerProxy.cpp: + (WebKit::WebNotificationManagerProxy::show): + * UIProcess/Notifications/WebNotificationManagerProxy.h: + (WebNotificationManagerProxy): + * UIProcess/WebPageProxy.cpp: + (WebKit::WebPageProxy::showNotification): + * UIProcess/WebPageProxy.h: + (WebPageProxy): + * UIProcess/WebPageProxy.messages.in: + * WebProcess/Notifications/WebNotificationManager.cpp: + (WebKit::WebNotificationManager::show): + +2012-09-10 Alexey Proskuryakov <ap@apple.com> + + Build fix. + + * UIProcess/WebContext.h: Added a default value for relatedPage argment - if + you don't have one, null is fine. + +2012-09-10 Alexey Proskuryakov <ap@apple.com> + + [WK2] Add an API to open a page in same process + https://bugs.webkit.org/show_bug.cgi?id=96306 + + Reviewed by Anders Carlsson. + + The name "related" inspired by <http://wiki.whatwg.org/wiki/Links_to_Unrelated_Browsing_Contexts>. + + * UIProcess/API/mac/WKView.h: Added an API. It's unwieldy, but I blame + WKBrowsingContextGroup, not the related view. + + * UIProcess/API/mac/WKViewPrivate.h: Matching SPI for clients that mostly use + C APIs. + + * UIProcess/API/mac/WKView.mm: + (-[WKView initWithFrame:processGroup:browsingContextGroup:]): Use new back-end + signature. + (-[WKView initWithFrame:processGroup:browsingContextGroup:relatedToView:]): + Get page from WKView, and call back-end. + (-[WKView initWithFrame:contextRef:pageGroupRef:]): Reimplement existing method + by calling new, more powerful one. + (-[WKView initWithFrame:contextRef:pageGroupRef:relatedToPage:]): Just one change, + pass relatedPage to the context. + + * UIProcess/WebContext.cpp: (WebKit::WebContext::createWebPage): If related page + is not null, use its process. + + * UIProcess/WebContext.h: (WebContext): Updated createWebPage signature. + +2012-09-10 Brady Eidson <beidson@apple.com> + + Javascript in foreground tabs should not wait synchronously for plug-ins to load + <rdar://problem/12067415> and https://bugs.webkit.org/show_bug.cgi?id=96167 + + Reviewed by Geoff Garen. + + Synchronously waiting for initialization to complete when javascript accesses the plug-in script object severely + reduces the effectiveness of having an asynchronous NPP_New. + + Such as with background tabs that have never been viewed, we already have cases where JS calls into the plug-in + element fail because we haven't bothered to initialize the plug-in. + + We get a huge win by expanding that to foreground tabs that simply haven't finished initializing their plug-ins. + + * WebProcess/Plugins/PluginView.cpp: + (WebKit::PluginView::scriptObject): If initialization is not complete just return 0 - They can get at the script object later. + + Remove the notion of "wait for asynchronous initialization" altogether: + * WebProcess/Plugins/Netscape/NetscapePlugin.h: + (NetscapePlugin): + * WebProcess/Plugins/PDF/BuiltInPDFView.h: + (BuiltInPDFView): + * WebProcess/Plugins/Plugin.h: + (Plugin): + * WebProcess/Plugins/PluginProxy.cpp: + * WebProcess/Plugins/PluginProxy.h: + (PluginProxy): + +2012-09-07 Jer Noble <jer.noble@apple.com> + + <audio> and <video> should send Do Not Track when appropriate + https://bugs.webkit.org/show_bug.cgi?id=96134 + + Reviewed by Eric Carlson. + + Add support for the shouldSendDoNotTrackHTTPHeader by passing the request + on to the WebFrameLoadDelegate. + + * Shared/APIClientTraits.cpp: Increment the interfaceSizes for + WKBundlePageLoaderClient by the value of the new functions. + * Shared/APIClientTraits.h: Ditto. + * WebProcess/InjectedBundle/API/c/WKBundlePage.h: Add a new API to + WKBundlePageLoaderClient and bump the version number. + * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp: + (WebKit::InjectedBundlePageLoaderClient::shouldSendDoNotTrackHTTPHeader): + Pass the question on to the client. + * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h: + * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: + (WebKit::WebFrameLoaderClient::shouldSendDoNotTrackHTTPHeader): + Pass the question on to the bundle. + * WebProcess/WebCoreSupport/WebFrameLoaderClient.h: + * WebProcess/qt/QtBuiltinBundlePage.cpp: + (WebKit::QtBuiltinBundlePage::QtBuiltinBundlePage): + Add an entry for the new function in the Qt loader client. + +2012-09-10 Carlos Garcia Campos <cgarcia@igalia.com> + + [SOUP] Don't convert to UTF-8 the suggestedFilename passed to Download::decideDestinationWithSuggestedFilename() + https://bugs.webkit.org/show_bug.cgi?id=96261 + + Reviewed by Martin Robinson. + + * WebProcess/Downloads/soup/DownloadSoup.cpp: + (WebKit::DownloadClient::didReceiveResponse): + +2012-09-10 Alexander Shalamov <alexander.shalamov@intel.com> + + [EFL][WK2] Add fullscreen enter / exit signals to the ewk_view API + https://bugs.webkit.org/show_bug.cgi?id=92362 + + Reviewed by Gyuyoung Kim. + + Handle WebFullScreenManagerProxy::enterFullScreen and exitFullScreen + methods, so that ewk_view could enter and exit fullscreen mode when requested. + Also, two callbacks were added to ewk_view API, so that UI could customise + behavior when fullscreen mode is requested, e.g. show security dialog. + + * UIProcess/API/efl/ewk_settings.cpp: + (ewk_settings_fullscreen_enabled_set): + (ewk_settings_fullscreen_enabled_get): + * UIProcess/API/efl/ewk_settings.h: + * UIProcess/API/efl/ewk_view.cpp: + (_ewk_view_initialize): + (ewk_view_full_screen_enter): + (ewk_view_full_screen_exit): + * UIProcess/API/efl/ewk_view.h: + * UIProcess/API/efl/ewk_view_private.h: + * UIProcess/API/efl/tests/test_ewk2_settings.cpp: + (TEST_F): + * UIProcess/API/efl/tests/test_ewk2_view.cpp: + (fullScreenCallback): + (checkFullScreenProperty): + (TEST_F): + * UIProcess/efl/WebFullScreenManagerProxyEfl.cpp: + (WebKit::WebFullScreenManagerProxy::enterFullScreen): + (WebKit::WebFullScreenManagerProxy::exitFullScreen): + +2012-09-10 Kevin Funk <kevin.funk@kdab.com> + + [Qt] Fix deprecation failures if QT_NO_DEPRECATED enabled + https://bugs.webkit.org/show_bug.cgi?id=96258 + + Reviewed by Simon Hausmann. + + Sync with latest changes in Qt5. + + * WebProcess/WebCoreSupport/qt/WebErrorsQt.cpp: + * WebProcess/qt/WebProcessQt.cpp: + +2012-09-10 Carlos Garcia Campos <cgarcia@igalia.com> + + [GTK] Sanitize the suggested filename when building the download destination URI + https://bugs.webkit.org/show_bug.cgi?id=96260 + + Reviewed by Gustavo Noronha Silva. + + The suggested filename returned by the server can contain + directory separators so that the filename would be interpreted as + a full path. + + * UIProcess/API/gtk/WebKitDownload.cpp: + (webkitDownloadDecideDestination): Convert any directory separator + contained in the suggested filename to an underscore. + +2012-09-10 Simon Hausmann <simon.hausmann@nokia.com> + + [Qt] Fix generation of forward headers for generated files in WebCore on Windows + https://bugs.webkit.org/show_bug.cgi?id=96245 + + Reviewed by Tor Arne Vestbø. + + We generate the forwarding header files of generated WebCore sources by using + mkdir to ensure the target directory exists, followed by + echo #include "..." > file.h. On Windows mkdir returns with an error if the + target directory exists. For us that is not an error, so work around it with + (mkdir path 2>nul || echo>nul) + + * DerivedSources.pri: + +2012-09-10 Allan Sandfeld Jensen <allan.jensen@nokia.com> + + [Qt][WK2] REGRESSION(r127861): It made one test fail and one test crash + https://bugs.webkit.org/show_bug.cgi?id=96243 + + Reviewed by Kenneth Rohde Christiansen. + + Skip the code if QClipboard is not available, and give WebCore a chance to handle the event first. + + * WebProcess/WebPage/WebPage.cpp: + (WebKit::handleMouseEvent): + * WebProcess/WebPage/qt/WebPageQt.cpp: + (WebKit::WebPage::handleMouseReleaseEvent): + +2012-09-10 Simon Hausmann <simon.hausmann@nokia.com> + + [Qt] WK2 build fixes for MSVC + https://bugs.webkit.org/show_bug.cgi?id=96248 + + Reviewed by Tor Arne Vestbø. + + MSVC is picky when it comes to the use of forward declaration and the use of + such forward declared types in templates. In these instances inline functions were + passed parameters in RefPtrs that were only forward declared, but at compile time + MSVC wants to know what type it is in order to completely instantiate RefPtr (which + needs to call the type destructor for example). Therefore this patch resolves a couple + of forward declarations with direct header file inclusions. + + * UIProcess/API/qt/raw/qrawwebview_p_p.h: + * UIProcess/InspectorServer/WebSocketServerClient.h: + * UIProcess/qt/QtPageClient.h: + +2012-09-10 Andras Becsi <andras.becsi@nokia.com> + + [Qt][WK2] QWebKitTest should retrieve the viewport state from the PageViewportController + https://bugs.webkit.org/show_bug.cgi?id=96106 + + Reviewed by Simon Hausmann. + + The functions in PageViewportControllerClientQt proxying the + viewport state values can be removed if QWebKitTest uses the + PageViewportController to retrieve these values. + + * UIProcess/API/qt/qquickwebview_p_p.h: + (QQuickWebViewPrivate::viewportController): + * UIProcess/API/qt/qwebkittest.cpp: + (QWebKitTest::viewport): + (QWebKitTest::devicePixelRatio): + (QWebKitTest::contentsScale): + * UIProcess/PageViewportController.h: + (WebKit::PageViewportController::currentContentsScale): + * UIProcess/qt/PageViewportControllerClientQt.cpp: + * UIProcess/qt/PageViewportControllerClientQt.h: + (PageViewportControllerClientQt): + +2012-09-10 Simon Hausmann <simon.hausmann@nokia.com> + + [WK2] Make WK2 C API headers compile in the Qt build on Windows + https://bugs.webkit.org/show_bug.cgi?id=96246 + + Reviewed by Kenneth Rohde Christiansen. + + WKBase.h and WKAPICast.h include files that are specific to the Safari/Windows + port if WIN32 or _WIN32 is defined. When building WebKit2 on Windows with Qt, we + do not want to include these files, as they define an API that is different to ours + (the view aspect differs). Therefore guard the inclusion with !defined(BUILDING_QT__) + + * Shared/API/c/WKBase.h: + * UIProcess/API/C/WKAPICast.h: + +2012-09-10 Kevin Funk <kevin.funk@kdab.com> + + Replace calls to QString::fromAscii which is deprecated in Qt5 + https://bugs.webkit.org/show_bug.cgi?id=96242 + + Reviewed by Simon Hausmann. + + Replace with QString::fromLatin1 which does the same. + + * UIProcess/API/qt/tests/qrawwebview/tst_qrawwebview.cpp: + +2012-09-10 Christophe Dumez <christophe.dumez@intel.com> + + [WK2] New fast/forms/number/number-interactive-validation-required.html fails + https://bugs.webkit.org/show_bug.cgi?id=95936 + + Reviewed by Kenneth Rohde Christiansen. + + Add WKPreference private API for manipulate the interactive form + validation setting. This is now needed by WebKitTestRunner. + + * Shared/WebPreferencesStore.h: + (WebKit): + * UIProcess/API/C/WKPreferences.cpp: + (WKPreferencesSetInteractiveFormValidationEnabled): + (WKPreferencesGetInteractiveFormValidationEnabled): + * UIProcess/API/C/WKPreferencesPrivate.h: + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::updatePreferences): + +2012-09-09 Sam Weinig <sam@webkit.org> + + Simplify WebKit2 XPC service backend now that I know it doesn't need to soft link WebKit2.framework + https://bugs.webkit.org/show_bug.cgi?id=96228 + + Reviewed by Dan Bernstein. + + We soft link the non-XPC service WebProcess backend to the WebKit2 framework to + ensure that we can close all the necessary file descriptors at launch, without + fear that we will be closing one we open while initializing WebKit2 or one of its + dependencies. Since we don't need to close file descriptors in the XPC service + backend, we don't need to soft link! While here, also do some cleanup and code + sharing. + + * UIProcess/Launcher/mac/ProcessLauncherMac.mm: + (WebKit::launchXPCService): + We don't need to send the framework executable path anymore (it was used for the + soft linking), but we do need the client identifier. + + * WebKit2.xcodeproj/project.pbxproj: + Add new files. Link the XPC service to WebKit2.framework. + + * WebKit2Service/MainMacService.mm: + Now that we don't have to soft link, just make this a stub that calls immediately + into the WebKit2 framework. + + * WebProcess/mac/WebProcessInitialization.h: Added. + * WebProcess/mac/WebProcessInitialization.mm: Added. + (WebKit::InitializeWebProcess): + Move initialization that is common between the XPC and non-XPC backends here. + + * WebProcess/mac/WebProcessMainMac.mm: + (WebKit::WebProcessMain): + Remove XPC backend related code. Use new shared InitializeWebProcess function. + + * WebProcess/mac/WebProcessXPCServiceMain.h: Added. + * WebProcess/mac/WebProcessXPCServiceMain.mm: Added. + (WebKit::WebKit2ServiceEventHandler): + (WebProcessXPCServiceMain): + Move XPC service backend initialization here. + +2012-09-09 Emil A Eklund <eae@chromium.org> + + Rename Node::getRect/getPixelSnappedRect and remove ContainerNode::getRect + https://bugs.webkit.org/show_bug.cgi?id=81413 + + Reviewed by David Hyatt. + + Update WebPage to call pixelSnappedBoundingBox. + + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::editorState): + +2012-09-08 Sam Weinig <sam@webkit.org> + + Switch to entering the sandbox directly from main(), rather than waiting for the initialization message + https://bugs.webkit.org/show_bug.cgi?id=96194 + + Reviewed by Dan Bernstein. + + * UIProcess/Launcher/mac/ProcessLauncherMac.mm: + (WebKit::ProcessLauncher::launchProcess): + Pass a client identifier to WebProcess as a command line argument + so that it can be used to create private temporary and cache directories. + + * WebProcess/WebProcess.h: + (WebProcess): + * WebProcess/mac/WebProcessMac.mm: + (WebKit::WebProcess::initializeSandbox): + (WebKit::WebProcess::platformInitializeWebProcess): + Expose the initializeSandbox() function and stop calling it from platformInitializeWebProcess() + since it is now going to be called from WebProcessMain. Also, move changing the current working + directory to sandbox initialization function and replace use of creation parameters with just + the client identifier. + + * WebProcess/com.apple.WebProcess.sb.in: + Add some new exceptions that come from entering the sandbox earlier in the AppKit + initialization process. Don't allow access to com.apple.coreservices.appleevents. + + * WebProcess/mac/WebProcessMainMac.mm: + (WebKit::WebProcessMainXPC): + (WebKit::WebProcessMain): + Enter the sandbox explicitly, not waiting until the initialization message. Also, + since we now have an extra parameter for the client identifier, make the WebProcess + launches the UIProcess code path work by extracting a client identifier from the + client executable path. + +2012-09-09 Patrick Gansterer <paroga@webkit.org> + + Make the String initialization on the function side of String::number() + https://bugs.webkit.org/show_bug.cgi?id=95940 + + Reviewed by Benjamin Poulain. + + * win/WebKit2.def: + * win/WebKit2CFLite.def: + +2012-09-09 Pierre Rossi <pierre.rossi@gmail.com> + + [WK2] expose element rect for color input type + https://bugs.webkit.org/show_bug.cgi?id=91664 + + Reviewed by Simon Hausmann. + + In the same way we do for select elements already. This allows placing the picker + in a sensible location. + + * UIProcess/API/efl/PageClientImpl.cpp: Update the function's signature. + (WebKit::PageClientImpl::createColorChooserProxy): Ditto. + * UIProcess/API/efl/PageClientImpl.h: Ditto. + (PageClientImpl): + * UIProcess/API/gtk/PageClientImpl.cpp: + (WebKit::PageClientImpl::createColorChooserProxy): Ditto. + * UIProcess/API/gtk/PageClientImpl.h: Ditto. + (PageClientImpl): + * UIProcess/API/mac/PageClientImpl.h: Ditto. + (PageClientImpl): + * UIProcess/API/mac/PageClientImpl.mm: + (WebKit::PageClientImpl::createColorChooserProxy): Ditto. + * UIProcess/API/qt/raw/qrawwebview.cpp: + (QRawWebViewPrivate::createColorChooserProxy): Ditto. + * UIProcess/API/qt/raw/qrawwebview_p_p.h: Ditto. + (QRawWebViewPrivate): + * UIProcess/PageClient.h: Ditto. + (PageClient): + * UIProcess/WebPageProxy.cpp: + (WebKit::WebPageProxy::showColorChooser): Compute the rect mapped to the current view's transform. + * UIProcess/WebPageProxy.h: + (WebPageProxy): + * UIProcess/WebPageProxy.messages.in: + * UIProcess/qt/QtPageClient.cpp: + (WebKit::QtPageClient::createColorChooserProxy): + * UIProcess/qt/QtPageClient.h: + (QtPageClient): + * UIProcess/qt/WebColorChooserProxyQt.cpp: + (ColorChooserContextObject): + (WebKit::ColorChooserContextObject::ColorChooserContextObject): + (WebKit::ColorChooserContextObject::elementRect): + (WebKit::ColorChooserContextObject::accept): + (WebKit::WebColorChooserProxyQt::WebColorChooserProxyQt): + * UIProcess/qt/WebColorChooserProxyQt.h: + (WebKit::WebColorChooserProxyQt::create): + (WebColorChooserProxyQt): + * UIProcess/win/WebView.cpp: + (WebKit::WebView::createColorChooserProxy): Update the function's signature. + * UIProcess/win/WebView.h: + (WebView): Ditto. + * WebProcess/WebCoreSupport/WebColorChooser.cpp: + (WebKit::WebColorChooser::WebColorChooser): + +2012-09-09 Simon Hausmann <simon.hausmann@nokia.com> + + [Qt] Add missing files to the WebKit2 build on Windows + https://bugs.webkit.org/show_bug.cgi?id=96177 + + Reviewed by Kenneth Rohde Christiansen. + + For the build on Windows we can re-use existing functionality from the Safari/Windows + build, such as the IPC implementation. + + * Target.pri: + +2012-09-09 Simon Hausmann <simon.hausmann@nokia.com> + + [WK2] Fix PLATFORM(WIN) vs. OS(WINDOWS) in various files + https://bugs.webkit.org/show_bug.cgi?id=96178 + + Reviewed by Kenneth Rohde Christiansen. + + PLATFORM(WIN) is used in various places, where it is safe to use OS(WINDOWS) to allow + the re-use of that code path in ports beyond Safari/Windows. + + * Platform/CoreIPC/BinarySemaphore.h: + (BinarySemaphore): + * Platform/CoreIPC/Connection.h: + (Connection): + * Platform/SharedMemory.h: + (Handle): + (SharedMemory): + * Platform/WorkQueue.h: + +2012-09-08 Jinwoo Song <jinwoo7.song@samsung.com> + + [EFL][WK2] Minibrowser crashes on right mouse click + https://bugs.webkit.org/show_bug.cgi?id=95955 + + Reviewed by Simon Hausmann. + + Make early return if the PageClient does not create a ContextMenuProxy. + + * UIProcess/WebPageProxy.cpp: + (WebKit::WebPageProxy::internalShowContextMenu): + +2012-09-08 Simon Hausmann <simon.hausmann@nokia.com> + + [Qt] Fix CoreIPC setup between ProcessLauncher and WebProcessMain on Windows + https://bugs.webkit.org/show_bug.cgi?id=96179 + + Reviewed by Kenneth Rohde Christiansen. + + * UIProcess/Launcher/qt/ProcessLauncherQt.cpp: + (WebKit::ProcessLauncher::launchProcess): Hide Unixy platform specific code + and includes behind appropriate platform #ifdefs and use + CoreIPC::Connection::createServerAndClientIdentifiers to set up the IPC pipes. + We also need to tell Windows about our intent of using the client handle in + the child web process. + * WebProcess/qt/WebProcessMainQt.cpp: + (WebKit::WebProcessMainQt): After retrieving the IPC identifier we call + WebKit::WebProcess::shared().initialize with it. That function actually + cares a CIPC::Connection::Identifier as argument, which happens to be an + int on Unix, but it's actually a HANDLE on Windows. Change the parameter + type according to and a reinterpret_cast from the converted unsigned integer, + similar to WebProcessMainWin.cpp. + +2012-09-08 Christophe Dumez <christophe.dumez@intel.com> + + [WK2] New fast/events/tab-focus-link-in-canvas fails from r126908 + https://bugs.webkit.org/show_bug.cgi?id=95329 + + Reviewed by Kenneth Rohde Christiansen. + + Add implementation for overriding the WebKitTabToLinksPreferenceKey + preference as well as the corresponding WKPreferences API that + is needed by WebKitTestRunner. + + * Shared/WebPreferencesStore.h: + (WebKit): + * UIProcess/API/C/WKPreferences.cpp: + (WKPreferencesSetTabToLinksEnabled): + (WKPreferencesGetTabToLinksEnabled): + * UIProcess/API/C/WKPreferencesPrivate.h: + * WebProcess/InjectedBundle/InjectedBundle.cpp: + (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner): + * WebProcess/WebPage/WebPage.h: + (WebKit::WebPage::setTabToLinksEnabled): + (WebKit::WebPage::tabToLinksEnabled): + +2012-09-07 Benjamin Poulain <bpoulain@apple.com> + + Rename the ustring() accessor to string() + https://bugs.webkit.org/show_bug.cgi?id=95919 + + Reviewed by Geoffrey Garen. + + * WebProcess/Plugins/Netscape/NPJSObject.cpp: + (WebKit::NPJSObject::enumerate): + +2012-09-06 Jeffrey Pfau <jpfau@apple.com> + + Extend third-party storage blocking API to optionally allow blocking all storage + https://bugs.webkit.org/show_bug.cgi?id=95915 + + Reviewed by Brady Eidson. + + Update WK2 API to use revised Settings API. + + * Shared/WebPreferencesStore.h: + (WebKit): + * UIProcess/API/C/WKAPICast.h: + (WebKit::toStorageBlockingPolicy): + (WebKit): + (WebKit::toAPI): + * UIProcess/API/C/WKPreferences.cpp: + (WKPreferencesSetStorageBlockingPolicy): + (WKPreferencesGetStorageBlockingPolicy): + * UIProcess/API/C/WKPreferences.h: + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::updatePreferences): + +2012-09-07 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com> + + [EFL] [WK2] Set theme for the inspector view + https://bugs.webkit.org/show_bug.cgi?id=96108 + + Reviewed by Kenneth Rohde Christiansen. + + Set the theme for the inspector view when it is created. + + * UIProcess/efl/WebInspectorProxyEfl.cpp: + (WebKit::WebInspectorProxy::platformCreateInspectorPage): + +2012-09-07 Christophe Dumez <christophe.dumez@intel.com> + + [EFL] Use same default minimum logical font size in DRT and WTR + https://bugs.webkit.org/show_bug.cgi?id=96116 + + Reviewed by Martin Robinson. + + Add private bundle C API to set the minimum logicial font + size setting. This is needed by WebKitTestRunner. + + * WebProcess/InjectedBundle/API/c/WKBundle.cpp: + (WKBundleSetMinimumLogicalFontSize): + * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h: + * WebProcess/InjectedBundle/InjectedBundle.cpp: + (WebKit::InjectedBundle::setMinimumLogicalFontSize): + (WebKit): + * WebProcess/InjectedBundle/InjectedBundle.h: + (InjectedBundle): + +2012-09-07 Allan Sandfeld Jensen <allan.jensen@nokia.com> + + Simplify hitTestResultAtPoint and nodesFromRect APIs + https://bugs.webkit.org/show_bug.cgi?id=95720 + + Reviewed by Antonio Gomes. + + Update calls to new API and update exported symbols. + + * WebProcess/InjectedBundle/InjectedBundleNavigationAction.cpp: + (WebKit::InjectedBundleNavigationAction::InjectedBundleNavigationAction): + * WebProcess/WebPage/WebPage.cpp: + (WebKit::handleContextMenuEvent): + (WebKit::WebPage::highlightPotentialActivation): Corrects the misplaced arguments while converting them. + (WebKit::WebPage::findZoomableAreaForPoint): + * WebProcess/WebPage/mac/WebPageMac.mm: + (WebKit::WebPage::characterIndexForPoint): + (WebKit::WebPage::performDictionaryLookupAtLocation): + (WebKit::WebPage::shouldDelayWindowOrderingEvent): + (WebKit::WebPage::acceptsFirstMouse): + * win/WebKit2.def: + * win/WebKit2CFLite.def: + +2012-09-07 Allan Sandfeld Jensen <allan.jensen@nokia.com> + + X11 Global Selection + https://bugs.webkit.org/show_bug.cgi?id=88238 + + Reviewed by Tony Chang. + + Implements the hooks for supporting global selections in Qt WebKit2. + + * WebProcess/WebCoreSupport/WebEditorClient.cpp: + (WebKit::WebEditorClient::respondToChangedSelection): + (WebKit::WebEditorClient::updateGlobalSelection): + (WebKit::WebEditorClient::supportsGlobalSelection): + * WebProcess/WebCoreSupport/WebEditorClient.h: + * WebProcess/WebCoreSupport/gtk/WebEditorClientGtk.cpp: + (WebKit::WebEditorClient::updateGlobalSelection): + * WebProcess/WebPage/WebPage.cpp: + (WebKit::handleMouseEvent): + * WebProcess/WebPage/WebPage.h: + (WebPage): + * WebProcess/WebPage/qt/WebPageQt.cpp: + (WebKit::WebPage::handleMouseReleaseEvent): + +2012-09-07 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> + + [WK2] APIClientTraits<WKPageLoaderClient> and APIClientTraits<WKBundlePageLoaderClient> are not initialized properly + https://bugs.webkit.org/show_bug.cgi?id=96079 + + Reviewed by Kenneth Rohde Christiansen. + + APIClientTraits<WKPageLoaderClient> was missing offset for version number 2 and + APIClientTraits<WKBundlePageLoaderClient> was missing offset for version number 3. + + * Shared/APIClientTraits.cpp: + (WebKit): + +2012-09-07 Eunmi Lee <eunmi15.lee@samsung.com> + + [EFL][WK2] Add APIs to enable or disable the mouse events of the ewk_view. + https://bugs.webkit.org/show_bug.cgi?id=88631 + + Reviewed by Gyuyoung Kim. + + We can turn on/off the mouse events of the ewk_view using the mouse + events enabling API. This API can be used when we want to turn off the + mouse events on the touchscreen device to process the touch events + instead of the mouse events. + + * UIProcess/API/efl/ewk_view.cpp: + (_Ewk_View_Private_Data): + (_Ewk_View_Private_Data::_Ewk_View_Private_Data): + (_ewk_view_smart_add): + (ewk_view_mouse_events_enabled_set): + (ewk_view_mouse_events_enabled_get): + * UIProcess/API/efl/ewk_view.h: + * UIProcess/API/efl/tests/test_ewk2_view.cpp: + (TEST_F): + +2012-09-07 Tim Horton <timothy_horton@apple.com> + + Add optional debug logging when we fall into/out of threaded scrolling + https://bugs.webkit.org/show_bug.cgi?id=93898 + <rdar://problem/12089098> + + Reviewed by Simon Fraser. + + Update the scrolling tree's scrollingPerformanceLoggingEnabled preference + before the early-return if we don't have layer debugging borders on. + + * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm: + (WebKit::TiledCoreAnimationDrawingArea::updatePreferences): + +2012-09-06 Jinwoo Song <jinwoo7.song@samsung.com> + + Deploy StringBuilder in more places in WebKit2 + https://bugs.webkit.org/show_bug.cgi?id=95924 + + Reviewed by Benjamin Poulain. + + Deploy StringBuilder to concatenate strings more efficiently. + + * Shared/WebMemorySampler.cpp: + (WebKit): + (WebKit::WebMemorySampler::WebMemorySampler): + (WebKit::WebMemorySampler::stop): + (WebKit::WebMemorySampler::writeHeaders): + (WebKit::WebMemorySampler::appendCurrentMemoryUsageToFile): + * Shared/WebMemorySampler.h: + (WebMemorySampler): + * WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp: + (WebKit::capitalizeRFC822HeaderFieldName): + * WebProcess/WebCoreSupport/WebContextMenuClient.cpp: + (WebKit::WebContextMenuClient::searchWithGoogle): + +2012-09-06 Ryuan Choi <ryuan.choi@samsung.com> + + [EFL][WK2] Add API unit tests for ewk_view_theme_set. + https://bugs.webkit.org/show_bug.cgi?id=94670 + + Reviewed by Gyuyoung Kim. + + Added unit tests for ewk_view_theme_set. + + * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestEnvironment.cpp: + (EWK2UnitTest::EWK2UnitTestEnvironment::pathForResource): + Added to get path of resource. + * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestEnvironment.h: + Ditto. + * UIProcess/API/efl/tests/resources/big_button_theme.edj: + Added test theme file which has text_confinement of button as + rel1 { ... offset : 150 8; } rel2 { ... offset : -150 -11; }. + * UIProcess/API/efl/tests/resources/empty_theme.edj: + Added test theme file which includes nothing. + * UIProcess/API/efl/tests/test_ewk2_view.cpp: + Added unit test for ewk_view_theme_set. + +2012-09-06 Csaba Osztrogonác <ossy@webkit.org> + + Move RenderView::setFixedPositionedObjectsNeedLayout to FrameView + https://bugs.webkit.org/show_bug.cgi?id=96017 + + Unreviewed Qt-WK2 buildfix after r127783. + + * WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp: + (WebKit::LayerTreeCoordinator::syncFixedLayers): + +2012-09-05 Alexey Proskuryakov <ap@apple.com> + + [WK2] Annotate multi-process FIXMEs with bug numbers + https://bugs.webkit.org/show_bug.cgi?id=95916 + + Reviewed by Eric Carlson. + + * UIProcess/WebContext.cpp: + (WebKit::WebContext::setProcessModel): Ensure that plug-in process is enabled. + Comments in WebPluginSiteDataManager said that it's required for multi-process. + (WebKit::WebContext::createNewWebProcess): Added a bug number. + (WebKit::WebContext::disconnectProcess): Ditto. + (WebKit::WebContext::createWebPage): Ditto. + (WebKit::WebContext::download): Ditto. + (WebKit::WebContext::getWebCoreStatistics): Ditto. + + * UIProcess/Plugins/WebPluginSiteDataManager.cpp: + (WebKit::WebPluginSiteDataManager::getSitesWithData): + (WebKit::WebPluginSiteDataManager::clearSiteData): + Removed FIXMEs - some ports haven't switched to plugin process yet, but that + doesn't stop others from having a multi-process model. Added an ASSERT to document + this requirement (in addition to the check in WebContext). + + * UIProcess/Downloads/DownloadProxy.cpp: + (WebKit::DownloadProxy::cancel): + (WebKit::DownloadProxy::didReceiveAuthenticationChallenge): + (WebKit::DownloadProxy::startTransfer): + * UIProcess/WebApplicationCacheManagerProxy.cpp: + (WebKit::WebApplicationCacheManagerProxy::getApplicationCacheOrigins): + (WebKit::WebApplicationCacheManagerProxy::deleteEntriesForOrigin): + (WebKit::WebApplicationCacheManagerProxy::deleteAllEntries): + * UIProcess/WebCookieManagerProxy.cpp: + (WebKit::WebCookieManagerProxy::getHostnamesWithCookies): + (WebKit::WebCookieManagerProxy::getHTTPCookieAcceptPolicy): + * UIProcess/WebDatabaseManagerProxy.cpp: + (WebKit::WebDatabaseManagerProxy::getDatabasesByOrigin): + (WebKit::WebDatabaseManagerProxy::getDatabaseOrigins): + (WebKit::WebDatabaseManagerProxy::deleteDatabaseWithNameForOrigin): + (WebKit::WebDatabaseManagerProxy::deleteDatabasesForOrigin): + (WebKit::WebDatabaseManagerProxy::deleteAllDatabases): + (WebKit::WebDatabaseManagerProxy::setQuotaForOrigin): + * UIProcess/WebIconDatabase.cpp: + (WebKit::WebIconDatabase::getLoadDecisionForIconURL): + (WebKit::WebIconDatabase::didFinishURLImport): + * UIProcess/WebKeyValueStorageManagerProxy.cpp: + (WebKit::WebKeyValueStorageManagerProxy::getKeyValueStorageOrigins): + (WebKit::WebKeyValueStorageManagerProxy::deleteEntriesForOrigin): + (WebKit::WebKeyValueStorageManagerProxy::deleteAllEntries): + * UIProcess/WebMediaCacheManagerProxy.cpp: + (WebKit::WebMediaCacheManagerProxy::getHostnamesWithMediaCache): + * UIProcess/WebResourceCacheManagerProxy.cpp: + (WebKit::WebResourceCacheManagerProxy::getCacheOrigins): + (WebKit::WebResourceCacheManagerProxy::clearCacheForOrigin): + (WebKit::WebResourceCacheManagerProxy::clearCacheForAllOrigins): + Added bug numbers. + +2012-09-06 Michael Saboff <msaboff@apple.com> + + WebKit2 IPC always sends strings using 16 bit data format + https://bugs.webkit.org/show_bug.cgi?id=95811 + + Reviewed by Benjamin Poulain. + + Changed string encoding to pass an 8bit flag and then send either 8 or 16 bit + character data. + + * Platform/CoreIPC/ArgumentCoders.cpp: + (CoreIPC::::encode): + (CoreIPC::decodeStringText): New templatized string creation and decoder method. + (CoreIPC::::decode): + +2012-09-06 Carlos Garcia Campos <cgarcia@igalia.com> + + [GTK] [WK2] Crash when navigating between pages + https://bugs.webkit.org/show_bug.cgi?id=95949 + + Reviewed by Martin Robinson. + + Do not trust isMainResource parameter in + webkitWebViewResourceLoadStarted(), because it's always true for + all subresources of pages loaded from the history cache. We can + simply assume that the first resource loaded for the main frame + is the main web view resource. + + * UIProcess/API/gtk/WebKitResourceLoadClient.cpp: + (didInitiateLoadForResource): + * UIProcess/API/gtk/WebKitWebView.cpp: + (webkitWebViewResourceLoadStarted): + * UIProcess/API/gtk/WebKitWebViewPrivate.h: + +2012-09-06 Balazs Kelemen <kbalazs@webkit.org> + + [WK2] Crash in WebPageProxy::showPopupMenu if PageClient does not implement createPopupMenuProxy + https://bugs.webkit.org/show_bug.cgi?id=95862 + + Reviewed by Simon Hausmann. + + Bail out early if the PageClient does not create a PopupMenuProxy for us. + + * UIProcess/WebPageProxy.cpp: + (WebKit::WebPageProxy::showPopupMenu): + +2012-09-06 Christophe Dumez <christophe.dumez@intel.com> + + [EFL][WK2] Provide implementation for WebPage::performDefaultBehaviorForKeyEvent() + https://bugs.webkit.org/show_bug.cgi?id=95943 + + Reviewed by Kenneth Rohde Christiansen. + + Provide implementation for WebPage::performDefaultBehaviorForKeyEvent() + in EFL WK2. + + * WebProcess/WebPage/efl/WebPageEfl.cpp: + (WebKit::WebPage::performDefaultBehaviorForKeyEvent): + +2012-09-06 Patrick Gansterer <paroga@webkit.org> + + Remove String::operator+=() from windows platform code + https://bugs.webkit.org/show_bug.cgi?id=95904 + + Reviewed by Benjamin Poulain. + + Use StringBuilder and operator+() to concatenate strings instead of operator+=(). + + * UIProcess/win/WebView.cpp: + (WebKit::imeCompositionArgumentNames): + +2012-09-06 Kihong Kwon <kihong.kwon@samsung.com> + + [CMake] Add notifications path to the WebKit2/CMakeLists.txt + https://bugs.webkit.org/show_bug.cgi?id=95843 + + Reviewed by Laszlo Gombos. + + Add WebCore/Modules/Notifications to the WebKit2_INCLUDE_DIRECTORIES of WebKit2/CMakeLists.txt. + There are some build errors when ENABLE_NOTIFICATIONS feature is enabled. + + * CMakeLists.txt: + +2012-09-06 Simon Hausmann <simon.hausmann@nokia.com> + + [Qt] Various small Windows / MSVC build fixes + https://bugs.webkit.org/show_bug.cgi?id=95934 + + Reviewed by Kenneth Rohde Christiansen. + + * Shared/LayerTreeContext.h: Include stdint.h due to the use of uint32_t as layer id. + * UIProcess/API/qt/qquickwebview_p.h: + (WebKit): Fix struct vs. class forward declaration mismatch, causing linking errors. + * UIProcess/API/qt/tests/bytearraytestdata.h: Remove export macro from internal test class + that is not used anymore. Using the export macro from a DLL when the code in question is not + part of the DLL results in the export macro expanding to dllimport, giving incorrect linkage + for the unit test. + * WebProcess/qt/WebProcessMainQt.cpp: + (WebKit::WebProcessMainQt): Removed explicit call to srandom(), which is not available on Windows. + The call appears to be unnecessary in the light of the WTF::initializeThreading() call below, which + in turn calls WTF::initializeRandomNumberGenerator(), which does the same thing already (and isn't + needed on Windows, as per comment in wtf/RandomNumberSeed.h) + +2012-09-06 Simon Hausmann <simon.hausmann@nokia.com> + + [Qt] Fix build with ANGLE on platforms that provide EGL/GLESv2 + https://bugs.webkit.org/show_bug.cgi?id=95965 + + Reviewed by Tor Arne Vestbø. + + Depend on ANGLE if necessary, due to the use WebCore types that pull in ANGLE + headers (GraphicsContext3D.h in particular). + + * Target.pri: + +2012-09-06 Andras Becsi <andras.becsi@nokia.com> + + [WK2] Make [Qt]ViewportHandler cross platform + https://bugs.webkit.org/show_bug.cgi?id=91257 + + Reviewed by Kenneth Rohde Christiansen and Simon Hausmann. + + Since QtViewportHandler includes behaviour that is not platform + specific together with hooks to the QtQuick API layer, a platform + independent implementation would allow other ports to use the + viewport controlling functionality provided. + + This patch removes QtViewportHandler and introduces a platform + independent PageViewportController class that is responsible + for handling requests from the web process (eg. content size + changes, viewport attributes changes and scroll position requests). + Requests from the web process are acted on by a platform specific + client class which implements the PageViewportControllerClient + interface which provides hooks to the platform specific API layer. + + The PageViewportController is also responsible to notify the web + process about changes in the viewport state (eg. viewport size, + visible rect, content scale and movement trajectory). + The client is responsible to delegate these UI changes to the + PageViewportController. + + For now only PageViewportControllerClientQt implements the client + interface besides providing other QQuick specific functionality + (gestures, animations, etc). + + * Target.pri: + * UIProcess/API/qt/qquickwebpage_p_p.h: + * UIProcess/API/qt/qquickwebview.cpp: + (QQuickWebViewPrivate::onComponentComplete): + (QQuickWebViewFlickablePrivate::~QQuickWebViewFlickablePrivate): + (QQuickWebViewFlickablePrivate::didChangeViewportProperties): + (QQuickWebViewFlickablePrivate::updateViewportSize): + (QQuickWebViewFlickablePrivate::pageDidRequestScroll): + (QQuickWebViewFlickablePrivate::didChangeContentsSize): + * UIProcess/API/qt/qquickwebview_p.h: + (WebKit): + * UIProcess/API/qt/qquickwebview_p_p.h: + (WebKit): + (QQuickWebViewPrivate::pageViewportControllerClient): + (QQuickWebViewPrivate): + (QQuickWebViewFlickablePrivate): + * UIProcess/API/qt/qwebkittest.cpp: + (QWebKitTest::viewport): + (QWebKitTest::devicePixelRatio): + (QWebKitTest::contentsScale): + * UIProcess/PageViewportController.cpp: Added. + (WebKit): + (WebKit::bound): + (WebKit::fuzzyCompare): + (WebKit::boundPosition): + (WebKit::ViewportUpdateDeferrer::ViewportUpdateDeferrer): + (WebKit::ViewportUpdateDeferrer::~ViewportUpdateDeferrer): + (WebKit::PageViewportController::PageViewportController): + (WebKit::PageViewportController::convertFromViewport): + (WebKit::PageViewportController::convertToViewport): + (WebKit::PageViewportController::innerBoundedContentsScale): + (WebKit::PageViewportController::outerBoundedContentsScale): + (WebKit::PageViewportController::didChangeContentsSize): + (WebKit::PageViewportController::pageDidRequestScroll): + (WebKit::PageViewportController::setViewportSize): + (WebKit::PageViewportController::setVisibleContentsRect): + (WebKit::PageViewportController::syncVisibleContents): + (WebKit::PageViewportController::didChangeViewportAttributes): + (WebKit::PageViewportController::suspendContent): + (WebKit::PageViewportController::resumeContent): + (WebKit::PageViewportController::positionRangeForContentAtScale): + * UIProcess/PageViewportController.h: Added. + (WebCore): + (WebKit): + (ViewportUpdateDeferrer): + (PageViewportController): + (WebKit::PageViewportController::~PageViewportController): + (WebKit::PageViewportController::hasSuspendedContent): + (WebKit::PageViewportController::hadUserInteraction): + (WebKit::PageViewportController::allowsUserScaling): + (WebKit::PageViewportController::contentsLayoutSize): + (WebKit::PageViewportController::devicePixelRatio): + (WebKit::PageViewportController::minimumContentsScale): + (WebKit::PageViewportController::maximumContentsScale): + (WebKit::PageViewportController::setHadUserInteraction): + * UIProcess/PageViewportControllerClient.h: Added. + (WebKit): + (PageViewportControllerClient): + (WebKit::PageViewportControllerClient::PageViewportControllerClient): + (WebKit::PageViewportControllerClient::~PageViewportControllerClient): + * UIProcess/qt/PageViewportControllerClientQt.cpp: Added. + (WebKit): + (WebKit::PageViewportControllerClientQt::PageViewportControllerClientQt): + (WebKit::PageViewportControllerClientQt::ScaleAnimation::updateCurrentValue): + (WebKit::PageViewportControllerClientQt::~PageViewportControllerClientQt): + (WebKit::PageViewportControllerClientQt::setContentRectVisiblePositionAtScale): + (WebKit::PageViewportControllerClientQt::animateContentRectVisible): + (WebKit::PageViewportControllerClientQt::flickMoveStarted): + (WebKit::PageViewportControllerClientQt::flickMoveEnded): + (WebKit::PageViewportControllerClientQt::pageItemPositionChanged): + (WebKit::PageViewportControllerClientQt::scaleAnimationStateChanged): + (WebKit::PageViewportControllerClientQt::touchBegin): + (WebKit::PageViewportControllerClientQt::touchEnd): + (WebKit::PageViewportControllerClientQt::focusEditableArea): + (WebKit::PageViewportControllerClientQt::zoomToAreaGestureEnded): + (WebKit::PageViewportControllerClientQt::nearestValidVisibleContentsRect): + (WebKit::PageViewportControllerClientQt::setContentsPosition): + (WebKit::PageViewportControllerClientQt::setContentsScale): + (WebKit::PageViewportControllerClientQt::setContentsRectToNearestValidBounds): + (WebKit::PageViewportControllerClientQt::didResumeContent): + (WebKit::PageViewportControllerClientQt::allowsUserScaling): + (WebKit::PageViewportControllerClientQt::devicePixelRatio): + (WebKit::PageViewportControllerClientQt::minimumContentsScale): + (WebKit::PageViewportControllerClientQt::maximumContentsScale): + (WebKit::PageViewportControllerClientQt::currentContentsScale): + (WebKit::PageViewportControllerClientQt::contentsLayoutSize): + (WebKit::PageViewportControllerClientQt::scrollAnimationActive): + (WebKit::PageViewportControllerClientQt::panGestureActive): + (WebKit::PageViewportControllerClientQt::panGestureStarted): + (WebKit::PageViewportControllerClientQt::panGestureRequestUpdate): + (WebKit::PageViewportControllerClientQt::panGestureEnded): + (WebKit::PageViewportControllerClientQt::panGestureCancelled): + (WebKit::PageViewportControllerClientQt::scaleAnimationActive): + (WebKit::PageViewportControllerClientQt::cancelScrollAnimation): + (WebKit::PageViewportControllerClientQt::interruptScaleAnimation): + (WebKit::PageViewportControllerClientQt::pinchGestureActive): + (WebKit::PageViewportControllerClientQt::pinchGestureStarted): + (WebKit::PageViewportControllerClientQt::pinchGestureRequestUpdate): + (WebKit::PageViewportControllerClientQt::pinchGestureEnded): + (WebKit::PageViewportControllerClientQt::pinchGestureCancelled): + (WebKit::PageViewportControllerClientQt::visibleContentsRect): + (WebKit::PageViewportControllerClientQt::didChangeContentsSize): + (WebKit::PageViewportControllerClientQt::didChangeVisibleContents): + (WebKit::PageViewportControllerClientQt::didChangeViewportAttributes): + (WebKit::PageViewportControllerClientQt::updateViewportController): + (WebKit::PageViewportControllerClientQt::scaleContent): + (WebKit::PageViewportControllerClientQt::viewportScaleForRect): + * UIProcess/qt/PageViewportControllerClientQt.h: Added. + (WebKit): + (PageViewportControllerClientQt): + (WebKit::PageViewportControllerClientQt::setController): + (ScaleAnimation): + (WebKit::PageViewportControllerClientQt::ScaleAnimation::ScaleAnimation): + (WebKit::PageViewportControllerClientQt::ScaleStackItem::ScaleStackItem): + (ScaleStackItem): + * UIProcess/qt/QtGestureRecognizer.cpp: + (WebKit::QtGestureRecognizer::viewportController): + * UIProcess/qt/QtGestureRecognizer.h: + (WebKit): + * UIProcess/qt/QtPanGestureRecognizer.cpp: + (WebKit::QtPanGestureRecognizer::update): + (WebKit::QtPanGestureRecognizer::finish): + (WebKit::QtPanGestureRecognizer::cancel): + * UIProcess/qt/QtPinchGestureRecognizer.cpp: + (WebKit::QtPinchGestureRecognizer::update): + (WebKit::QtPinchGestureRecognizer::finish): + (WebKit::QtPinchGestureRecognizer::cancel): + * UIProcess/qt/QtViewportHandler.cpp: Removed. + * UIProcess/qt/QtWebPageEventHandler.cpp: + (WebKit::QtWebPageEventHandler::QtWebPageEventHandler): + (WebKit::QtWebPageEventHandler::setViewportController): + (WebKit::QtWebPageEventHandler::inputPanelVisibleChanged): + (WebKit::QtWebPageEventHandler::handleInputEvent): + (WebKit::QtWebPageEventHandler::doneWithTouchEvent): + (WebKit::QtWebPageEventHandler::didFindZoomableArea): + * UIProcess/qt/QtWebPageEventHandler.h: + (WebKit): + (QtWebPageEventHandler): + (WebKit::QtWebPageEventHandler::viewportController): + +2012-09-06 Ryuan Choi <ryuan.choi@samsung.com> + + [EFL][WK2] WebMemorySampler.cpp is included twice. + https://bugs.webkit.org/show_bug.cgi?id=95910 + + Reviewed by Kentaro Hara. + + Now WebMemorySampler.cpp is in CMakeLists.txt and PlatformEfl.cmake. + + * PlatformEfl.cmake: Removed WebMemorySampler.cpp from source lists. + +2012-09-05 Ryuan Choi <ryuan.choi@samsung.com> + + [EFL][WK2] Implement missing feature to support <select> tag + https://bugs.webkit.org/show_bug.cgi?id=95708 + + Reviewed by Gyuyoung Kim. + + Added missing APIs for select tag. + + This patch provides all functionality of current WebPopupItem to applications. + + * UIProcess/API/efl/ewk_popup_menu_item.cpp: + (_Ewk_Popup_Menu_Item): + (_Ewk_Popup_Menu_Item::_Ewk_Popup_Menu_Item): + (ewk_popup_menu_item_new): + (ewk_popup_menu_item_text_direction_get): + (ewk_popup_menu_item_text_direction_override_get): + (ewk_popup_menu_item_tooltip_get): + (ewk_popup_menu_item_accessibility_text_get): + (ewk_popup_menu_item_enabled_get): + (ewk_popup_menu_item_is_label_get): + (ewk_popup_menu_item_selected_get): + * UIProcess/API/efl/ewk_popup_menu_item.h: + * UIProcess/API/efl/ewk_popup_menu_item_private.h: + * UIProcess/API/efl/ewk_view.cpp: + (ewk_view_popup_menu_request): + * UIProcess/API/efl/tests/test_ewk2_view.cpp: + (checkBasicPopupMenuItem): + (showPopupMenu): Updated test case to cover new APIs. + (TEST_F): + +2012-09-05 Christophe Dumez <christophe.dumez@intel.com> + + [EFL][WK2] Provide implementation for WebProcess functions + https://bugs.webkit.org/show_bug.cgi?id=95857 + + Reviewed by Kenneth Rohde Christiansen. + + Rename WebProcessGtk to WebProcessSoup and reuse it in + EFL port since all the code is soup-related. We now + have a proper implementation for the WebProcess + platform methods. + + * GNUmakefile.list.am: + * PlatformEfl.cmake: + * WebProcess/efl/WebProcessEfl.cpp: Removed. + * WebProcess/efl/WebProcessMainEfl.cpp: + (WebKit::WebProcessMainEfl): Enable soup cache for the soup session similarly to GTK port. + * WebProcess/soup/WebProcessSoup.cpp: Renamed from Source/WebKit2/WebProcess/gtk/WebProcessGtk.cpp. + (WebKit): + (WebKit::getCacheDiskFreeSize): + (WebKit::getMemorySize): + (WebKit::WebProcess::platformSetCacheModel): + (WebKit::WebProcess::platformClearResourceCaches): + (WebKit::buildAcceptLanguages): + (WebKit::setSoupSessionAcceptLanguage): + (WebKit::languageChanged): + (WebKit::WebProcess::platformInitializeWebProcess): + (WebKit::WebProcess::platformTerminate): + +2012-09-05 Benjamin Poulain <bpoulain@apple.com> + + More fixes for String::operator+=() on Mac + https://bugs.webkit.org/show_bug.cgi?id=95880 + + Reviewed by Adam Barth. + + * UIProcess/WebInspectorProxy.cpp: + (WebKit::WebInspectorProxy::createInspectorPage): This is a legitimate use of append(), + there is no other concatenation outside that branch. + * WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp: + (WebKit::parseRFC822HeaderFields): Use string operators instead of +=. + * WebProcess/Plugins/Netscape/NetscapePlugin.cpp: + (WebKit::NetscapePlugin::userAgent): Another legitimate use of append(). + +2012-09-05 Alexey Proskuryakov <ap@apple.com> + + [WK2] Make visited link tracking work in multi-process mode + https://bugs.webkit.org/show_bug.cgi?id=95869 + + Reviewed by Dan Bernstein. + + * UIProcess/VisitedLinkProvider.h: + * UIProcess/VisitedLinkProvider.cpp: + (WebKit::VisitedLinkProvider::VisitedLinkProvider): m_webProcessHasVisitedLinkState + was making no sense in multi-process world, so it was let go. + (WebKit::VisitedLinkProvider::processDidFinishLaunching): Track new processes. + (WebKit::VisitedLinkProvider::processDidClose): Clean up pointers that are going + to become stale. + (WebKit::VisitedLinkProvider::pendingVisitedLinksTimerFired): Added comments. Fixed + a bug where we would churn table size in some cases. Added debug logging in failure + case. Re-implemented messaging code to work with multiple web processes. + + * UIProcess/WebContext.cpp: + (WebKit::WebContext::processDidFinishLaunching): Pass process proxy pointer to + m_visitedLinkProvider, as it now needs to track processes. + (WebKit::WebContext::disconnectProcess): Ditto. Also re-enabled visited link provider + cleanup in multi-process mode. + +2012-09-05 Brady Eidson <beidson@apple.com> + + Frequent crashes in PluginView::scriptObject under runtimeObjectCustomGetOwnPropertySlot + <rdar://problem/12142226> and https://bugs.webkit.org/show_bug.cgi?id=95026 + + Patch partially by Andras Becsi <andras.becsi@nokia.com> + + Reviewed by Andy Estes. + + If a plug-in fails to initialize then the m_plugin pointer is cleared out. + When accessing the script object it is appropriate to unconditionally null check m_plugin. + + * WebProcess/Plugins/PluginView.cpp: + (WebKit::PluginView::scriptObject): Null check m_plugin before trying to use it. + +2012-09-05 Christophe Dumez <christophe.dumez@intel.com> + + [EFL][WK2] Provide implementation for WebFrameNetworkingContext + https://bugs.webkit.org/show_bug.cgi?id=95826 + + Reviewed by Kenneth Rohde Christiansen. + + Remove EFL-specific and empty implementation for WebFrameNetworkingContext + and use the existing soup implementation instead. + + * PlatformEfl.cmake: + * WebProcess/WebCoreSupport/efl/WebFrameNetworkingContext.h: Removed. + +2012-09-05 Kaustubh Atrawalkar <kaustubh@motorola.com> + + [DRT] LTC:: Move printing related APIs from LayoutTestController to Internals + https://bugs.webkit.org/show_bug.cgi?id=92735 + + Reviewed by Hajime Morita. + + Move numberOfPages, pageProperty & pageSizeAndMarginsInPixels in Internals and remove duplicated code from DumprenderTree & WebkitTestRunner. + Add symbols for Mac Win builds for corresponding newly added APIs. + + * win/WebKit2.def: + * win/WebKit2CFLite.def: + +2012-09-05 Balazs Kelemen <kbalazs@webkit.org> + + [Qt] QRawWebViewPrivate does not initialize some members + https://bugs.webkit.org/show_bug.cgi?id=95709 + + Reviewed by Luiz Agostini. + + Don't miss initializing the bool flags. + + * UIProcess/API/qt/raw/qrawwebview.cpp: + (QRawWebViewPrivate::QRawWebViewPrivate): + +2012-09-04 Kangil Han <kangil.han@samsung.com> + + [WK2] Use explicit constructor in InjectedBundle. + https://bugs.webkit.org/show_bug.cgi?id=95746 + + Reviewed by Sam Weinig. + + Added explicit keyword in constructor of InjectedBundle in order to avoid implicit type conversion. + + * WebProcess/InjectedBundle/InjectedBundle.h: + (InjectedBundle): + +2012-09-03 Sam Weinig <sam@webkit.org> + + Part 1 of removing PlatformString.h, move remaining functions to new homes + https://bugs.webkit.org/show_bug.cgi?id=95702 + + Reviewed by Beth Dakin. + + * UIProcess/WebPageProxy.h: + Forward declare SharedBuffer. + +2012-09-04 Jeffrey Pfau <jpfau@apple.com> + + Make plugins respect third-party storage blocking setting + https://bugs.webkit.org/show_bug.cgi?id=94888 + + Reviewed by Brady Eidson. + + Plugins that are in a third-party context should be put into private browsing mode so their storage is temporary. + + * WebProcess/Plugins/PluginView.cpp: + (WebKit::PluginView::isPrivateBrowsingEnabled): Put the plugin into private browsing mode if it is in a third-party context. + (WebKit::PluginView::privateBrowsingStateChanged): Make sure a plugin doesn't leave private browsing mode if it's in a third-party context. + +2012-09-04 Pekka Vuorela <pvuorela@iki.fi> + + [Qt] Remove use of deprecated QInputMethod method + https://bugs.webkit.org/show_bug.cgi?id=95741 + + Reviewed by Simon Hausmann. + + Adapt from deprecated QInputMethod::visible() to isVisible(). + + * UIProcess/qt/QtWebPageEventHandler.cpp: + (WebKit::setInputPanelVisible): + (WebKit::QtWebPageEventHandler::inputPanelVisibleChanged): + +2012-09-04 Allan Sandfeld Jensen <allan.jensen@nokia.com> + + Allow child-frame content in hit-tests. + https://bugs.webkit.org/show_bug.cgi?id=95204 + + Reviewed by Antonio Gomes. + + Update symbols for the Windows build-system. + + * win/WebKit2.def: + * win/WebKit2CFLite.def: + +2012-09-04 Ryuan Choi <ryuan.choi@samsung.com> + + [EFL] Drop default theme concept + https://bugs.webkit.org/show_bug.cgi?id=94778 + + Reviewed by Gyuyoung Kim. + + * PlatformEfl.cmake: Removed DEFAULT_THEME_PATH definitions. + * UIProcess/API/efl/ewk_view.cpp: + (_ewk_view_initialize): Removed default theme concept. + * UIProcess/API/efl/ewk_view.h: + Updated doxygen document not to mention default theme. + +2012-09-03 Kangil Han <kangil.han@samsung.com> + + [WK2][WTR] Implement WebKitEnableCaretBrowsing attribute in testRunner.overridePreference + https://bugs.webkit.org/show_bug.cgi?id=95576 + + Reviewed by Maciej Stachowiak. + + Added a line of macro to implement WebKitEnableCaretBrowsing attribute in testRunner.overridePreference + + * WebProcess/InjectedBundle/InjectedBundle.cpp: + (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner): + +2012-09-03 Allan Sandfeld Jensen <allan.jensen@nokia.com> + + [Qt] Not all activated elements highlighted, but some frames are + https://bugs.webkit.org/show_bug.cgi?id=95683 + + Reviewed by Kenneth Rohde Christiansen. + + Use the new function Node::willRespondToMouseClickEvents to better determine if the element + can be tap-activated and avoid documents and frames completely. + + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::highlightPotentialActivation): + +2012-09-03 Eunmi Lee <eunmi15.lee@samsung.com> + + [EFL][WK2] Add ewk_settings. + https://bugs.webkit.org/show_bug.cgi?id=91206 + + Reviewed by Gyuyoung Kim. + + Add the ewk_settings which wraps the WKPreferencesRef. + The ewk_settings will be created by the ewk_view and it will be + destroyed when the ewk_view is destroyed. I make each view to have + its own group to make one ewk_settings sets preferences only for + one ewk_view. + The application can get the ewk_settings from ewk_view using + ewk_view_settings_get() API. + + * UIProcess/API/efl/EWebKit2.h: + * UIProcess/API/efl/ewk_settings.cpp: Added. + (ewk_settings_enable_scripts_set): + (ewk_settings_enable_scripts_get): + (ewk_settings_auto_load_images_set): + (ewk_settings_auto_load_images_get): + * UIProcess/API/efl/ewk_settings.h: Added. + * UIProcess/API/efl/ewk_settings_private.h: Added. + (_Ewk_Settings): + (_Ewk_Settings::_Ewk_Settings): + * UIProcess/API/efl/ewk_view.cpp: + (_Ewk_View_Private_Data): + (_ewk_view_initialize): + (ewk_view_settings_get): + * UIProcess/API/efl/ewk_view.h: + * UIProcess/API/efl/tests/test_ewk2_settings.cpp: Added. + (TEST_F): + * UIProcess/API/efl/tests/test_ewk2_view.cpp: + (TEST_F): + +2012-09-03 Allan Sandfeld Jensen <allan.jensen@nokia.com> + + Wheel-events fails temporarily after reload + https://bugs.webkit.org/show_bug.cgi?id=94934 + + Reviewed by Kenneth Rohde Christiansen. + + Set fixed visible content rect using visibleContentBounds instead of WebPage::size. Otherwise the + content rect will be incorrectly set to the entire document size, when resizesToContents is active. + + Test: UIProcess/API/qt/tests/qmltests/WebView/tst_wheelEventHandling.qml + + * UIProcess/API/qt/tests/qmltests/WebView/tst_wheelEventHandling.qml: + * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: + (WebKit::WebFrameLoaderClient::transitionToCommittedForNewPage): + +2012-09-03 Jinwoo Song <jinwoo7.song@samsung.com> + + [EFL] Use WebKitVersion.h to get version information + https://bugs.webkit.org/show_bug.cgi?id=95669 + + Reviewed by Gyuyoung Kim. + + Use WEBKIT_MAJOR_VERSION and WEBKIT_MINOR_VERSION + in the WebKitVersion.h + + * UIProcess/efl/WebPageProxyEfl.cpp: + (WebKit::WebPageProxy::standardUserAgent): + +2012-09-03 Christophe Dumez <christophe.dumez@intel.com> + + [EFL][WK2] Skip EWK2UnitTestBase.ewk_cookie_manager_permanent_storage API test + https://bugs.webkit.org/show_bug.cgi?id=95671 + + Reviewed by Kenneth Rohde Christiansen. + + Skip EWK2UnitTestBase.ewk_cookie_manager_permanent_storage + API test since it is flaky on the bots. + + * UIProcess/API/efl/tests/test_ewk2_cookie_manager.cpp: + (TEST_F): + +2012-09-02 Kenichi Ishibashi <bashi@chromium.org> + + WK2: Build failure on SnowLeopard after r127384 + https://bugs.webkit.org/show_bug.cgi?id=95665 + + Reviewed by Dan Bernstein. + + Add SandboxExtension::consumePermanently(const Handle&) for !ENABLE(WEB_PROCESS_SANDBOX) to fix link error. + + * Shared/SandboxExtension.h: + (WebKit::SandboxExtension::consumePermanently): + +2012-09-02 Ryuan Choi <ryuan.choi@samsung.com> + + [EFL][WK2] Keep activePopupMenu to call valueChangedForPopupMenu() outside showPopupMenu() + https://bugs.webkit.org/show_bug.cgi?id=95355 + + Reviewed by Gyuyoung Kim. + + Efl does not have a proper way to support nested loop so that applications + may change value after showPopupMenu() is finished. + + * UIProcess/API/efl/tests/test_ewk2_view.cpp: Improved test case to cover this bug. + (selectItemAfterDelayed): + (showPopupMenu): + * UIProcess/WebPageProxy.cpp: + (WebKit::WebPageProxy::showPopupMenu): + Guard with !PLATFORM(EFL) to keep the activePopupMenu valid to call valueChangedForPopupMenu + outside showPopupMenu(). + +2012-09-02 Byungwoo Lee <bw80.lee@gmail.com> + + [EFL] Add missing semicolon at the end of some lines. + https://bugs.webkit.org/show_bug.cgi?id=95640 + + Reviewed by Gyuyoung Kim. + + EWK_VIEW_PRIV_GET_OR_RETURN macro and other related macro can be used + without semicolon, because it ends with a semicolon or complete block. + This can make a human mistake about missing semicolon. + + Fixed the macros to require semicolon, and added missing semicolons. + + * UIProcess/API/efl/ewk_view.cpp: + (_ewk_view_smart_focus_in): + (_ewk_view_smart_focus_out): + (_ewk_view_smart_mouse_wheel): + (_ewk_view_smart_mouse_down): + (_ewk_view_smart_mouse_up): + (_ewk_view_smart_mouse_move): + (_ewk_view_smart_key_down): + (_ewk_view_smart_key_up): + (_ewk_view_initialize): + +2012-09-01 Sam Weinig <sam@webkit.org> + + Remove unused member variable from WebProcess. + + Rubber-stamped by Dan Bernstein. + + * WebProcess/WebProcess.h: + (WebProcess): + Remove m_applicationCachePathExtension. + +2012-09-01 Sam Weinig <sam@webkit.org> + + Use dynamic sandbox extension rather than sandbox parameters for paths provided by the UIProcess + https://bugs.webkit.org/show_bug.cgi?id=95651 + + Reviewed by Dan Bernstein. + + This is the first step to not relying on the initialization message to initialize + the sandbox. + + * Shared/SandboxExtension.h: + (SandboxExtension): + * Shared/mac/SandboxExtensionMac.mm: + (WebKit::SandboxExtension::consumePermanently): + Add static version of SandboxExtension::consumePermanently which takes a + SandboxExtension::Handle. There is no reason to create a SandboxExtension + just to consume it forever. + + * Shared/WebProcessCreationParameters.cpp: + (WebKit::WebProcessCreationParameters::encode): + (WebKit::WebProcessCreationParameters::decode): + * Shared/WebProcessCreationParameters.h: + (WebProcessCreationParameters): + Add SandboxExtension::Handles for paths we need access to, and remove + webInspectorBaseDirectory, which is unused. + + * UIProcess/WebContext.cpp: + (WebKit::WebContext::createNewWebProcess): + * UIProcess/mac/WebContextMac.mm: + (WebKit::WebContext::platformInitializeWebProcess): + Create SandboxExtension::Handles for paths we need access to, and move + getting the presenterApplicationPid to platformInitializeWebProcess, since + it is Mac only. + + * WebProcess/WebProcess.cpp: + (WebKit::WebProcess::initializeWebProcess): + Move setting the presenterApplicationPid to platformInitializeWebProcess. + + * WebProcess/mac/WebProcessMac.mm: + (WebKit::initializeSandbox): + (WebKit::WebProcess::platformInitializeWebProcess): + Replace the use of sandbox parameters for opening access for necessary paths + with permanent consumption of sandbox extensions. + + * WebProcess/com.apple.WebProcess.sb.in: + Remove sandbox rules that are now handled via extensions. + +2012-08-31 Byungwoo Lee <bw80.lee@samsung.com> + + Build warning : -Wformat on WebMemorySampler.cpp. + https://bugs.webkit.org/show_bug.cgi?id=95550 + + Reviewed by Darin Adler. + + Fix build warning. + Use String::number instead of String::format. + + * Shared/WebMemorySampler.cpp: + (WebKit::WebMemorySampler::appendCurrentMemoryUsageToFile): + +2012-08-31 Alexey Proskuryakov <ap@apple.com> + + [WK2] Use initial process in multi-process mode, too + https://bugs.webkit.org/show_bug.cgi?id=95612 + + Reviewed by Sam Weinig. + + * UIProcess/WebContext.cpp: + (WebKit::WebContext::WebContext): + (WebKit::WebContext::warmInitialProcess): + (WebKit::WebContext::disconnectProcess): + (WebKit::WebContext::createWebPage): + * UIProcess/WebContext.h: + Added a boolean telling whether the last (normally, the only) process in m_processes + is available for use in a new page. + +2012-08-31 Alexey Proskuryakov <ap@apple.com> + + [WK2] WebProcesses should not wait 60 seconds to close in multi-process mode + https://bugs.webkit.org/show_bug.cgi?id=95616 + + Reviewed by Darin Adler. + + * Shared/ChildProcess.cpp: (WebKit::ChildProcess::ChildProcess): + * Shared/ChildProcess.h: (WebKit::ChildProcess::setTerminationTimeout): + Expose a setter for timeout instead of taking it at construction time. If a derived + class doesn't call the setter, default to 0. + + * PluginProcess/PluginProcess.cpp: + (WebKit::PluginProcess::PluginProcess): + (WebKit::PluginProcess::initializePluginProcess): + Use timeout from initialization message. + + * WebProcess/WebProcess.cpp: + (WebKit::WebProcess::WebProcess): + (WebKit::WebProcess::initializeWebProcess): + Ditto. + + * Shared/Plugins/PluginProcessCreationParameters.cpp: + (WebKit::PluginProcessCreationParameters::encode): + (WebKit::PluginProcessCreationParameters::decode): + * Shared/Plugins/PluginProcessCreationParameters.h: + * Shared/WebProcessCreationParameters.cpp: + (WebKit::WebProcessCreationParameters::encode): + (WebKit::WebProcessCreationParameters::decode): + * Shared/WebProcessCreationParameters.h: + Funnel timeout across process boundary. + + * UIProcess/Plugins/PluginProcessProxy.cpp: (WebKit::PluginProcessProxy::didFinishLaunching): + Pass timeout as initialization message after launch. + + * UIProcess/WebContext.cpp: + (WebKit::WebContext::createNewWebProcess): Pass timeout as initialization message + (unlike plugin process proxy, web process proxy doesn't wait, and relies on the message + being queued). + (WebKit::WebContext::disconnectProcess): Skip invalidating global managers when + one process quits. We still need to do something, but running this code would just + result in assertion failures any time a page was closed. + +2012-08-31 Brady Eidson <beidson@apple.com> + + REGRESSION (r127252): incomplete repaint on Flash element after pinch to zoom + <rdar://problem/12217897> and https://bugs.webkit.org/show_bug.cgi?id=95607 + + Reviewed by Simon Fraser. + + * WebProcess/Plugins/PluginView.cpp: + (WebKit::PluginView::viewGeometryDidChange): Only give the window coordinate clip rect a chance + to override the boundsRect() if the page scale factor is 1. + +2012-08-31 Tony Chang <tony@chromium.org> + + Remove ENABLE_CSS3_FLEXBOX compile time flag + https://bugs.webkit.org/show_bug.cgi?id=95382 + + Reviewed by Ojan Vafai. + + Everyone is already enabling this by default and the spec has stablized. + + * Configurations/FeatureDefines.xcconfig: + +2012-08-31 Pratik Solanki <psolanki@apple.com> + + objc_msgSend and IMP should be cast appropriately before using + https://bugs.webkit.org/show_bug.cgi?id=95242 + + Reviewed by Benjamin Poulain. + + Follow on fix for Mac EWS - use objc-runtime.h instead of runtime.h so + that it finds the declaration for objc_msgSend. + + * UIProcess/API/mac/PDFViewController.mm: + +2012-08-31 Jon Lee <jonlee@apple.com> + + [Tests] Add basic tests to http/tests/notifications + https://bugs.webkit.org/show_bug.cgi?id=95493 + <rdar://problem/12209303> + + Reviewed by Alexey Proskuryakov. + + Simplify the passing of the permission policy to just a boolean instead of converting it + back and forth from the NotificationClient::Permission enum. + + * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h: Move the declaration to the section + of functions that are TestRunner SPI. + * WebProcess/InjectedBundle/InjectedBundle.cpp: + (WebKit::InjectedBundle::setWebNotificationPermission): Use a boolean. + * WebProcess/Notifications/NotificationPermissionRequestManager.cpp: + (WebKit::NotificationPermissionRequestManager::setPermissionLevelForTesting): + * WebProcess/Notifications/NotificationPermissionRequestManager.h: + (NotificationPermissionRequestManager): + + * win/WebKit2.vcproj: Add WKNotificationPermissionRequest.{h,cpp}. + * win/WebKit2Generated.make: Export WKNotificationPermissionRequest.h. + +2012-08-31 Balazs Kelemen <kbalazs@webkit.org> + + [Qt] ASSERT(m_useFixedLayout) in WebPage when using QRawWebView without setting fixed layout + https://bugs.webkit.org/show_bug.cgi?id=95557 + + Reviewed by Noam Rosenthal. + + Let QRawWebView work with non-fixed layout size. + + * UIProcess/API/qt/raw/qrawwebview.cpp: + (QRawWebView::setSize): Also put the member assigment into + the point where the new size is ensured to be committed. + +2012-08-31 Balazs Kelemen <kbalazs@webkit.org> + + [Qt] LayerTreeRenderer::callOnMainTread method name is misleading + https://bugs.webkit.org/show_bug.cgi?id=95558 + + Reviewed by Kenneth Rohde Christiansen. + + Fix the typo in the function name so callers will really call this + and not WTF::callOnMainThread. Renamed to dispatchOnMainThread to + make it clear that these things are not the same. + + * UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp: + (WebKit::LayerTreeRenderer::dispatchOnMainThread): + (WebKit::LayerTreeRenderer::flushLayerChanges): + (WebKit::LayerTreeRenderer::purgeGLResources): + * UIProcess/CoordinatedGraphics/LayerTreeRenderer.h: + (LayerTreeRenderer): + +2012-08-31 Brady Eidson <beidson@apple.com> + + REGRESSION (127047): Crash in PluginProxy::windowVisibilityChanged when changing tabs + <rdar://problem/12211180> and https://bugs.webkit.org/show_bug.cgi?id=95515 + + Reviewed by Dan Bernstein. + + Plug-ins created in background tabs don't get initialized until they first become visible, + so telling them they are now invisible leads to messaging on behalf of an uninitialized plug-in. + + Many other methods related to visibility and focus only call through if the plug-in is initialized, + so setWindowIsVisible should do the same. + + * WebProcess/Plugins/PluginView.cpp: + (WebKit::PluginView::setWindowIsVisible): Only tell initialized plug-ins of window visibility changes. + +2012-08-31 Milian Wolff <milian.wolff@kdab.com> + + [Qt] QNX does not support SOCK_SEQPACKET socket type for socketpair in ProcessLauncherQt + https://bugs.webkit.org/show_bug.cgi?id=95553 + + Reviewed by Simon Hausmann. + + Calling socketpair with SOCK_SEQPACKET socket type fails on QNX with an error 241 (EPROTOTYPE), + as can be seen by the following debug output: "Creation of socket failed with errno: 241". + A test app shows that SOCK_DGRAM works properly on QNX, thus use it instead of SOCK_SEQPACKET. + + * UIProcess/Launcher/qt/ProcessLauncherQt.cpp: + +2012-08-30 Mark Hahnenberg <mhahnenberg@apple.com> + + ~JSNPObject should call invalidate() if it hasn't been called already + https://bugs.webkit.org/show_bug.cgi?id=95497 + + Reviewed by Geoffrey Garen. + + Finalization is no longer eager, just like destruction, so the original intent behind + this ASSERT in ~JSNPObject is no longer relevant. Therefore, we can just call invalidate() + ourselves in ~JSNPObject. + + * WebProcess/Plugins/Netscape/JSNPObject.cpp: + (WebKit::JSNPObject::~JSNPObject): + +2012-08-30 Sam Weinig <sam@webkit.org> + + Allow dynamic mach-lookup extensions in the WebProcess + <rdar://problem/12207996> + + Reviewed by Gavin Barraclough. + + Like we allow file read/write dynamic sandbox extensions, we should allow + mach-lookup extensions. + + * WebProcess/com.apple.WebProcess.sb.in: + +2012-08-30 Geoffrey Garen <ggaren@apple.com> + + Use one object instead of two for closures, eliminating ScopeChainNode + https://bugs.webkit.org/show_bug.cgi?id=95501 + + Reviewed by Filip Pizlo. + + Mechanical changes to update for JSC interface change. + +2012-08-30 JungJik Lee <jungjik.lee@samsung.com> + + [EFL][WK2] Add WebMemorySampler feature. + https://bugs.webkit.org/show_bug.cgi?id=91214 + + Reviewed by Kenneth Rohde Christiansen. + + Add WebMemorySampler feature to EFL port. WebMemorySampler records memory usage of + WebProcess and UI Process and also it records application memory status in real time. + Included items on the result are JIT, JS heap, fastmalloc bytes and + application memory info from /proc/process_id/statm. + + * PlatformEfl.cmake: + * Shared/linux/WebMemorySamplerLinux.cpp: Added. + (WebKit): + (ApplicationMemoryStats): + (WebKit::nextToken): + (WebKit::appendKeyValuePair): + (WebKit::sampleMemoryAllocatedForApplication): + (WebKit::WebMemorySampler::processName): + (WebKit::WebMemorySampler::sampleWebKit): + (WebKit::WebMemorySampler::sendMemoryPressureEvent): + * UIProcess/API/efl/ewk_context.cpp: + (_Ewk_Context::_Ewk_Context): + +2012-08-30 Pratik Solanki <psolanki@apple.com> + + objc_msgSend and IMP should be cast appropriately before using + https://bugs.webkit.org/show_bug.cgi?id=95242 + + Reviewed by Benjamin Poulain. + + Use wtfObjcMsgSend and wtfCallIMP templates which do appropriate casts + to a function pointer with right types when calling objc_msgSend and an + IMP method directly. + + * UIProcess/API/mac/PDFViewController.mm: + (WebKit::PDFViewScrollView_scrollWheel): + +2012-08-30 Benjamin Poulain <bpoulain@apple.com> + + Replace JSC::UString by WTF::String + https://bugs.webkit.org/show_bug.cgi?id=95271 + + Reviewed by Geoffrey Garen. + + Update to code to switch from UString to String. + + * WebProcess/Plugins/Netscape/JSNPMethod.cpp: + (WebKit::JSNPMethod::finishCreation): + * WebProcess/Plugins/Netscape/JSNPMethod.h: + (WebKit::JSNPMethod::create): + (JSNPMethod): + * WebProcess/Plugins/Netscape/JSNPObject.cpp: + (WebKit::npIdentifierFromIdentifier): + * WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp: + (WebKit::NPRuntimeObjectMap::evaluate): + (WebKit::NPRuntimeObjectMap::moveGlobalExceptionToExecState): + +2012-08-29 Mark Hahnenberg <mhahnenberg@apple.com> + + JSNPObject doesn't always protect its data when calling into plugin code + https://bugs.webkit.org/show_bug.cgi?id=95394 + + Reviewed by Brady Eidson. + + We need to use NPRuntimeObjectMap::PluginProtector when calling into plugin code since + there's no telling what the plugin will do, including destroying itself. + + * WebProcess/Plugins/Netscape/JSNPObject.cpp: + (WebKit::JSNPObject::getOwnPropertySlot): + (WebKit::JSNPObject::getOwnPropertyDescriptor): + +2012-08-30 Mike Sierra <mike.sierra@nokia.com> + + [QT][WK2] webview API doc + https://bugs.webkit.org/show_bug.cgi?id=81701 + + Reviewed by Simon Hausmann. + + Various improvements and additions to the documentation of the QML WebView element. + + * UIProcess/API/qt/qquickwebview.cpp: + +2012-08-29 Kangil Han <kangil.han@samsung.com> + + [EFL][WK2] Replace PageClientImpl with ewk view in constructor of EflViewportHandler. + https://bugs.webkit.org/show_bug.cgi?id=95408 + + Reviewed by Gyuyoung Kim. + + To keep consistency of implementation, derived classes(from ewk view) should have view reference. + From this, derived classes would have less interference from changes that would happen in port specific classes, i.e. PageClientImpl. + + * UIProcess/API/efl/EflViewportHandler.cpp: + (WebKit::EflViewportHandler::EflViewportHandler): + (WebKit::EflViewportHandler::drawingArea): + (WebKit): + (WebKit::EflViewportHandler::updateViewportSize): + * UIProcess/API/efl/EflViewportHandler.h: + (WebKit::EflViewportHandler::create): + (EflViewportHandler): + * UIProcess/API/efl/ewk_view.cpp: + (_ewk_view_initialize): + +2012-08-29 Gyuyoung Kim <gyuyoung.kim@samsung.com> + + [WK2] Use ASCIILiteral hotness for DEFINE_STATIC_LOCAL string + https://bugs.webkit.org/show_bug.cgi?id=95318 + + Reviewed by Benjamin Poulain. + + As recommended by http://trac.webkit.org/wiki/EfficientStrings, + WebKit2 needs to use ASCIILiteral for the string of DEFINE_STATIC_LOCAL. + + * Shared/WebError.cpp: + (WebKit::WebError::webKitErrorDomain): + * Shared/WebPreferencesStore.cpp: + (WebPreferencesKey): + * UIProcess/InspectorServer/WebInspectorServer.cpp: + (WebKit::WebInspectorServer::didReceiveWebSocketUpgradeHTTPRequest): + * UIProcess/InspectorServer/qt/WebInspectorServerQt.cpp: + (WebKit::remoteInspectorPagePath): + * UIProcess/WebDatabaseManagerProxy.cpp: + (WebKit::WebDatabaseManagerProxy::originKey): + (WebKit::WebDatabaseManagerProxy::originQuotaKey): + (WebKit::WebDatabaseManagerProxy::originUsageKey): + (WebKit::WebDatabaseManagerProxy::databaseDetailsKey): + (WebKit::WebDatabaseManagerProxy::databaseDetailsNameKey): + (WebKit::WebDatabaseManagerProxy::databaseDetailsDisplayNameKey): + (WebKit::WebDatabaseManagerProxy::databaseDetailsExpectedUsageKey): + (WebKit::WebDatabaseManagerProxy::databaseDetailsCurrentUsageKey): + * UIProcess/WebPageProxy.cpp: + (WebKit::WebPageProxy::executeEditCommand): + * WebProcess/WebCoreSupport/WebEditorClient.cpp: + (WebKit::WebEditorClient::didBeginEditing): + (WebKit::WebEditorClient::respondToChangedContents): + (WebKit::WebEditorClient::respondToChangedSelection): + (WebKit::WebEditorClient::didEndEditing): + * WebProcess/WebProcess.cpp: + (WebKit::getWebCoreMemoryCacheStatistics): + +2012-08-29 Luciano Wolf <luciano.wolf@openbossa.org> + + [Qt][WK2] ApplicationCache LayoutTests failed + https://bugs.webkit.org/show_bug.cgi?id=69541 + + Reviewed by Kenneth Rohde Christiansen. + + Returns defaultDiskCacheDirectory when no cache directory was provided. + It's used by setOfflineWebApplicationCacheEnabled method that won't work + with an invalid cache directory. + + * UIProcess/qt/WebContextQt.cpp: + (WebKit::WebContext::applicationCacheDirectory): + +2012-08-29 José Dapena Paz <jdapena@igalia.com> + + [Gtk] Process Gtk 3.4 smooth scroll events properly. + https://bugs.webkit.org/show_bug.cgi?id=88070 + + Gtk 3.3.18 added smooth scroll events, adding a new scroll direction that + provides detailed delta information. + + Added GDK_SMOOTH_SCROLL_MASK to the events listened, and added + code to process properly the new direction GDK_SCROLL_SMOOTH and + its deltas. + + Reviewed by Martin Robinson. + + * Shared/gtk/WebEventFactory.cpp: + (WebKit::WebEventFactory::createWebWheelEvent): + * UIProcess/API/gtk/WebKitWebViewBase.cpp: + (webkitWebViewBaseRealize): + +2012-08-29 Brady Eidson <beidson@apple.com> + + REGRESSION: Not sending NPP_SetWindow is causing Flash to not throttle itself + <rdar://problem/12133021> and https://bugs.webkit.org/show_bug.cgi?id=95274 + + Reviewed by Sam Weinig. + + * UIProcess/API/mac/WKView.mm: + (-[WKView viewDidMoveToWindow]): Previously we'd only update window visibility when the window is hidden. + Now we also update window visibility when the window is shown. + + * WebProcess/Plugins/Netscape/NetscapePlugin.cpp: + (WebKit::NetscapePlugin::callSetWindowInvisible): Call set window with a manufactured empty clip rect to tell + the plug-in that it is complete hidden. + (WebKit): + * WebProcess/Plugins/Netscape/NetscapePlugin.h: + (NetscapePlugin): + * WebProcess/Plugins/Netscape/mac/NetscapePluginMac.mm: + (WebKit::NetscapePlugin::windowVisibilityChanged): Call "callSetWindow" or "callSetWindowInvisible" as appropriate. + + * WebProcess/Plugins/PluginView.cpp: + (WebKit::PluginView::setWindowIsVisible): Tell the plugin that its visibility changed. + (WebKit::PluginView::viewGeometryDidChange): Grab a clip rect that - although incorrect - at least is correct if + the PluginView is completely hidden. + +2012-08-29 Jon Lee <jonlee@apple.com> + + Build patch for Qt + + * Target.pri: Missing WKMutableArray.cpp. + +2012-08-29 Jon Lee <jonlee@apple.com> + + Build patch for Qt. + + * Target.pri: Export WKArray and WKMutableArray for Qt. + +2012-08-29 Jon Lee <jonlee@apple.com> + + Added missing exports for Windows. + + * win/WebKit2Generated.make: + +2012-08-29 Jon Lee <jonlee@apple.com> + + Windows build fix. + + * win/WebKit2Generated.make: Export WKNotificationManager.h. + +2012-08-29 Jon Lee <jonlee@apple.com> + + [WK2] Add SPI to retrieve internal IDs for web notifications + https://bugs.webkit.org/show_bug.cgi?id=95100 + <rdar://problem/12180208> + + Reviewed by Alexey Proskuryakov. + + This is work toward providing Mac support for web notifications in DRT and WTR (77969). + + Add function to retrieve the internal ID for a notification. This is needed by tests to support simulating + a user click on a notification. + + * DerivedSources.pri: Expose JSNotification.h as private header. + * WebProcess/InjectedBundle/API/c/WKBundle.cpp: + (WKBundleGetWebNotificationID): Calls into notification manager to get internal ID. + * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h: Add WKBundleGetWebNotificationID() to be able + retrieve notification ID. + * WebProcess/InjectedBundle/InjectedBundle.cpp: + (WebKit::InjectedBundle::webNotificationID): + (WebKit): + * WebProcess/InjectedBundle/InjectedBundle.h: + (InjectedBundle): + * WebProcess/Notifications/WebNotificationManager.cpp: + (WebKit::WebNotificationManager::notificationIDForTesting): + (WebKit): + * WebProcess/Notifications/WebNotificationManager.h: + (WebNotificationManager): + +2012-08-28 Martin Robinson <mrobinson@igalia.com> + + [GTK] Enable the edge distance anti-aliasing for accelerated compositing layers + https://bugs.webkit.org/show_bug.cgi?id=95272 + + Reviewed by No'am Rosenthal. + + Turn on edge-distance anti-aliasing for GTK+ WebKit2. This + improves the quality of layer rendering. + + * WebProcess/WebPage/gtk/LayerTreeHostGtk.cpp: + (WebKit::LayerTreeHostGtk::initialize): + +2012-08-28 Kangil Han <kangil.han@samsung.com> + + [WK2] Use explicit constructor in PageClientImpl. + https://bugs.webkit.org/show_bug.cgi?id=95170 + + Reviewed by Darin Adler. + + Added explicit keyword in constructor of PageClientImpl in order to avoid implicit type conversion. + + * UIProcess/API/gtk/PageClientImpl.h: + (PageClientImpl): + * UIProcess/API/mac/PageClientImpl.h: + (PageClientImpl): + +2012-08-28 Rik Cabanier <cabanier@adobe.com> + + Add ENABLE_CSS_COMPOSITING flag to WebKit2 project + https://bugs.webkit.org/show_bug.cgi?id=95227 + + Reviewed by Dirk Schulze. + + The WebKit2 project was not updated to compile with the CSS_COMPOSITING flag. + This caused crashes when the webkit2 code had to use that flag. + + * Configurations/FeatureDefines.xcconfig: + +2012-08-28 Sheriff Bot <webkit.review.bot@gmail.com> + + Unreviewed, rolling out r126914. + http://trac.webkit.org/changeset/126914 + https://bugs.webkit.org/show_bug.cgi?id=95239 + + it breaks everything and fixes nothing (Requested by pizlo on + #webkit). + + * Platform/CoreIPC/ArgumentCoders.h: + * Platform/CoreIPC/Connection.cpp: + (CoreIPC::Connection::SyncMessageState::getOrCreate): + (CoreIPC::Connection::waitForMessage): + (CoreIPC::Connection::processIncomingMessage): + * Platform/gtk/WorkQueueGtk.cpp: + (WorkQueue::registerEventSourceHandler): + (WorkQueue::unregisterEventSourceHandler): + * Platform/mac/WorkQueueMac.cpp: + (WorkQueue::unregisterMachPortEventHandler): + * Shared/Plugins/NPRemoteObjectMap.cpp: + (WebKit::NPRemoteObjectMap::pluginDestroyed): + * Shared/UserMessageCoders.h: + (WebKit::UserMessageEncoder::baseEncode): + * Shared/WebPreferencesStore.cpp: + (WebKit::valueForKey): + (WebKit::WebPreferencesStore::getBoolValueForKey): + * Shared/mac/WebCoreArgumentCodersMac.mm: + (CoreIPC::::decode): + * Shared/qt/ArgumentCodersQt.cpp: + (CoreIPC::::decode): + * Shared/soup/WebCoreArgumentCodersSoup.cpp: + (CoreIPC::::decode): + * UIProcess/API/efl/ewk_back_forward_list.cpp: + (_Ewk_Back_Forward_List::~_Ewk_Back_Forward_List): + * UIProcess/API/efl/ewk_context.cpp: + (_Ewk_Context::~_Ewk_Context): + * UIProcess/API/efl/ewk_view.cpp: + (_ewk_view_priv_loading_resources_clear): + * UIProcess/API/gtk/WebKitWebView.cpp: + (webkit_web_view_get_subresources): + * UIProcess/API/gtk/WebKitWebViewBase.cpp: + (webkitWebViewBaseContainerForall): + * UIProcess/API/mac/WKPrintingView.mm: + (-[WKPrintingView _expectedPreviewCallbackForRect:]): + (pageDidDrawToPDF): + (-[WKPrintingView _drawPreview:]): + * UIProcess/API/mac/WKView.mm: + (commandNameForSelector): + (-[WKView validateUserInterfaceItem:]): + * UIProcess/CoordinatedGraphics/CoordinatedBackingStore.cpp: + (WebKit::CoordinatedBackingStore::updateTile): + (WebKit::CoordinatedBackingStore::texture): + (WebKit::CoordinatedBackingStore::paintToTextureMapper): + (WebKit::CoordinatedBackingStore::commitTileOperations): + * UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.cpp: + (WebKit::LayerTreeCoordinatorProxy::updateTileForLayer): + * UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp: + (WebKit::LayerTreeRenderer::adjustPositionForFixedLayers): + (WebKit::LayerTreeRenderer::syncCanvas): + (WebKit::LayerTreeRenderer::setLayerChildren): + (WebKit::LayerTreeRenderer::setLayerFilters): + (WebKit::LayerTreeRenderer::setLayerState): + (WebKit::LayerTreeRenderer::assignImageToLayer): + * UIProcess/GeolocationPermissionRequestManagerProxy.cpp: + (WebKit::GeolocationPermissionRequestManagerProxy::invalidateRequests): + * UIProcess/InspectorServer/WebInspectorServer.cpp: + (WebKit::WebInspectorServer::~WebInspectorServer): + (WebKit::WebInspectorServer::registerPage): + * UIProcess/InspectorServer/WebSocketServerConnection.cpp: + (WebKit::WebSocketServerConnection::sendHTTPResponseHeader): + * UIProcess/InspectorServer/qt/WebInspectorServerQt.cpp: + (WebKit::WebInspectorServer::buildPageList): + * UIProcess/Notifications/NotificationPermissionRequestManagerProxy.cpp: + (WebKit::NotificationPermissionRequestManagerProxy::invalidateRequests): + * UIProcess/Plugins/PluginProcessProxy.cpp: + (WebKit::PluginProcessProxy::pluginProcessCrashedOrFailedToLaunch): + * UIProcess/WebContext.cpp: + (WebKit::createDictionaryFromHashMap): + * UIProcess/WebIconDatabase.cpp: + (WebKit::WebIconDatabase::didFinishURLImport): + * UIProcess/WebIntentData.cpp: + (WebKit::WebIntentData::extras): + * UIProcess/WebProcessProxy.cpp: + (WebKit::WebProcessProxy::checkURLReceivedFromWebProcess): + (WebKit::WebProcessProxy::addBackForwardItem): + (WebKit::WebProcessProxy::frameCountInPage): + * WebProcess/Geolocation/GeolocationPermissionRequestManager.cpp: + (WebKit::GeolocationPermissionRequestManager::cancelRequestForGeolocation): + (WebKit::GeolocationPermissionRequestManager::didReceiveGeolocationPermissionDecision): + * WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp: + (WebKit::InjectedBundleNodeHandle::getOrCreate): + * WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp: + (WebKit::InjectedBundleRangeHandle::getOrCreate): + * WebProcess/InjectedBundle/InjectedBundleIntent.cpp: + (WebKit::InjectedBundleIntent::extras): + * WebProcess/Notifications/WebNotificationManager.cpp: + (WebKit::WebNotificationManager::policyForOrigin): + (WebKit::WebNotificationManager::show): + (WebKit::WebNotificationManager::clearNotifications): + (WebKit::WebNotificationManager::removeNotificationFromContextMap): + * WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp: + (WebKit::NPRuntimeObjectMap::invalidate): + * WebProcess/Plugins/Netscape/NetscapePlugin.cpp: + (WebKit::NetscapePlugin::destroyStream): + (WebKit::NetscapePlugin::unscheduleTimer): + (WebKit::NetscapePlugin::frameDidFinishLoading): + (WebKit::NetscapePlugin::frameDidFail): + * WebProcess/Plugins/PluginView.cpp: + (WebKit::buildHTTPHeaders): + (WebKit::PluginView::~PluginView): + * WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp: + (WebCore::CoordinatedGraphicsLayer::layerByID): + * WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp: + (WebKit::LayerTreeCoordinator::adoptImageBackingStore): + (WebKit::LayerTreeCoordinator::releaseImageBackingStore): + * WebProcess/WebPage/WebBackForwardListProxy.cpp: + (WebKit::WebBackForwardListProxy::removeItem): + * WebProcess/WebPage/mac/WebPageMac.mm: + (WebKit::commandNameForSelectorName): + * WebProcess/WebProcess.cpp: + (WebKit::WebProcess::visitedLinkStateChanged): + (WebKit::WebProcess::allVisitedLinkStateChanged): + (WebKit::WebProcess::focusedWebPage): + (WebKit::WebProcess::createWebPage): + (WebKit::WebProcess::webPageGroup): + (WebKit::fromCountedSetToHashMap): + (WebKit::WebProcess::setTextCheckerState): + +2012-08-28 Alexey Proskuryakov <ap@apple.com> + + [WK2] Expose process model as API + https://bugs.webkit.org/show_bug.cgi?id=95228 + + Reviewed by Jon Honeycutt. + + * UIProcess/API/C/WKAPICast.h: + (WebKit::toProcessModel): + (WebKit::toAPI): + Convert ProcessModel values. + + * UIProcess/API/C/WKContext.cpp: + (WKContextSetProcessModel): + (WKContextGetProcessModel): + * UIProcess/API/C/WKContext.h: + * UIProcess/WebContext.cpp: (WebKit::WebContext::setProcessModel): + * UIProcess/WebContext.h: + Added a setter and a getter. Setting process model is only allowed when there are + no processes yet - that's checked with a CRASH to guarantee that clients using + production builds of WebKit2 don't misstep. + +2012-08-28 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org> + + Rename first/second to key/value in HashMap iterators + https://bugs.webkit.org/show_bug.cgi?id=82784 + + Reviewed by Eric Seidel. + + * Platform/CoreIPC/ArgumentCoders.h: + * Platform/CoreIPC/Connection.cpp: + (CoreIPC::Connection::SyncMessageState::getOrCreate): + (CoreIPC::Connection::waitForMessage): + (CoreIPC::Connection::processIncomingMessage): + * Platform/gtk/WorkQueueGtk.cpp: + (WorkQueue::registerEventSourceHandler): + (WorkQueue::unregisterEventSourceHandler): + * Platform/mac/WorkQueueMac.cpp: + (WorkQueue::unregisterMachPortEventHandler): + * Shared/Plugins/NPRemoteObjectMap.cpp: + (WebKit::NPRemoteObjectMap::pluginDestroyed): + * Shared/UserMessageCoders.h: + (WebKit::UserMessageEncoder::baseEncode): + * Shared/WebPreferencesStore.cpp: + (WebKit::valueForKey): + (WebKit::WebPreferencesStore::getBoolValueForKey): + * Shared/mac/WebCoreArgumentCodersMac.mm: + (CoreIPC::::decode): + * Shared/qt/ArgumentCodersQt.cpp: + (CoreIPC::::decode): + * Shared/soup/WebCoreArgumentCodersSoup.cpp: + (CoreIPC::::decode): + * UIProcess/API/efl/ewk_back_forward_list.cpp: + (_Ewk_Back_Forward_List::~_Ewk_Back_Forward_List): + * UIProcess/API/efl/ewk_context.cpp: + (_Ewk_Context::~_Ewk_Context): + * UIProcess/API/efl/ewk_view.cpp: + (_ewk_view_priv_loading_resources_clear): + * UIProcess/API/gtk/WebKitWebView.cpp: + (webkit_web_view_get_subresources): + * UIProcess/API/gtk/WebKitWebViewBase.cpp: + (webkitWebViewBaseContainerForall): + * UIProcess/API/mac/WKPrintingView.mm: + (-[WKPrintingView _expectedPreviewCallbackForRect:]): + (pageDidDrawToPDF): + (-[WKPrintingView _drawPreview:]): + * UIProcess/API/mac/WKView.mm: + (commandNameForSelector): + (-[WKView validateUserInterfaceItem:]): + * UIProcess/CoordinatedGraphics/CoordinatedBackingStore.cpp: + (WebKit::CoordinatedBackingStore::updateTile): + (WebKit::CoordinatedBackingStore::texture): + (WebKit::CoordinatedBackingStore::paintToTextureMapper): + (WebKit::CoordinatedBackingStore::commitTileOperations): + * UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.cpp: + (WebKit::LayerTreeCoordinatorProxy::updateTileForLayer): + * UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp: + (WebKit::LayerTreeRenderer::adjustPositionForFixedLayers): + (WebKit::LayerTreeRenderer::syncCanvas): + (WebKit::LayerTreeRenderer::setLayerChildren): + (WebKit::LayerTreeRenderer::setLayerFilters): + (WebKit::LayerTreeRenderer::setLayerState): + (WebKit::LayerTreeRenderer::assignImageToLayer): + * UIProcess/GeolocationPermissionRequestManagerProxy.cpp: + (WebKit::GeolocationPermissionRequestManagerProxy::invalidateRequests): + * UIProcess/InspectorServer/WebInspectorServer.cpp: + (WebKit::WebInspectorServer::~WebInspectorServer): + (WebKit::WebInspectorServer::registerPage): + * UIProcess/InspectorServer/WebSocketServerConnection.cpp: + (WebKit::WebSocketServerConnection::sendHTTPResponseHeader): + * UIProcess/InspectorServer/qt/WebInspectorServerQt.cpp: + (WebKit::WebInspectorServer::buildPageList): + * UIProcess/Notifications/NotificationPermissionRequestManagerProxy.cpp: + (WebKit::NotificationPermissionRequestManagerProxy::invalidateRequests): + * UIProcess/Plugins/PluginProcessProxy.cpp: + (WebKit::PluginProcessProxy::pluginProcessCrashedOrFailedToLaunch): + * UIProcess/WebContext.cpp: + (WebKit::createDictionaryFromHashMap): + * UIProcess/WebIconDatabase.cpp: + (WebKit::WebIconDatabase::didFinishURLImport): + * UIProcess/WebIntentData.cpp: + (WebKit::WebIntentData::extras): + * UIProcess/WebProcessProxy.cpp: + (WebKit::WebProcessProxy::checkURLReceivedFromWebProcess): + (WebKit::WebProcessProxy::addBackForwardItem): + (WebKit::WebProcessProxy::frameCountInPage): + * WebProcess/Geolocation/GeolocationPermissionRequestManager.cpp: + (WebKit::GeolocationPermissionRequestManager::cancelRequestForGeolocation): + (WebKit::GeolocationPermissionRequestManager::didReceiveGeolocationPermissionDecision): + * WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp: + (WebKit::InjectedBundleNodeHandle::getOrCreate): + * WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp: + (WebKit::InjectedBundleRangeHandle::getOrCreate): + * WebProcess/InjectedBundle/InjectedBundleIntent.cpp: + (WebKit::InjectedBundleIntent::extras): + * WebProcess/Notifications/WebNotificationManager.cpp: + (WebKit::WebNotificationManager::policyForOrigin): + (WebKit::WebNotificationManager::show): + (WebKit::WebNotificationManager::clearNotifications): + (WebKit::WebNotificationManager::removeNotificationFromContextMap): + * WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp: + (WebKit::NPRuntimeObjectMap::invalidate): + * WebProcess/Plugins/Netscape/NetscapePlugin.cpp: + (WebKit::NetscapePlugin::destroyStream): + (WebKit::NetscapePlugin::unscheduleTimer): + (WebKit::NetscapePlugin::frameDidFinishLoading): + (WebKit::NetscapePlugin::frameDidFail): + * WebProcess/Plugins/PluginView.cpp: + (WebKit::buildHTTPHeaders): + (WebKit::PluginView::~PluginView): + * WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp: + (WebCore::CoordinatedGraphicsLayer::layerByID): + * WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp: + (WebKit::LayerTreeCoordinator::adoptImageBackingStore): + (WebKit::LayerTreeCoordinator::releaseImageBackingStore): + * WebProcess/WebPage/WebBackForwardListProxy.cpp: + (WebKit::WebBackForwardListProxy::removeItem): + * WebProcess/WebPage/mac/WebPageMac.mm: + (WebKit::commandNameForSelectorName): + * WebProcess/WebProcess.cpp: + (WebKit::WebProcess::visitedLinkStateChanged): + (WebKit::WebProcess::allVisitedLinkStateChanged): + (WebKit::WebProcess::focusedWebPage): + (WebKit::WebProcess::createWebPage): + (WebKit::WebProcess::webPageGroup): + (WebKit::fromCountedSetToHashMap): + (WebKit::WebProcess::setTextCheckerState): + +2012-08-28 Jon Lee <jonlee@apple.com> + + [WK2] Bugs in maintenance of internal state when user decides whether to grant notification permissions + https://bugs.webkit.org/show_bug.cgi?id=95220 + <rdar://problem/12189895> + + Reviewed by Jessie Berlin. + + A couple of the maps maintained by the request manager should have been cleaned up when the user decided on + whether to grant a website permission to post notifications. + + Also, the web process' copy of the permissions was not updated appropriately. This meant that in the + permission callback, Notification.permission was not the same value as the permission value included as + the first parameter of the callback. + + This first surfaced as part of the work to bring Mac support for web notifications. I have a test that + will check for regressions in this area, once all of that has been checked in (bug 77969). + + * WebProcess/Notifications/NotificationPermissionRequestManager.cpp: + (WebKit::NotificationPermissionRequestManager::didReceiveNotificationPermissionDecision): + +2012-08-28 Jon Lee <jonlee@apple.com> + + [WK2] Add SPI for injected bundle to manually set permissions + https://bugs.webkit.org/show_bug.cgi?id=95127 + <rdar://problem/12182635> + + Reviewed by Jessie Berlin. + + This is work toward providing Mac support for web notifications in DRT and WTR (77969). + + Add support functions to WebKit2 which maintain the map of permissions to origins for web notifications. + For WebKit1 the map is managed by DumpRenderTree. + + * WebProcess/InjectedBundle/InjectedBundle.h: Add TestRunner SPI. + * WebProcess/InjectedBundle/InjectedBundle.cpp: + (WebKit::InjectedBundle::setWebNotificationPermission): + (WebKit::InjectedBundle::removeAllWebNotificationPermissions): + + * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h: Expose as WK API. Also, rearrange the ordering of the + functions so that it reflects the same order found in InjectedBundle.h. + * WebProcess/InjectedBundle/API/c/WKBundle.cpp: + + * WebProcess/Notifications/NotificationPermissionRequestManager.cpp: + (WebKit::NotificationPermissionRequestManager::setPermissionLevelForTesting): Manually set the permission + level for an origin. + (WebKit::NotificationPermissionRequestManager::removeAllPermissionsForTesting): + * WebProcess/Notifications/NotificationPermissionRequestManager.h: + (NotificationPermissionRequestManager): + * WebProcess/Notifications/WebNotificationManager.cpp: + (WebKit::WebNotificationManager::removeAllPermissionsForTesting): Clear the permission map. + * WebProcess/Notifications/WebNotificationManager.h: Promote didUpdateNotificationDecision message as public + function, so that NotificationPermissionRequestManager can update the permission map. + +2012-08-28 Christophe Dumez <christophe.dumez@intel.com> + + [EFL] WebKit EFL updates view on HTTP 204 response + https://bugs.webkit.org/show_bug.cgi?id=95199 + + Reviewed by Kenneth Rohde Christiansen. + + Ignore HTTP responses which have status code equal + to 204 (No Content). + + * UIProcess/API/efl/ewk_view_policy_client.cpp: + (decidePolicyForResponseCallback): + +2012-08-28 Zeno Albisser <zeno@webkit.org> + + LayerTreeCoordinatorProxy should use uint64_t for surface key. + https://bugs.webkit.org/show_bug.cgi?id=95175 + + GraphicsSurface tokens are of type uint64_t. + Therefore LayerTreeCoordinatorProxy must use the same type to + identify a GraphicsSurface/ShareableSurface. + + Reviewed by Noam Rosenthal. + + * Shared/ShareableSurface.h: + (WebKit::ShareableSurface::Handle::graphicsSurfaceToken): + * UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.cpp: + (WebKit::LayerTreeCoordinatorProxy::updateTileForLayer): + * UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.h: + (LayerTreeCoordinatorProxy): + +2012-08-28 Ryuan Choi <ryuan.choi@samsung.com> + + [EFL][WK2] Implement WebPopupMenuProxyEfl to support <select> + https://bugs.webkit.org/show_bug.cgi?id=88616 + + Reviewed by Gyuyoung Kim. + + Implemented popup menu proxy and interface for Efl. + + Applications should implement popup menu by overriding + smart class function to support select tag. + + * PlatformEfl.cmake: + * UIProcess/API/efl/EWebKit2.h: Included ewk_popup_menu_item.h + * UIProcess/API/efl/PageClientImpl.cpp: + (WebKit::PageClientImpl::createPopupMenuProxy): + * UIProcess/API/efl/ewk_popup_menu_item.cpp: Added. + (_Ewk_Popup_Menu_Item): + (_Ewk_Popup_Menu_Item::_Ewk_Popup_Menu_Item): + (ewk_popup_menu_item_new): + (ewk_popup_menu_item_free): + (ewk_popup_menu_item_type_get): Added API to retrieve type of item. + (ewk_popup_menu_item_text_get): Added API to retrieve text of item. + * UIProcess/API/efl/ewk_popup_menu_item.h: Added. + * UIProcess/API/efl/ewk_popup_menu_item_private.h: Added. + * UIProcess/API/efl/ewk_view.cpp: + (_Ewk_View_Private_Data): + (_Ewk_View_Private_Data::_Ewk_View_Private_Data): + (_Ewk_View_Private_Data::~_Ewk_View_Private_Data): + (ewk_view_popup_menu_request): Added to call popup_menu_show, smart class function. + (ewk_view_popup_menu_close): Added API to call popup_menu_hide, smart class function. + (ewk_view_popup_menu_select): Added API to change selected index. + * UIProcess/API/efl/ewk_view.h: + Added smart class function for applications to override. + * UIProcess/API/efl/ewk_view_private.h: + * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp: + (EWK2UnitTest::EWK2UnitTestBase::EWK2UnitTestBase): + (EWK2UnitTest::EWK2UnitTestBase::SetUp): + (EWK2UnitTest::EWK2UnitTestBase::loadUrlSync): + (EWK2UnitTest::EWK2UnitTestBase::waitUntilLoadFinished): + Extracted from loadUrlSync for tests using ewk_view_html_string_load to + share onLoadFinished. + * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h: + (EWK2UnitTest::EWK2UnitTestBase::ewkViewClass): + Added ewkViewClass to test smart methods such as popup_menu_show. + * UIProcess/API/efl/tests/test_ewk2_view.cpp: + (popup_menu_show): + (TEST_F): Added a test case for ewk_view_popup_menu_select and related codes. + * UIProcess/efl/WebPopupMenuProxyEfl.cpp: Added. + (WebKit): + (WebKit::WebPopupMenuProxyEfl::WebPopupMenuProxyEfl): + (WebKit::WebPopupMenuProxyEfl::showPopupMenu): + (WebKit::WebPopupMenuProxyEfl::hidePopupMenu): + (WebKit::WebPopupMenuProxyEfl::valueChanged): + * UIProcess/efl/WebPopupMenuProxyEfl.h: Added. + (WebPopupMenuProxyEfl): + (WebKit::WebPopupMenuProxyEfl::create): + +2012-08-27 Kangil Han <kangil.han@samsung.com> + + [EFL][WK2] Fix PageClientImpl layer violation + https://bugs.webkit.org/show_bug.cgi?id=94906 + + Reviewed by Gyuyoung Kim. + + Given WK2 hierarchy, current PageClientImpl has violated API layer by having WebPageProxy. + Subsequently, it has been given WebContext, static singleton object, in its argument unnecessarily. + Therefore, this patch moved WebPageProxy from PageClientImpl to Ewk_View_Private_Data. + Plus, WebContext was removed from PageClientImpl since it is not needed anymore. + As a result, EFL has same form of PageClientImpl with other ports, i.e. gtk+ and mac. + From API point of view, nothing has been changed because all things done locally. + + * UIProcess/API/efl/PageClientImpl.cpp: + (WebKit::PageClientImpl::PageClientImpl): + (WebKit::PageClientImpl::createDrawingAreaProxy): + * UIProcess/API/efl/PageClientImpl.h: + (WebKit::PageClientImpl::create): + (PageClientImpl): + * UIProcess/API/efl/ewk_view.cpp: + (_Ewk_View_Private_Data): + (_ewk_view_smart_focus_in): + (_ewk_view_smart_focus_out): + (_ewk_view_smart_mouse_wheel): + (_ewk_view_smart_mouse_down): + (_ewk_view_smart_mouse_up): + (_ewk_view_smart_mouse_move): + (_ewk_view_smart_key_down): + (_ewk_view_smart_key_up): + (_ewk_view_smart_calculate): + (_ewk_view_smart_color_set): + (_ewk_view_initialize): + (ewk_view_uri_update): + (ewk_view_uri_set): + (ewk_view_reload): + (ewk_view_reload_bypass_cache): + (ewk_view_stop): + (ewk_view_title_get): + (ewk_view_load_progress_get): + (ewk_view_scale_set): + (ewk_view_scale_get): + (ewk_view_device_pixel_ratio_set): + (ewk_view_device_pixel_ratio_get): + (ewk_view_theme_set): + (ewk_view_back): + (ewk_view_forward): + (ewk_view_intent_deliver): + (ewk_view_back_possible): + (ewk_view_forward_possible): + (ewk_view_html_string_load): + (ewk_view_page_get): + (ewk_view_setting_encoding_custom_get): + (ewk_view_setting_encoding_custom_set): + (ewk_view_text_find): + (ewk_view_text_find_highlight_clear): + +2012-08-27 Sheriff Bot <webkit.review.bot@gmail.com> + + Unreviewed, rolling out r126836. + http://trac.webkit.org/changeset/126836 + https://bugs.webkit.org/show_bug.cgi?id=95163 + + Broke all Apple ports, EFL, and Qt. (Requested by tkent on + #webkit). + + * Platform/CoreIPC/ArgumentCoders.h: + * Platform/CoreIPC/Connection.cpp: + (CoreIPC::Connection::SyncMessageState::getOrCreate): + (CoreIPC::Connection::waitForMessage): + (CoreIPC::Connection::processIncomingMessage): + * Platform/gtk/WorkQueueGtk.cpp: + (WorkQueue::registerEventSourceHandler): + (WorkQueue::unregisterEventSourceHandler): + * Platform/mac/WorkQueueMac.cpp: + (WorkQueue::unregisterMachPortEventHandler): + * Shared/Plugins/NPRemoteObjectMap.cpp: + (WebKit::NPRemoteObjectMap::pluginDestroyed): + * Shared/UserMessageCoders.h: + (WebKit::UserMessageEncoder::baseEncode): + * Shared/WebPreferencesStore.cpp: + (WebKit::valueForKey): + (WebKit::WebPreferencesStore::getBoolValueForKey): + * Shared/mac/WebCoreArgumentCodersMac.mm: + (CoreIPC::::decode): + * Shared/qt/ArgumentCodersQt.cpp: + (CoreIPC::::decode): + * Shared/soup/WebCoreArgumentCodersSoup.cpp: + (CoreIPC::::decode): + * UIProcess/API/efl/ewk_back_forward_list.cpp: + (_Ewk_Back_Forward_List::~_Ewk_Back_Forward_List): + * UIProcess/API/efl/ewk_context.cpp: + (_Ewk_Context::~_Ewk_Context): + * UIProcess/API/efl/ewk_view.cpp: + (_ewk_view_priv_loading_resources_clear): + * UIProcess/API/gtk/WebKitWebView.cpp: + (webkit_web_view_get_subresources): + * UIProcess/API/gtk/WebKitWebViewBase.cpp: + (webkitWebViewBaseContainerForall): + * UIProcess/API/mac/WKPrintingView.mm: + (-[WKPrintingView _expectedPreviewCallbackForRect:]): + (pageDidDrawToPDF): + (-[WKPrintingView _drawPreview:]): + * UIProcess/API/mac/WKView.mm: + (commandNameForSelector): + (-[WKView validateUserInterfaceItem:]): + * UIProcess/CoordinatedGraphics/CoordinatedBackingStore.cpp: + (WebKit::CoordinatedBackingStore::updateTile): + (WebKit::CoordinatedBackingStore::texture): + (WebKit::CoordinatedBackingStore::paintToTextureMapper): + (WebKit::CoordinatedBackingStore::commitTileOperations): + * UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.cpp: + (WebKit::LayerTreeCoordinatorProxy::updateTileForLayer): + * UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp: + (WebKit::LayerTreeRenderer::adjustPositionForFixedLayers): + (WebKit::LayerTreeRenderer::syncCanvas): + (WebKit::LayerTreeRenderer::setLayerChildren): + (WebKit::LayerTreeRenderer::setLayerFilters): + (WebKit::LayerTreeRenderer::setLayerState): + (WebKit::LayerTreeRenderer::assignImageToLayer): + * UIProcess/GeolocationPermissionRequestManagerProxy.cpp: + (WebKit::GeolocationPermissionRequestManagerProxy::invalidateRequests): + * UIProcess/InspectorServer/WebInspectorServer.cpp: + (WebKit::WebInspectorServer::~WebInspectorServer): + (WebKit::WebInspectorServer::registerPage): + * UIProcess/InspectorServer/WebSocketServerConnection.cpp: + (WebKit::WebSocketServerConnection::sendHTTPResponseHeader): + * UIProcess/InspectorServer/qt/WebInspectorServerQt.cpp: + (WebKit::WebInspectorServer::buildPageList): + * UIProcess/Notifications/NotificationPermissionRequestManagerProxy.cpp: + (WebKit::NotificationPermissionRequestManagerProxy::invalidateRequests): + * UIProcess/Plugins/PluginProcessProxy.cpp: + (WebKit::PluginProcessProxy::pluginProcessCrashedOrFailedToLaunch): + * UIProcess/WebContext.cpp: + (WebKit::createDictionaryFromHashMap): + * UIProcess/WebIconDatabase.cpp: + (WebKit::WebIconDatabase::didFinishURLImport): + * UIProcess/WebIntentData.cpp: + (WebKit::WebIntentData::extras): + * UIProcess/WebProcessProxy.cpp: + (WebKit::WebProcessProxy::checkURLReceivedFromWebProcess): + (WebKit::WebProcessProxy::addBackForwardItem): + (WebKit::WebProcessProxy::frameCountInPage): + * WebProcess/Geolocation/GeolocationPermissionRequestManager.cpp: + (WebKit::GeolocationPermissionRequestManager::cancelRequestForGeolocation): + (WebKit::GeolocationPermissionRequestManager::didReceiveGeolocationPermissionDecision): + * WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp: + (WebKit::InjectedBundleNodeHandle::getOrCreate): + * WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp: + (WebKit::InjectedBundleRangeHandle::getOrCreate): + * WebProcess/InjectedBundle/InjectedBundleIntent.cpp: + (WebKit::InjectedBundleIntent::extras): + * WebProcess/Notifications/WebNotificationManager.cpp: + (WebKit::WebNotificationManager::policyForOrigin): + (WebKit::WebNotificationManager::show): + (WebKit::WebNotificationManager::clearNotifications): + (WebKit::WebNotificationManager::removeNotificationFromContextMap): + * WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp: + (WebKit::NPRuntimeObjectMap::invalidate): + * WebProcess/Plugins/Netscape/NetscapePlugin.cpp: + (WebKit::NetscapePlugin::destroyStream): + (WebKit::NetscapePlugin::unscheduleTimer): + (WebKit::NetscapePlugin::frameDidFinishLoading): + (WebKit::NetscapePlugin::frameDidFail): + * WebProcess/Plugins/PluginView.cpp: + (WebKit::buildHTTPHeaders): + (WebKit::PluginView::~PluginView): + * WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp: + (WebCore::CoordinatedGraphicsLayer::layerByID): + * WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp: + (WebKit::LayerTreeCoordinator::adoptImageBackingStore): + (WebKit::LayerTreeCoordinator::releaseImageBackingStore): + * WebProcess/WebPage/WebBackForwardListProxy.cpp: + (WebKit::WebBackForwardListProxy::removeItem): + * WebProcess/WebPage/mac/WebPageMac.mm: + (WebKit::commandNameForSelectorName): + * WebProcess/WebProcess.cpp: + (WebKit::WebProcess::visitedLinkStateChanged): + (WebKit::WebProcess::allVisitedLinkStateChanged): + (WebKit::WebProcess::focusedWebPage): + (WebKit::WebProcess::createWebPage): + (WebKit::WebProcess::webPageGroup): + (WebKit::fromCountedSetToHashMap): + (WebKit::WebProcess::setTextCheckerState): + +2012-08-27 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org> + + Rename first/second to key/value in HashMap iterators + https://bugs.webkit.org/show_bug.cgi?id=82784 + + Reviewed by Eric Seidel. + + * Platform/CoreIPC/ArgumentCoders.h: + * Platform/CoreIPC/Connection.cpp: + (CoreIPC::Connection::SyncMessageState::getOrCreate): + (CoreIPC::Connection::waitForMessage): + (CoreIPC::Connection::processIncomingMessage): + * Platform/gtk/WorkQueueGtk.cpp: + (WorkQueue::registerEventSourceHandler): + (WorkQueue::unregisterEventSourceHandler): + * Platform/mac/WorkQueueMac.cpp: + (WorkQueue::unregisterMachPortEventHandler): + * Shared/Plugins/NPRemoteObjectMap.cpp: + (WebKit::NPRemoteObjectMap::pluginDestroyed): + * Shared/UserMessageCoders.h: + (WebKit::UserMessageEncoder::baseEncode): + * Shared/WebPreferencesStore.cpp: + (WebKit::valueForKey): + (WebKit::WebPreferencesStore::getBoolValueForKey): + * Shared/mac/WebCoreArgumentCodersMac.mm: + (CoreIPC::::decode): + * Shared/qt/ArgumentCodersQt.cpp: + (CoreIPC::::decode): + * Shared/soup/WebCoreArgumentCodersSoup.cpp: + (CoreIPC::::decode): + * UIProcess/API/efl/ewk_back_forward_list.cpp: + (_Ewk_Back_Forward_List::~_Ewk_Back_Forward_List): + * UIProcess/API/efl/ewk_context.cpp: + (_Ewk_Context::~_Ewk_Context): + * UIProcess/API/efl/ewk_view.cpp: + (_ewk_view_priv_loading_resources_clear): + * UIProcess/API/gtk/WebKitWebView.cpp: + (webkit_web_view_get_subresources): + * UIProcess/API/gtk/WebKitWebViewBase.cpp: + (webkitWebViewBaseContainerForall): + * UIProcess/API/mac/WKPrintingView.mm: + (-[WKPrintingView _expectedPreviewCallbackForRect:]): + (pageDidDrawToPDF): + (-[WKPrintingView _drawPreview:]): + * UIProcess/API/mac/WKView.mm: + (commandNameForSelector): + (-[WKView validateUserInterfaceItem:]): + * UIProcess/CoordinatedGraphics/CoordinatedBackingStore.cpp: + (WebKit::CoordinatedBackingStore::updateTile): + (WebKit::CoordinatedBackingStore::texture): + (WebKit::CoordinatedBackingStore::paintToTextureMapper): + (WebKit::CoordinatedBackingStore::commitTileOperations): + * UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.cpp: + (WebKit::LayerTreeCoordinatorProxy::updateTileForLayer): + * UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp: + (WebKit::LayerTreeRenderer::adjustPositionForFixedLayers): + (WebKit::LayerTreeRenderer::syncCanvas): + (WebKit::LayerTreeRenderer::setLayerChildren): + (WebKit::LayerTreeRenderer::setLayerFilters): + (WebKit::LayerTreeRenderer::setLayerState): + (WebKit::LayerTreeRenderer::assignImageToLayer): + * UIProcess/GeolocationPermissionRequestManagerProxy.cpp: + (WebKit::GeolocationPermissionRequestManagerProxy::invalidateRequests): + * UIProcess/InspectorServer/WebInspectorServer.cpp: + (WebKit::WebInspectorServer::~WebInspectorServer): + (WebKit::WebInspectorServer::registerPage): + * UIProcess/InspectorServer/WebSocketServerConnection.cpp: + (WebKit::WebSocketServerConnection::sendHTTPResponseHeader): + * UIProcess/InspectorServer/qt/WebInspectorServerQt.cpp: + (WebKit::WebInspectorServer::buildPageList): + * UIProcess/Notifications/NotificationPermissionRequestManagerProxy.cpp: + (WebKit::NotificationPermissionRequestManagerProxy::invalidateRequests): + * UIProcess/Plugins/PluginProcessProxy.cpp: + (WebKit::PluginProcessProxy::pluginProcessCrashedOrFailedToLaunch): + * UIProcess/WebContext.cpp: + (WebKit::createDictionaryFromHashMap): + * UIProcess/WebIconDatabase.cpp: + (WebKit::WebIconDatabase::didFinishURLImport): + * UIProcess/WebIntentData.cpp: + (WebKit::WebIntentData::extras): + * UIProcess/WebProcessProxy.cpp: + (WebKit::WebProcessProxy::checkURLReceivedFromWebProcess): + (WebKit::WebProcessProxy::addBackForwardItem): + (WebKit::WebProcessProxy::frameCountInPage): + * WebProcess/Geolocation/GeolocationPermissionRequestManager.cpp: + (WebKit::GeolocationPermissionRequestManager::cancelRequestForGeolocation): + (WebKit::GeolocationPermissionRequestManager::didReceiveGeolocationPermissionDecision): + * WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp: + (WebKit::InjectedBundleNodeHandle::getOrCreate): + * WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp: + (WebKit::InjectedBundleRangeHandle::getOrCreate): + * WebProcess/InjectedBundle/InjectedBundleIntent.cpp: + (WebKit::InjectedBundleIntent::extras): + * WebProcess/Notifications/WebNotificationManager.cpp: + (WebKit::WebNotificationManager::policyForOrigin): + (WebKit::WebNotificationManager::show): + (WebKit::WebNotificationManager::clearNotifications): + (WebKit::WebNotificationManager::removeNotificationFromContextMap): + * WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp: + (WebKit::NPRuntimeObjectMap::invalidate): + * WebProcess/Plugins/Netscape/NetscapePlugin.cpp: + (WebKit::NetscapePlugin::destroyStream): + (WebKit::NetscapePlugin::unscheduleTimer): + (WebKit::NetscapePlugin::frameDidFinishLoading): + (WebKit::NetscapePlugin::frameDidFail): + * WebProcess/Plugins/PluginView.cpp: + (WebKit::buildHTTPHeaders): + (WebKit::PluginView::~PluginView): + * WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp: + (WebCore::CoordinatedGraphicsLayer::layerByID): + * WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp: + (WebKit::LayerTreeCoordinator::adoptImageBackingStore): + (WebKit::LayerTreeCoordinator::releaseImageBackingStore): + * WebProcess/WebPage/WebBackForwardListProxy.cpp: + (WebKit::WebBackForwardListProxy::removeItem): + * WebProcess/WebPage/mac/WebPageMac.mm: + (WebKit::commandNameForSelectorName): + * WebProcess/WebProcess.cpp: + (WebKit::WebProcess::visitedLinkStateChanged): + (WebKit::WebProcess::allVisitedLinkStateChanged): + (WebKit::WebProcess::focusedWebPage): + (WebKit::WebProcess::createWebPage): + (WebKit::WebProcess::webPageGroup): + (WebKit::fromCountedSetToHashMap): + (WebKit::WebProcess::setTextCheckerState): + +2012-08-27 Simon Fraser <simon.fraser@apple.com> + + Make Force Repaint work with tiled backing store + https://bugs.webkit.org/show_bug.cgi?id=95102 + + Reviewed by Dan Bernstein. + + Have forceRepaint() call down to the tiled backing of each FrameView, + so they can repaint. + + * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm: + (WebKit::TiledCoreAnimationDrawingArea::forceRepaint): + +2012-08-27 Rafael Brandao <rafael.lobo@openbossa.org> + + [Qt] Fix typo in CoordinatedGraphicsLayer::syncAnimatedProperties + https://bugs.webkit.org/show_bug.cgi?id=95085 + + Reviewed by Noam Rosenthal. + + * WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp: The flag should be disabled + once we process the sync for animated properties. Previously, it was never disabling it once enabled. + +2012-08-27 Philippe Normand <pnormand@igalia.com> + + [GStreamer][Qt] WebAudio support + https://bugs.webkit.org/show_bug.cgi?id=94806 + + Reviewed by Simon Hausmann. + + New boolean webAudioEnabled WebSetting to be used at runtime to + toggle WebAudio support on or off. + + * UIProcess/API/qt/qwebpreferences.cpp: + (QWebPreferencesPrivate::testAttribute): + (QWebPreferencesPrivate::setAttribute): + (QWebPreferences::webAudioEnabled): + (QWebPreferences::setWebAudioEnabled): + * UIProcess/API/qt/qwebpreferences_p.h: + * UIProcess/API/qt/qwebpreferences_p_p.h: + +2012-08-27 Simon Hausmann <simon.hausmann@nokia.com> + + [Qt][WK2] REGRESSION(r126067): It made qmltests::DoubleTapToZoom::test_basic() fail + https://bugs.webkit.org/show_bug.cgi?id=94949 + + Reviewed by Kenneth Rohde Christiansen. + + Use JSON to serialize the client rect for the async evaluateJavaScript call. + + * UIProcess/API/qt/tests/qmltests/WebView/tst_doubleTapToZoom.qml: + +2012-08-27 Simon Hausmann <simon.hausmann@nokia.com> + + [Qt] Fix failing QML2 auto tests due to conflicting signal declaration + https://bugs.webkit.org/show_bug.cgi?id=95059 + + Reviewed by Kenneth Rohde Christiansen. + + Don't define a scaleChanged signal when QQuickItem already declares one to notify about changes + in the scale property. As it turns out there is not need for declaring a signal in the test case + at all. + + * UIProcess/API/qt/tests/qmltests/WebView/tst_doubleTapToZoom.qml: + * UIProcess/API/qt/tests/qmltests/WebView/tst_fitToView.qml: + +2012-08-27 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> + + Rename RegisterProtocolHandler API to NavigatorContentUtils + https://bugs.webkit.org/show_bug.cgi?id=94920 + + Reviewed by Adam Barth. + + Renaming whatever RegisterProtocolHandler-prefixed to NavigatorContentUtils-prefixed. + + * Configurations/FeatureDefines.xcconfig: + * WebProcess/WebCoreSupport/WebNavigatorContentUtilsClient.h: Renamed from Source/WebKit2/WebProcess/WebCoreSupport/WebRegisterProtocolHandlerClient.h. + (WebKit): + (WebNavigatorContentUtilsClient): + (WebKit::WebNavigatorContentUtilsClient::~WebNavigatorContentUtilsClient): + (WebKit::WebNavigatorContentUtilsClient::isProtocolHandlerRegistered): + (WebKit::WebNavigatorContentUtilsClient::unregisterProtocolHandler): + +2012-08-25 Vivek Galatage <vivekgalatage@gmail.com> + + WinCairo Build Broken due to missing export definitions + https://bugs.webkit.org/show_bug.cgi?id=95007 + + Reviewed by Ryosuke Niwa. + + Export symbols were missing from the def file for WinCairo port. Added + these missing symbols to avoid build break + + * win/WebKit2CFLite.def: + +2012-08-24 Alexey Proskuryakov <ap@apple.com> + + <rdar://problem/12157689> REGRESSION: WebProcessProxy destructor is sometimes called recursively + https://bugs.webkit.org/show_bug.cgi?id=94997 + + Reviewed by Dan Bernstein. + + * UIProcess/WebContext.cpp: (WebKit::WebContext::disconnectProcess): Make sure that + we don't try to delete WebProcessProxy while the vector still contains it. Previously, + we used RefPtr::clear, which zeroes out the value before destructing, but doing that + in every RefPtr destructor would be bad for performance. + +2012-08-24 Benjamin Poulain <bpoulain@apple.com> + + Unify Number to StringImpl conversion + https://bugs.webkit.org/show_bug.cgi?id=94879 + + Reviewed by Geoffrey Garen. + + * win/WebKit2.def: Update the exported symbols. + +2012-08-24 Andras Becsi <andras.becsi@nokia.com> + + [Qt][WK2] Fix custom device pixel ratio propagation and add QML API tests + https://bugs.webkit.org/show_bug.cgi?id=88531 + + Reviewed by Kenneth Rohde Christiansen. + + Defer setting the custom device pixel ratio until the page item has + a valid size to make sure that the scale factor reaches the web process. + + QML test based on patch by Alexander Færøy. + + * UIProcess/API/qt/qquickwebview.cpp: + (QQuickWebViewPrivate::QQuickWebViewPrivate): + (QQuickWebViewPrivate::didRelaunchProcess): + (QQuickWebViewPrivate::didChangeContentsSize): + (QQuickWebViewFlickablePrivate::didChangeContentsSize): + (QQuickWebViewExperimental::devicePixelRatio): + (QQuickWebViewExperimental::setDevicePixelRatio): + * UIProcess/API/qt/qquickwebview_p.h: + * UIProcess/API/qt/qquickwebview_p_p.h: + (QQuickWebViewPrivate): + * UIProcess/API/qt/tests/qmltests/WebView/tst_devicePixelRatio.qml: Added. + Test case for the QML device pixel ratio API. + +2012-08-24 Kangil Han <kangil.han@samsung.com> + + [EFL] Fix compile warning + https://bugs.webkit.org/show_bug.cgi?id=94930 + + Reviewed by Kenneth Rohde Christiansen. + + Fixed compile warning. + + * UIProcess/API/efl/ewk_back_forward_list.cpp: + (ewk_back_forward_list_n_back_items_copy): NULL used in arithmetic [-Wpointer-arith] + (ewk_back_forward_list_n_forward_items_copy): NULL used in arithmetic [-Wpointer-arith] + +2012-08-24 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> + + [EFL][WK2] Back-forward list API needs extension + https://bugs.webkit.org/show_bug.cgi?id=94582 + + Reviewed by Kenneth Rohde Christiansen. + + Added several new functions wrapping existing WK2 C back-forward list API + and returning list of items preceding or following the current one. + Corresponding API unit tests are also added. + + * UIProcess/API/efl/ewk_back_forward_list.cpp: + (createEinaList): + (ewk_back_forward_list_n_back_items_copy): + (ewk_back_forward_list_n_forward_items_copy): + * UIProcess/API/efl/ewk_back_forward_list.h: + * UIProcess/API/efl/tests/test_ewk2_back_forward_list.cpp: + (freeEinaList): + (TEST_F): + +2012-08-24 Michael Brüning <michaelbruening@gmail.com> + + [Qt][WK2] Make viewport related experimental.test properties encapsulated. + https://bugs.webkit.org/show_bug.cgi?id=88320 + + Reviewed by Kenneth Rohde Christiansen. + + Introducing a new viewport attribute to QWebKitTest to group the viewport related + attributes into one QJsonObject. Also adding a static method to convert a QSizeF to + a QJsonObject. + + * UIProcess/API/qt/qwebkittest.cpp: + (qSizeFToJsonObject): + (QWebKitTest::viewport): + (QWebKitTest::devicePixelRatio): + (QWebKitTest::contentsScale): + * UIProcess/API/qt/qwebkittest_p.h: + * UIProcess/qt/QtViewportHandler.cpp: + (WebKit::QtViewportHandler::viewportAttributesChanged): + +2012-08-23 Frederik Gladhorn <gladhorn@kde.org> + + Make it possible to build WebKit with Python 3 (and 2) + https://bugs.webkit.org/show_bug.cgi?id=94814 + + Reviewed by Ryosuke Niwa. + + Exceptions need a hack to work with both. + string.join was already deprecated in Python 2. + Relative imports are no longer supported, use package name instead. + + * Scripts/webkit2/messages.py: + * Scripts/webkit2/parser.py: + +2012-08-24 Mark Rowe <mrowe@apple.com> + + <http://webkit.org/b/94910> Copy the entire webkit2 module in to the WebKit2 framework wrapper. + + Reviewed by Dan Bernstein. + + This will allow relative imports within the webkit2 module to be removed in the future without + requiring future changes to clients of the module. + + * WebKit2.xcodeproj/project.pbxproj: Remove the webkit2 group from the project, and add it back + as a folder reference. This allows the directory and its contents to be copied in to the PrivateHeaders + directory. We also need to add a script phase to clean up any .pyc files that may be present in + the module. + +2012-08-23 Sheriff Bot <webkit.review.bot@gmail.com> + + Unreviewed, rolling out r126542. + http://trac.webkit.org/changeset/126542 + https://bugs.webkit.org/show_bug.cgi?id=94907 + + Broke WK2 build on OS X (Requested by tronical_ on #webkit). + + * Scripts/webkit2/messages.py: + * Scripts/webkit2/parser.py: + +2012-08-23 Frederik Gladhorn <gladhorn@kde.org> + + Make it possible to build WebKit with Python 3 (and 2) + https://bugs.webkit.org/show_bug.cgi?id=94814 + + Reviewed by Ryosuke Niwa. + + Exceptions need a hack to work with both. + string.join was already deprecated in Python 2. + Relative imports are no longer supported, use package name instead. + + * Scripts/webkit2/messages.py: + * Scripts/webkit2/parser.py: + +2012-08-23 Mark Hahnenberg <mhahnenberg@apple.com> + + Change behavior of MasqueradesAsUndefined to better accommodate DFG changes + https://bugs.webkit.org/show_bug.cgi?id=93884 + + Reviewed by Filip Pizlo. + + With some upcoming changes to the DFG to remove uses of ClassInfo, we will be changing the behavior of + MasqueradesAsUndefined. In order to make this change consistent across all of our execution engines, + we will make this change to MasqueradesAsUndefined as a separate patch. After this patch, MasqueradesAsUndefined + objects will only masquerade as undefined in their original context (i.e. their original JSGlobalObject). + For example, if an object that masquerades as undefined in frame A is passed to frame B, it will not + masquerade as undefined within frame B, but it will continue to masquerade in frame A. + + * WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp: + (WebKit::NPRuntimeObjectMap::convertJSValueToNPVariant): Passing ExecState to toBoolean call. + +2012-08-23 Brady Eidson <beidson@apple.com> + + REGRESSION (r124815): PDF in frame does not display any more + <rdar://problem/12063306> and https://bugs.webkit.org/show_bug.cgi?id=94869 + + Reviewed by Alexey Proskuryakov. + + * WebProcess/Plugins/PDF/BuiltInPDFView.mm: + (WebKit::BuiltInPDFView::initialize): Tell the controller that initialization was successful. + +2012-08-23 Mark Rowe <mrowe@apple.com> + + Make WebKit2 build with the latest version of clang. + + Reviewed by Dan Bernstein. + + * Configurations/Base.xcconfig: Ensure that operator new isn't exported as a weak external symbol. + +2012-08-22 Jesus Sanchez-Palencia <jesus.palencia@openbossa.org> + + [EFL] Use WTF_USE_SOUP instead BUILDING_SOUP__ + https://bugs.webkit.org/show_bug.cgi?id=94744 + + Reviewed by Gustavo Noronha Silva. + + Use #if defined(WTF_USE_SOUP) instead of #if defined(BUILDING_SOUP__) + since the former is used everywhere. + + * Shared/API/c/WKBase.h: + +2012-08-23 Christophe Dumez <christophe.dumez@intel.com> + + [EFL][WK2] Free ewk context data on program exit. + https://bugs.webkit.org/show_bug.cgi?id=94808 + + Reviewed by Kenneth Rohde Christiansen. + + Make sure the default Ewk_Context gets freed + on program exit. + + The patch also fixes leaking of WKContextRef + inside Ewk_Context which should have been + adopted. + + * UIProcess/API/efl/ewk_context.cpp: + (_Ewk_Context::_Ewk_Context): + (ewk_context_default_get): + +2012-08-23 Adrienne Walker <enne@google.com> + + Convert ScrollableArea ASSERT_NOT_REACHED virtuals + https://bugs.webkit.org/show_bug.cgi?id=93306 + + Reviewed by Darin Adler. + + Add implementations where necessary to make derived classes concrete. + Add OVERRIDE for ScrollableArea functions. + + * UIProcess/win/WebPopupMenuProxyWin.cpp: + (WebKit::WebPopupMenuProxyWin::visibleHeight): + (WebKit): + (WebKit::WebPopupMenuProxyWin::visibleWidth): + (WebKit::WebPopupMenuProxyWin::contentsSize): + (WebKit::WebPopupMenuProxyWin::scrollableAreaBoundingBox): + * UIProcess/win/WebPopupMenuProxyWin.h: + (WebPopupMenuProxyWin): + * WebProcess/Plugins/PDF/BuiltInPDFView.h: + +2012-08-23 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> + + [EFL][WK2] ewk_intent_request API test does not free Eina_List + https://bugs.webkit.org/show_bug.cgi?id=94809 + + Reviewed by Kenneth Rohde Christiansen. + + The used Eina_List should be freed due to ewk_intent_suggestions_get() documentation. + + * UIProcess/API/efl/tests/test_ewk2_intents.cpp: + (onIntentReceived): + +2012-08-23 Andras Becsi <andras.becsi@nokia.com> + + [Qt][WK2] Helper functions used by the raw webview tests should not be guarded by HAVE_QTQUICK + + Reviewed by Simon Hausmann. + + This fixes the build if the QtQuick module is not present. + + * UIProcess/API/qt/tests/util.cpp: + (messageHandler): + (suppressDebugOutput): + * UIProcess/API/qt/tests/util.h: + +2012-08-23 Carlos Garcia Campos <cgarcia@igalia.com> + + REGRESSION(r126306): it broke the plugin process + https://bugs.webkit.org/show_bug.cgi?id=94797 + + Reviewed by Xan Lopez. + + * GNUmakefile.am: + +2012-08-23 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> + + [WK2] Refactoring: WebBackForwardList getters should be const + https://bugs.webkit.org/show_bug.cgi?id=94711 + + Reviewed by Kenneth Rohde Christiansen. + + Before the change were not consistent with each other + (WebBackForwardList::entries() was const but WebBackForwardList::currentIndex() was not). + Besides having not const getters is not a good practice in C++. (Please read + Scott Meyers. Effective C++ (3rd edition). ISBN: 0-321-33487-6. + Item 3: 'Use const whenever possible'). + + * UIProcess/WebBackForwardList.cpp: + (WebKit::WebBackForwardList::backListCount): + (WebKit::WebBackForwardList::forwardListCount): + (WebKit::WebBackForwardList::backListAsImmutableArrayWithLimit): + (WebKit::WebBackForwardList::forwardListAsImmutableArrayWithLimit): + * UIProcess/WebBackForwardList.h: + (WebKit::WebBackForwardList::currentIndex): + (WebBackForwardList): + +2012-08-22 Nikhil Bhargava <nbhargava@google.com> + + Reduce Font.h includes across project -- improves RenderObject.h compile time + https://bugs.webkit.org/show_bug.cgi?id=93629 + + Reviewed by Eric Seidel. + + Adds includes due to change in RenderStyle.h + + * WebProcess/WebPage/mac/WebPageMac.mm: + +2012-08-22 Beth Dakin <bdakin@apple.com> + + https://bugs.webkit.org/show_bug.cgi?id=94401 + Add support for making a web site become paginated using overflow: + paged-x | paged-y + -and corresponding- + <rdar://problem/11831783> + + Reviewed by Dave Hyatt. + + WebCore::Page::Pagination is now just WebCore::Pagination. + * Shared/WebPageCreationParameters.h: + (WebPageCreationParameters): + * UIProcess/API/C/WKPage.cpp: + (WKPageSetPaginationMode): + (WKPageGetPaginationMode): + * UIProcess/WebPageProxy.cpp: + (WebKit::WebPageProxy::WebPageProxy): + (WebKit::WebPageProxy::setPaginationMode): + * UIProcess/WebPageProxy.h: + (WebPageProxy): + (WebKit::WebPageProxy::paginationMode): + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::setPaginationMode): + (WebKit::WebPage::setPaginationBehavesLikeColumns): + (WebKit::WebPage::setPageLength): + (WebKit::WebPage::setGapBetweenPages): + * WebProcess/WebPage/WebPage.h: + (WebPage): + +2012-08-22 Jer Noble <jer.noble@apple.com> + + Browser menu visible when calling webkitRequestFullscreen after user manually enters full screen mode + https://bugs.webkit.org/show_bug.cgi?id=93892 + + Reviewed by Eric Carlson. + + Allow the full screen window to "Join All Spaces", so that once it's original full screen space is destroyed, + it can join the new one. + + * UIProcess/mac/WKFullScreenWindowController.mm: + (-[WKFullScreenWindowController _startEnterFullScreenAnimationWithDuration:]): + +2012-08-22 Alexey Proskuryakov <ap@apple.com> + + [WK2] Support posting injected bundle messages to a page + https://bugs.webkit.org/show_bug.cgi?id=94630 + + Reviewed by Sam Weinig. + + * Shared/APIClientTraits.cpp: + * Shared/APIClientTraits.h: + * Shared/CoreIPCSupport/InjectedBundleMessageKinds.h: + * UIProcess/API/C/WKPage.cpp: + (WKPagePostMessageToInjectedBundle): + * UIProcess/API/C/WKPage.h: + * UIProcess/WebPageProxy.cpp: + (WebKit::WebPageProxy::postMessageToInjectedBundle): + * UIProcess/WebPageProxy.h: + * WebProcess/InjectedBundle/API/c/WKBundle.h: + * WebProcess/InjectedBundle/InjectedBundle.cpp: + (WebKit::InjectedBundle::didReceiveMessageToPage): + (WebKit::InjectedBundle::didReceiveMessage): + * WebProcess/InjectedBundle/InjectedBundle.h: + * WebProcess/InjectedBundle/InjectedBundleClient.cpp: + (WebKit::InjectedBundleClient::didReceiveMessageToPage): + * WebProcess/InjectedBundle/InjectedBundleClient.h: + (InjectedBundleClient): + Added a PostMessageToPage injected bundle message type, with all associated + machinery. API is WKPagePostMessageToInjectedBundle(), and an associated + didReceiveMessageToPage() injected bundle client function. + + * WebProcess/qt/QtBuiltinBundle.cpp: (WebKit::QtBuiltinBundle::initialize): + Updated for new client API. + + * UIProcess/WebContext.cpp: (WebKit::WebContext::postMessageToInjectedBundle): + Implemented multiple process model case. + +2012-08-22 Gustavo Noronha Silva <gns@gnome.org> + + [GTK] Split WebCore/platform into a separate library + https://bugs.webkit.org/show_bug.cgi?id=94435 + + Reviewed by Martin Robinson. + + More people have been reporting problems when linking WebCore because + the command line limit is being exceeded. Splitting WebCore a bit more + is in order. + + * GNUmakefile.am: link libWebCorePlatform into libwebkit2gtk + +2012-08-22 Carlos Garcia Campos <cgarcia@igalia.com> + + [GTK] Preferred languages and spellchecker APIs are not consistent in WebKit2 + https://bugs.webkit.org/show_bug.cgi?id=94683 + + Reviewed by Alejandro G. Castro. + + Change spell-checker and preferred languages API to use a GStrv + instead of a comma-separated string and GList. This makes the API + more consistent and convenient to use. + + * UIProcess/API/gtk/WebKitTextChecker.cpp: + (WebKitTextChecker::getSpellCheckingLanguages): Return a + Vector<String> instead of a String. + (WebKitTextChecker::setSpellCheckingLanguages): Receive a + Vector<String> instead of a String. + * UIProcess/API/gtk/WebKitTextChecker.h: + (WebKitTextChecker): Use a GPtrArray to cache languages. + * UIProcess/API/gtk/WebKitWebContext.cpp: + (webkit_web_context_get_spell_checking_languages): + (webkit_web_context_set_spell_checking_languages): + (webkit_web_context_set_preferred_languages): + * UIProcess/API/gtk/WebKitWebContext.h: + * UIProcess/API/gtk/tests/TestWebKitWebContext.cpp: + (testWebContextSpellChecker): + (testWebContextLanguages): + +2012-08-22 Csaba Osztrogonác <ossy@webkit.org> + + [Qt][WK2] Enable runtime enabled features: DeviceMotion and DeviceOrientation + https://bugs.webkit.org/show_bug.cgi?id=94692 + + Reviewed by Kenneth Rohde Christiansen. + + * WebProcess/qt/WebProcessQt.cpp: + (WebKit::WebProcess::platformInitializeWebProcess): + +2012-08-22 Allan Sandfeld Jensen <allan.jensen@nokia.com> + + Wrong default for new ScrollAnimatorEnabled preference. + + Reviewed by Simon Hausmann. + + ScrollAnimatorEnabled introduced in r126291, should default to 'true' + to preserve existing behaviour on WK2 platforms that already enabled + SMOOTH_SCROLLING unconditionally. + + * Shared/WebPreferencesStore.h: + (WebKit): + +2012-08-22 Allan Sandfeld Jensen <allan.jensen@nokia.com> + + Unreviewed, build fixup for r126291. + + * Shared/WebPreferencesStore.h: + (WebKit): + +2012-08-22 Allan Sandfeld Jensen <allan.jensen@nokia.com> + + [Qt] Optionally support smooth-scrolling on all platforms + https://bugs.webkit.org/show_bug.cgi?id=74926 + + Reviewed by Simon Hausmann. + + Expose scroll-animator preference, but ensure animated smooth scrolling + on the web process side is disabled when scrolling has been delegated + to the UI process. + + * Shared/WebPreferencesStore.h: + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::setResizesToContentsUsingLayoutSize): + (WebKit::WebPage::updatePreferences): + +2012-08-22 Luiz Agostini <luiz.agostini@nokia.com> + + [Qt] Avoid using WebKit macros in qrawwebview_p.h + https://bugs.webkit.org/show_bug.cgi?id=94648 + + Reviewed by Noam Rosenthal. + + ENABLE(FEATURE) should not be used in qrawwebview_p.h because it is an API header file. + + * UIProcess/API/qt/raw/qrawwebview.cpp: + (QRawWebView::sendTouchEvent): + * UIProcess/API/qt/raw/qrawwebview_p.h: + +2012-08-21 Sheriff Bot <webkit.review.bot@gmail.com> + + Unreviewed, rolling out r126216. + http://trac.webkit.org/changeset/126216 + https://bugs.webkit.org/show_bug.cgi?id=94661 + + "Broke many Mac-WK2 tests" (Requested by bradee-oh on + #webkit). + + * WebProcess/com.apple.WebProcess.sb.in: + +2012-08-21 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com> + + [GTK] [WK2] Memory leaks in TestWebKitFindController + https://bugs.webkit.org/show_bug.cgi?id=94627 + + Reviewed by Martin Robinson. + + Fix memory leaks in TestWebKitFindController by using adoptGRef + instead of just getting new reference of GdkPixbuf. + + * UIProcess/API/gtk/tests/TestWebKitFindController.cpp: + (testFindControllerHide): + +2012-08-21 Alexey Proskuryakov <ap@apple.com> + + <rdar://problem/11241850> Block access to xpcd in WebProcess.sb + + Reviewed by Sam Weinig and Jon Honeycutt. + + * WebProcess/com.apple.WebProcess.sb.in: + +2012-08-21 Alexey Proskuryakov <ap@apple.com> + + <rdar://problem/8900275> Remove PubSub access from WebProcess, since it is no longer necessary + + Reviewed by Mark Rowe. + + * WebProcess/com.apple.WebProcess.sb.in: + +2012-08-21 Thiago Marcos P. Santos <thiago.santos@intel.com> + + [EFL] Some public API functions don't have their symbols exported + https://bugs.webkit.org/show_bug.cgi?id=94589 + + Reviewed by Kenneth Rohde Christiansen. + + Added missing export symbol macro to these public API functions. + + * UIProcess/API/efl/ewk_view.h: + +2012-08-21 Martin Robinson <mrobinson@igalia.com> + + [GTK] Using a native window for the WebView breaks GtkOverlay + https://bugs.webkit.org/show_bug.cgi?id=90085 + + Reviewed by Alejandro G. Castro. + + Add XComposite libraries to the linker list for WebKit2. + + * GNUmakefile.am: Add XComposite + +2012-08-21 Jesse van den Kieboom <jessevdk@gnome.org> and Carlos Garcia Campos <cgarcia@igalia.com> + + [GTK] Add destroy notify for register_uri_scheme + https://bugs.webkit.org/show_bug.cgi?id=94315 + + Reviewed by Philippe Normand. + + For introspection to work correctly, a destroy notify needs to be + added to register_uri_scheme so that bindings know when to + finalize the user_data. + + * UIProcess/API/gtk/WebKitWebContext.cpp: + (webkit_web_context_register_uri_scheme): + (webkitWebContextReceivedURIRequest): + * UIProcess/API/gtk/WebKitWebContext.h: + * UIProcess/API/gtk/tests/TestWebKitWebContext.cpp: + +2012-08-21 Simon Hausmann <simon.hausmann@nokia.com> + + Unreviewed build fix for newer Qt 5: QT += qmltest does not imply QT += testlib anymore, but + the code here needs QSignalSpy from QTestLib + + * UIProcess/API/qt/tests/qmltests/DesktopBehavior.pro: + * UIProcess/API/qt/tests/qmltests/WebView.pro: + +2012-08-18 John Sullivan <sullivan@apple.com> + + <https://bugs.webkit.org/show_bug.cgi?id=94486> + <rdar://problem/12128557> + REGRESSION (r121482, Lion-only): Closing a popover containing a WKView can crash + + Reviewed by Darin Adler. + + * UIProcess/API/mac/WKView.mm: + (-[WKView viewWillMoveToWindow:]): + Avoid calling the code added in 121482 that ensures that the undo stack is cleaned up + before the WKView is moved from one window to another when the WKView is being moved + out of a popover window. This avoids a bug in OS X 10.7 that was fixed in 10.8. + While this technically reopens a potentially crashing code path that 121482 closed, + it only reopens it for WKViews that are used for text editing and that are removed + from an NSPopover at some time earlier than tear-down of the NSPopover. + +2012-08-20 Allan Sandfeld Jensen <allan.jensen@nokia.com> + + [Qt] Custom tap-highlight-color renders fully opaque + https://bugs.webkit.org/show_bug.cgi?id=94468 + + Reviewed by Kenneth Rohde Christiansen. + + Draw tap-highlight-color at 50% transparency, to better match how + existing WebKit browsers act on custom tap-highlight colors. + + * WebProcess/WebPage/TapHighlightController.cpp: + (WebKit::TapHighlightController::drawRect): + +2012-08-20 Carlos Garcia Campos <cgarcia@igalia.com> + + [GTK] Replace webkit_web_view_replace_content with webkit_web_view_load_alternate_html + https://bugs.webkit.org/show_bug.cgi?id=94471 + + Reviewed by Martin Robinson. + + In WebKit1 there's code to prevent that load signals are emitted + when loading internal custom error pages. We added + webkit_web_view_replace_content() with the same idea, but it has + ended up being problematic, because it allows to add any HTML + content (in WebKit1 we assumed internal error pages never failed + and always loaded) and it's impossible to know when the load has + finished. It also required a lot of logic to handle + replace_content as an especial case, in order to hide the fact + that it loads content. This patch renames + webkit_web_view_replace_content() as + webkit_web_view_load_alternate_html() and emit load events + normally. + + * UIProcess/API/gtk/WebKitWebView.cpp: + (_WebKitWebViewPrivate): + (webkitWebViewLoadChanged): + (webkitWebViewLoadFailed): + (webkitWebViewSetEstimatedLoadProgress): + (webkitWebViewResourceLoadStarted): + (webkitWebViewGetLoadingWebResource): + (webkitWebViewRemoveLoadingWebResource): + (webkitWebViewResourceLoadFinished): + (webkit_web_view_load_alternate_html): + * UIProcess/API/gtk/WebKitWebView.h: + * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: + * UIProcess/API/gtk/tests/TestLoaderClient.cpp: + (testLoadAlternateHTML): + (beforeAll): + * UIProcess/API/gtk/tests/TestResources.cpp: + (beforeAll): + * UIProcess/API/gtk/tests/TestWebKitWebView.cpp: + (beforeAll): + * UIProcess/API/gtk/tests/WebViewTest.cpp: + (WebViewTest::loadAlternateHTML): + * UIProcess/API/gtk/tests/WebViewTest.h: + +2012-08-20 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> + + [EFL][WK2] Add unit tests for WKEinaSharedString + https://bugs.webkit.org/show_bug.cgi?id=94104 + + Reviewed by Kenneth Rohde Christiansen. + + Added unit tests for WKEinaSharedString class. + + * PlatformEfl.cmake: + * UIProcess/API/efl/tests/test_ewk2_eina_shared_string.cpp: Added. + (checkString): + (TEST_F): + +2012-08-20 Carlos Garcia Campos <cgarcia@igalia.com> + + [GTK] Add API to set preferred languages to WebKit2 GTK+ + https://bugs.webkit.org/show_bug.cgi?id=90878 + + Reviewed by Martin Robinson. + + * UIProcess/API/gtk/WebKitWebContext.cpp: + (webkit_web_context_set_preferred_languages): Public API to set a + list of preferred languages sorted from most desirable to least + desirable. + * UIProcess/API/gtk/WebKitWebContext.h: + * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Add new symbol. + * UIProcess/API/gtk/tests/TestWebKitWebContext.cpp: + (testWebContextLanguages): + (serverCallback): + (beforeAll): + (afterAll): + * UIProcess/API/gtk/tests/WebViewTest.cpp: + (resourceGetDataCallback): + (WebViewTest::mainResourceData): Moved from TestWebKitWebContext + to make it available to all WebViewTests. + * UIProcess/API/gtk/tests/WebViewTest.h: + * WebProcess/WebProcess.cpp: + (WebKit::WebProcess::userPreferredLanguagesChanged): Notify our + observer that the languages have been overriden. + * WebProcess/gtk/WebProcessGtk.cpp: + (WebKit::buildAcceptLanguages): Helper function to build the + accept languages as specified in RFC 2616. + (WebKit::setSoupSessionAcceptLanguage): Set the accept-language + property of the default SoupSession. + (WebKit::languageChanged): Update the preferred languages in + SoupSession. + (WebKit::WebProcess::platformInitializeWebProcess): Add an + observer to be notified when the list of preferred languages is + updated. + (WebKit::WebProcess::platformTerminate): Remove the observer added + in platformInitializeWebProcess(). + +2012-08-19 Dan Bernstein <mitz@apple.com> + + WebPageProxy::setCursor does not check that the view is still in an active window + https://bugs.webkit.org/show_bug.cgi?id=94427 + + Reviewed by Alexey Proskuryakov. + + The Web process may ask to change the cursor when the view is in an active window, but + if by the time the UI process receives the message, the view is no longer in a window or the + window is not active , then the cursor should not change. + + * UIProcess/WebPageProxy.cpp: + (WebKit::WebPageProxy::setCursor): Added a check that the view is in an active window before + allowing the page to change the cursor. + +2012-08-19 Sheriff Bot <webkit.review.bot@gmail.com> + + Unreviewed, rolling out r125972. + http://trac.webkit.org/changeset/125972 + https://bugs.webkit.org/show_bug.cgi?id=94431 + + Breaks AppleMac builds (Requested by pfeldman on #webkit). + + * UIProcess/API/gtk/WebKitWebContext.cpp: + * UIProcess/API/gtk/WebKitWebContext.h: + * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: + * UIProcess/API/gtk/tests/TestWebKitWebContext.cpp: + (beforeAll): + (afterAll): + * UIProcess/API/gtk/tests/WebViewTest.cpp: + (WebViewTest::WebViewTest): + * UIProcess/API/gtk/tests/WebViewTest.h: + * WebProcess/WebProcess.cpp: + (WebKit::WebProcess::userPreferredLanguagesChanged): + * WebProcess/gtk/WebProcessGtk.cpp: + (WebKit::WebProcess::platformInitializeWebProcess): + (WebKit::WebProcess::platformTerminate): + +2012-08-19 Christophe Dumez <christophe.dumez@intel.com> + + [EFL][WK2] Add API unit tests for Web Intents + https://bugs.webkit.org/show_bug.cgi?id=90454 + + Reviewed by Kenneth Rohde Christiansen. + + Add unit testing for Web intent requests, + including the "intent,request,new" signal on + the Ewk_View and the Ewk_Intent API. + + * UIProcess/API/efl/ewk_view.h: Fix documentation for argument type of "intent,request,new" signal. + * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp: + (EWK2UnitTest::EWK2UnitTestBase::mouseClick): Add utility method to simulate a click at given + coordinates. This is needed for testing functionality that requires a user gesture. + (EWK2UnitTest): + * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h: + (EWK2UnitTestBase): + * UIProcess/API/efl/tests/resources/intent-request.html: Added. + * UIProcess/API/efl/tests/test_ewk2_intents.cpp: + (stringSortCb): + (onIntentReceived): + (TEST_F): + +2012-08-18 Carlos Garcia Campos <cgarcia@igalia.com> + + [GTK] Add API to set preferred languages to WebKit2 GTK+ + https://bugs.webkit.org/show_bug.cgi?id=90878 + + Reviewed by Martin Robinson. + + * UIProcess/API/gtk/WebKitWebContext.cpp: + (webkit_web_context_set_preferred_languages): Public API to set a + list of preferred languages sorted from most desirable to least + desirable. + * UIProcess/API/gtk/WebKitWebContext.h: + * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Add new symbol. + * UIProcess/API/gtk/tests/TestWebKitWebContext.cpp: + (testWebContextLanguages): + (serverCallback): + (beforeAll): + (afterAll): + * UIProcess/API/gtk/tests/WebViewTest.cpp: + (resourceGetDataCallback): + (WebViewTest::mainResourceData): Moved from TestWebKitWebContext + to make it available to all WebViewTests. + * UIProcess/API/gtk/tests/WebViewTest.h: + * WebProcess/WebProcess.cpp: + (WebKit::WebProcess::userPreferredLanguagesChanged): Notify our + observer that the languages have been overriden. + * WebProcess/gtk/WebProcessGtk.cpp: + (WebKit::buildAcceptLanguages): Helper function to build the + accept languages as specified in RFC 2616. + (WebKit::setSoupSessionAcceptLanguage): Set the accept-language + property of the default SoupSession. + (WebKit::languageChanged): Update the preferred languages in + SoupSession. + (WebKit::WebProcess::platformInitializeWebProcess): Add an + observer to be notified when the list of preferred languages is + updated. + (WebKit::WebProcess::platformTerminate): Remove the observer added + in platformInitializeWebProcess(). + +2012-08-18 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> + + [EFL][WK2] ewk_back_forward_list_item properties should be in sync with WebProcessProxy::m_backForwardListItemMap + https://bugs.webkit.org/show_bug.cgi?id=94248 + + Reviewed by Kenneth Rohde Christiansen. + + Currently ewk_back_forward_list_item properties are initialized from + WKBackForwardListItemRef once in the constructor and then just stored. + This is erroneous approach as back forward items can be initialized within + several iterations, meaning several ipc calls to UI process and several updates + of WebProcessProxy::m_backForwardListItemMap where the items are stored. + Hence the values of ewk_back_forward_list_item properties should be updated + with the corresponding WKBackForwardListItem function invokes every time + they are called. + + * UIProcess/API/efl/ewk_back_forward_list_item.cpp: + (_Ewk_Back_Forward_List_Item): Data members have to be mutable as assigned being const pointers. + (_Ewk_Back_Forward_List_Item::_Ewk_Back_Forward_List_Item): + (ewk_back_forward_list_item_uri_get): + (ewk_back_forward_list_item_title_get): + (ewk_back_forward_list_item_original_uri_get): + +2012-08-17 Enrica Casucci <enrica@apple.com> + + Adding back the first statement of WebProcessMain accidentally + removed in r125358. + + Reviewed by Sam Weinig. + + * WebProcess/mac/WebProcessMainMac.mm: Adding back the stripping + of DYLD_INSERT_LIBRARIES. + +2012-08-17 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com> + + [EFL] REGRESSION(r125923): Breaks EFL build + https://bugs.webkit.org/show_bug.cgi?id=94376 + + Reviewed by Alexey Proskuryakov. + + Fix EFL build break after r125923. + + * UIProcess/WebPageProxy.cpp: + (WebKit::WebPageProxy::didReceiveIntentForFrame): + +2012-08-17 Alexey Proskuryakov <ap@apple.com> + + Access m_process directly in WebPageProxy.cpp + https://bugs.webkit.org/show_bug.cgi?id=94363 + + Reviewed by John Sullivan. + + Consistency fix - we don't use accessors when we don't have to, and there is a mix in this file. + + * UIProcess/WebPageProxy.cpp: + +2012-08-17 Claudio Saavedra <csaavedra@igalia.com> + + [GTK] Add WK2 API to get suggested filename for URI responses + https://bugs.webkit.org/show_bug.cgi?id=92967 + + Reviewed by Carlos Garcia Campos. + + Webcore has API to get the suggested filename for a response, add + a property and getter for it in WebKitURIResponse. + + * UIProcess/API/gtk/WebKitURIResponse.cpp: + (_WebKitURIResponsePrivate): Add a CString holding the value. + (webkitURIResponseGetProperty): Add the gobject bits for the + property. + (webkit_uri_response_class_init): Install the property. + (webkit_uri_response_get_suggested_filename): New getter. + * UIProcess/API/gtk/WebKitURIResponse.h: Declare the public + method. + * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Add the new API + symbols. + * UIProcess/API/gtk/tests/TestResources.cpp: + (testWebResourceSuggestedFilename): Test the new API. + (serverCallback): Add the the content-disposition header + in one case, in order to test it. + (beforeAll): Add the new test. + +2012-08-17 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> + + [EFL][wk2] Add unit tests for back-forward list API + https://bugs.webkit.org/show_bug.cgi?id=92617 + + Reviewed by Kenneth Rohde Christiansen. + + Added unit tests covering the existing EFL WK2 back-forward list API. + + * PlatformEfl.cmake: + * UIProcess/API/efl/tests/resources/default_test_page.html: + * UIProcess/API/efl/tests/test_ewk2_back_forward_list.cpp: Added. + (serverCallbackNavigation): + (checkItem): + (urlFromTitle): + (TEST_F): + +2012-08-17 Jeff Miller <jeffm@apple.com> + + UserMessageEncoder::baseEncode() should ASSERT when attempting to encode a non-shareable image + https://bugs.webkit.org/show_bug.cgi?id=94245 + + Reviewed by Alexey Proskuryakov. + + It's a programming error if a client attempts to encode an image that has an + allocated bitmap, but isn't shareable, so we should assert in this case. + + * Shared/UserMessageCoders.h: + (WebKit::UserMessageEncoder::baseEncode): + Assert if we're trying to encode valid non-shareable image. + +2012-08-17 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com> + + [EFL] [WK2] Add unit tests for vibration_client_callbacks_set API + https://bugs.webkit.org/show_bug.cgi?id=93890 + + Reviewed by Kenneth Rohde Christiansen. + + This patch covers unit testing of the Vibration API as delivered. + + * UIProcess/API/efl/tests/test_ewk2_context.cpp: + (VibrationCbData): + (vibrateCallback): + (cancelVibrationCallback): + (loadVibrationHTMLString): + (TEST_F): + +2012-08-17 Carlos Garcia Campos <cgarcia@igalia.com> + + [GTK] Rename WebKitWebView print-requested signal to print + https://bugs.webkit.org/show_bug.cgi?id=94306 + + Reviewed by Martin Robinson. + + WebKitWebView::print-requested is inconsistent with the rest of + the API. It's a true_handled signal that allows users to implement + their own print dialog, or block printing, or rely on + defaults. The signal should be WebKitWebView::print like other + signals (create, close, decide_policy, etc.) + + * UIProcess/API/gtk/WebKitWebView.cpp: + (webkit_web_view_class_init): + (webkitWebViewPrintFrame): + * UIProcess/API/gtk/WebKitWebView.h: + (_WebKitWebViewClass): + * UIProcess/API/gtk/tests/TestPrinting.cpp: + (webViewPrintCallback): + (testWebViewPrint): + (beforeAll): + +2012-08-17 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com> + + [EFL] [WK2] Free Eina Strbuf with eina_strbuf_free() instead of eina_strbuf_string_free() + https://bugs.webkit.org/show_bug.cgi?id=94312 + + Reviewed by Kenneth Rohde Christiansen. + + eina_strbuf_string_free() frees the contents of a string buffer but not the + buffer, so eina_strbuf_free() must be used to free the buffer. + + Contents of the buffer has already been take care by stealing it with + eina_strbuf_string_steal(), so no reason to call eina_strbuf_string_free(). + + * UIProcess/API/efl/tests/test_ewk2_cookie_manager.cpp: + (serverCallback): + +2012-08-17 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> + + [EFL][WK2] Getting unnecessary EINA_SAFETY_ON_NULL_RETURN_VAL warnings while page navigation + https://bugs.webkit.org/show_bug.cgi?id=94308 + + Reviewed by Kenneth Rohde Christiansen. + + The reason is that loadClient.didChangeBackForwardList callback is invoked with zero + arguments which is valid case while page back-forward navigation and means basically + that the back-froward list has changed but items were not added or deleted. + + * UIProcess/API/efl/ewk_back_forward_list.cpp: + (ewk_back_forward_list_changed): + +2012-08-16 Lauro Neto <lauro.neto@openbossa.org> + + [Qt] Failure to build with --no-inspector + https://bugs.webkit.org/show_bug.cgi?id=94148 + + Reviewed by Noam Rosenthal. + + Add guards around usage of inspector functions. + + * UIProcess/API/qt/qquickwebview.cpp: + (QQuickWebViewExperimental::remoteInspectorUrl): + +2012-08-16 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> + + [Qt] Remove an unused variable + + Reviewed by Simon Hausmann. + + * UIProcess/API/qt/qquickwebpage.cpp: + (QQuickWebPagePrivate::QQuickWebPagePrivate): + * UIProcess/API/qt/qquickwebpage_p_p.h: + (QQuickWebPagePrivate): + +2012-08-16 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> + + [Qt][WK2] Change the default cache model to enable the page cache + https://bugs.webkit.org/show_bug.cgi?id=94221 + + Reviewed by Simon Hausmann. + + The default CacheModelDocumentViewer disables the memory back-forward page cache. + As uses of applications using QQuickWebView might vary, I'm setting the default to + CacheModelDocumentBrowser. + We should eventually expose this in the API to allow serious Web browsers setting it + to CacheModelPrimaryWebBrowser or to CacheModelDocumentViewer for application tight + on memory with limited page navigations. + + * UIProcess/qt/QtWebContext.cpp: + (WebKit::QtWebContext::defaultContext): + +2012-08-15 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> + + [Qt] Make sure that we don't prematurely force the first layout during loading. + https://bugs.webkit.org/show_bug.cgi?id=94106 + + Reviewed by Kenneth Rohde Christiansen. + + This would have the nasty effect that the frame loader would report the first layout + before loadCommitted was reported. This would resume the rendering engine prematurely, + showing blank content and reporting an empty contents size. + + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::setFixedLayoutSize): + +2012-08-16 Marcelo Lira <marcelo.lira@openbossa.org> + + [Qt] Input method hints are not being set. + https://bugs.webkit.org/show_bug.cgi?id=92386 + + Reviewed by Kenneth Rohde Christiansen. + + Input method hints for an editable element must be obtained from a proper + HTML element. If the editable element is a complex one, it will have elements + in the Shadow DOM, and it's one of those that will be returned as the root + editable element. This works for editable DIVs, but not for INPUT elements. + Using Element::shadowHost() on the root editable element will provide the + needed HTML element, and for further clarity a method that does this was added + to FrameSelection. + + Added an API test to the Qt port regarding the correct setting + of input method hints information on INPUT HTML tags. + + * UIProcess/API/qt/tests/html/inputmethod.html: + * UIProcess/API/qt/tests/qquickwebview/tst_qquickwebview.cpp: + (tst_QQuickWebView): + (tst_QQuickWebView::inputMethodHints): + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::editorState): + +2012-08-16 Zeno Albisser <zeno@webkit.org> + + Make GraphicsSurface double buffered by default. + https://bugs.webkit.org/show_bug.cgi?id=93252 + + Create only a single GraphicsSurface per canvas + on both supported platforms Mac/Linux. + The GraphicsSurface on Mac internally uses two IOSurface + to provide a front and a back buffer. + The GLX implementation of GraphicsSurface uses + an XWindow which already provides a front and a back buffer. + + Reviewed by Noam Rosenthal. + + * Shared/ShareableSurface.h: + (Handle): + Change the type of GraphicsSurface token to uint64_t. + * UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.cpp: + (WebKit::LayerTreeCoordinatorProxy::syncCanvas): + Add a parameter that denotes the current front buffer of the + GraphicsSurface. + * UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.h: + (LayerTreeCoordinatorProxy): + * UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.messages.in: + * UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp: + (WebKit::LayerTreeRenderer::syncCanvas): + * UIProcess/CoordinatedGraphics/LayerTreeRenderer.h: + (LayerTreeRenderer): + * WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp: + (WebCore::CoordinatedGraphicsLayer::syncCanvas): + * WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.h: + (CoordinatedGraphicsLayerClient): + * WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp: + (WebKit::LayerTreeCoordinator::syncCanvas): + * WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.h: + (LayerTreeCoordinator): + +2012-08-16 Pierre Rossi <pierre.rossi@gmail.com> + + [Qt] Remove FontQt4, HAVE_QRAWFONT flag and the related dead code + https://bugs.webkit.org/show_bug.cgi?id=93960 + + Reviewed by Simon Hausmann. + + Following the removal of Qt 4 support from trunk in r124879. + + * WebProcess/WebProcess.cpp: + (WebKit::WebProcess::getWebCoreStatistics): + +2012-08-16 Christophe Dumez <christophe.dumez@intel.com> + + [EFL][WK2] Add unit tests for Web intent registration + https://bugs.webkit.org/show_bug.cgi?id=94133 + + Reviewed by Kenneth Rohde Christiansen. + + Add unit tests for Web Intent service registration. + This tests the "intent,service,register" signaling + on the Ewk_View as well as Ewk_Intent_Service. + + * PlatformEfl.cmake: + * UIProcess/API/efl/tests/resources/intent-service.html: Added. + * UIProcess/API/efl/tests/test_ewk2_intents.cpp: Added. + (onIntentServiceRegistration): + (TEST_F): + +2012-08-16 Marja Hölttä <marja@chromium.org> + + FormController, WebHistoryItem: Enable reading selected file names from document state + https://bugs.webkit.org/show_bug.cgi?id=91231 + + Reviewed by Jochen Eisinger. + + This change enables Chromium to set up file permissions properly when + the session restore feature restores a page with selected files. + + * win/WebKit2.def: Exported FormController::getReferencedFilePaths and HistoryController::saveDocumentAndScrollState. + +2012-08-15 Ryosuke Niwa <rniwa@webkit.org> + + Update manual tests and comments to refer to TestRunner instead of LayoutTestController + https://bugs.webkit.org/show_bug.cgi?id=94168 + + Reviewed by Kent Tamura. + + * Shared/WebPreferencesStore.cpp: + (WebKit::WebPreferencesStore::getBoolValueForKey): + +2012-08-15 Bruno de Oliveira Abinader <bruno.abinader@basyskom.com> + + [css3-text] Add CSS3 Text decoration compile flag + https://bugs.webkit.org/show_bug.cgi?id=93863 + + Reviewed by Julien Chaffraix. + + This patch handles the compile flag implementation, which will come disabled by + default, thus not exposing the CSS3 text decoration features to the web, unless + when explicitly enabling it with "--css3-text-decoration" build parameter. + + * Configurations/FeatureDefines.xcconfig: + +2012-08-15 Sheriff Bot <webkit.review.bot@gmail.com> + + Unreviewed, rolling out r125687. + http://trac.webkit.org/changeset/125687 + https://bugs.webkit.org/show_bug.cgi?id=94147 + + It broke the whole world (Requested by Ossy_night on #webkit). + + * WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp: + (WebKit::NPRuntimeObjectMap::convertJSValueToNPVariant): + +2012-08-15 Beth Dakin <bdakin@apple.com> + + https://bugs.webkit.org/show_bug.cgi?id=93693 + [WK2] REGRESSION(125091): pixel results don't sow scrollbars + anymore + + Reviewed by Sam Weinig. + + This is a regression from http://trac.webkit.org/changeset/125091 + in which I failed to noticed that + WKBundlePageCreateSnapshotInViewCoordinates() did actually do + something different than + WKBundlePageCreateSnapshotInDocumentCoordinates(). Specifically, + it used ScrollView::paint() to paint instead of + FrameView::paintContents(). So this patch restores that + functionality by adding a value to SnapshotOptions indicating + whether the snapshot should be taken in ViewCoordinates + (otherwise it defaults to DocumentCoordinates). + + * Shared/API/c/WKImage.h: + * Shared/API/c/WKSharedAPICast.h: + (WebKit::toSnapshotOptions): + * Shared/ImageOptions.h: + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::scaledSnapshotWithOptions): + + Even though we plan to deprecate this API, it should keep doing + the right thing until it's gone. + * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp: + (WKBundlePageCreateSnapshotInViewCoordinates): + +2012-08-15 Brady Eidson <beidson@apple.com> + + Removing a plug-in element from a page opened in a background tab in Safari crashes + <rdar://problem/12057991> and https://bugs.webkit.org/show_bug.cgi?id=93913 + + Reviewed by Beth Dakin. + + This only happens in WebKit2 with asynchronous plug-in initialization enabled. + + * WebProcess/Plugins/PluginProxy.cpp: + (WebKit::PluginProxy::destroy): Null-check m_connection, as it might not have been created yet. + + * win/WebKit2.def: Export Page::setCanStartMedia for InternalSettings/DRT use. + +2012-08-14 Mark Hahnenberg <mhahnenberg@apple.com> + + Change behavior of MasqueradesAsUndefined to better accommodate DFG changes + https://bugs.webkit.org/show_bug.cgi?id=93884 + + Reviewed by Geoffrey Garen. + + With some upcoming changes to the DFG to remove uses of ClassInfo, we will be changing the behavior of + MasqueradesAsUndefined. In order to make this change consistent across all of our execution engines, + we will make this change to MasqueradesAsUndefined as a separate patch. After this patch, MasqueradesAsUndefined + objects will only masquerade as undefined in their original context (i.e. their original JSGlobalObject). + For example, if an object that masquerades as undefined in frame A is passed to frame B, it will not + masquerade as undefined within frame B, but it will continue to masquerade in frame A. + + * WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp: + (WebKit::NPRuntimeObjectMap::convertJSValueToNPVariant): Passing ExecState to toBoolean call. + +2012-08-15 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> + + [EFL][WK2] Refactoring: start using WKEinaSharedString in ewk_ classes + https://bugs.webkit.org/show_bug.cgi?id=93964 + + Reviewed by Kenneth Rohde Christiansen. + + Started using WKEinaSharedString where it is advisable. + + * UIProcess/API/cpp/efl/WKEinaSharedString.cpp: + (WKEinaSharedString::operator==): + * UIProcess/API/cpp/efl/WKEinaSharedString.h: + * UIProcess/API/efl/ewk_download_job.cpp: + (_Ewk_Download_Job): + (_Ewk_Download_Job::_Ewk_Download_Job): + (_Ewk_Download_Job::~_Ewk_Download_Job): + (ewk_download_job_destination_set): + (ewk_download_job_suggested_filename_set): + * UIProcess/API/efl/ewk_intent.cpp: + (_Ewk_Intent): + (_Ewk_Intent::_Ewk_Intent): + (_Ewk_Intent::~_Ewk_Intent): + (ewk_intent_action_get): + (ewk_intent_type_get): + (ewk_intent_service_get): + * UIProcess/API/efl/ewk_intent_service.cpp: + (_Ewk_Intent_Service): + (_Ewk_Intent_Service::_Ewk_Intent_Service): + (_Ewk_Intent_Service::~_Ewk_Intent_Service): + (ewk_intent_service_action_get): + (ewk_intent_service_type_get): + (ewk_intent_service_href_get): + (ewk_intent_service_title_get): + (ewk_intent_service_disposition_get): + * UIProcess/API/efl/ewk_navigation_policy_decision.cpp: + (_Ewk_Navigation_Policy_Decision): + (_Ewk_Navigation_Policy_Decision::_Ewk_Navigation_Policy_Decision): + (_Ewk_Navigation_Policy_Decision::~_Ewk_Navigation_Policy_Decision): + * UIProcess/API/efl/ewk_url_request.cpp: + (_Ewk_Url_Request): + (_Ewk_Url_Request::_Ewk_Url_Request): + (_Ewk_Url_Request::~_Ewk_Url_Request): + (ewk_url_request_url_get): + (ewk_request_cookies_first_party_get): + (ewk_url_request_http_method_get): + * UIProcess/API/efl/ewk_url_response.cpp: + (_Ewk_Url_Response): + (_Ewk_Url_Response::_Ewk_Url_Response): + (_Ewk_Url_Response::~_Ewk_Url_Response): + (ewk_url_response_url_get): + (ewk_url_response_mime_type_get): + * UIProcess/API/efl/ewk_view.cpp: + (_Ewk_View_Private_Data): + (_Ewk_View_Private_Data::_Ewk_View_Private_Data): + (_Ewk_View_Private_Data::~_Ewk_View_Private_Data): + (ewk_view_uri_update): + (ewk_view_title_get): + (ewk_view_theme_set): + (ewk_view_setting_encoding_custom_get): + (ewk_view_setting_encoding_custom_set): + * UIProcess/API/efl/ewk_web_error.cpp: + (_Ewk_Web_Error): + (_Ewk_Web_Error::_Ewk_Web_Error): + (_Ewk_Web_Error::~_Ewk_Web_Error): + (ewk_web_error_url_get): + (ewk_web_error_description_get): + * UIProcess/API/efl/ewk_web_resource.cpp: + (_Ewk_Web_Resource): + (_Ewk_Web_Resource::_Ewk_Web_Resource): + (_Ewk_Web_Resource::~_Ewk_Web_Resource): + +2012-08-15 Christophe Dumez <christophe.dumez@intel.com> + + [WK2] Add support for Web Intents MessagePorts + https://bugs.webkit.org/show_bug.cgi?id=89072 + + Reviewed by Kenneth Rohde Christiansen. + + Add support for WebIntents MessagePorts in WebKit2. + MessagePorts can be passed with a Web Intent in + order to open a direct communication channel + between the Web application and the intent service. + + This functionality is already supported by WebKit 1. + + This patch introduces a new InjectedBundleIntent + class which wraps a WebCore::Intent. This way + information regarding the MessagePorts in a Web + Intent is kept when using an injected bundle. + + For the UIProcess, WebIntentData now carries + identifiers for the MessagePorts which can go over + IPC. Those identifiers map to actual MessagePorts + stored in the Web process. This way, when the UI + delivers an intent to a frame, we can get back the + corresponding MessagePorts from the Web process + before delivering the intent to the DOMWindow. + + This functionality is already tested by: + + - webintents/web-intents-invoke-port.html + - webintents/web-intents-obj-constructor.html + + * CMakeLists.txt: + * GNUmakefile.list.am: + * Shared/API/c/WKBase.h: + * Shared/APIObject.h: + * Shared/IntentData.cpp: Add MessagePort identifiers. + (WebKit::IntentData::IntentData): + (WebKit::IntentData::encode): + (WebKit::IntentData::decode): + * Shared/IntentData.h: + (IntentData): + * Target.pri: + * UIProcess/API/C/WKIntentData.cpp: Rename WKIntentDataCopyExtra() to + WKIntentDataCopyExtraValue() for clarity. + (WKIntentDataCopyExtraValue): + * UIProcess/API/C/WKIntentData.h: Remove WKIntentDataCreate() function now + that WTR uses WKBundleIntentCreate() instead. + * UIProcess/API/efl/ewk_intent.cpp: + (ewk_intent_extra_get): Use WKIntentDataCopyExtraValue() instead of + WKIntentDataCopyExtra() since it was renamed. + * UIProcess/WebIntentData.cpp: + (WebKit::WebIntentData::WebIntentData): + (WebKit::WebIntentData::~WebIntentData): Remove MessagePorts from WebProcess upon + WebIntentData destruction. + (WebKit): + (WebKit::WebIntentData::extras): + * UIProcess/WebIntentData.h: + (WebKit): + (WebKit::WebIntentData::create): + (WebIntentData): + * UIProcess/WebPageProxy.cpp: + (WebKit::WebPageProxy::didReceiveIntentForFrame): + * UIProcess/WebProcessProxy.cpp: + (WebKit): + (WebKit::WebProcessProxy::removeMessagePortChannel): + * UIProcess/WebProcessProxy.h: + (WebProcessProxy): + * WebProcess/InjectedBundle/API/c/WKBundleAPICast.h: + (WebKit): + * WebProcess/InjectedBundle/API/c/WKBundleIntent.cpp: Copied from Source/WebKit2/UIProcess/API/C/WKIntentData.cpp. + (WKBundleIntentGetTypeID): + (WKBundleIntentCreate): + (WKBundleIntentCopyAction): + (WKBundleIntentCopyType): + (WKBundleIntentCopyService): + (WKBundleIntentCopySuggestions): + (WKBundleIntentCopyExtraValue): + (WKBundleIntentCopyExtras): + (WKBundleIntentMessagePortCount): + * WebProcess/InjectedBundle/API/c/WKBundleIntent.h: Copied from Source/WebKit2/UIProcess/API/C/WKIntentData.h. + * WebProcess/InjectedBundle/API/c/WKBundleIntentRequest.cpp: + (WKBundleIntentRequestCopyIntent): + * WebProcess/InjectedBundle/API/c/WKBundleIntentRequest.h: + * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp: + (WKBundlePageDeliverIntentToFrame): + * WebProcess/InjectedBundle/API/c/WKBundlePage.h: + * WebProcess/InjectedBundle/InjectedBundleIntent.cpp: Copied from Source/WebKit2/UIProcess/WebIntentData.cpp. + (WebKit): + (WebKit::InjectedBundleIntent::create): + (WebKit::InjectedBundleIntent::InjectedBundleIntent): + (WebKit::InjectedBundleIntent::action): + (WebKit::InjectedBundleIntent::payloadType): + (WebKit::InjectedBundleIntent::service): + (WebKit::InjectedBundleIntent::data): + (WebKit::InjectedBundleIntent::extra): + (WebKit::InjectedBundleIntent::extras): + (WebKit::InjectedBundleIntent::suggestions): + * WebProcess/InjectedBundle/InjectedBundleIntent.h: Copied from Source/WebKit2/UIProcess/WebIntentData.h. + (WebKit): + (InjectedBundleIntent): + (WebKit::InjectedBundleIntent::coreIntent): + (WebKit::InjectedBundleIntent::type): + * WebProcess/InjectedBundle/InjectedBundleIntentRequest.cpp: + (WebKit::InjectedBundleIntentRequest::intent): + * WebProcess/InjectedBundle/InjectedBundleIntentRequest.h: + (WebKit): + (InjectedBundleIntentRequest): + * WebProcess/WebPage/WebFrame.cpp: + (WebKit::WebFrame::deliverIntent): + (WebKit): + * WebProcess/WebPage/WebFrame.h: + (WebCore): + (WebFrame): + * WebProcess/WebPage/WebPage.cpp: + (WebKit): + (WebKit::WebPage::deliverCoreIntentToFrame): + * WebProcess/WebPage/WebPage.h: + (WebCore): + (WebPage): + * WebProcess/WebProcess.cpp: Store MessagePorts in WebProcess and keep mapping with + their identifiers. + (WebKit): + (WebKit::WebProcess::addMessagePortChannel): + (WebKit::WebProcess::messagePortChannel): + (WebKit::WebProcess::removeMessagePortChannel): + * WebProcess/WebProcess.h: + (WebCore): + (WebProcess): + * WebProcess/WebProcess.messages.in: + +2012-08-14 Adam Barth <abarth@webkit.org> + + Delete Frame::domWindow() and Frame::existingDOMWindow() + https://bugs.webkit.org/show_bug.cgi?id=93990 + + Reviewed by Eric Seidel. + + * WebProcess/WebPage/WebFrame.cpp: + (WebKit::WebFrame::deliverIntent): + (WebKit::WebFrame::pendingUnloadCount): + +2012-08-14 Lauro Neto <lauro.neto@openbossa.org> + + Convert signals/slots to Q_* macros. + + [Qt] Use Q_SLOTS and Q_SIGNALS instead of slots and signals + https://bugs.webkit.org/show_bug.cgi?id=93996 + + Reviewed by Kenneth Rohde Christiansen. + + Change usage of keyword-conflicting 'signals' and 'slots' for + Q_SIGNALS and Q_SLOTS macro. + + * UIProcess/API/qt/qwebkittest_p.h: + * UIProcess/API/qt/tests/inspectorserver/tst_inspectorserver.cpp: + (tst_InspectorServer): + * UIProcess/API/qt/tests/publicapi/tst_publicapi.cpp: + (tst_publicapi): + * UIProcess/API/qt/tests/qquickwebview/tst_qquickwebview.cpp: + (tst_QQuickWebView): + * UIProcess/API/qt/tests/qrawwebview/tst_qrawwebview.cpp: + (WebView): + (tst_qrawwebview): + * UIProcess/API/qt/tests/util.cpp: + (LoadSpy): + * UIProcess/API/qt/tests/util.h: + (LoadStartedCatcher): + * UIProcess/InspectorServer/qt/WebSocketServerQt.h: + (QtTcpServerHandler): + * UIProcess/qt/QtDialogRunner.cpp: + (DialogContextBase): + (DialogContextObject): + (BaseAuthenticationContextObject): + (CertificateVerificationDialogContextObject): + (FilePickerContextObject): + (DatabaseQuotaDialogContextObject): + * UIProcess/qt/QtDialogRunner.h: + (QtDialogRunner): + * UIProcess/qt/QtWebPageEventHandler.h: + (QtWebPageEventHandler): + * WebProcess/Downloads/qt/QtFileDownloader.h: + +2012-08-14 Alexey Proskuryakov <ap@apple.com> + + [WK2] Track multiple Web Processes per context + https://bugs.webkit.org/show_bug.cgi?id=93915 + + Reviewed by Sam Weinig. + + * UIProcess/Downloads/DownloadProxy.cpp: + (WebKit::DownloadProxy::didReceiveAuthenticationChallenge): Downloads don't work + yet, added a FIXME. + + * UIProcess/WebContext.cpp: + (WebKit::WebContext::deprecatedSharedProcess): Renamed from process(), added an + assertion that this is only used in single proces mode. + (WebKit::WebContext::textCheckerStateChanged): Abstract out access to web processes. + (WebKit::WebContext::ensureSharedWebProcess): Renamed ensureWebProcess() for clarity. + (WebKit::WebContext::createNewWebProcess): Extracted code for creating a process + from ensureWebProcess(). + (WebKit::WebContext::warmInitialProcess): Create the process more explicitly. + (WebKit::WebContext::enableProcessTermination): Iterate over all processes. + (WebKit::WebContext::shouldTerminate): Updated assertion. + (WebKit::WebContext::processDidFinishLaunching): Changed to use process argument + instead of m_process. + (WebKit::WebContext::disconnectProcess): Updated code forto use m_processes. + (WebKit::WebContext::createWebPage): Handle both process policies (initial support + for multi-process). + (WebKit::WebContext::relaunchProcessIfNecessary): Added cases for both policies. + (WebKit::WebContext::download): Ditto. + (WebKit::WebContext::postMessageToInjectedBundle): Ditto. + (WebKit::WebContext::didReceiveSyncMessage): Fixed whitespace. + (WebKit::WebContext::getWebCoreStatistics): Added cases for both policies. + + * UIProcess/WebContext.h: + (WebKit::WebContext::sendToAllProcesses): + (WebKit::WebContext::sendToAllProcessesRelaunchingThemIfNecessary): + Send to all processes. Changed return type to void, since no caller checked it. + + * UIProcess/WebProcessProxy.cpp: (WebKit::WebProcessProxy::createWebPage): Removed + an assertion that assumed one process per context. + + * UIProcess/WebTextChecker.cpp: (WebKit::updateStateForAllWebProcesses): Updated + to use a WebContext method. + +2012-08-14 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> + + WebKitTestRunner needs layoutTestController.dumpResourceLoadCallbacks + https://bugs.webkit.org/show_bug.cgi?id=42332 + + Reviewed by Kenneth Rohde Christiansen. + + Added new getters to WKURL, WKURLRequest, WKURLResponse so that it is possible + to dump information necessary for the tests passing. + + * Shared/API/c/WKURL.cpp: + (WKURLCopyPath): + * Shared/API/c/WKURL.h: + * Shared/API/c/WKURLRequest.cpp: + (WKURLRequestCopyFirstPartyForCookies): + (WKURLRequestCopyHTTPMethod): + * Shared/API/c/WKURLRequest.h: + * Shared/API/c/WKURLResponse.cpp: + (WKURLResponseHTTPStatusCode): + * Shared/API/c/WKURLResponse.h: + * Shared/WebURL.h: + (WebKit::WebURL::path): + (WebURL): + +2012-08-14 Allan Sandfeld Jensen <allan.jensen@nokia.com> + + [Qt] UpdateAtlas is wasting memory + https://bugs.webkit.org/show_bug.cgi?id=93606 + + Reviewed by Jocelyn Turcotte. + + Imported and QAreaAllocator from Qt3D and ported it to WebCore style, + and use this new area allocator to replace old one from UpdateAtlas. + + * CMakeLists.txt: + * Target.pri: + * WebProcess/WebPage/AreaAllocator.cpp: Added. + (WebKit::AreaAllocator::AreaAllocator): + (WebKit::AreaAllocator::~AreaAllocator): + (WebKit::AreaAllocator::expand): + (WebKit::AreaAllocator::expandBy): + (WebKit::AreaAllocator::release): + (WebKit::AreaAllocator::overhead): + (WebKit::AreaAllocator::roundAllocation): + (WebKit::GeneralAreaAllocator::GeneralAreaAllocator): + (WebKit::GeneralAreaAllocator::~GeneralAreaAllocator): + (WebKit::GeneralAreaAllocator::freeNode): + (WebKit::GeneralAreaAllocator::expand): + (WebKit::fitsWithin): + (WebKit::GeneralAreaAllocator::allocate): + (WebKit::GeneralAreaAllocator::allocateFromNode): + (WebKit::GeneralAreaAllocator::splitNode): + (WebKit::GeneralAreaAllocator::updateLargestFree): + (WebKit::GeneralAreaAllocator::release): + (WebKit::GeneralAreaAllocator::overhead): + * WebProcess/WebPage/AreaAllocator.h: Added. + (WebCore::nextPowerOfTwo): + (AreaAllocator): + (WebKit::AreaAllocator::size): + (WebKit::AreaAllocator::minimumAllocation): + (WebKit::AreaAllocator::setMinimumAllocation): + (WebKit::AreaAllocator::margin): + (WebKit::AreaAllocator::setMargin): + (GeneralAreaAllocator): + (Node): + * WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp: + (WebKit::LayerTreeCoordinator::renderNextFrame): + (WebKit::LayerTreeCoordinator::beginContentUpdate): + * WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.h: + (LayerTreeCoordinator): + * WebProcess/WebPage/UpdateAtlas.cpp: + (WebKit::UpdateAtlas::UpdateAtlas): + (WebKit::UpdateAtlas::buildLayoutIfNeeded): + (WebKit::UpdateAtlas::didSwapBuffers): + (WebKit::UpdateAtlas::beginPaintingOnAvailableBuffer): + * WebProcess/WebPage/UpdateAtlas.h: + (UpdateAtlas): + +2012-08-14 Sergio Villar Senin <svillar@igalia.com> + + [GTK] REGRESSION (r122428) WebKit2APITests/TestWebKitFindController fails "next" test + https://bugs.webkit.org/show_bug.cgi?id=91083 + + Reviewed by Carlos Garcia Campos. + + After r122428 search_next()/search_prev() should return just 1 match + if the text is found. + + * UIProcess/API/gtk/tests/TestWebKitFindController.cpp: + (testFindControllerNext): + (testFindControllerPrevious): + +2012-08-13 Carlos Garcia Campos <cgarcia@igalia.com> + + [GTK] Implement smart separators for context menu in WebKit2 GTK+ + https://bugs.webkit.org/show_bug.cgi?id=90449 + + Reviewed by Martin Robinson. + + Don't add to the context menu separators that are at the very + beginning or end of the menu. Once the context menu is shown, + monitor menu items visibility to hide or show separators to make + sure they never appear in the context menu unless they are between + two visible items. + + * UIProcess/API/gtk/tests/TestContextMenu.cpp: + (testContextMenuSmartSeparators): + (beforeAll): + * UIProcess/gtk/WebContextMenuProxyGtk.cpp: + (WebKit::contextMenuItemVisibilityChanged): + (WebKit): + (WebKit::WebContextMenuProxyGtk::append): + (WebKit::WebContextMenuProxyGtk::populate): + +2012-08-14 Kihong Kwon <kihong.kwon@samsung.com> + + [WK2] Add getter for capture attribute of input element + https://bugs.webkit.org/show_bug.cgi?id=93710 + + Reviewed by Antonio Gomes. + + Add getter for capture attribute to WKOpenPanelParameters to support HTML Media Capture. + + * Shared/WebCoreArgumentCoders.cpp: + (CoreIPC::::encode): + (CoreIPC::::decode): + * Shared/WebOpenPanelParameters.cpp: + (WebKit): + (WebKit::WebOpenPanelParameters::capture): + * Shared/WebOpenPanelParameters.h: + (WebOpenPanelParameters): + * UIProcess/API/C/WKOpenPanelParameters.cpp: + (WKOpenPanelParametersCopyCapture): + * UIProcess/API/C/WKOpenPanelParameters.h: + +2012-08-13 Tom Sepez <tsepez@chromium.org> + + [chromium] release FrameLoaderClientImpl::m_pluginWidget refptr upon Plugin Document detach. + https://bugs.webkit.org/show_bug.cgi?id=93283 + + Reviewed by Eric Seidel. + + Chromium has a refptr that needs to be NULLed at this point. + + Change the client redirectDataToPlugin method(s) to expect the possibility of + a NULL argument, keeping existing behaviour otherwise. + + * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: + (WebKit::WebFrameLoaderClient::redirectDataToPlugin): + +2012-08-13 Raphael Kubo da Costa <rakuco@webkit.org> + + [EFL] Unreviewed bot fix after r125467. + + * PlatformEfl.cmake: Make the WK2 tests link against glib, gobject + and gio as well. + +2012-08-13 Raphael Kubo da Costa <rakuco@webkit.org> + + [EFL] Unreviewed attempt at fixing the bots after r125467. + + * PlatformEfl.cmake: Link against GIO and GObject due to the usage + of libsoup. + +2012-08-11 Raphael Kubo da Costa <rakuco@webkit.org> + + [CMake] Rewrite FindLibSoup2.cmake. + https://bugs.webkit.org/show_bug.cgi?id=93191 + + Reviewed by Rob Buis. + + * PlatformEfl.cmake: Use LIBSOUP_FOO instead of LIBSOUP24_FOO, and + do not use LIBSOUP24_LDFLAGS, as it is not needed anymore. + +2012-08-13 Alexey Proskuryakov <ap@apple.com> + + [WK2] Move a remaining per-process message from WebContext to WebProcessProxy + https://bugs.webkit.org/show_bug.cgi?id=93883 + + More Windows build fixing. + + * UIProcess/WebContext.cpp: + (WebKit::WebContext::dummy): + +2012-08-13 Alexey Proskuryakov <ap@apple.com> + + [WK2] Move a remaining per-process message from WebContext to WebProcessProxy + https://bugs.webkit.org/show_bug.cgi?id=93883 + + More Windows build fix + + * UIProcess/WebContext.cpp: + (WebKit::WebPage::dummy): + * UIProcess/WebContext.h: (WebContext): + * UIProcess/WebContext.messages.in: + Add a dummy sync message - the same workaround is already used in WebPage. + +2012-08-13 Brady Eidson <beidson@apple.com> + + With asynchronous plug-in initialization, WebProcess and PluginProcess can deadlock + <rdar://problem/12062125> and https://bugs.webkit.org/show_bug.cgi?id=93894 + + Reviewed by Alexey Proskuryakov. + + A few things were in play here: + - The WebProcess thought the plug-in was done initializing but it wasn't. + - The sync message out from the PluginProcess was not being handled by the WebProcess. + + Expose the ability for the PluginProcess to act as if it is handling a sync message and needs messages dispatched: + * Platform/CoreIPC/Connection.h: + (CoreIPC::Connection::incrementDispatchMessageMarkedDispatchWhenWaitingForSyncReplyCount): + (CoreIPC::Connection::decrementDispatchMessageMarkedDispatchWhenWaitingForSyncReplyCount): + + * PluginProcess/PluginControllerProxy.cpp: + (WebKit::PluginControllerProxy::PluginControllerProxy): + (WebKit::PluginControllerProxy::setInitializationReply): Save the delayed reply for synchronous initialization. + (WebKit::PluginControllerProxy::takeInitializationReply): Give back the delayed reply for initialization completion. + (WebKit::PluginControllerProxy::initialize): + * PluginProcess/PluginControllerProxy.h: + (WebKit::PluginControllerProxy::isInitializing): Accessor so WebProcessConnection knows whether or not to store the + delayed reply for later. + + * PluginProcess/WebProcessConnection.messages.in: Make the synchronous form of "CreatePlugin" have a delayed reply. + * PluginProcess/WebProcessConnection.cpp: + (WebKit::WebProcessConnection::createPlugin): Store away the delayed reply message so it can be responded to after + asynchronous initialization completes. + (WebKit::WebProcessConnection::createPluginAsynchronously): If there is a stored away delayed reply message, respond to + it instead of sending the asynchronously reply. + * PluginProcess/WebProcessConnection.h: + (WebProcessConnection): + +2012-08-13 Alexey Proskuryakov <ap@apple.com> + + [WK2] Move a remaining per-process message from WebContext to WebProcessProxy + https://bugs.webkit.org/show_bug.cgi?id=93883 + + Windows build fix. + + * WebProcess/WebProcess.cpp: + (WebKit::WebProcess::getSitesWithPluginData): + (WebKit::WebProcess::clearPluginSiteData): + Use WebProcessProxy for the message here, too. + +2012-08-13 Alexey Proskuryakov <ap@apple.com> + + [WK2] Move a remaining per-process message from WebContext to WebProcessProxy + https://bugs.webkit.org/show_bug.cgi?id=93883 + + Reviewed by Sam Weinig. + + There was one plug-in message renaming. Moving it, and also other plug-in messages + for consistency. + + * UIProcess/WebContext.cpp: + (WebKit): Got rid of the last MESSAGE_CHECK in this file. + (WebKit::WebContext::WebContext): Moved m_pluginWorkQueue to a singleton. + We don't need more than one queue (all it does is read plug-in info), and if we + needed, it would have been per-process, not per-context. + (WebKit::WebContext::~WebContext): No more work queue. + (WebKit::WebContext::processDidFinishLaunching): Ditto. + + * UIProcess/WebContext.h: No longer needs to be a QueueClient. + + * UIProcess/WebContext.messages.in: + * UIProcess/WebProcessProxy.messages.in: + Moved plug-in related messages. + + * UIProcess/WebProcessProxy.cpp: + (WebKit::pluginWorkQueue): Moved from WebContext to a singleton. + (WebKit::WebProcessProxy::sendDidGetPlugins): Moved from WebContext. + (WebKit::WebProcessProxy::handleGetPlugins): Ditto. + (WebKit::WebProcessProxy::getPlugins): Ditto. + (WebKit::WebProcessProxy::getPluginPath): Ditto. + (WebKit::WebProcessProxy::getPluginProcessConnection): Ditto. + (WebKit::WebProcessProxy::didGetSitesWithPluginData): Ditto. + (WebKit::WebProcessProxy::didClearPluginSiteData): Ditto. + + * UIProcess/WebProcessProxy.h: Process proxy needs to be thread safe ref counted + now, since it sends messages to itself on a work queue and back. + + * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp: + (WebKit::WebPlatformStrategies::populatePluginCache): Updated for new receiver. + + * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::createPlugin): Ditto. + + * WebProcess/WebProcess.cpp: (WebKit::canPluginHandleResponse): Ditto. + +2012-08-13 Raphael Kubo da Costa <rakuco@webkit.org> + + [CMake] Remove glib-related Find modules and write single new one instead. + https://bugs.webkit.org/show_bug.cgi?id=93786 + + Reviewed by Rob Buis. + + * PlatformEfl.cmake: Use GLIB_* instead of Glib_*. + +2012-08-13 Christophe Dumez <christophe.dumez@intel.com> + + [SOUP][WK2] Missing LocalTerminationDisabler in WebCookieManager::setCookiePersistentStorage() + https://bugs.webkit.org/show_bug.cgi?id=93837 + + Reviewed by Carlos Garcia Campos. + + Add missing WebCore::LocalTerminationDisabler in + WebCookieManager::setCookiePersistentStorage() to + temporarily disable process termination. + + * WebProcess/Cookies/soup/WebCookieManagerSoup.cpp: + (WebKit::WebCookieManager::setCookiePersistentStorage): + +2012-08-12 Nuno Lopes <nlopes@apple.com> + + Fix build with recent clang. + https://bugs.webkit.org/show_bug.cgi?id=90701 + + Reviewed by Eric Seidel. + + * Shared/CommandLine.h: + (CommandLine): + * WebProcess/Notifications/NotificationPermissionRequestManager.cpp: + (WebKit::NotificationPermissionRequestManager::NotificationPermissionRequestManager): + * WebProcess/Notifications/NotificationPermissionRequestManager.h: + (NotificationPermissionRequestManager): + +2012-08-11 Sam Weinig <sam@webkit.org> + + Fix the build. + + * Platform/CoreIPC/Connection.h: + Add missing include. + +2012-08-11 Sam Weinig <sam@webkit.org> + + [WK2] Get rid of ProcessModelSharedSecondaryThread + https://bugs.webkit.org/show_bug.cgi?id=93652 + + Reviewed by Dan Bernstein. + + The threaded model for WebKit2 has been broken a long time and its continued existence in + the code only serves to confuse. It's time to say good bye to it. + + * UIProcess/API/C/WKContext.cpp: + * UIProcess/API/C/WKContextPrivate.h: + Remove WKContextGetSharedThreadContext(). + + * UIProcess/ProcessModel.h: + Remove ProcessModelSharedSecondaryThread from the ProcessModel enum. + + * UIProcess/WebContext.cpp: + * UIProcess/WebContext.h: + Remove WebContext::sharedThreadContext(). + + * UIProcess/WebProcessProxy.cpp: + (WebKit::WebProcessProxy::~WebProcessProxy): + (WebKit::WebProcessProxy::connect): + (WebKit::WebProcessProxy::isLaunching): + * UIProcess/WebProcessProxy.h: + Remove the ThreadLauncher member and stop deriving from ThreadLauncher::Client. + + * UIProcess/Launcher/ThreadLauncher.cpp: Removed. + * UIProcess/Launcher/ThreadLauncher.h: Removed. + * UIProcess/Launcher/efl/ThreadLauncherEfl.cpp: Removed. + * UIProcess/Launcher/gtk/ThreadLauncherGtk.cpp: Removed. + * UIProcess/Launcher/mac/ThreadLauncherMac.mm: Removed. + * UIProcess/Launcher/qt/ThreadLauncherQt.cpp: Removed. + * UIProcess/Launcher/win/ThreadLauncherWin.cpp: Removed. + * WebKit2.xcodeproj/project.pbxproj: + * win/WebKit2.vcproj: + * CMakeLists.txt: + * GNUmakefile.list.am: + * PlatformEfl.cmake: + * Target.pri: + Remove ThreadLauncher files. + +2012-08-11 Sam Weinig <sam@webkit.org> + + Enable XPC Service based WebProcess with runtime flag + https://bugs.webkit.org/show_bug.cgi?id=93773 + + Reviewed by Dan Bernstein. + + Use the XPC Service for WebProcess code path if WEBKIT_USE_XPC_SERVICE_FOR_WEB_PROCESS + is set in the environment. + + * UIProcess/Launcher/mac/ProcessLauncherMac.mm: + (WebKit::launchXPCService): + Fix issue that was causing this code not to compile. This was not caught before since + the code was not being built. + + * UIProcess/WebProcessProxy.cpp: + (WebKit::WebProcessProxy::connect): + Switch from hard coding always using the XPC Service code path if + HAVE(XPC) was true, to doing it conditionally on an environment variable. + +2012-08-11 Sam Weinig <sam@webkit.org> + + Make it possible to run the WebProcess as an XPC service + https://bugs.webkit.org/show_bug.cgi?id=92814 + + Reviewed by Anders Carlsson. + + In this initial implementation, we are only using the XPC service + to launch the WebProcess, and then using the xpc_connection to send + over a mach_port to the WebProcess which is then used for creating + the CoreIPC connection. In the future, we will switch to using the + xpc_connection for all messaging. + + When the XPC service is enabled (it is compiled out by default for now), both + the XPC service and the old spawned process are runtime choosable. This allows + the connect to pre-existing process workflow to continue to work. + + There are a few additional caveats of this initial implementation: + - It is only set up for the WebProcess (not for the PluginProcess) + - The WebProcess shim does not work. + - It requires a new environment variable to be set when launching + to find the right service to launch (__XPC_DYLD_FRAMEWORK_PATH). + + * Configurations/WebKit2Service.xcconfig: Added. + Add new configuration file for the service. + + * Platform/CoreIPC/Connection.h: + (CoreIPC::Connection::Identifier::Identifier): + (CoreIPC::Connection::identifierIsNull): + Added to encapsulate the concept of a null identifier, now that it + is not possible to just compare to null. + + * Platform/CoreIPC/mac/ConnectionMac.cpp: + (CoreIPC::Connection::platformInvalidate): + (CoreIPC::Connection::platformInitialize): + Change Connection::Identifier on the Mac to be a struct instead of + a typedef to a mach_port. This allows for the Connection to get both + the listening port and a reference to the xpc_connection (if it + compiled in). For now, all we do is retain the xpc_connection when it + is given to us, and release on Connection invalidation. + + * PluginProcess/PluginProcess.cpp: + (WebKit::PluginProcess::createWebProcessConnection): + * PluginProcess/mac/PluginProcessMainMac.mm: + (WebKit::PluginProcessMain): + * WebProcess/Plugins/PluginProcessConnectionManager.cpp: + (WebKit::PluginProcessConnectionManager::getPluginProcessConnection): + Use the Connection::Identifier constructor. + + * UIProcess/Launcher/ProcessLauncher.h: + (LaunchOptions): + Add a UseXPC option to the LaunchOptions so we can dynamically choose whether to use it. + + (ProcessLauncher): + Make processTypeAsString public to allow better factoring in the implementation file + using static functions. + + * UIProcess/Launcher/mac/ProcessLauncherMac.mm: + Factor out the different launching options into helper functions. Always start by + trying to connect to a pre-existing process. + + (WebKit::launchXPCService): + Create a new xpc_connection to our service, and give it a unique instance UUID. + Then, send a bootstrap message with a mach_port and wait for a reply to complete + the launch procedure. + + (WebKit::tryPreexistingProcess): + Move the code to connect to a preexisting process to its own helper function. + + (WebKit::ProcessLauncher::launchProcess): + Clean up a bit, calling the helper functions and adding call to launch the XPC service + if it is enabled. + + * UIProcess/Launcher/mac/ThreadLauncherMac.mm: + (WebKit::webThreadBody): + (WebKit::ThreadLauncher::createWebThread): + Switch to using the constructor version of Identifier. + + * UIProcess/Plugins/PluginProcessProxy.cpp: + (WebKit::PluginProcessProxy::PluginProcessProxy): + Don't try to use the XPC service for plugins yet. + + (WebKit::PluginProcessProxy::didFinishLaunching): + Use Connection::identifierIsNull instead of explicit null check. + + * UIProcess/WebProcessProxy.cpp: + (WebKit::WebProcessProxy::connect): + If XPC is compiled in (it currently is not) enable it by default. + + * WebKit2.xcodeproj/project.pbxproj: + Add the new files and targets. + + * WebKit2Service: Added. + * WebKit2Service/Info.plist: Added. + Add the paper work needed for an XPC service. Importantly, set up the XPC + service to be an Application service type, use NSApplicationMain as its run + loop, and allow for multiple instantiations. Also make sure the service acts + like the WebProcess binary by making it a LSUIElement, enabling LSFileQuarantine, + and setting the principle class to NSApplication. + + * WebKit2Service/MainMacService.mm: Added. + (WebKit2ServiceEventHandler): + (main): + The initialization of the XPC service is quite a bit different than the + WebProcess version, since we don't get passed parameters in argv. Instead, + we initiate the XPC service via xpc_main, and wait for the bootstrap message + we sent in ProcessLauncherMac.mm. When we receive that message we can load + WebKit2 framework and initialize the WebProcess normally (we also get the mach_port + for the CoreIPC connection in that bootstrap message). + + * WebProcess/mac/WebProcessMainMac.mm: + (WebKit::WebProcessMainXPC): + Add a variant of WebProcessMain that is used for the XPC service case, where we don't + have command line arguments and don't need to talk to the mach bootstrap server. + + (WebKit::WebProcessMain): + * mac/MainMac.cpp: Removed. + * mac/MainMacProcess.cpp: Copied from Source/WebKit2/mac/MainMac.cpp. + Rename MainMac to MainMacProcess to signify that it is different from the XPC + service main. + +2012-08-09 Jer Noble <jer.noble@apple.com> + + Crash exiting from HTML5 FS mode to normal mode via ESC key + https://bugs.webkit.org/show_bug.cgi?id=93663 + + Reviewed by Eric Carlson. + + Crash is due to a refcount underrun with _watchdogTimer due to adopting an autoreleased NSTimer. + Use the non-autoreleased NSTimer creation method and manually add to the main NSRunLoop. + + * UIProcess/mac/WKFullScreenWindowController.mm: + (-[WKFullScreenWindowController cancelOperation:]): + +2012-08-10 Rafael Brandao <rafael.lobo@openbossa.org> + + [Qt] WebViewLoadFavIcon::test_favIconLoad() fails + https://bugs.webkit.org/show_bug.cgi?id=91888 + + Reviewed by Simon Hausmann. + + * UIProcess/API/qt/tests/qmltests/WebView/tst_favIconLoad.qml: + We should wait for iconChanged signal instead of loadFinished, + there was no guarantee that at that point we would get it already. + +2012-08-10 Allan Sandfeld Jensen <allan.jensen@nokia.com> + + [Qt] Uninitialized flags in CoordinatedGraphicsLayer + https://bugs.webkit.org/show_bug.cgi?id=93719 + + Reviewed by Kenneth Rohde Christiansen. + + * WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp: + (WebCore::CoordinatedGraphicsLayer::CoordinatedGraphicsLayer): + +2012-08-10 Mario Sanchez Prada <msanchez@igalia.com> + + [WK2][GTK] Implement new API to save a web page using MHTML + https://bugs.webkit.org/show_bug.cgi?id=89873 + + Reviewed by Carlos Garcia Campos. + + Implemented new asynchronous API in WebKitWebView for saving a web + page to a GInputStream or to a file, using MHTML as the only + supported method at the moment. + + * UIProcess/API/gtk/WebKitWebView.cpp: + (ViewSaveAsyncData): + (webViewFileSavedCallback): + (webViewMHTMLDataGotCallback): + (webkit_web_view_save): + (webkit_web_view_save_finish): + (webkit_web_view_save_to_file): + (webkit_web_view_save_to_file_finish): + * UIProcess/API/gtk/WebKitWebView.h: + + Added new unit test. + + * UIProcess/API/gtk/tests/TestWebKitWebView.cpp: + (testWebViewSave): + (beforeAll): + (afterAll): + + Updated documentation files with new symbols. + + * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: + +2012-08-09 Carlos Garcia Campos <cgarcia@igalia.com> + + Handle SSL errors for SOUP + https://bugs.webkit.org/show_bug.cgi?id=90267 + + Reviewed by Martin Robinson. + + Ignore SSL errors by default for compatibility. + + * WebProcess/efl/WebProcessMainEfl.cpp: + (WebKit::WebProcessMainEfl): + * WebProcess/gtk/WebProcessMainGtk.cpp: + (WebKit::WebProcessMainGtk): + +2012-08-09 Alexey Proskuryakov <ap@apple.com> + + [WK2] Add a process model constant for multiple processes + https://bugs.webkit.org/show_bug.cgi?id=93642 + + Reviewed by Anders Carlsson. + + * UIProcess/ProcessModel.h: Added ProcessModelMultipleSecondaryProcesses. + Deleted ProcessModelSecondaryProcess in favor of more descriptive ProcessModelSharedSecondaryProcess - + these used to behave the same. + + * UIProcess/WebContext.cpp: (WebKit::WebContext::create): Changed to use ProcessModelSharedSecondaryProcess. + + * UIProcess/WebProcessProxy.h: Removed an unncessary include of ProcessModel.h. + +2012-08-09 Dan Bernstein <mitz@apple.com> + + <rdar://problem/12035637> 32-bit PluginProcess launches without appropriate DYLD environment variables if UI process is 64-bit only + https://bugs.webkit.org/show_bug.cgi?id=93596 + + Reviewed by Mark Rowe. + + * UIProcess/Launcher/mac/ProcessLauncherMac.mm: + (WebKit::ProcessLauncher::launchProcess): Changed to pass the current architecture, rather than + the intended child process architecture, to the DynamicLinkerEnvironmentExtractor constructor. + +2012-08-09 Tim Horton <timothy_horton@apple.com> + + Add optional debug logging for tiled scrolling + https://bugs.webkit.org/show_bug.cgi?id=93305 + + Reviewed by Simon Fraser. + + Add a new boolean preference, ScrollingPerformanceLoggingEnabled, which will be used to toggle + the WebCore parts of this change. + + * Shared/WebPreferencesStore.h: Add ScrollingPerformanceLoggingEnabled. + * UIProcess/API/C/WKPreferences.cpp: + (WKPreferencesSetScrollingPerformanceLoggingEnabled): Added. + (WKPreferencesGetScrollingPerformanceLoggingEnabled): Added. + * UIProcess/API/C/WKPreferencesPrivate.h: Add getters and setters for ScrollingPerformanceLoggingEnabled. + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::WebPage): Add ScrollingPerformanceLoggingEnabled. + (WebKit::WebPage::updatePreferences): Add ScrollingPerformanceLoggingEnabled. + (WebKit::WebPage::setScrollingPerformanceLoggingEnabled): Propagate settings changes through to FrameView. + * WebProcess/WebPage/WebPage.h: + (WebKit::WebPage::scrollingPerformanceLoggingEnabled): Add a getter for the setting so that TiledCoreAnimationDrawingArea can access it. + * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm: + (WebKit::TiledCoreAnimationDrawingArea::updatePreferences): Pass ScrollingPerformanceLoggingEnabled down into the scrolling thread. + +2012-08-08 Shane Stephens <shanestephens@google.com> + + Compile flag for CSS Hierarchies + https://bugs.webkit.org/show_bug.cgi?id=92433 + + Reviewed by Tony Chang. + + * Configurations/FeatureDefines.xcconfig: + +2012-08-08 Anders Carlsson <andersca@apple.com> + + REGRESSION: Crash when plug-in initialization fails + https://bugs.webkit.org/show_bug.cgi?id=93534 + <rdar://problem/12059786> + + Reviewed by Simon Fraser. + + Protect the PluginProxy while calling out to functions that could cause it to be destroyed. + + * WebProcess/Plugins/PluginProxy.cpp: + (WebKit::PluginProxy::didFailToCreatePluginInternal): + +2012-08-08 Anders Carlsson <andersca@apple.com> + + Make isTransparentSilverlightBackgroundValue handle all the possible transparent colors + https://bugs.webkit.org/show_bug.cgi?id=93532 + + Reviewed by Simon Fraser. + + * WebProcess/Plugins/Netscape/NetscapePlugin.cpp: + (WebKit::isTransparentSilverlightBackgroundValue): + Check for all the possible transparent colors and assume that the color is opaque otherwise. + + (WebKit::NetscapePlugin::initialize): + Pass the lowercase string to isTransparentSilverlightBackgroundValue. + +2012-08-08 Beth Dakin <bdakin@apple.com> + + https://bugs.webkit.org/show_bug.cgi?id=92275 + Need a way to get a snapshot image that does not show the selection + -and corresponding- + <rdar://problem/11956802> + + Reviewed by Anders Carlsson. + + Added new API WKBundlePageCreateSnapshotWithOptions() + + New enum SnapshotOptions tracks whether snapshots should exclude + selection highlighting in addition to tracking whether the image is + sharable like the original ImageOptions. + * Shared/API/c/WKImage.h: + * Shared/API/c/WKSharedAPICast.h: + (WebKit::snapshotOptionsFromImageOptions): + (WebKit): + (WebKit::toSnapshotOptions): + * Shared/ImageOptions.h: + + New API. + * WebProcess/InjectedBundle/API/c/WKBundlePage.h: + * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp: + (WKBundlePageCreateSnapshotWithOptions): + + These existing APIs all now call + WebPage::scaledSnapshotWithOptions(). + (WKBundlePageCreateSnapshotInViewCoordinates): + (WKBundlePageCreateSnapshotInDocumentCoordinates): + (WKBundlePageCreateScaledSnapshotInDocumentCoordinates): + + This patch removes WebPage::snapshotInViewCoordinates(), + WebPage::snapshotInDocumentCoordinates(), and + WebPage::scaledSnapshotInDocumentCoordinates(). All of the logic is + now consolidated into WebPage::scaledSnapshotWithOptions(). It turns + out that we never did anything different for document coordinates + versus view coordinates, so that complexity could just be eliminated + outright. + * WebProcess/WebPage/WebPage.cpp: + (WebKit::snapshotOptionsToImageOptions): + (WebKit::WebPage::scaledSnapshotWithOptions): + (WebKit): + * WebProcess/WebPage/WebPage.h: + (WebPage): + +2012-08-08 Anders Carlsson <andersca@apple.com> + + Make the Silverlight CAOpenGLLayer opaque if we know the plug-in contents is opaque to reduce blending + https://bugs.webkit.org/show_bug.cgi?id=93508 + <rdar://problem/12056765> + + Reviewed by Simon Fraser. + + * Shared/Plugins/Netscape/mac/NetscapePluginModuleMac.mm: + (WebKit::NetscapePluginModule::determineQuirks): + * Shared/Plugins/PluginQuirks.h: + Rename the MakeTransparentIfBackgroundAttributeExists quirk to MakeOpaqueUnlessTransparentSilverlightBackgroundAttributeExists + since we'll explicitly check for opaque background colors (at least one opaque background color for now), instead of just making the + plug-in transparent whenever there's a background specified. + + * WebProcess/Plugins/Netscape/NetscapePlugin.cpp: + (WebKit::isTransparentSilverlightBackgroundValue): + Helper function for determining if a background value is transparent. Just check for opaque black now and treat everything else as transparent. + + (WebKit::NetscapePlugin::initialize): + Call isTransparentSilverlightBackgroundValue. + + * WebProcess/Plugins/Netscape/mac/NetscapePluginMac.mm: + (WebKit::makeCGLPresentLayerOpaque): + Helper function for grabbing the CGLPresentLayer from the layer hierarchy and setting it to be opaque. + + (WebKit::NetscapePlugin::updatePluginLayer): + Call makeCGLPresentLayerOpaque if the plug-in has the MakeOpaqueUnlessTransparentSilverlightBackgroundAttributeExists quirk and + the plug-in is not transparent. + +2012-08-08 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> + + [WK2] Coding style violation was brought with r125031 + https://bugs.webkit.org/show_bug.cgi?id=93503 + + Reviewed by Alexey Proskuryakov. + + WKURLResponseCopyMimeType is corrected to WKURLResponseCopyMIMEType. + + * Shared/API/c/WKURLResponse.cpp: + (WKURLResponseCopyMIMEType): + * Shared/API/c/WKURLResponse.h: + +2012-08-08 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> + + [EFL] EFL Webkit needs a class wrapping eina stringshare + https://bugs.webkit.org/show_bug.cgi?id=93229 + + Reviewed by Kenneth Rohde Christiansen. + + Added a new auxiliary class wrapping Eina Stringshare and providing + more convenient C++ interface for using it. + + * PlatformEfl.cmake: + * UIProcess/API/cpp/efl/WKEinaSharedString.cpp: Added. + (:m_string): + (WKEinaSharedString::~WKEinaSharedString): + (WKEinaSharedString::operator=): + * UIProcess/API/cpp/efl/WKEinaSharedString.h: Added. + (WebKit): + +2012-08-08 Balazs Kelemen <kbalazs@webkit.org> + + [Qt] Snowshoe desktop crashes when opening a new tab + https://bugs.webkit.org/show_bug.cgi?id=92753 + + Reviewed by Jocelyn Turcotte. + + Change back forceRepaint to consider the UI process state. + It has been tweaked to satisfy the needs of WKPageForceRepaint but + it has other callers so this new behavior was not safe. This patch + implements WebPage::forceRepaintAsync for testing purposes. It is + done by LayerTreeCoordinator that holds the callback and sends the + reply message in the next flushPendingLayerChanges. In theory it + could be implemented for the non conposited path in DrawingAreaImpl + as well but neither it is needed nor can I test it. + + * WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp: + (WebKit::LayerTreeCoordinator::LayerTreeCoordinator): + (WebKit::LayerTreeCoordinator::forceRepaintAsync): + (WebKit): + (WebKit::LayerTreeCoordinator::flushPendingLayerChanges): + * WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.h: + (LayerTreeCoordinator): + * WebProcess/WebPage/DrawingAreaImpl.cpp: + (WebKit::DrawingAreaImpl::forceRepaintAsync): + (WebKit): + * WebProcess/WebPage/DrawingAreaImpl.h: + (DrawingAreaImpl): + * WebProcess/WebPage/LayerTreeHost.h: + (WebKit::LayerTreeHost::forceRepaintAsync): + +2012-08-08 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> + + [WK2] [WTR] Provide Resource Response dumping. + https://bugs.webkit.org/show_bug.cgi?id=93454 + + Reviewed by Kenneth Rohde Christiansen. + + Several new getter functions were added to WKURLResponse and WKURL, so that WTR has + necessary data for dumping. + + * Shared/API/c/WKURL.cpp: + (WKURLCopyLastPathComponent): + * Shared/API/c/WKURL.h: + * Shared/API/c/WKURLResponse.cpp: + (WKURLResponseCopyURL): Returns URL of the response. + (WKURLResponseCopyMimeType): Returns MIME type of the response. + * Shared/API/c/WKURLResponse.h: + * Shared/WebURL.h: + (WebKit::WebURL::lastPathComponent): Returns last path component of the URL. + (WebURL): + +2012-08-08 Eunmi Lee <eunmi15.lee@samsung.com> + + [EFL][WK2] Make ewk_view inheritable in the WebKit2. + https://bugs.webkit.org/show_bug.cgi?id=90054 + + Reviewed by Kenneth Rohde Christiansen. + + Make the ewk_view inheritable by exposing ewk_view_smart_class_set() + API. Additionally, the ewk_view_smart_add() API is added to create + Evas_Object for WebKit2 EFL. The default initialization is done in the + ewk_view_smart_add(), so the object which inherits the ewk_view should + use ewk_view_smart_add() instead of evas_object_smart_add() to create + Evas_Object. + + * UIProcess/API/efl/ewk_context.cpp: + (ewk_context_new_from_WKContext): + * UIProcess/API/efl/ewk_context_private.h: + * UIProcess/API/efl/ewk_view.cpp: + (ewk_view_smart_class_set): + (_ewk_view_smart_class_new): + (_ewk_view_initialize): + (_ewk_view_add_with_smart): + (ewk_view_base_add): + (ewk_view_smart_add): + (ewk_view_add_with_context): + * UIProcess/API/efl/ewk_view.h: + +2012-08-08 Allan Sandfeld Jensen <allan.jensen@nokia.com> + + [Qt] WebProcess hangs on plugin initialization. + https://bugs.webkit.org/show_bug.cgi?id=93272 + + Reviewed by Kenneth Rohde Christiansen. + + * UIProcess/Plugins/PluginProcessProxy.cpp: + (WebKit::PluginProcessProxy::didFinishLaunching): Ensure PluginProcessConnectionManager is informed of plugin crashes. + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::WebPage): Let setIsInWindow set canStartMedia asynchronously. + +2012-08-08 Andras Becsi <andras.becsi@nokia.com> + + [Qt][WK2] Set the fixed layout setting before creating the page + https://bugs.webkit.org/show_bug.cgi?id=93374 + + Reviewed by Noam Rosenthal. + + Any page setting should preferrable be set before creating the page + but fixed layout was set after the initialization of the web page. + + * UIProcess/API/qt/qquickwebview.cpp: + (QQuickWebViewPrivate::initialize): + (QQuickWebViewFlickablePrivate::initialize): + +2012-08-08 Mario Sanchez Prada <msanchez@igalia.com> + + [WK2] Add new C API to generate MHTML data from the UI process + https://bugs.webkit.org/show_bug.cgi?id=89872 + + Reviewed by Anders Carlsson. + + Add new C API in the UI Process, using ENABLE(MHTML) guards as needed. + + * UIProcess/API/C/WKPage.cpp: + (WKPageGetContentsAsMHTMLData): + * UIProcess/API/C/WKPage.h: + + Implementation in the UI Process's WebPage proxy object. + + * UIProcess/WebPageProxy.cpp: + (WebKit): + (WebKit::WebPageProxy::getContentsAsMHTMLData): + * UIProcess/WebPageProxy.h: + (WebPageProxy): + + Implementation in the WebProcess, relying in WebCore::MHTMLArchive. + + * WebProcess/WebPage/WebPage.cpp: + (WebKit): + (WebKit::WebPage::getContentsAsMHTMLData): + * WebProcess/WebPage/WebPage.h: + (WebPage): + * WebProcess/WebPage/WebPage.messages.in: + +2012-08-07 YoungTaeck Song <youngtaeck.song@samsung.com> + + [WK2][EFL] Implement accelerated compositing on WK2 Efl port + https://bugs.webkit.org/show_bug.cgi?id=89840 + + Reviewed by Noam Rosenthal. + + Implement accelerated composition with TiledBackingStore on WK2 Efl port. + This implementation is based on COORDINATED_GRAPHICS. + + * CMakeLists.txt: + * PlatformEfl.cmake: + * Shared/ShareableSurface.cpp: + * Shared/WebCoreArgumentCoders.cpp: + * Shared/WebCoreArgumentCoders.h: + * UIProcess/API/efl/PageClientImpl.cpp: + (WebKit::PageClientImpl::PageClientImpl): + (WebKit::PageClientImpl::didChangeContentsSize): + (WebKit): + * UIProcess/API/efl/PageClientImpl.h: + (PageClientImpl): + * UIProcess/API/efl/ViewportProcessor.cpp: Added. + (WebKit): + (WebKit::ViewportProcessor::ViewportProcessor): + (WebKit::ViewportProcessor::~ViewportProcessor): + (WebKit::ViewportProcessor::display): + (WebKit::ViewportProcessor::updateViewportSize): + (WebKit::ViewportProcessor::setVisibleContentsRect): + (WebKit::ViewportProcessor::didChangeContentsSize): + * UIProcess/API/efl/ViewportProcessor.h: Added. + (WebKit): + (ViewportProcessor): + (WebKit::ViewportProcessor::create): + (WebKit::ViewportProcessor::drawingArea): + (WebKit::ViewportProcessor::viewSize): + * UIProcess/API/efl/ewk_view.cpp: + (_Ewk_View_Private_Data): + (_ewk_view_smart_calculate): + (ewk_view_base_add): + (ewk_view_display): + (ewk_view_contents_size_changed): + * UIProcess/API/efl/ewk_view_private.h: + * UIProcess/PageClient.h: + (PageClient): + * UIProcess/WebPageProxy.cpp: + (WebKit): + (WebKit::WebPageProxy::didChangeContentsSize): + * UIProcess/WebPageProxy.h: + (WebPageProxy): + * UIProcess/WebPageProxy.messages.in: + * WebProcess/WebPage/LayerTreeCoordinator/LayerTreeCoordinator.cpp: + * WebProcess/WebPage/LayerTreeCoordinator/LayerTreeCoordinator.h: + * WebProcess/WebPage/LayerTreeHost.cpp: + (WebKit::LayerTreeHost::create): + * WebProcess/WebPage/LayerTreeHost.h: + (WebKit): + * WebProcess/efl/WebProcessMainEfl.cpp: + (WebKit::WebProcessMainEfl): + +2012-08-07 Csaba Osztrogonác <ossy@webkit.org> + + [Qt] New API tests introuduced in r119723 marked as fail, but pass + https://bugs.webkit.org/show_bug.cgi?id=88870 + + Reviewed by Alexis Menard. + + Revert r119723, because there are 2 failing tests, and the author and + the reviewer of the original patch ignore the bug report long time ago. + + * UIProcess/API/qt/tests/qmltests/WebView/tst_devicePixelRatio.qml: Removed. + +2012-08-07 No'am Rosenthal <noam.rosenthal@nokia.com> + + GraphicsLayerAnimation shouldn't use HashMap<String> + https://bugs.webkit.org/show_bug.cgi?id=93284 + + Reviewed by Kenneth Rohde Christiansen. + + Apply the changes to GraphicsLayerAnimation API. + + * WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp: + (WebCore::CoordinatedGraphicsLayer::addAnimation): + +2012-08-07 No'am Rosenthal <noam.rosenthal@nokia.com> + + [Qt] Make it possible to build without QtQuick + + Reviewed by Simon Hausmann. + + * Target.pri: + * UIProcess/API/qt/tests/tests.pri: + * UIProcess/API/qt/tests/util.cpp: + * UIProcess/API/qt/tests/util.h: + * UIProcess/qt/WebFullScreenManagerProxyQt.cpp: + (WebKit::WebFullScreenManagerProxy::invalidate): + (WebKit::WebFullScreenManagerProxy::enterFullScreen): + (WebKit::WebFullScreenManagerProxy::exitFullScreen): + * UIProcess/qt/WebPageProxyQt.cpp: + (WebKit::WebPageProxy::resolveApplicationSchemeRequest): + (WebKit::WebPageProxy::sendApplicationSchemeReply): + * WebKit2.pri: + +2012-07-19 Simon Hausmann <simon.hausmann@nokia.com> + + [Qt] Remove Qt 4 specific code paths + https://bugs.webkit.org/show_bug.cgi?id=88161 + + Reviewed by Kenneth Rohde Christiansen. + + * UIProcess/API/qt/qquickwebview.cpp: + * UIProcess/API/qt/tests/publicapi/tst_publicapi.cpp: + (gatherAPI): + * WebKit2.pri: + +2012-08-07 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> + + [EFL][WK2] Add back forward list API + https://bugs.webkit.org/show_bug.cgi?id=92345 + + Reviewed by Kenneth Rohde Christiansen. + + Added new Back Forward list API to EFL WK2. Ewk_Back_Forward_List and + Ewk_Back_Forward_List_Item structures were added. The new API is + mostly the same as one from UIProcess/API/C/{ WKBackForwardList.h, WKBackForwardListItem.h }. + + * PlatformEfl.cmake: + * UIProcess/API/efl/ewk_back_forward_list.cpp: Added. + (_Ewk_Back_Forward_List): + (_Ewk_Back_Forward_List::_Ewk_Back_Forward_List): + (getOrCreateItem): + (webkit_back_forward_list_current_item_get): + (webkit_back_forward_list_back_item_get): + (webkit_back_forward_list_forward_item_get): + (webkit_back_forward_list_item_at_index_get): + (webkit_back_forward_list_length_get): + (ewk_back_forward_list_changed): + (ewk_back_forward_list_new): + (ewk_back_forward_list_free): + * UIProcess/API/efl/ewk_back_forward_list.h: Added. + * UIProcess/API/efl/ewk_back_forward_list_item.cpp: Added. + (getItemProperty): + (_Ewk_Back_Forward_List_Item): + (_Ewk_Back_Forward_List_Item::_Ewk_Back_Forward_List_Item): + (_Ewk_Back_Forward_List_Item::~_Ewk_Back_Forward_List_Item): + (ewk_back_forward_list_item_ref): + (ewk_back_forward_list_item_unref): + (ewk_back_forward_list_item_uri_get): + (ewk_back_forward_list_item_title_get): + (ewk_back_forward_list_item_original_uri_get): + (ewk_back_forward_list_item_new): + * UIProcess/API/efl/ewk_back_forward_list_item.h: Added. + * UIProcess/API/efl/ewk_back_forward_list_item_private.h: Added. + * UIProcess/API/efl/ewk_back_forward_list_private.h: Added. + * UIProcess/API/efl/ewk_view.cpp: + (_Ewk_View_Private_Data): + (_Ewk_View_Private_Data::_Ewk_View_Private_Data): + (_Ewk_View_Private_Data::~_Ewk_View_Private_Data): + (ewk_view_back_forward_list_get): New function to get back-forward list. + * UIProcess/API/efl/ewk_view.h: + * UIProcess/API/efl/ewk_view_loader_client.cpp: + (didChangeBackForwardList): The callback added to update back-forward list items cache. + (ewk_view_loader_client_attach): + +2012-08-07 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> + + CUSTOM_SCHEME_HANDLER flag should depend on REGISTER_PROTOCOL_HANDLER + https://bugs.webkit.org/show_bug.cgi?id=93081 + + Reviewed by Adam Barth. + + CUSTOM_SCHEME_HANDLER #if guards are enclosed in the REGISTER_PROTOCOL_HANDLER guards. + + * WebProcess/WebCoreSupport/WebRegisterProtocolHandlerClient.h: + (WebRegisterProtocolHandlerClient): + +2012-08-07 Hyerim Bae <hyerim.bae@samsung.com> + + [EFL][WK2] Add ewk_view_find_client.h / cpp for wrapping WKPageSetPageFindClient. + https://bugs.webkit.org/show_bug.cgi?id=90927 + + Reviewed by Kentaro Hara. + + Add ewk_view_find_client.h / files for wrapping WKPageSetPageFindClient, + add didFindString callback member of WKPageSetPageFindClient. + + * PlatformEfl.cmake: + * UIProcess/API/efl/ewk_view.cpp: + (ewk_view_base_add): + (ewk_view_text_found): + (ewk_view_text_find): + (ewk_view_text_find_highlight_clear): + * UIProcess/API/efl/ewk_view.h: + * UIProcess/API/efl/ewk_view_find_client.cpp: Added. + (toEwkView): + (didFindString): + (ewk_view_find_client_attach): + * UIProcess/API/efl/ewk_view_find_client_private.h: Added. + * UIProcess/API/efl/ewk_view_private.h: + +2012-08-06 Sheriff Bot <webkit.review.bot@gmail.com> + + Unreviewed, rolling out r124816. + http://trac.webkit.org/changeset/124816 + https://bugs.webkit.org/show_bug.cgi?id=93311 + + made some tests crash (Requested by noamr on #webkit). + + * WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp: + (WebCore::CoordinatedGraphicsLayer::addAnimation): + +2012-08-06 No'am Rosenthal <noam.rosenthal@nokia.com> + + GraphicsLayerAnimation shouldn't use HashMap<String> + https://bugs.webkit.org/show_bug.cgi?id=93284 + + Reviewed by Kenneth Rohde Christiansen. + + Apply the changes to GraphicsLayerAnimation API. + + * WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp: + (WebCore::CoordinatedGraphicsLayer::addAnimation): + +2012-08-03 Brady Eidson <beidson@apple.com> + + Out-of-process plug-ins should support asynchronous initialization + <rdar://problem/10598594> and https://bugs.webkit.org/show_bug.cgi?id=92919 + + Reviewed by Anders Carlsson. + + If a plug-in has been deemed capable of asynchronous initialization when run out of process... + ...then do that! + + Add flags to communicate that this plugin create is meant to create a plug-in already requested asynchronously and + to include whether or not the initialize call should include an artificial delay (for testing): + * PluginProcess/PluginCreationParameters.cpp: + (WebKit::PluginCreationParameters::PluginCreationParameters): + (WebKit::PluginCreationParameters::encode): + (WebKit::PluginCreationParameters::decode): + * PluginProcess/PluginCreationParameters.h: + (PluginCreationParameters): + + Add a flag for the UI Process to tell the PluginProcess that it supports asynchronous initialization: + * Shared/Plugins/PluginProcessCreationParameters.cpp: + (WebKit::PluginProcessCreationParameters::PluginProcessCreationParameters): + (WebKit::PluginProcessCreationParameters::encode): + (WebKit::PluginProcessCreationParameters::decode): + * Shared/Plugins/PluginProcessCreationParameters.h: + (PluginProcessCreationParameters): + + Allow the UI Process to pass along whether the plug-on supports asynchronous initialization: + * UIProcess/Plugins/PluginProcessProxy.cpp: + (WebKit::PluginProcessProxy::pluginProcessCrashedOrFailedToLaunch): + (WebKit::PluginProcessProxy::didCreateWebProcessConnection): + * UIProcess/Plugins/PluginProcessProxy.h: + (PluginProcessProxy): + * UIProcess/Plugins/mac/PluginProcessProxyMac.mm: + (WebKit::PluginProcessProxy::platformInitializePluginProcess): + * UIProcess/WebProcessProxy.messages.in: + + Allow the Plugin Process to pass whether or not it supports asynchronous initialization, originally determined + in the UI Process, along to the WebProcess: + * PluginProcess/PluginProcess.cpp: + (WebKit::PluginProcess::PluginProcess): + (WebKit::PluginProcess::initializePluginProcess): + (WebKit::PluginProcess::createWebProcessConnection): + * PluginProcess/PluginProcess.h: + (PluginProcess): + * UIProcess/Plugins/PluginProcessProxy.messages.in: + + Add a flag so PluginProcessConnections remember whether or not they support asynchronous initialization: + * WebProcess/Plugins/PluginProcessConnection.cpp: + (WebKit::PluginProcessConnection::PluginProcessConnection): + (WebKit::PluginProcessConnection::setSupportsAsynchronousPluginInitialization): + (WebKit): + * WebProcess/Plugins/PluginProcessConnection.h: + (WebKit::PluginProcessConnection::create): + (WebKit::PluginProcessConnection::supportsAsynchronousPluginInitialization): + (PluginProcessConnection): + + Create PluginProcessConnections with the flag passed down from the PluginProcess about whether or not they + support asynchronous initialization: + * WebProcess/Plugins/PluginProcessConnectionManager.cpp: + (WebKit::PluginProcessConnectionManager::getPluginProcessConnection): + + Responding to messages from the WebProcess, most of the heavy decision making in asynchronous initialization is here: + * PluginProcess/WebProcessConnection.cpp: + (WebKit::asynchronousInstanceIDsToIgnore): A set of instance IDs to *not* create asynchronously later because we know + we no longer need to. + (WebKit): + (WebKit::WebProcessConnection::didReceiveMessage): + (WebKit::WebProcessConnection::destroyPlugin): If the plug-in doesn't exist but is awaiting asynchronous creation, flag + this instance ID in the "asynchronous ignore set". + (WebKit::WebProcessConnection::createPluginInternal): Renamed from createPlugin, actually does the plug-in creation. + (WebKit::WebProcessConnection::createPlugin): Adds the instance ID to the "asynchronous ignore set" then calls createPluginInternal. + (WebKit::WebProcessConnection::createPluginAsynchronously): If the instance ID is in the "asynchronous ignore set", remove it from the + set and do nothing else. Otherwise, perform the initialization and then send the asynchronous result back to the WebProcess. + * PluginProcess/WebProcessConnection.h: + (WebProcessConnection): + * PluginProcess/WebProcessConnection.messages.in: + + Add helpers for asynchronous initialization that all plug-in types must implement: + * WebProcess/Plugins/Plugin.h: + (Plugin): + + Add helpers for asynchronous initialization that plug-in controllers can override: + * WebProcess/Plugins/PluginController.h: + (PluginController): + (WebKit::PluginController::asynchronousPluginInitializationEnabled): + (WebKit::PluginController::asynchronousPluginInitializationEnabledForAllPlugins): + (WebKit::PluginController::artificialPluginInitializationDelayEnabled): + + Give PluginProxys the ability to initialize either asynchronously or synchronously, and also the ability to synchronously + wait for previously asynchronous initialization (in case their PluginScriptObject is required): + * WebProcess/Plugins/PluginProxy.cpp: + (WebKit::PluginProxy::PluginProxy): + (WebKit::PluginProxy::initialize): Store the plugin creation parameters as a member, and decide whether to try synchronous + or asynchronous initialization. + (WebKit): + (WebKit::PluginProxy::canInitializeAsynchronously): Answer based on preferences and what the PluginProcessConnection says + that it supports. + (WebKit::PluginProxy::waitForAsynchronousInitialization): Synchronously wait on initialization when asynchronous initialization + was previously requested. + (WebKit::PluginProxy::initializeSynchronously): + (WebKit::PluginProxy::didCreatePlugin): Double-check that we're still expecting asynchronous initialization, then call + through to didCreatePluginInternal. + (WebKit::PluginProxy::didCreatePluginInternal): Handle completion of initialization (both synchronously and asynchronously) + (WebKit::PluginProxy::didFailToCreatePlugin): Double-check that we're still expecting asynchronous initialization, then call + through to didFailToCreatePluginInternal. + (WebKit::PluginProxy::didFailToCreatePluginInternal): Handle failure to initialize (both synchronously and asynchronously) + (WebKit::PluginProxy::destroy): + * WebProcess/Plugins/PluginProxy.h: + (WebKit): + (WebKit::PluginProxy::isInitializingAsynchronously): + (PluginProxy): + * WebProcess/Plugins/PluginProxy.messages.in: + + * WebProcess/Plugins/PluginView.cpp: + (WebKit::PluginView::PluginView): + (WebKit::PluginView::~PluginView): Always destroy the plug-in even if it hasn't been initialized yet, as it might be initializing + right now. + (WebKit::PluginView::initializePlugin): Don't handle the result of initialization immediately. Break that out in to two + methods that will be called later. + (WebKit): + (WebKit::PluginView::didFailToInitializePlugin): + (WebKit::PluginView::didInitializePlugin): + (WebKit::PluginView::scriptObject): If we truly need the script object, then wait for a synchronous initialization of the plug-in. + (WebKit::PluginView::asynchronousPluginInitializationEnabled): + (WebKit::PluginView::asynchronousPluginInitializationEnabledForAllPlugins): + (WebKit::PluginView::artificialPluginInitializationDelayEnabled): + * WebProcess/Plugins/PluginView.h: + (PluginView): + + These methods shouldn't be called in the PluginProcess, only in the WebProcess: + * PluginProcess/PluginControllerProxy.cpp: + (WebKit::PluginControllerProxy::didInitializePlugin): + (WebKit): + (WebKit::PluginControllerProxy::didFailToInitializePlugin): + * PluginProcess/PluginControllerProxy.h: + (PluginControllerProxy): + + NetscapePlugin is for in-process plug-ins: + * WebProcess/Plugins/Netscape/NetscapePlugin.h: + (NetscapePlugin): + (WebKit::NetscapePlugin::waitForAsynchronousInitialization): + (WebKit::NetscapePlugin::isInitializingAsynchronously): + + Built-in PDFView is currently only in-process: + * WebProcess/Plugins/PDF/BuiltInPDFView.h: + (BuiltInPDFView): + (WebKit::BuiltInPDFView::waitForAsynchronousInitialization): + (WebKit::BuiltInPDFView::isInitializingAsynchronously): + +2012-08-06 Luciano Wolf <luciano.wolf@openbossa.org> + + [Qt] Default sizes for input-text and text-area are different when running DRT/WTR + https://bugs.webkit.org/show_bug.cgi?id=91990 + + Reviewed by Kenneth Rohde Christiansen. + + WTR wasn't using the proper font types provided by testfonts directory. + The same approach as DRT was applied and now it takes info from QFont to + update the store variable. + + * UIProcess/qt/WebPreferencesQt.cpp: + (WebKit::setStringValueIfInUserDefaults): + (WebKit): + (WebKit::WebPreferences::platformInitializeStore): + +2012-08-06 No'am Rosenthal <noam.rosenthal@nokia.com> + + [Qt] Use GraphicsLayerAnimation in LayerTreeCoordinator + https://bugs.webkit.org/show_bug.cgi?id=93147 + + Reviewed by Kenneth Rohde Christiansen + + Allow controlling animations outside of WebCore. This is an intermediate step before moving + to threaded animations. + + CoordinatedGraphicsLayer maintains the GraphicsLayerAnimation structures, and applies the + animation interpolation at the right time, before syncing the rest of the layer info and + the visible contents rect. + + This also allows sending shorter IPC messages for animated opacity/transform changes, + without the rest of the layer info. + + * UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.cpp: + (WebKit::LayerTreeCoordinatorProxy::setLayerAnimatedOpacity): + (WebKit): + (WebKit::LayerTreeCoordinatorProxy::setLayerAnimatedTransform): + * UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.h: + (LayerTreeCoordinatorProxy): + * UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.messages.in: + * UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp: + (WebKit::LayerTreeRenderer::setAnimatedOpacity): + (WebKit): + (WebKit::LayerTreeRenderer::setAnimatedTransform): + * UIProcess/CoordinatedGraphics/LayerTreeRenderer.h: + (LayerTreeRenderer): + * WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp: + (WebCore::CoordinatedGraphicsLayer::didChangeAnimatedProperties): + (WebCore): + (WebCore::CoordinatedGraphicsLayer::CoordinatedGraphicsLayer): + (WebCore::CoordinatedGraphicsLayer::syncLayerState): + (WebCore::CoordinatedGraphicsLayer::syncAnimatedProperties): + (WebCore::CoordinatedGraphicsLayer::syncCompositingStateForThisLayerOnly): + (WebCore::CoordinatedGraphicsLayer::computeTransformedVisibleRect): + account for the animated transform in the visible rect. + + (WebCore::CoordinatedGraphicsLayer::addAnimation): + (WebCore::CoordinatedGraphicsLayer::pauseAnimation): + (WebCore::CoordinatedGraphicsLayer::removeAnimation): + (WebCore::CoordinatedGraphicsLayer::animationStartedTimerFired): + (WebCore::CoordinatedGraphicsLayer::setAnimatedTransform): + (WebCore::CoordinatedGraphicsLayer::setAnimatedOpacity): + * WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.h: + (CoordinatedGraphicsLayerClient): + (CoordinatedGraphicsLayer): + * WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp: + (WebKit): + (WebKit::LayerTreeCoordinator::setLayerAnimatedOpacity): + (WebKit::LayerTreeCoordinator::setLayerAnimatedTransform): + * WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.h: + (LayerTreeCoordinator): + +2012-08-06 Anders Carlsson <andersca@apple.com> + + If the Apple Java plug-in is blocked and no runtime is installed, don't load it + https://bugs.webkit.org/show_bug.cgi?id=93289 + <rdar://problem/11730092> + + Reviewed by Dan Bernstein. + + If the Apple Java plug-in is blocked, but there's no Java runtime installed (or the Java plug-in is disabled), + don't even include it in the plug-in info store. + + * UIProcess/Plugins/PluginInfoStore.cpp: + (WebKit::PluginInfoStore::shouldBlockPlugin): + Since this is static now, it shouldn't be const. + + * UIProcess/Plugins/PluginInfoStore.h: + (PluginInfoStore): + shouldBlockPlugin can be static. + + * UIProcess/Plugins/mac/PluginInfoStoreMac.mm: + (WebKit::PluginInfoStore::shouldUsePlugin): + Return false if the Apple Java plug-in is blocked but Java isn't installed or enabled. + + (WebKit::PluginInfoStore::shouldBlockPlugin): + Since this is static now, it shouldn't be const. + +2012-08-06 Mario Sanchez Prada <msanchez@igalia.com> + + [WK2][GTK] Improvements for the new spell-checking API + https://bugs.webkit.org/show_bug.cgi?id=93262 + + Reviewed by Carlos Garcia Campos. + + Improve the way the new spell-checking API is implemented, by + using better internal representations for data, documenting better + the new functions and using better unit tests. + + * UIProcess/API/gtk/WebKitTextChecker.cpp: + (WebKitTextChecker::getSpellCheckingLanguages): Just return the + value previously cached when calling to the setter function. + (WebKitTextChecker::setSpellCheckingLanguages): Update the text + checker in WebCore and cache the value returned from it. + * UIProcess/API/gtk/WebKitTextChecker.h: + (WebKitTextChecker): Use a CString instead of an String to cache + the list of spell checking languages. Update getter and setter. + * UIProcess/API/gtk/WebKitWebContext.cpp: + (_WebKitWebContextPrivate): No need to cache the spell checking + languages here anymore. + (webkit_web_context_get_spell_checking_languages): Improve + both implementation and documentation to be more consistent. + (webkit_web_context_set_spell_checking_languages): Make + 'languages' a mandatory (non-NULL) parameter. Update documentation. + * UIProcess/API/gtk/tests/TestWebKitWebContext.cpp: + (testWebContextSpellChecker): Test even more situations. + +2012-08-06 Andras Becsi <andras.becsi@nokia.com> + + [Qt][WK2] Remove workarounds from input event handling + https://bugs.webkit.org/show_bug.cgi?id=93125 + + Reviewed by Jocelyn Turcotte. + + Since input event propagation in Qt5 has been fixed we can remove + the workarounds introduced to prevent the QML WebView from receiving + input events targeting a child dialog. + To do this the childMouseEventFilter function has to be changed to + force touch and mouse events through the default propagation path. + + * UIProcess/API/qt/qquickwebview.cpp: + (QQuickWebViewPrivate::QQuickWebViewPrivate): + (QQuickWebViewLegacyPrivate::initialize): + (QQuickWebView::childMouseEventFilter): + (QQuickWebView::touchEvent): + * UIProcess/API/qt/qquickwebview_p_p.h: + (QQuickWebViewPrivate): + (QQuickWebViewLegacyPrivate): + * UIProcess/qt/QtDialogRunner.cpp: + (WebKit::QtDialogRunner::run): + * UIProcess/qt/WebColorChooserProxyQt.cpp: + (WebKit::WebColorChooserProxyQt::createItem): + (WebKit::WebColorChooserProxyQt::endChooser): + * UIProcess/qt/WebPopupMenuProxyQt.cpp: + (WebKit::WebPopupMenuProxyQt::showPopupMenu): + (WebKit::WebPopupMenuProxyQt::hidePopupMenu): + +2012-08-06 Mario Sanchez Prada <msanchez@igalia.com> + + [WK2][GTK] Implement a new spell checker API for WebKit2GTK+ + https://bugs.webkit.org/show_bug.cgi?id=90268 + + Reviewed by Martin Robinson. + + Add a simple spell checking API to WK2, allowing to enable/disable + this feature and to define a list of languages associated to it. + + * GNUmakefile.am: Add flags to handle the SPELLCHECK feature. + * GNUmakefile.list.am: Added new files + + Added new internal class that will act both as the implementation + of TextCheckerClient and as the object WebKitWebContext will + depend on to implement the newly added API. + + * UIProcess/API/gtk/WebKitTextChecker.cpp: Added. + (toTextChecker): + (continuousSpellCheckingEnabledCallback): + (setContinuousSpellCheckingEnabledCallback): + (checkSpellingOfStringCallback): + (guessesForWordCallback): + (learnWordCallback): + (ignoreWordCallback): + (WebKitTextChecker::~WebKitTextChecker): + (WebKitTextChecker::create): + (WebKitTextChecker::WebKitTextChecker): + (WebKitTextChecker::checkSpellingOfString): + (WebKitTextChecker::getGuessesForWord): + (WebKitTextChecker::learnWord): + (WebKitTextChecker::ignoreWord): + (WebKitTextChecker::setSpellCheckingEnabled): + (WebKitTextChecker::setSpellCheckingLanguages): + * UIProcess/API/gtk/WebKitTextChecker.h: Added. + (WebKitTextChecker): + (WebKitTextChecker::isSpellCheckingEnabled): + (WebKitTextChecker::getSpellCheckingLanguages): + + Added WKTextChecker to WebKitPrivate.h, needed in WebKitTextChecker. + + * UIProcess/API/gtk/WebKitPrivate.h: + + Add new API to WebKitWebContext to allow enabling/disabling this + spell checking feature, and to set/get the list of languages used + to decide which dictionaries will be consulted. + + * UIProcess/API/gtk/WebKitWebContext.cpp: + (_WebKitWebContextPrivate): + (createDefaultWebContext): + (webkit_web_context_get_spell_checking_enabled): New API. + (webkit_web_context_set_spell_checking_enabled): Ditto. + (webkit_web_context_get_spell_checking_languages): Ditto. + (webkit_web_context_set_spell_checking_languages): Ditto. + * UIProcess/API/gtk/WebKitWebContext.h: + + New tests for checking the new API added to WebKitWebContext. + + * UIProcess/API/gtk/tests/TestWebKitWebContext.cpp: + (testWebContextSpellChecker): + (beforeAll): + + Update documentation with new sections and symbols. + + * UIProcess/API/gtk/docs/webkit2gtk-docs.sgml: + * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: + +2012-08-05 Benjamin Poulain <bpoulain@apple.com> + + Assert in checkValidity() in hashtable.h from WebGeolocationManager::didFailToDeterminePosition() when fetching http://html5demos.com/geo + https://bugs.webkit.org/show_bug.cgi?id=80386 + + Reviewed by Alexey Proskuryakov. + + WebKit2's WebGeolocationManager was delivering events without accounting that each event + can modify the list of page that need delivery. + Any page can remove itself by invoking clearWatch() from the callback function. A page can also cause another + page to be removed. + + This patch solves the issue by taking a copy of the list of page before delivery. Each page is + referenced as it can be deleted during the delivery. + + Unfortunately, this cannot be tested due to missing features of WebKitTestRunner. + + * WebProcess/Geolocation/WebGeolocationManager.cpp: + (WebKit::WebGeolocationManager::didChangePosition): + (WebKit::WebGeolocationManager::didFailToDeterminePosition): + +2012-08-04 No'am Rosenthal <noam.rosenthal@nokia.com> + + [Qt] UI_SIDE_COMPOSITING code has confusing names + https://bugs.webkit.org/show_bug.cgi?id=93164 + + Reviewed by Kenneth Rohde Christiansen. + + Renamed and consolidated code guarded under UI_SIDE_COMPOSITING, now under + USE(COORDINATED_GRAPHICS) guard and CoordinatedGraphics folders. + + * CMakeLists.txt: + * DerivedSources.pri: + * Shared/WebCoreArgumentCoders.cpp: + (CoreIPC): + * Shared/WebCoreArgumentCoders.h: + * Shared/WebLayerTreeInfo.cpp: + * Shared/WebLayerTreeInfo.h: + * Target.pri: + * UIProcess/API/qt/qquickwebpage.cpp: + (QQuickWebPage::updatePaintNode): + * UIProcess/API/qt/raw/qrawwebview.cpp: + (QRawWebView::paint): + * UIProcess/CoordinatedGraphics/CoordinatedBackingStore.cpp: Renamed from Source/WebKit2/UIProcess/texmap/LayerBackingStore.cpp. + * UIProcess/CoordinatedGraphics/CoordinatedBackingStore.h: Renamed from Source/WebKit2/UIProcess/texmap/LayerBackingStore.h. + * UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.cpp: Renamed from Source/WebKit2/UIProcess/LayerTreeCoordinatorProxy.cpp. + * UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.h: Renamed from Source/WebKit2/UIProcess/LayerTreeCoordinatorProxy.h. + * UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.messages.in: Renamed from Source/WebKit2/UIProcess/LayerTreeCoordinatorProxy.messages.in. + * UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp: Renamed from Source/WebKit2/UIProcess/WebLayerTreeRenderer.cpp. + * UIProcess/CoordinatedGraphics/LayerTreeRenderer.h: Renamed from Source/WebKit2/UIProcess/WebLayerTreeRenderer.h. + * UIProcess/DrawingAreaProxy.cpp: + (WebKit): + * UIProcess/DrawingAreaProxy.h: + (DrawingAreaProxy): + * UIProcess/DrawingAreaProxyImpl.cpp: + (WebKit::DrawingAreaProxyImpl::DrawingAreaProxyImpl): + (WebKit::DrawingAreaProxyImpl::enterAcceleratedCompositingMode): + (WebKit): + * UIProcess/DrawingAreaProxyImpl.h: + (DrawingAreaProxyImpl): + * UIProcess/WebPageProxy.cpp: + (WebKit::WebPageProxy::didReceiveMessage): + * UIProcess/qt/QtWebPageSGNode.cpp: + (WebKit::ContentsSGNode::ContentsSGNode): + (WebKit::ContentsSGNode::layerTreeRenderer): + (ContentsSGNode): + (WebKit::QtWebPageSGNode::setRenderer): + * UIProcess/qt/QtWebPageSGNode.h: + (WebKit): + (QtWebPageSGNode): + * WebKit2.pri: + * WebProcess/WebCoreSupport/WebChromeClient.cpp: + (WebKit::WebChromeClient::scheduleAnimation): + * WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp: Renamed from Source/WebKit2/WebProcess/WebPage/LayerTreeCoordinator/WebGraphicsLayer.cpp. + * WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.h: Renamed from Source/WebKit2/WebProcess/WebPage/LayerTreeCoordinator/WebGraphicsLayer.h. + * WebProcess/WebPage/CoordinatedGraphics/CoordinatedTile.cpp: Renamed from Source/WebKit2/WebProcess/WebPage/TiledBackingStoreRemoteTile.cpp. + * WebProcess/WebPage/CoordinatedGraphics/CoordinatedTile.h: Renamed from Source/WebKit2/WebProcess/WebPage/TiledBackingStoreRemoteTile.h. + * WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp: Renamed from Source/WebKit2/WebProcess/WebPage/LayerTreeCoordinator/LayerTreeCoordinator.cpp. + * WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.h: Renamed from Source/WebKit2/WebProcess/WebPage/LayerTreeCoordinator/LayerTreeCoordinator.h. + * WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.messages.in: Renamed from Source/WebKit2/WebProcess/WebPage/LayerTreeCoordinator/LayerTreeCoordinator.messages.in. + * WebProcess/WebPage/DrawingArea.h: + (DrawingArea): + * WebProcess/WebPage/DrawingAreaImpl.cpp: + (WebKit): + * WebProcess/WebPage/DrawingAreaImpl.h: + (DrawingAreaImpl): + * WebProcess/WebPage/LayerTreeHost.h: + (LayerTreeHost): + * WebProcess/WebPage/UpdateAtlas.cpp: + * WebProcess/WebPage/UpdateAtlas.h: + * WebProcess/qt/WebProcessMainQt.cpp: + (WebKit::WebProcessMainQt): + +2012-08-04 Christophe Dumez <christophe.dumez@intel.com> + + [WK2] Move WebIntentData from Shared to UIProcess + https://bugs.webkit.org/show_bug.cgi?id=93175 + + Reviewed by Kenneth Rohde Christiansen. + + Move WebIntentData from Shared to UIProcess to + prepare for MessagePorts support in WK2. + + * CMakeLists.txt: + * GNUmakefile.list.am: + * Target.pri: + * UIProcess/WebIntentData.cpp: Renamed from Source/WebKit2/Shared/WebIntentData.cpp. + (WebKit): + (WebKit::WebIntentData::WebIntentData): + (WebKit::WebIntentData::data): + (WebKit::WebIntentData::suggestions): + (WebKit::WebIntentData::extra): + (WebKit::WebIntentData::extras): + * UIProcess/WebIntentData.h: Renamed from Source/WebKit2/Shared/WebIntentData.h. + (WebKit): + (WebIntentData): + (WebKit::WebIntentData::create): + (WebKit::WebIntentData::~WebIntentData): + (WebKit::WebIntentData::action): + (WebKit::WebIntentData::payloadType): + (WebKit::WebIntentData::service): + (WebKit::WebIntentData::store): + (WebKit::WebIntentData::type): + +2012-08-03 Anders Carlsson <andersca@apple.com> + + Nothing happens when clicking on the unavailable plug-in button for a blocked plug-in + https://bugs.webkit.org/show_bug.cgi?id=93161 + + Reviewed by John Sullivan. + + Be more robust against values being added to the RenderEmbeddedObject::PluginUnavailabilityReason + enumeration, and use a switch statement instead of blindly casting the type value to a WKPluginUnavailabilityReason. + + * UIProcess/WebPageProxy.cpp: + (WebKit::WebPageProxy::unavailablePluginButtonClicked): + +2012-08-03 Brady Eidson <beidson@apple.com> + + Small part of "Out-of-process plug-ins should support asynchronous initialization." + <rdar://problem/10598594> and https://bugs.webkit.org/show_bug.cgi?id=92919 + + Unreviewed (build fix). + + * Shared/WebPreferencesStore.h: + (WebKit): Include this file which has the declaration of the new pref. + +2012-08-03 Brady Eidson <beidson@apple.com> + + Small part of "Out-of-process plug-ins should support asynchronous initialization." + <rdar://problem/10598594> and https://bugs.webkit.org/show_bug.cgi?id=92919 + + Reviewed by Anders Carlsson. + + -Add API-level preferences for forcing asynchronous initialization of all plug-ins (for testing). + -Make sure "overridePreference" is hooked up properly for all needed preferences. + + * UIProcess/API/C/WKPreferences.cpp: + (WKPreferencesSetAsynchronousPluginInitializationEnabledForAllPlugins): + (WKPreferencesGetAsynchronousPluginInitializationEnabledForAllPlugins): + * UIProcess/API/C/WKPreferencesPrivate.h: + + * WebProcess/InjectedBundle/InjectedBundle.cpp: + (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner): + + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::WebPage): + (WebKit::WebPage::updatePreferences): + * WebProcess/WebPage/WebPage.h: + (WebKit::WebPage::setAsynchronousPluginInitializationEnabled): + (WebKit::WebPage::asynchronousPluginInitializationEnabledForAllPlugins): + (WebKit::WebPage::setAsynchronousPluginInitializationEnabledForAllPlugins): + (WebKit::WebPage::setArtificialPluginInitializationDelayEnabled): + (WebPage): + +2012-08-02 Jeffrey Pfau <jpfau@apple.com> + + Add API for enabling blanket third-party data blocking + https://bugs.webkit.org/show_bug.cgi?id=93022 + + Reviewed by Anders Carlsson. + + Added API for enabling third-party storage blocking. + + * Shared/WebPreferencesStore.h: + (WebKit): + * UIProcess/API/C/WKPreferences.cpp: + (WKPreferencesSetThirdPartyStorageBlockingEnabled): + (WKPreferencesGetThirdPartyStorageBlockingEnabled): + * UIProcess/API/C/WKPreferences.h: + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::updatePreferences): + +2012-08-03 Hugo Parente Lima <hugo.lima@openbossa.org> + + [Qt][WK2] There's no way to test the gesture tap on WTR + https://bugs.webkit.org/show_bug.cgi?id=92895 + + Reviewed by Kenneth Rohde Christiansen. + + Add an instance of QtViewportHandler to QQuickWebViewPrivate, so it's + now available on mobile and desktop modes, as a side effect gesture tap + events can now be created and sent to WebCore. + + This is needed to test tap gestures and to get tap gestures working + when you have a WebView (in desktop mode) on notebooks equipped with + touch screens. + + * UIProcess/API/qt/qquickwebview.cpp: + (QQuickWebViewPrivate::onComponentComplete): + (QQuickWebViewFlickablePrivate::onComponentComplete): Implementation + moved to QQuickWebViewPrivate::onComponentComplete. + * UIProcess/API/qt/qquickwebview_p_p.h: + (QQuickWebViewPrivate): + (QQuickWebViewFlickablePrivate): + +2012-08-02 Alexey Proskuryakov <ap@apple.com> + + [WK2] Move some WebContext messages to WebProcessProxy + https://bugs.webkit.org/show_bug.cgi?id=93046 + + Reviewed by Anders Carlsson. + + * UIProcess/WebContext.cpp: (WebKit::WebContext::didReceiveSyncMessage): Unrelated + fix - use actual process argument instead of second-guessing where the message came + from. + + * UIProcess/WebContext.h: (WebKit::WebContext::historyClient): Expose history client, + since WebProcessProxy now needs it. + + * UIProcess/WebContext.messages.in: + * UIProcess/WebProcessProxy.cpp: + (WebKit::WebProcessProxy::didNavigateWithNavigationData): + (WebKit::WebProcessProxy::didPerformClientRedirect): + (WebKit::WebProcessProxy::didPerformServerRedirect): + (WebKit::WebProcessProxy::didUpdateHistoryTitle): + * UIProcess/WebProcessProxy.h: + * UIProcess/WebProcessProxy.messages.in: + * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: + (WebKit::WebFrameLoaderClient::updateGlobalHistory): + (WebKit::WebFrameLoaderClient::updateGlobalHistoryRedirectLinks): + (WebKit::WebFrameLoaderClient::setTitle): + Move the messages. + +2012-08-03 Balazs Kelemen <kbalazs@webkit.org> + + Unreviewed, rolling out r124603. + http://trac.webkit.org/changeset/124603 + https://bugs.webkit.org/show_bug.cgi?id=93077 + + Made a few tests crash under + LayerTreeCoordinator::flushPendingLayerChanges + + * WebProcess/WebPage/LayerTreeCoordinator/LayerTreeCoordinator.cpp: + (WebKit::LayerTreeCoordinator::LayerTreeCoordinator): + (WebKit::LayerTreeCoordinator::forceRepaint): + (WebKit::LayerTreeCoordinator::layerTreeTileUpdatesAllowed): + * WebProcess/WebPage/LayerTreeCoordinator/LayerTreeCoordinator.h: + (LayerTreeCoordinator): + +2012-08-03 Mario Sanchez Prada <msanchez@igalia.com> + + Unreviewed build fix for GTK after r124479. + + * UIProcess/WebInspectorProxy.cpp: + (WebKit): Moved static const definitions from header file. + * UIProcess/WebInspectorProxy.h: + (WebInspectorProxy): Don't give values to static const members + here. + +2012-08-03 Balazs Kelemen <kbalazs@webkit.org> + + [WK2] LayerTreeCoordinator can disallow tile updates in forceRepaint + https://bugs.webkit.org/show_bug.cgi?id=93077 + + Reviewed by Jocelyn Turcotte. + + Force tile updates when doing a forced repaint. + + * WebProcess/WebPage/LayerTreeCoordinator/LayerTreeCoordinator.cpp: + (WebKit::LayerTreeCoordinator::LayerTreeCoordinator): + (WebKit::LayerTreeCoordinator::forceRepaint): + (WebKit::LayerTreeCoordinator::layerTreeTileUpdatesAllowed): + * WebProcess/WebPage/LayerTreeCoordinator/LayerTreeCoordinator.h: + (LayerTreeCoordinator): + +2012-08-02 Carlos Garcia Campos <cgarcia@igalia.com> + + [GTK] Inspector should set a default attached height before being attached + https://bugs.webkit.org/show_bug.cgi?id=90767 + + Reviewed by Xan Lopez. + + We are currently using the minimum attached height in + WebKitWebViewBase as the default height for the inspector when + attached. It would be easier for WebKitWebViewBase and embedders + implementing attach() if the inspector already had an attached + height set when it's being attached. + + * UIProcess/API/gtk/WebKitWebViewBase.cpp: + (webkitWebViewBaseContainerAdd): Don't initialize + inspectorViewHeight. + (webkitWebViewBaseSetInspectorViewHeight): Allow to set the + inspector view height before having an inpector view, but only + queue a resize when the view already has an inspector view. + * UIProcess/API/gtk/tests/TestInspector.cpp: + (testInspectorDefault): + (testInspectorManualAttachDetach): + * UIProcess/gtk/WebInspectorProxyGtk.cpp: + (WebKit::WebInspectorProxy::platformAttach): Set the default + attached height before attach the inspector view. + +2012-08-02 Dinu Jacob <dinu.jacob@nokia.com> + + WebKitTestRunner needs layoutTestController.setUserStyleSheetEnabled + https://bugs.webkit.org/show_bug.cgi?id=42679 + + Reviewed by Eric Seidel. + + Added WKBundleSetUserStyleSheetLocation API. + + * WebProcess/InjectedBundle/API/c/WKBundle.cpp: + (WKBundleSetUserStyleSheetLocation): Added. + * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h: Added WKBundleSetUserStyleSheetLocation. + * WebProcess/InjectedBundle/InjectedBundle.cpp: + (WebKit::InjectedBundle::setUserStyleSheetLocation): Added. Sets the user style sheet location + for all pages in the page group. + (WebKit): + * WebProcess/InjectedBundle/InjectedBundle.h: + (InjectedBundle): + +2012-08-02 Lauro Neto <lauro.neto@openbossa.org> + + [Qt] Fix axis locking when panning on N9 + https://bugs.webkit.org/show_bug.cgi?id=92394 + + Reviewed by Simon Hausmann. + + Make the QQuickWebView axis locker calculate the + time between events using QInputEvent.timestamp, which + is set from the native event when available. + + Also use touchPoint.pos() instead of screenPos() to + correct the axis detection when running on N9, which + has a native landscape display and the applications usually + run in portrait mode. + + * UIProcess/API/qt/qquickwebview.cpp: + (QQuickWebViewPrivate::FlickableAxisLocker::FlickableAxisLocker): + (QQuickWebViewPrivate::FlickableAxisLocker::touchVelocity): + (QQuickWebViewPrivate::FlickableAxisLocker::update): + * UIProcess/API/qt/qquickwebview_p_p.h: + (FlickableAxisLocker): + +2012-08-02 Hyerim Bae <hyerim.bae@samsung.com> + + [EFL][WK2]Add ewk_view_ui_client. + https://bugs.webkit.org/show_bug.cgi?id=89864 + + Reviewed by Kentaro Hara. + + Add ewk_view_ui_client.h / cpp files for wrapping WKPageSetPageUIClient, + add close, createNewPage callback member to WKPageSetPageUIClient. + + * PlatformEfl.cmake: + * UIProcess/API/efl/ewk_view.cpp: + (ewk_view_base_add): + (ewk_view_page_close): + (ewk_view_page_create): + * UIProcess/API/efl/ewk_view.h: + * UIProcess/API/efl/ewk_view_private.h: + * UIProcess/API/efl/ewk_view_ui_client.cpp: Added. + (toEwkView): + (closePage): + (createNewPage): + (ewk_view_ui_client_attach): + * UIProcess/API/efl/ewk_view_ui_client_private.h: Added. + +2012-08-02 Carlos Garcia Campos <cgarcia@igalia.com> + + [GTK] No main resource in WebView on load committed when page has been loaded from history cache + https://bugs.webkit.org/show_bug.cgi?id=91482 + + Reviewed by Martin Robinson. + + We assume that on load committed, we already have a main resource + in the web view, and it has already received a response. This is + not true for pages loaded from the history cache, so when going + back/forward, we don't have a main resource when the + load-committed signal is emitted. We must ensure that the loading + process documented in the API is the same for pages loaded from + the history cache too. + + * UIProcess/API/gtk/WebKitLoaderClient.cpp: + (didCommitLoadForFrame): Call webkitWebViewLoadChanged() and let + the web view handle the certificate. + * UIProcess/API/gtk/WebKitWebResource.cpp: + (webkitWebResourceGetFrame): Helper private function to easily get + the WKFrame associated with a WebResource. + * UIProcess/API/gtk/WebKitWebResourcePrivate.h: + * UIProcess/API/gtk/WebKitWebView.cpp: + (webkitWebViewDisconnectMainResourceResponseChangedSignalHandler): + Disconnect the notify::response signal of the main resource. + (webkitWebViewFinalize): Call + webkitWebViewDisconnectMainResourceResponseChangedSignalHandler(). + (setCertificateToMainResource): Set the TLS certificate on the + response of the main resource. + (webkitWebViewEmitLoadChanged): Helper function to emit + load-chancged signal. + (webkitWebViewEmitDelayedLoadEvents): If we were waiting for the + main resource, emit the signals that were delayed. + (webkitWebViewLoadChanged): Do not emit committed or finished if + we are still waiting for the main resource. Set the TLS + certificate if we already have a main resource or wait until we + have the main resource with a response. + (mainResourceResponseChangedCallback): Emitted when the main + resource received the response. Set the certificate on the + response and emit load signals delayed. + (waitForMainResourceResponseIfWaitingForResource): If we are + waiting for the main resource, connect to the notify::response + signal of the WebResource to make sure it has a response already + when load signal delayed are emitted. + (webkitWebViewResourceLoadStarted): Call + waitForMainResourceResponseIfWaitingForResource(). + * UIProcess/API/gtk/tests/LoadTrackingTest.cpp: + (loadChangedCallback): + (LoadTrackingTest::goBack): + (LoadTrackingTest::goForward): + * UIProcess/API/gtk/tests/LoadTrackingTest.h: + (LoadTrackingTest): + * UIProcess/API/gtk/tests/TestLoaderClient.cpp: + (testWebViewHistoryLoad): + (serverCallback): + (beforeAll): + +2012-08-02 Andras Becsi <andras.becsi@nokia.com> + + [Qt][WK2] Click, mouse and links rely on touch mocking. + https://bugs.webkit.org/show_bug.cgi?id=83091 + + Reviewed by Simon Hausmann. + + Send the incoming mouse events directly to the gesture recognizers to make + the WebView behave consistent with other Flickables. + This patch unifies the code paths for input events and makes it possible + to enable mouse events on the flickable web view again, thus makes the + mobile-version of QQuickWebView usable on desktop. + + * UIProcess/API/qt/qquickwebview.cpp: + (QQuickWebViewPrivate::handleMouseEvent): + (QQuickWebViewFlickablePrivate::QQuickWebViewFlickablePrivate): + (QQuickWebViewFlickablePrivate::handleMouseEvent): + (QQuickWebView::mousePressEvent): + (QQuickWebView::mouseMoveEvent): + (QQuickWebView::mouseReleaseEvent): + (QQuickWebView::mouseDoubleClickEvent): + * UIProcess/API/qt/qquickwebview_p_p.h: + (QQuickWebViewPrivate): + (QQuickWebViewFlickablePrivate): + * UIProcess/qt/QtPanGestureRecognizer.cpp: + (WebKit::QtPanGestureRecognizer::update): + * UIProcess/qt/QtWebPageEventHandler.cpp: + (WebKit::QtWebPageEventHandler::QtWebPageEventHandler): + (WebKit::QtWebPageEventHandler::handleInputEvent): + (WebKit): + (WebKit::QtWebPageEventHandler::doneWithTouchEvent): + * UIProcess/qt/QtWebPageEventHandler.h: + (QtWebPageEventHandler): + +2012-08-01 Brady Eidson <beidson@apple.com> + + Small part of "Out-of-process plug-ins should support asynchronous initialization." + <rdar://problem/10598594> and https://bugs.webkit.org/show_bug.cgi?id=92919 + + Reviewed by Anders Carlsson. + + Add API-level preferences for: + - Is asynchronous plug-in initialization enabled. + - Is an artificial initialization delay (for testing purposes) enabled. + + * Shared/WebPreferencesStore.h: + (WebKit): + + * UIProcess/API/C/WKPreferences.cpp: + (WKPreferencesSetAsynchronousPluginInitializationEnabled): + (WKPreferencesGetAsynchronousPluginInitializationEnabled): + (WKPreferencesSetArtificialPluginInitializationDelayEnabled): + (WKPreferencesGetArtificialPluginInitializationDelayEnabled): + * UIProcess/API/C/WKPreferencesPrivate.h: + + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::WebPage): + (WebKit::WebPage::updatePreferences): + * WebProcess/WebPage/WebPage.h: + (WebKit::WebPage::asynchronousPluginInitializationEnabled): + (WebKit::WebPage::artificialPluginInitializationDelayEnabled): + (WebPage): + +2012-08-01 Jian Li <jianli@chromium.org> + + Add new CSS property "-webkit-widget-region" to expose dashboard region support for other port + https://bugs.webkit.org/show_bug.cgi?id=90298 + + Reviewed by Adam Barth. + + * Configurations/FeatureDefines.xcconfig: Add ENABLE_WIDGET_REGION define. + +2012-08-01 Jesus Sanchez-Palencia <jesus.palencia@openbossa.org> + + [Qt][WK2] Race condition between first layout and viewport attributes initialization + https://bugs.webkit.org/show_bug.cgi?id=92902 + + Reviewed by Noam Rosenthal. + + Initializing m_rawAttributes from QtViewportHandler to avoid calculation of random + scale factors on the first layout is triggered. + + * UIProcess/qt/QtViewportHandler.cpp: + (WebKit::QtViewportHandler::QtViewportHandler): + +2012-08-01 Zeno Albisser <zeno@webkit.org> + + [Qt]REGRESSION(r123786): It made 3 fast/animation tests fail. + https://bugs.webkit.org/show_bug.cgi?id=92490 + + Make sure that scripted animations are also serviced when + forceRepaint is being executed. As this is what is being used for + running layout tests. + Move servicing of scripted animations and layoutIfNeeded call + into a separate function syncDisplayState. + This function can then be called from forceRepaint as well as from + performScheduledLayerFlush. + + Reviewed by Noam Rosenthal. + + * WebProcess/WebPage/LayerTreeCoordinator/LayerTreeCoordinator.cpp: + (WebKit::LayerTreeCoordinator::forceRepaint): + (WebKit::LayerTreeCoordinator::performScheduledLayerFlush): + (WebKit): + (WebKit::LayerTreeCoordinator::syncDisplayState): + * WebProcess/WebPage/LayerTreeCoordinator/LayerTreeCoordinator.h: + (LayerTreeCoordinator): + +2012-08-01 Carlos Garcia Campos <cgarcia@igalia.com> + + Unreviewed. Fix GTK+ build with recent version of GTK+. + + Use g_threads_enter/leave instead of the wrapper macros. This + gives a compile warning because they are now deprecated but at + least it builds. + + * UIProcess/API/gtk/WebKitWebView.cpp: + (webkitWebViewRunAsModal): Fix enter/leave order. + * UIProcess/gtk/WebPopupMenuProxyGtk.cpp: + (WebKit::WebPopupMenuProxyGtk::showPopupMenu): + +2012-07-31 Anders Carlsson <andersca@apple.com> + + Prefer the Oracle Java plug-in over the Apple Java plug-in + https://bugs.webkit.org/show_bug.cgi?id=92780 + + Reviewed by Oliver Hunt. + + * UIProcess/Plugins/mac/PluginInfoStoreMac.mm: + (WebKit::findPluginWithBundleIdentifier): + Add a new helper for finding a plug-in with the given bundle identifier. + + (WebKit::checkForPreferredPlugin): + Helper function for making sure that an old plug-in is never loaded if a new plug-in is found, and that the old plug-in + is removed from the list of loaded plug-ins if the new plug-in is found. + + (WebKit::PluginInfoStore::shouldUsePlugin): + Prefer the Oracle Java plug-in over the Apple Java plug-in. + +2012-07-31 Alexey Proskuryakov <ap@apple.com> + + [WK2] Use an actual WebProcessProxy when decoding messages + https://bugs.webkit.org/show_bug.cgi?id=92788 + + Reviewed by Anders Carlsson. + + WebContextUserMessageDecoder gets process proxy from a WebContext object, but we + know which process a message came from, and can just use that. + + * UIProcess/WebContextUserMessageCoders.h: + (WebKit::WebContextUserMessageDecoder::WebContextUserMessageDecoder): + (WebKit::WebContextUserMessageDecoder::decode): + This is the focal point of this patch - decoder no longer needs to call m_context->process(). + + * UIProcess/WebContext.cpp: + (WebKit::WebContext::didReceiveMessage): + (WebKit::WebContext::didReceiveSyncMessage): + * UIProcess/WebContext.h: + These methods now take a WebProcessProxy pointer instead of IPC::Connection, + so that they can call the updated coder. + A number of other didReceiveMessage can be modified to take WebProcessProxy later + if needed (it's a richer interface than IPC::Connection), although not all messages + come from WebProcesses. + + * UIProcess/WebConnectionToWebProcess.cpp: + (WebKit::WebConnectionToWebProcess::didReceiveMessage): + * UIProcess/WebPageProxy.cpp: + (WebKit::WebPageProxy::willGoToBackForwardListItem): + (WebKit::WebPageProxy::registerIntentServiceForFrame): + (WebKit::WebPageProxy::didStartProvisionalLoadForFrame): + (WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame): + (WebKit::WebPageProxy::didFailProvisionalLoadForFrame): + (WebKit::WebPageProxy::didCommitLoadForFrame): + (WebKit::WebPageProxy::didFinishDocumentLoadForFrame): + (WebKit::WebPageProxy::didFinishLoadForFrame): + (WebKit::WebPageProxy::didFailLoadForFrame): + (WebKit::WebPageProxy::didSameDocumentNavigationForFrame): + (WebKit::WebPageProxy::didReceiveTitleForFrame): + (WebKit::WebPageProxy::didFirstLayoutForFrame): + (WebKit::WebPageProxy::didFirstVisuallyNonEmptyLayoutForFrame): + (WebKit::WebPageProxy::didNewFirstVisuallyNonEmptyLayout): + (WebKit::WebPageProxy::didRemoveFrameFromHierarchy): + (WebKit::WebPageProxy::didDisplayInsecureContentForFrame): + (WebKit::WebPageProxy::didRunInsecureContentForFrame): + (WebKit::WebPageProxy::didDetectXSSForFrame): + (WebKit::WebPageProxy::didReceiveIntentForFrame): + (WebKit::WebPageProxy::decidePolicyForNavigationAction): + (WebKit::WebPageProxy::decidePolicyForNewWindowAction): + (WebKit::WebPageProxy::decidePolicyForResponse): + (WebKit::WebPageProxy::unableToImplementPolicy): + (WebKit::WebPageProxy::willSubmitForm): + (WebKit::WebPageProxy::mouseDidMoveOverElement): + (WebKit::WebPageProxy::internalShowContextMenu): + * UIProcess/WebProcessProxy.cpp: + (WebKit::WebProcessProxy::didReceiveMessage): + (WebKit::WebProcessProxy::didReceiveSyncMessage): + Updated arguments accordingly. + +2012-07-31 Andras Becsi <andras.becsi@nokia.com> + + [WK2] Visible content rect update with null trajectory vector does not reach the backing store + https://bugs.webkit.org/show_bug.cgi?id=92750 + + Reviewed by Jocelyn Turcotte. + + Make sure that notifications with a null trajectory vector reach the backing store + since a null vector means that all tiles around the viewport were requested. + + * WebProcess/WebPage/LayerTreeCoordinator/LayerTreeCoordinator.cpp: + (WebKit::LayerTreeCoordinator::setVisibleContentsRect): + +2012-07-31 Marcelo Lira <marcelo.lira@openbossa.org> + + [Qt] Input method update should also include hints + https://bugs.webkit.org/show_bug.cgi?id=92744 + + Reviewed by Simon Hausmann. + + The QInputMethod is told to query for input method hints when updated. + + * UIProcess/qt/QtWebPageEventHandler.cpp: + (WebKit::QtWebPageEventHandler::updateTextInputState): + +2012-07-31 Danilo Cesar Lemes de Paula <danilo.cesar@collabora.co.uk> + + add Farstream flags/deps to WebKit, for WebRTC + https://bugs.webkit.org/show_bug.cgi?id=87524 + + Reviewed by Philippe Normand. + + Since Farstream will be used as the backend for GTK's WebRTC, this + patch adds it as a dependency to the build system. + + * GNUmakefile.am: + +2012-07-30 Huang Dongsung <luxtella@company100.net> + + [Texmap] Remove the backing store after 'style.visibility' for an element sets 'hidden'. + https://bugs.webkit.org/show_bug.cgi?id=92492 + + Reviewed by Noam Rosenthal. + + Texmap handles visibility:hidden in this patch, so WebGraphicsLayer + sends the LayerTreeCoordinatorProxyMessages with additional infomation + to UIProcess. + + * Shared/WebLayerTreeInfo.h: + * UIProcess/WebLayerTreeRenderer.cpp: + (WebKit::WebLayerTreeRenderer::setLayerState): + * WebProcess/WebPage/LayerTreeCoordinator/WebGraphicsLayer.cpp: + (WebCore::WebGraphicsLayer::setContentsVisible): + (WebCore): + (WebCore::WebGraphicsLayer::syncLayerState): + * WebProcess/WebPage/LayerTreeCoordinator/WebGraphicsLayer.h: + (WebGraphicsLayer): + +2012-07-30 Sam Weinig <sam@webkit.org> + + Add a proper umbrella header for the public WebKit2 API headers + https://bugs.webkit.org/show_bug.cgi?id=92708 + <rdar://problem/11970825> + + Reviewed by Dan Bernstein. + + Create a new umbrella WebKit2.h and add the currently public (as decided by their + status in Xcode) Objective-C headers. + + * UIProcess/API/mac/WebKit2.h: Added. + * WebKit2.xcodeproj/project.pbxproj: + While we are here, make WebKit2_C.h a private header. + +2012-07-30 Sam Weinig <sam@webkit.org> + + Rename WebKit2.h to WebKit2_C.h + https://bugs.webkit.org/show_bug.cgi?id=92704 + + Reviewed by Dan Bernstein. + + * GNUmakefile.list.am: + * Target.pri: + * UIProcess/API/C/WebKit2_C.h: Renamed from Source/WebKit2/UIProcess/API/C/WebKit2.h. + * UIProcess/API/gtk/WebKitBackForwardListPrivate.h: + * UIProcess/API/gtk/WebKitPolicyDecisionPrivate.h: + * UIProcess/API/gtk/WebKitPrivate.h: + * UIProcess/API/gtk/WebKitSettingsPrivate.h: + * UIProcess/API/gtk/WebKitWebViewPrivate.h: + * WebKit2.xcodeproj/project.pbxproj: + * win/WebKit2.vcproj: + * win/WebKit2Generated.make: + Update for changed header file name. + +2012-07-28 Sam Weinig <sam@webkit.org> + + Add ability to load from a string to the ObjC WK API + https://bugs.webkit.org/show_bug.cgi?id=92590 + + Reviewed by Dan Bernstein. + + This adds an often used method to the new Objective-C API and will + be helpful for writing API tests. + + * UIProcess/API/mac/WKBrowsingContextController.h: + * UIProcess/API/mac/WKBrowsingContextController.mm: + (-[WKBrowsingContextController loadHTMLString:baseURL:]): + Implement via calling down to WKPageLoadHTMLString. + +2012-07-30 Rafael Brandao <rafael.lobo@openbossa.org> + + [WK2] Kill the concept of secondary shared process + https://bugs.webkit.org/show_bug.cgi?id=92676 + + Reviewed by Alexey Proskuryakov. + + Build fix after r124092. + + * UIProcess/qt/QtWebContext.cpp: Build fix for Qt. In exchange of the + method removed, I've used WebContext::create(String()). + +2012-07-30 Alexey Proskuryakov <ap@apple.com> + + [WK2] Kill the concept of secondary shared process + https://bugs.webkit.org/show_bug.cgi?id=92676 + + Reviewed by Sam Weinig. + + * UIProcess/API/C/WKContext.cpp: + * UIProcess/API/C/WKContext.h: + * UIProcess/WebContext.cpp: + * UIProcess/WebContext.h: + Deleted shared process related code. We don't need to build the singleton into + the cross-platform C API, platform-specific API wrappers are perfectly capable + of doing that. + + * UIProcess/API/efl/ewk_context.cpp: (createDefaultEwkContext): + * UIProcess/API/gtk/WebKitWebContext.cpp: (createDefaultWebContext): + Use WKContextCreate() when creating default context. + +2012-07-30 Claudio Saavedra <csaavedra@igalia.com> + + [GTK] critical warning: gdk_window_get_cursor() called on a NULL window + https://bugs.webkit.org/show_bug.cgi?id=92651 + + Reviewed by Martin Robinson. + + PageClientImpl::setCursor() might get called before the + window is realized, so safeguard against it. + + * UIProcess/API/gtk/PageClientImpl.cpp: + (WebKit::PageClientImpl::setCursor): early return if the window is + not realized. + +2012-07-30 Sheriff Bot <webkit.review.bot@gmail.com> + + Unreviewed, rolling out r123983. + http://trac.webkit.org/changeset/123983 + https://bugs.webkit.org/show_bug.cgi?id=92663 + + EFL build is broken when unit tests are enabled (Requested by + paroga on #webkit). + + * CMakeLists.txt: + * PlatformEfl.cmake: + +2012-07-30 Sheriff Bot <webkit.review.bot@gmail.com> + + Unreviewed, rolling out r123966 and r123967. + http://trac.webkit.org/changeset/123966 + http://trac.webkit.org/changeset/123967 + https://bugs.webkit.org/show_bug.cgi?id=92656 + + This patch is causing assertion failures on the debug bot + (also rolling out a dependent patch) (Requested by mrobinson + on #webkit). + + * GNUmakefile.am: + * GNUmakefile.list.am: + * UIProcess/API/gtk/WebKitPrivate.h: + * UIProcess/API/gtk/WebKitTextChecker.cpp: Removed. + * UIProcess/API/gtk/WebKitTextChecker.h: Removed. + * UIProcess/API/gtk/WebKitWebContext.cpp: + (_WebKitWebContextPrivate): + (createDefaultWebContext): + * UIProcess/API/gtk/WebKitWebContext.h: + * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: + * UIProcess/API/gtk/tests/TestWebKitWebContext.cpp: + (beforeAll): + +2012-07-29 Vsevolod Vlasov <vsevik@chromium.org> + + Web Inspector: Resource agent's reference to cached resources should be weak. + https://bugs.webkit.org/show_bug.cgi?id=92108 + + Reviewed by Pavel Feldman. + + * win/WebKit2.def: + * win/WebKit2CFLite.def: + +2012-07-30 Sheriff Bot <webkit.review.bot@gmail.com> + + Unreviewed, rolling out r124000. + http://trac.webkit.org/changeset/124000 + https://bugs.webkit.org/show_bug.cgi?id=92632 + + seems to have broken chromium Range_InstanceSizeUnknown unit + test across many platforms (Requested by tomhudson on + #webkit). + + * win/WebKit2.def: + * win/WebKit2CFLite.def: + +2012-07-27 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> + + [Qt] Remove accurateVisibleContentsPosition and use a FloatRect for visibleContentsRect instead + https://bugs.webkit.org/show_bug.cgi?id=92536 + + Reviewed by Noam Rosenthal. + + AccurateVisibleContentsPosition carries the same information as visibleContentsRect.location() and + is needed for fixed layer position updates. + This patch instead uses a FloatRect for the visible contents rect from the web view down to the + LayerCoordinatorProxy, and converts it to an IntRect at this moment, before sending it to the + web process. + This also moves the check to prevent sending the same rect to the moment of the conversion + in LayerTreeCoordinatorProxy to fix a bug where the fixed layer deltas wouldn't be updated + unless the integer part of position components changed. + + * UIProcess/API/qt/qquickwebview.cpp: + (QQuickWebViewLegacyPrivate::updateViewportSize): + * UIProcess/DrawingAreaProxy.h: + (WebKit::DrawingAreaProxy::setVisibleContentsRect): + * UIProcess/DrawingAreaProxyImpl.cpp: + (WebKit::DrawingAreaProxyImpl::setVisibleContentsRect): + * UIProcess/DrawingAreaProxyImpl.h: + (DrawingAreaProxyImpl): + * UIProcess/LayerTreeCoordinatorProxy.cpp: + (WebKit::LayerTreeCoordinatorProxy::LayerTreeCoordinatorProxy): + (WebKit::LayerTreeCoordinatorProxy::setVisibleContentsRect): + * UIProcess/LayerTreeCoordinatorProxy.h: + (LayerTreeCoordinatorProxy): + * UIProcess/WebLayerTreeRenderer.cpp: + (WebKit::WebLayerTreeRenderer::WebLayerTreeRenderer): + (WebKit::WebLayerTreeRenderer::setVisibleContentsRect): + (WebKit::WebLayerTreeRenderer::adjustPositionForFixedLayers): + * UIProcess/WebLayerTreeRenderer.h: + (WebLayerTreeRenderer): + * UIProcess/qt/QtViewportHandler.cpp: + (WebKit::QtViewportHandler::visibleContentsRect): + (WebKit::QtViewportHandler::informVisibleContentChange): + * UIProcess/qt/QtViewportHandler.h: + (QtViewportHandler): + +2012-07-27 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> + + [Qt] Fix issues remaining with fixed positioned layers + https://bugs.webkit.org/show_bug.cgi?id=92528 + + Reviewed by Noam Rosenthal. + + This partially fixes jittering of fixed layers when zoomed in and the + blurriness of rendered tiles of the non-composited contents layer. + + * UIProcess/WebLayerTreeRenderer.cpp: + (WebKit::boundedScrollPosition): + (WebKit::WebLayerTreeRenderer::paintToCurrentGLContext): + Remove the adjustment on the root layer. This cancels setPixelAligned and causes the blurriness. + (WebKit::WebLayerTreeRenderer::adjustPositionForFixedLayers): + Use m_accurateVisibleContentsPosition to calculate the delta. + (WebKit::WebLayerTreeRenderer::didChangeScrollPosition): + +2012-07-29 Vsevolod Vlasov <vsevik@chromium.org> + + Web Inspector: Resource agent's reference to cached resources should be weak. + https://bugs.webkit.org/show_bug.cgi?id=92108 + + Reviewed by Pavel Feldman. + + * win/WebKit2.def: + * win/WebKit2CFLite.def: + +2012-07-29 YoungTaeck Song <youngtaeck.song@samsung.com> + + [WK2][EFL] TILED_BACKING_STORE support on Efl WebKit2 + https://bugs.webkit.org/show_bug.cgi?id=91582 + + Reviewed by Noam Rosenthal. + + This patch is a subset of Efl's UI_SIDE_COMPOSITING implementation. + Add a dummy function for fixing building error when enabling TILED_BACKING_STORE. + + * UIProcess/API/efl/PageClientImpl.cpp: + (WebKit): + (WebKit::PageClientImpl::pageDidRequestScroll): + * UIProcess/API/efl/PageClientImpl.h: + (PageClientImpl): + * WebProcess/WebCoreSupport/WebChromeClient.cpp: + (WebKit::WebChromeClient::contentsSizeChanged): + +2012-07-29 Patrick Gansterer <paroga@webkit.org> + + [CMake] Use WEBKIT_CREATE_FORWARDING_HEADERS to generate WK2 forwarding headers + https://bugs.webkit.org/show_bug.cgi?id=83579 + + Reviewed by Daniel Bates. + + Using a list of directories in combination with the WEBKIT_CREATE_FORWARDING_HEADERS + macro allows us to share the common generation of forwarding headers across ports. + + * CMakeLists.txt: + * PlatformEfl.cmake: + +2012-07-28 Sam Weinig <sam@webkit.org> + + Stop copying unnecessary files in WebKit2 build + https://bugs.webkit.org/show_bug.cgi?id=92587 + + Reviewed by Dan Bernstein. + + * WebKit2.xcodeproj/project.pbxproj: + We were accidentally copying ColorSpaceData.h and EventDispatcher.messages.in into the + build products. Stop this. + +2012-07-28 Ryuan Choi <ryuan.choi@samsung.com> + + [WK2][EFL] Add ewk_view_scale_{get|set} to EwkView. + https://bugs.webkit.org/show_bug.cgi?id=92446 + + Reviewed by Kenneth Rohde Christiansen. + + Add methods to Ewk_View to get or set the scale factor of page. + + * UIProcess/API/efl/ewk_view.cpp: + (ewk_view_scale_set): + (ewk_view_scale_get): + * UIProcess/API/efl/ewk_view.h: + +2012-07-28 Mario Sanchez Prada <msanchez@igalia.com> + + [WK2][GTK] Implement a new spell checker API for WebKit2GTK+ + https://bugs.webkit.org/show_bug.cgi?id=90268 + + Reviewed by Martin Robinson. + + Add a simple spell checking API to WK2, allowing to enable/disable + this feature and to define a list of languages associated to it. + + * GNUmakefile.am: Add flags to handle the SPELLCHECK feature. + * GNUmakefile.list.am: Added new files + + Added new internal class that will act both as the implementation + of TextCheckerClient and as the object WebKitWebContext will + depend on to implement the newly added API. + + * UIProcess/API/gtk/WebKitTextChecker.cpp: Added. + (toTextChecker): + (continuousSpellCheckingEnabledCallback): + (setContinuousSpellCheckingEnabledCallback): + (checkSpellingOfStringCallback): + (guessesForWordCallback): + (learnWordCallback): + (ignoreWordCallback): + (WebKitTextChecker::~WebKitTextChecker): + (WebKitTextChecker::create): + (WebKitTextChecker::WebKitTextChecker): + (WebKitTextChecker::checkSpellingOfString): + (WebKitTextChecker::getGuessesForWord): + (WebKitTextChecker::learnWord): + (WebKitTextChecker::ignoreWord): + (WebKitTextChecker::setSpellCheckingEnabled): + (WebKitTextChecker::setSpellCheckingLanguages): + * UIProcess/API/gtk/WebKitTextChecker.h: Added. + (WebKitTextChecker): + (WebKitTextChecker::isSpellCheckingEnabled): + (WebKitTextChecker::getSpellCheckingLanguages): + + Added WKTextChecker to WebKitPrivate.h, needed in WebKitTextChecker. + + * UIProcess/API/gtk/WebKitPrivate.h: + + Add new API to WebKitWebContext to allow enabling/disabling this + spell checking feature, and to set/get the list of languages used + to decide which dictionaries will be consulted. + + * UIProcess/API/gtk/WebKitWebContext.cpp: + (_WebKitWebContextPrivate): + (createDefaultWebContext): + (webkit_web_context_get_spell_checking_enabled): New API. + (webkit_web_context_set_spell_checking_enabled): Ditto. + (webkit_web_context_get_spell_checking_languages): Ditto. + (webkit_web_context_set_spell_checking_languages): Ditto. + * UIProcess/API/gtk/WebKitWebContext.h: + + New tests for checking the new API added to WebKitWebContext. + + * UIProcess/API/gtk/tests/TestWebKitWebContext.cpp: + (testWebContextSpellChecker): + (beforeAll): + + Update documentation with new sections and symbols. + + * UIProcess/API/gtk/docs/webkit2gtk-docs.sgml: + * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: + +2012-07-27 Christophe Dumez <christophe.dumez@intel.com> + + [EFL][WK2] Assertion hit in ewk_cookie_manager.cpp + https://bugs.webkit.org/show_bug.cgi?id=92544 + + Reviewed by Kenneth Rohde Christiansen. + + Removed wrong assertion in ewk_cookie_manager.cpp + and replace it by an if check. The assertion was + sometimes hit by our unit tests. + + * UIProcess/API/efl/ewk_cookie_manager.cpp: + (cookiesDidChange): + +2012-07-27 Anders Carlsson <andersca@apple.com> + + Don't use an NSUserDefault for disabling the web process sandbox + https://bugs.webkit.org/show_bug.cgi?id=92542 + <rdar://problem/11976060> + + Reviewed by Mark Rowe. + + The user default was really helpful during WebKit2 bringup, but we no longer need to pay the IPC cost of initializing NSUserDefaults at startup, + so get rid of the preference and use a good old #ifdef instead. + + * WebProcess/mac/WebProcessMac.mm: + (WebKit::initializeSandbox): + +2012-07-27 Christophe Dumez <christophe.dumez@intel.com> + + [WK2][WTR] LayoutTestController.deliverWebIntent() needs to be implemented + https://bugs.webkit.org/show_bug.cgi?id=92228 + + Reviewed by Anders Carlsson. + + Add C API to create a WKIntentData and to deliver + it to a frame. This is needed by WebKitTestRunner + to implement LayoutTestController.deliverWebIntent(). + + * UIProcess/API/C/WKIntentData.cpp: + (WKIntentDataCreate): + * UIProcess/API/C/WKIntentData.h: + * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp: + (WKBundlePageDeliverIntentToFrame): + * WebProcess/InjectedBundle/API/c/WKBundlePage.h: + * WebProcess/WebPage/WebPage.h: + (WebPage): Make deliverIntentToFrame() public so that it can + be used by WKBundlePage. + +2012-07-27 Anders Carlsson <andersca@apple.com> + + Show the unavailable plug-in indicator for Java applets as well + https://bugs.webkit.org/show_bug.cgi?id=92521 + + Reviewed by Sam Weinig. + + * WebProcess/WebCoreSupport/WebChromeClient.cpp: + (WebKit::WebChromeClient::unavailablePluginButtonClicked): + This can now be called on applet elements as well. + + * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: + (WebKit::WebFrameLoaderClient::createJavaAppletWidget): + Get the MIME type from the applet element. + +2012-07-27 Gyuyoung Kim <gyuyoung.kim@samsung.com> + + [WK2] Fix build warning in WebEventConversion.cpp + https://bugs.webkit.org/show_bug.cgi?id=92517 + + Reviewed by Darin Adler. + + There is a build warning related to comparison between signed and unsigned integer expressions. + + * Shared/WebEventConversion.cpp: + (WebKit::WebKit2PlatformTouchEvent::WebKit2PlatformTouchEvent): + +2012-07-27 Gyuyoung Kim <gyuyoung.kim@samsung.com> + + [WK2] Fix build warning in WebEventConversion.cpp + https://bugs.webkit.org/show_bug.cgi?id=92517 + + Reviewed by Darin Adler. + + There is a build warning related to comparison between signed and unsigned integer expressions. + + * Shared/WebEventConversion.cpp: + (WebKit::WebKit2PlatformTouchEvent::WebKit2PlatformTouchEvent): + +2012-07-27 Christophe Dumez <christophe.dumez@intel.com> + + [EFL][WK2] Add download client for Ewk_Context + https://bugs.webkit.org/show_bug.cgi?id=91345 + + Reviewed by Kenneth Rohde Christiansen. + + Add download client for Ewk_Context so that + information about downloads can be reported + to the client application via Ewk_View signals. + + The client application needs to listen for + "download,request" signal on the view and set + the download path for the download in the + callback in order to accept it. If the signal + is ignored or if the download path is not set + the download will fail. + + A new Ewk_Download_Job type is introduced to provide + information relative to a download to the client + and to allow the client to interact with it (e.g. + set its download path, cancel it, ...). + + * PlatformEfl.cmake: + * UIProcess/API/efl/EWebKit2.h: + * UIProcess/API/efl/PageClientImpl.cpp: + (WebKit::PageClientImpl::handleDownloadRequest): + (WebKit): + * UIProcess/API/efl/PageClientImpl.h: + (PageClientImpl): + * UIProcess/API/efl/ewk_context.cpp: + (_Ewk_Context): + (_Ewk_Context::_Ewk_Context): + (_Ewk_Context::~_Ewk_Context): + (ewk_context_download_job_add): + (ewk_context_download_job_get): + (ewk_context_download_job_remove): + * UIProcess/API/efl/ewk_context_download_client.cpp: Added. + (toEwkContext): + (decideDestinationWithSuggestedFilename): + (didReceiveResponse): + (didCreateDestination): + (didReceiveData): + (didFail): + (didCancel): + (didFinish): + (ewk_context_download_client_attach): + * UIProcess/API/efl/ewk_context_download_client_private.h: Added. + * UIProcess/API/efl/ewk_context_private.h: + * UIProcess/API/efl/ewk_download_job.cpp: Added. + (_Ewk_Download_Job): + (_Ewk_Download_Job::_Ewk_Download_Job): + (_Ewk_Download_Job::~_Ewk_Download_Job): + (ewk_download_job_ref): + (ewk_download_job_unref): + (ewk_download_job_id_get): + (ewk_download_job_view_get): + (ewk_download_job_state_get): + (ewk_download_job_request_get): + (ewk_download_job_response_get): + (ewk_download_job_destination_get): + (ewk_download_job_destination_set): + (ewk_download_job_suggested_filename_get): + (ewk_download_job_cancel): + (ewk_download_job_estimated_progress_get): + (ewk_download_job_elapsed_time_get): + (ewk_download_job_response_set): + (ewk_download_job_suggested_filename_set): + (ewk_download_job_received_data): + (ewk_download_job_state_set): + (ewk_download_job_new): + * UIProcess/API/efl/ewk_download_job.h: Added. + * UIProcess/API/efl/ewk_download_job_private.h: Added. + (WebKit): + * UIProcess/API/efl/ewk_url_response.cpp: + (ewk_url_response_content_length_get): Add a function to + retrieve the content length of a URL response. + * UIProcess/API/efl/ewk_url_response.h: + * UIProcess/API/efl/ewk_view.cpp: + (ewk_view_download_job_cancelled): + (ewk_view_download_job_requested): + (ewk_view_download_job_failed): + (ewk_view_download_job_finished): + * UIProcess/API/efl/ewk_view.h: + * UIProcess/API/efl/ewk_view_private.h: + * UIProcess/API/efl/tests/resources/test.pdf: Added. + * UIProcess/API/efl/tests/test_ewk2_download_job.cpp: Added. This tests + the download functionality. + (DownloadTestData): + (fileExists): + (serverCallback): + (on_download_requested): + (on_download_cancelled): + (on_download_failed): + (on_download_finished): + (TEST_F): + * UIProcess/PageClient.h: + (PageClient): + * UIProcess/WebPageProxy.cpp: + (WebKit::WebPageProxy::receivedPolicyDecision): + (WebKit): + (WebKit::WebPageProxy::handleDownloadRequest): + * UIProcess/WebPageProxy.h: + (WebPageProxy): + +2012-07-27 YoungTaeck Song <youngtaeck.song@samsung.com> + + [WK2][EFL] Add an ACCELERATED_COMPOSITING implementation for Efl WebKit2 + https://bugs.webkit.org/show_bug.cgi?id=91581 + + Reviewed by Noam Rosenthal. + + This patch is a subset of Efl's UI_SIDE_COMPOSITING implementation. + When enter accelerated compositing mode, create evas_gl, evas_gl_context, and evas_gl_surface. + + * PlatformEfl.cmake: + * Shared/LayerTreeContext.h: + (LayerTreeContext): + * UIProcess/API/efl/PageClientImpl.cpp: + (WebKit::PageClientImpl::viewSize): + (WebKit::PageClientImpl::enterAcceleratedCompositingMode): + (WebKit::PageClientImpl::exitAcceleratedCompositingMode): + * UIProcess/API/efl/ewk_view.cpp: + (_Ewk_View_Private_Data): + (_Ewk_View_Private_Data::_Ewk_View_Private_Data): + (ewk_view_size_get): + (ewk_view_create_gl_surface): + (ewk_view_enter_accelerated_compositing_mode): + (ewk_view_exit_accelerated_compositing_mode): + (_ewk_view_smart_calculate): + * UIProcess/API/efl/ewk_view_private.h: + +2012-07-27 Christophe Dumez <christophe.dumez@intel.com> + + [EFL][WK2] Add API to Ewk_Cookie_Manager to watch for cookie changes + https://bugs.webkit.org/show_bug.cgi?id=92484 + + Reviewed by Kenneth Rohde Christiansen. + + Add API tp Ewk_Cookie_Manager so that the client can watch + for cookie changes. + + * UIProcess/API/efl/ewk_cookie_manager.cpp: + * UIProcess/API/efl/ewk_cookie_manager.h: + * UIProcess/API/efl/tests/test_ewk2_cookie_manager.cpp: Add unit tests + for cookie changes watching. + +2012-07-27 Christophe Dumez <christophe.dumez@intel.com> + + [EFL][WK2] Stop using C API to interact with the page in Ewk_View + https://bugs.webkit.org/show_bug.cgi?id=92463 + + Reviewed by Simon Hausmann. + + Stop using C API to interact with the PageProxy in Ewk_View + and use the PageProxy object directly. This avoids useless + converting to WK type using toAPI() all the time. + + * UIProcess/API/efl/ewk_view.cpp: + (ewk_view_base_add): + (ewk_view_uri_update): + (ewk_view_uri_set): + (ewk_view_reload): + (ewk_view_reload_bypass_cache): + (ewk_view_stop): + (ewk_view_load_progress_get): + (ewk_view_device_pixel_ratio_set): + (ewk_view_theme_get): + (ewk_view_cursor_set): + (ewk_view_back): + (ewk_view_forward): + (ewk_view_intent_deliver): + (ewk_view_back_possible): + (ewk_view_forward_possible): + (ewk_view_setting_encoding_custom_get): + (ewk_view_setting_encoding_custom_set): + +2012-07-27 Dominik Röttsches <dominik.rottsches@intel.com> + + [Cairo] Add complex font drawing using HarfbuzzNG + https://bugs.webkit.org/show_bug.cgi?id=91864 + + Reviewed by Simon Hausmann and Martin Robinson. + + Adding includes for harfbuzz folders. + + * CMakeLists.txt: + +2012-07-27 Christophe Dumez <christophe.dumez@intel.com> + + [EFL][WK2] Add more Ewk_View unit tests + https://bugs.webkit.org/show_bug.cgi?id=92407 + + Reviewed by Kenneth Rohde Christiansen. + + Add more unit tests for WebKit2 Ewk_View API. + In particular, navigation, HTML loading and + device pixel ratio functions are now tested. + + * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp: + (EWK2UnitTest::EWK2UnitTestBase::SetUp): Call ewk_init() instead + of duplicating initialization code. + (EWK2UnitTest::EWK2UnitTestBase::TearDown): call ewk_shutdown(). + (TitleChangedData): + (EWK2UnitTest): + (EWK2UnitTest::onTitleChanged): + (EWK2UnitTest::EWK2UnitTestBase::waitUntilTitleChangedTo): Add convenience + method to wait until the view main frame title changes to a given value. + * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h: + (EWK2UnitTestBase): + * UIProcess/API/efl/tests/test_ewk2_view.cpp: + (TEST_F): + (serverCallbackNavigation): + +2012-07-27 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> + + [EFL][WK2] Keyboard events miss key location data. + https://bugs.webkit.org/show_bug.cgi?id=92235 + + Reviewed by Simon Hausmann. + + EFL WK2 did not initialize WebKeyboardEvent::m_isKeypad field. + This caused failure of fast/events/keydown-numpad-keys.html test. + + * Shared/efl/WebEventFactory.cpp: WebKeyboardEvent::m_isKeypad is initialized. + (WebKit::WebEventFactory::createWebKeyboardEvent): + +2012-07-27 Gyuyoung Kim <gyuyoung.kim@samsung.com> + + [EFL] Fix wrong return value in EWK_VIEW_XXX macro. + https://bugs.webkit.org/show_bug.cgi?id=92466 + + Reviewed by Simon Hausmann. + + There are wrong return values in EWK_VIEW_XXX macros. The wrong return values + should be fixed. In addition, API description is also modified according to returned + value change. + + * UIProcess/API/efl/ewk_view.cpp: + (ewk_view_uri_set): + (ewk_view_load_progress_get): + (ewk_view_device_pixel_ratio_get): + * UIProcess/API/efl/ewk_view.h: + +2012-07-27 Christophe Dumez <christophe.dumez@intel.com> + + [EFL][WK2] Add unit tests for Ewk_View form client + https://bugs.webkit.org/show_bug.cgi?id=92468 + + Reviewed by Simon Hausmann. + + Add unit test for form client functionality in + Ewk_View. + + * UIProcess/API/efl/tests/test_ewk2_view.cpp: + (onFormAboutToBeSubmitted): + (TEST_F): + +2012-07-26 Zeno Albisser <zeno@webkit.org> + + Unreviewed Qt buildfix after r123786. + + Qt-minimal builds with ENABLE_REQUEST_ANIMATION_FRAME=0. + Therefore adding #ifdefs to allow for that configuration. + + * WebProcess/WebPage/LayerTreeCoordinator/LayerTreeCoordinator.cpp: + (WebKit): + * WebProcess/WebPage/LayerTreeCoordinator/LayerTreeCoordinator.h: + (LayerTreeCoordinator): + +2012-07-26 Zeno Albisser <zeno@webkit.org> + + [Qt] requestAnimationFrame should only trigger when a new frame can be displayed. + https://bugs.webkit.org/show_bug.cgi?id=88638 + + Disable REQUEST_ANIMATION_FRAME_TIMER for the Qt port and tie + the servicing of scripted animations to layer syncing for WK2. + For WK1 we rely on the RefreshAnimation that is based on QAbstractAnimation. + + Reviewed by Jocelyn Turcotte. + + * WebProcess/WebCoreSupport/WebChromeClient.cpp: + (WebKit): + (WebKit::WebChromeClient::scheduleAnimation): + * WebProcess/WebCoreSupport/WebChromeClient.h: + (WebChromeClient): + * WebProcess/WebPage/LayerTreeCoordinator/LayerTreeCoordinator.cpp: + (WebKit::LayerTreeCoordinator::performScheduledLayerFlush): + (WebKit::LayerTreeCoordinator::scheduleAnimation): + (WebKit): + * WebProcess/WebPage/LayerTreeCoordinator/LayerTreeCoordinator.h: + (LayerTreeCoordinator): + * WebProcess/WebPage/LayerTreeHost.h: + (LayerTreeHost): + +2012-07-26 Jer Noble <jer.noble@apple.com> + + Add a ChromeClient method to send diagnostic logging messages from WebCore to the client. + https://bugs.webkit.org/show_bug.cgi?id=92340 + + Reviewed by Anders Carlsson. + + Pipe the ChromeClient logDiagnosticMessage() function through WebKit2 to a new bundle class + InjectedBundlePageDiagnosticLoggingClient, to be implemented by the client. + + * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp: + (WKBundlePageSetDiagnosticLoggingClient): Added. + * WebProcess/InjectedBundle/API/c/WKBundlePage.h: + * WebProcess/InjectedBundle/InjectedBundlePageDiagnosticLoggingClient.cpp: Added. + (WebKit::InjectedBundlePageDiagnosticLoggingClient::logDiagnosticMessage): + * WebProcess/InjectedBundle/InjectedBundlePageDiagnosticLoggingClient.h: Added. + (InjectedBundlePageDiagnosticLoggingClient): + * WebProcess/WebCoreSupport/WebChromeClient.cpp: + (WebKit::WebChromeClient::logDiagnosticMessage): + * WebProcess/WebCoreSupport/WebChromeClient.h: + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::initializeInjectedBundleDiagnosticLoggingClient): + * WebProcess/WebPage/WebPage.h: + (WebKit::WebPage::injectedBundleDiagnosticLoggingClient): + + Add a convenience class to retrieve the diagnostic message keys: + * WebProcess/InjectedBundle/InjectedBundlePageDiagnosticLoggingClient.cpp: Added. + (WebKit::InjectedBundlePageDiagnosticLoggingClient::logDiagnosticMessage): + * WebProcess/InjectedBundle/InjectedBundlePageDiagnosticLoggingClient.h: Added. + (InjectedBundlePageDiagnosticLoggingClient): + + Add the InjectedBundlePageDiagnosticLoggingClient.cpp,h files. + * CMakeLists.txt: + * GNUmakefile.list.am: + * Target.pri: + * win/WebKit2.vcproj: + * WebKit2.xcodeproj/project.pbxproj: + +2012-07-25 Jer Noble <jer.noble@apple.com> + + Add setting to enable and disable diagnostic logging. + https://bugs.webkit.org/show_bug.cgi?id=92337 + + Reviewed by Anders Carlsson. + + Add a WebKit2 WKPreferences API to set set the WebCore diagnosticLoggingEnabled setting. + + * Shared/WebPreferencesStore.h: + * UIProcess/API/C/WKPreferences.cpp: + (WKPreferencesSetDiagnosticLoggingEnabled): + (WKPreferencesGetDiagnosticLoggingEnabled): + * UIProcess/API/C/WKPreferencesPrivate.h: + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::updatePreferences): Ensure this preference is propagated to Settings + whenever the preferences change. + +2012-07-26 Thiago Marcos P. Santos <thiago.santos@intel.com> + + [EFL][WK2] Regression(r123731): Linking errors due to efreet functions + https://bugs.webkit.org/show_bug.cgi?id=92378 + + Unreviewed build fix. + + The library list created by PlatformEfl.cmake was being erased by a + SET called after including the platform specific file. Luckily the + dependencies were fulfilled by other targets until efreet was add. + + * CMakeLists.txt: + +2012-07-26 Christophe Dumez <christophe.dumez@intel.com> + + [EFL][WK2] Compilation warning in EWK2UnitTestServer.cpp + https://bugs.webkit.org/show_bug.cgi?id=92387 + + Reviewed by Kenneth Rohde Christiansen. + + Fix compilation warning in EWK2UnitTestServer.cpp. + + * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestServer.cpp: + (EWK2UnitTestServer::EWK2UnitTestServer): + +2012-07-26 Christophe Dumez <christophe.dumez@intel.com> + + [EFL][WK2] Implement Network Information provider + https://bugs.webkit.org/show_bug.cgi?id=92343 + + Reviewed by Kenneth Rohde Christiansen. + + Add Network Information provider for WebKit2 EFL + by using NetworkInfoProviderEfl class from + WebCore. + + * CMakeLists.txt: + * PlatformEfl.cmake: + * UIProcess/API/efl/NetworkInfoProvider.cpp: Added. + (toNetworkInfoProvider): + (startUpdatingCallback): + (stopUpdatingCallback): + (getBandwidthCallback): + (isMeteredCallback): + (NetworkInfoProvider::create): + (NetworkInfoProvider::NetworkInfoProvider): + (NetworkInfoProvider::~NetworkInfoProvider): + (NetworkInfoProvider::bandwidth): + (NetworkInfoProvider::metered): + (NetworkInfoProvider::startUpdating): + (NetworkInfoProvider::stopUpdating): + * UIProcess/API/efl/NetworkInfoProvider.h: Added. + (NetworkInfoProvider): + +2012-07-26 Christophe Dumez <christophe.dumez@intel.com> + + [EFL][WK2] Compilation warning in EWK2UnitTestServer.cpp + https://bugs.webkit.org/show_bug.cgi?id=92387 + + Reviewed by Kenneth Rohde Christiansen. + + Fix compilation warning in EWK2UnitTestServer.cpp. + + * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestServer.cpp: + (EWK2UnitTestServer::EWK2UnitTestServer): + +2012-07-26 Thiago Marcos P. Santos <thiago.santos@intel.com> + + [EFL][WK2] Regression(r123731): Linking errors due to efreet functions + https://bugs.webkit.org/show_bug.cgi?id=92378 + + Unreviewed build fix. + + The library list created by PlatformEfl.cmake was being erased by a + SET called after including the platform specific file. Luckily the + dependencies were fulfilled by other targets until efreet was add. + + * CMakeLists.txt: + +2012-07-26 Christophe Dumez <christophe.dumez@intel.com> + + [EFL][WK2] Compilation warning in EWK2UnitTestServer.cpp + https://bugs.webkit.org/show_bug.cgi?id=92387 + + Reviewed by Kenneth Rohde Christiansen. + + Fix compilation warning in EWK2UnitTestServer.cpp. + + * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestServer.cpp: + (EWK2UnitTestServer::EWK2UnitTestServer): + +2012-07-26 Christophe Dumez <christophe.dumez@intel.com> + + [EFL][WK2] Implement Network Information provider + https://bugs.webkit.org/show_bug.cgi?id=92343 + + Reviewed by Kenneth Rohde Christiansen. + + Add Network Information provider for WebKit2 EFL + by using NetworkInfoProviderEfl class from + WebCore. + + * CMakeLists.txt: + * PlatformEfl.cmake: + * UIProcess/API/efl/NetworkInfoProvider.cpp: Added. + (toNetworkInfoProvider): + (startUpdatingCallback): + (stopUpdatingCallback): + (getBandwidthCallback): + (isMeteredCallback): + (NetworkInfoProvider::create): + (NetworkInfoProvider::NetworkInfoProvider): + (NetworkInfoProvider::~NetworkInfoProvider): + (NetworkInfoProvider::bandwidth): + (NetworkInfoProvider::metered): + (NetworkInfoProvider::startUpdating): + (NetworkInfoProvider::stopUpdating): + * UIProcess/API/efl/NetworkInfoProvider.h: Added. + (NetworkInfoProvider): + +2012-07-26 Christophe Dumez <christophe.dumez@intel.com> + + [EFL][WK2] Compilation warning in EWK2UnitTestServer.cpp + https://bugs.webkit.org/show_bug.cgi?id=92387 + + Reviewed by Kenneth Rohde Christiansen. + + Fix compilation warning in EWK2UnitTestServer.cpp. + + * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestServer.cpp: + (EWK2UnitTestServer::EWK2UnitTestServer): + +2012-07-26 Christophe Dumez <christophe.dumez@intel.com> + + [EFL][WK2] Add unit tests for Ewk_Context + https://bugs.webkit.org/show_bug.cgi?id=92005 + + Reviewed by Antonio Gomes. + + Add unit tests for WebKit2 Ewk_Context. + + * PlatformEfl.cmake: + * UIProcess/API/efl/ewk_url_scheme_request.cpp: + (ewk_url_scheme_request_finish): + * UIProcess/API/efl/ewk_url_scheme_request.h: Mark content_data + argument as const. + * UIProcess/API/efl/tests/test_ewk2_context.cpp: Added. + (TEST_F): + (schemeRequestCallback): + +2012-07-26 Christophe Dumez <christophe.dumez@intel.com> + + [EFL][WK2] Add form client for Ewk_View + https://bugs.webkit.org/show_bug.cgi?id=92358 + + Reviewed by Kenneth Rohde Christiansen. + + Implement a form client for EFL port in order to + send a "form,request,new" signal on the Ewk_View + whenever a form will be submitted. + + The Ewk_Form_Submission_Request type is + introduced to provide the client with information + about the form (e.g. text fields contained in the + form) and to submit it. + + This is typically used to store login information + that can be used later to pre-fill the form. + + * PlatformEfl.cmake: + * UIProcess/API/efl/EWebKit2.h: + * UIProcess/API/efl/ewk_form_submission_request.cpp: Added. + (_Ewk_Form_Submission_Request): + (_Ewk_Form_Submission_Request::_Ewk_Form_Submission_Request): + (_Ewk_Form_Submission_Request::~_Ewk_Form_Submission_Request): + (ewk_form_submission_request_ref): + (ewk_form_submission_request_unref): + (ewk_form_submission_request_field_names_get): + (ewk_form_submission_request_field_value_get): + (ewk_form_submission_request_submit): + (ewk_form_submission_request_new): + * UIProcess/API/efl/ewk_form_submission_request.h: Added. + * UIProcess/API/efl/ewk_form_submission_request_private.h: Added. + * UIProcess/API/efl/ewk_view.cpp: + (ewk_view_base_add): + (ewk_view_form_submission_request_new): + * UIProcess/API/efl/ewk_view.h: + * UIProcess/API/efl/ewk_view_form_client.cpp: Added. + (willSubmitForm): + (ewk_view_form_client_attach): + * UIProcess/API/efl/ewk_view_form_client_private.h: Added. + * UIProcess/API/efl/ewk_view_private.h: + +2012-07-26 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> + + [WK2] WebPage::handleEditingKeyboardEvent does not check whether the node allows editing. + https://bugs.webkit.org/show_bug.cgi?id=92364 + + Reviewed by Kenneth Rohde Christiansen. + + Added a check whether the input node allows editing. If editing is not allowed + text input event will not be emitted. + + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::handleEditingKeyboardEvent): + +2012-07-26 Zoltan Nyul <zoltan.nyul@intel.com> + + [EFL] EFL port should use XDG paths + https://bugs.webkit.org/show_bug.cgi?id=91719 + + Reviewed by Kenneth Rohde Christiansen. + + Setting xdg paths for application cache, web-database and local-storage. + + * PlatformEfl.cmake: + * UIProcess/efl/WebContextEfl.cpp: + (WebKit::WebContext::applicationCacheDirectory): + (WebKit::WebContext::platformDefaultDatabaseDirectory): + (WebKit::WebContext::platformDefaultLocalStorageDirectory): + +2012-07-26 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com> + + [EFL] [WK2] Memory leak in ewk_view_resource_load_client.cpp + https://bugs.webkit.org/show_bug.cgi?id=92099 + + Reviewed by Kentaro Hara. + + Fix a memory leak by clearing the loadingResources HashMap on exit. + + * UIProcess/API/efl/ewk_view.cpp: + (_Ewk_View_Private_Data::~_Ewk_View_Private_Data): + (_ewk_view_priv_loading_resources_clear): + (ewk_view_load_provisional_started): + +2012-07-26 Gyuyoung Kim <gyuyoung.kim@samsung.com> + + [DRT] LTC:: pageNumberForElementById() could be moved to Internals + https://bugs.webkit.org/show_bug.cgi?id=92091 + + Reviewed by Kentaro Hara. + + Missing a symbol filter for Mac win port. + + * win/WebKit2.def: + * win/WebKit2CFLite.def: + +2012-07-25 Seokju Kwon <seokju.kwon@samsung.com> + + [EFL][WK2] Implement the inspector for WebKitTestRunner + https://bugs.webkit.org/show_bug.cgi?id=92213 + + Reviewed by Ryosuke Niwa. + + Partial Implementation of WebInspectorProxyEfl for WebkitTestRunner. + And Web Inspector resources installation. + + * PlatformEfl.cmake: + * UIProcess/WebInspectorProxy.cpp: + (WebKit::WebInspectorProxy::WebInspectorProxy): + * UIProcess/WebInspectorProxy.h: + (WebInspectorProxy): + * UIProcess/efl/WebInspectorProxyEfl.cpp: + (WebKit::WebInspectorProxy::platformCreateInspectorPage): + (WebKit::WebInspectorProxy::platformDidClose): + (WebKit::WebInspectorProxy::inspectorPageURL): + (WebKit::WebInspectorProxy::inspectorBaseURL): + +2012-07-25 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org> + + Create a specialized struct for use in HashMap iterators + https://bugs.webkit.org/show_bug.cgi?id=92137 + + Reviewed by Ryosuke Niwa. + + * Platform/CoreIPC/ArgumentCoders.h: Add encode/decode for KeyValuePair. + +2012-07-25 Anders Carlsson <andersca@apple.com> + + Crash when calling PluginView::pluginFocusOrWindowFocusChanged when the web page is null + https://bugs.webkit.org/show_bug.cgi?id=92289 + <rdar://problem/11785352> + + Reviewed by Andreas Kling. + + Plug-in views that outlive their containing web page for various reasons (such as being protected from + destruction) need to null check the web page. + + * WebProcess/Plugins/PluginView.cpp: + (WebKit::PluginView::pluginFocusOrWindowFocusChanged): + (WebKit::PluginView::setComplexTextInputState): + +2012-07-25 Christophe Dumez <christophe.dumez@intel.com> + + [WK2][WTR] LayoutTestController.sendWebIntentResponse() needs to be implemented + https://bugs.webkit.org/show_bug.cgi?id=92227 + + Reviewed by Kenneth Rohde Christiansen. + + Add new InjectedBundleIntentRequest class to wrap WebCore's + IntentRequest and use it in InjectedBundle's + didReceiveIntentForFrame callback. The WebKitTestRunner needs + to be able to reply to a Web intent request in order to + implement LayoutTestController.sendWebIntentResponse(). As + a consequence, passing a WebIntentData type in not enough. + + * CMakeLists.txt: + * GNUmakefile.list.am: + * Shared/API/c/WKBase.h: + * Shared/APIObject.h: + * Shared/IntentData.cpp: + (WebKit::IntentData::IntentData): + (WebKit): + * Shared/IntentData.h: + (WebCore): + (WebKit::IntentData::IntentData): + (IntentData): + * Target.pri: + * WebProcess/InjectedBundle/API/c/WKBundleAPICast.h: + (WebKit): + * WebProcess/InjectedBundle/API/c/WKBundleIntentRequest.cpp: Copied from Source/WebKit2/Shared/IntentData.cpp. + (WKBundleIntentRequestGetTypeID): + (WKBundleIntentRequestCopyIntent): + (WKBundleIntentRequestPostResult): + (WKBundleIntentRequestPostFailure): + * WebProcess/InjectedBundle/API/c/WKBundleIntentRequest.h: Copied from Source/WebKit2/Shared/IntentData.h. + * WebProcess/InjectedBundle/API/c/WKBundlePage.h: + * WebProcess/InjectedBundle/InjectedBundleIntentRequest.cpp: Copied from Source/WebKit2/Shared/IntentData.cpp. + (WebKit): + (WebKit::InjectedBundleIntentRequest::create): + (WebKit::InjectedBundleIntentRequest::InjectedBundleIntentRequest): + (WebKit::InjectedBundleIntentRequest::postResult): + (WebKit::InjectedBundleIntentRequest::postFailure): + (WebKit::InjectedBundleIntentRequest::intent): + * WebProcess/InjectedBundle/InjectedBundleIntentRequest.h: Copied from Source/WebKit2/Shared/IntentData.h. + (WebCore): + (WebKit): + (InjectedBundleIntentRequest): + (WebKit::InjectedBundleIntentRequest::type): + * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp: + (WebKit::InjectedBundlePageLoaderClient::didReceiveIntentForFrame): + * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h: + (WebKit): + (InjectedBundlePageLoaderClient): + * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: + (WebKit::WebFrameLoaderClient::dispatchIntent): + +2012-07-25 Anders Carlsson <andersca@apple.com> + + Crash when a web page is closed with outstanding scrolling thread barriers + https://bugs.webkit.org/show_bug.cgi?id=92280 + <rdar://problem/11630200> + + Reviewed by Andreas Kling. + + There was a check in forceRepaintAsync to handle the drawing area going away before the block had + been invoked, but this check needs to be done earlier (as the FIXME suggested). + Move this check to dispatchAfterEnsuringUpdatedScrollPosition instead. + + * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm: + (WebKit::TiledCoreAnimationDrawingArea::forceRepaintAsync): + (WebKit::TiledCoreAnimationDrawingArea::dispatchAfterEnsuringUpdatedScrollPosition): + +2012-07-25 Alexey Proskuryakov <ap@apple.com> + + Chinese IM receives incorrect/duplicated key events in text fields in webpages in Safari. + https://bugs.webkit.org/show_bug.cgi?id=89048 + <rdar://problem/11786384> + + Reviewed by Andreas Kling. + + Cannot test text input from UI process side. + + Stop relying on IPC to handle key events in order. There are too many complications + where out of order delivery is performed. Instead, queue the events at UI process + side. + + * UIProcess/WebPageProxy.cpp: + (WebKit::WebPageProxy::handleKeyboardEvent): + (WebKit::WebPageProxy::didReceiveEvent): + +2012-07-25 Gyuyoung Kim <gyuyoung.kim@samsung.com> + + [EFL] Use eina_stringshare_add instead of strdup. + https://bugs.webkit.org/show_bug.cgi?id=92072 + + Reviewed by Kentaro Hara. + + Eina of EFL libraries supports a string functionality that replaces strdup. So, EFL port needs + to replace strdup with eina_stringshare_add function. + + * UIProcess/API/efl/ewk_intent.cpp: + (ewk_intent_suggestions_get): + (ewk_intent_extra_get): + * UIProcess/API/efl/ewk_intent.h: + +2012-07-25 Ryuan Choi <ryuan.choi@samsung.com> + + [EFL][WK2] Add ewk_view_cursor_set to change cursor. + https://bugs.webkit.org/show_bug.cgi?id=89140 + + Reviewed by Hajime Morita. + + Implement ewk_view_cursor_set to support cursor changes. + + * UIProcess/API/efl/PageClientImpl.cpp: + (WebKit::PageClientImpl::setCursor): Called ewk_view_cursor_set. + * UIProcess/API/efl/ewk_view.cpp: + (_Ewk_View_Private_Data): + (_Ewk_View_Private_Data::_Ewk_View_Private_Data): + (_Ewk_View_Private_Data::~_Ewk_View_Private_Data): + (_ewk_view_priv_new): Check whether ecore_x can be used. + (_ewk_view_smart_add): + Change order of initialization to use base structure in _ewk_view_priv_new. + (ewk_view_cursor_set): Added to set cursor. + * UIProcess/API/efl/ewk_view_private.h: + +2012-07-25 Ryuan Choi <ryuan.choi@samsung.com> + + [EFL][WK2] Update uri when the active URI is changed while loading. + https://bugs.webkit.org/show_bug.cgi?id=92001 + + Reviewed by Hajime Morita. + + For now, ewk_view_uri_get just return the last uri of setter. + This patch updates the uri of ewk_view when it is changed while loading. + + * UIProcess/API/efl/ewk_view.cpp: + (ewk_view_uri_update): + Added to check whether current active URI has changed and send uri,changed + signal if it has changed. + (ewk_view_uri_set): + Called ewk_view_uri_update to make sure the active uri is updated when the + load operation is started. + (ewk_view_reload): Ditto. + (ewk_view_reload_bypass_cache): Ditto. + (ewk_view_load_finished): Ditto. + (ewk_view_load_provisional_redirect): Ditto. + (ewk_view_load_provisional_started): Ditto. + (ewk_view_html_string_load): Ditto. + * UIProcess/API/efl/ewk_view.h: Updated comment for uri,changed signal. + * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestEnvironment.cpp: + (EWK2UnitTest::EWK2UnitTestEnvironment::urlForResource): + Added to get url of custom resource for test. + * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestEnvironment.h: + * UIProcess/API/efl/tests/resources/redirect_uri_to_default.html: + Added to test ewk_view_uri_get when the page is redirected. + * UIProcess/API/efl/tests/test_ewk2_view.cpp: Ditto. + (onLoadFinishedForRedirection): + (TEST_F): Added new test case whether ewk_view_uri_get returns correct uri when + the page is redirected. + +2012-07-25 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> + + [EFL][WK2] Add ewk_main.{cpp,h} to EFL WK2 + https://bugs.webkit.org/show_bug.cgi?id=92101 + + Reviewed by Kenneth Rohde Christiansen. + + Added a centralized place for general initialization in UI process for EFL WK2. + + * PlatformEfl.cmake: + * UIProcess/API/efl/EWebKit2.h: + * UIProcess/API/efl/ewk_main.cpp: Added. + (ewk_init): General initialization. + (ewk_shutdown): General freeing. + (_ewk_init_body): An aux function. + * UIProcess/API/efl/ewk_main.h: Added. + +2012-07-24 Jae Hyun Park <jae.park@company100.net> + + WKContextGetGlobalStatistics() assigns wrong value to wkFrameCount in WKContextStatistics + https://bugs.webkit.org/show_bug.cgi?id=92173 + + Reviewed by John Sullivan. + + In WKContextGetGlobalStatistics(), wkViewCount in WebContext::Statistics + is assigned to wkFrameCount in WKContextStatistics. + wkFrameCount in WebContext:Statistics should be assigned to wkFrameCount in WKContextStatistics. + + * UIProcess/API/C/WKContext.cpp: + (WKContextGetGlobalStatistics): + +2012-07-24 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com> + + [EFL][WK2] Add unit tests for custom text encoding setting + https://bugs.webkit.org/show_bug.cgi?id=91983 + + Reviewed by Dirk Pranke. + + Add unit tests for get and set custom text encoding methods. Also, fix + a style nit for r123177. + + * UIProcess/API/efl/ewk_view.cpp: + (ewk_view_setting_encoding_custom_set): Fix a style nit - add newline + before return. + * UIProcess/API/efl/tests/test_ewk2_view.cpp: + (TEST_F): + +2012-07-24 Ryosuke Niwa <rniwa@webkit.org> + + WinCairo build fix attempt. + + * win/WebKit2CFLite.def: + +2012-07-24 Ryosuke Niwa <rniwa@webkit.org> + + Windows build fix attempt. + + * win/WebKit2.def: + +2012-07-24 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> + + [Qt] Make sure that an AC sync is triggered when the canvas contents is updated. + https://bugs.webkit.org/show_bug.cgi?id=92128 + + Reviewed by Kenneth Rohde Christiansen. + + This would cause missed frames when animating an accelerated 2D canvas without + touching the document. + + * WebProcess/WebPage/LayerTreeCoordinator/WebGraphicsLayer.cpp: + (WebCore::WebGraphicsLayer::setContentsNeedsDisplay): + +2012-07-24 Alexey Proskuryakov <ap@apple.com> + + [Mac WK2] Improve text input logging + https://bugs.webkit.org/show_bug.cgi?id=92147 + + Reviewed by Andreas Kling. + + * UIProcess/API/mac/WKView.mm: + (-[WKView insertText:replacementRange:]): + (-[WKView keyUp:]): + (-[WKView keyDown:]): + (-[WKView flagsChanged:]): + (-[WKView _executeSavedKeypressCommands]): + (-[WKView _notifyInputContextAboutDiscardedComposition]): + (-[WKView _interpretKeyEvent:savingCommandsTo:WebCore::]): + (-[WKView _updateSecureInputState]): + +2012-07-24 Christophe Dumez <christophe.dumez@intel.com> + + [EFL][WK2] Provide more useful output when an injected bundle cannot be loaded + https://bugs.webkit.org/show_bug.cgi?id=92136 + + Reviewed by Kenneth Rohde Christiansen. + + Call eina_error_get() in case an injected bundle cannot be + loaded in order to print more information about the error. + + * WebProcess/InjectedBundle/efl/InjectedBundleEfl.cpp: + (WebKit::InjectedBundle::load): + +2012-07-24 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com> + + [EFL][WK2] Add vibration client + https://bugs.webkit.org/show_bug.cgi?id=91371 + + Reviewed by Antonio Gomes. + + Implement Vibration provider for WebKit2 EFL and add an API to set + vibration client callbacks by application to handle the tactile + feedback in the application when the page content ask for vibration. + + * CMakeLists.txt: Add WebCore/Modules/vibration to include path. + * PlatformEfl.cmake: Add VibrationProvider.cpp file to the build + system. + * UIProcess/API/efl/VibrationProvider.cpp: Added. + (_Ewk_Vibration_Client): Structure contains the vibration client + callbacks. + (_Ewk_Vibration_Client::_Ewk_Vibration_Client): + (toVibrationProvider): Helper function to cast the clientinfo to + VibrationProvider. + (vibrateCallback): + (cancelVibrationCallback): + (VibrationProvider::create): + (VibrationProvider::VibrationProvider): + (VibrationProvider::~VibrationProvider): + (VibrationProvider::vibrate): + (VibrationProvider::cancelVibration): + (VibrationProvider::setVibrationClientCallbacks): + * UIProcess/API/efl/VibrationProvider.h: Added. + (VibrationProvider): + * UIProcess/API/efl/ewk_context.cpp: + (_Ewk_Context): + (createDefaultEwkContext): + (ewk_context_vibration_client_callbacks_set): API to set vibration + client callbacks. + * UIProcess/API/efl/ewk_context.h: + +2012-07-24 Simon Hausmann <simon.hausmann@nokia.com> + + [Qt] Fix compilation after QtQuick API changes + https://bugs.webkit.org/show_bug.cgi?id=91822 + + Reviewed by Kenneth Rohde Christiansen. + + QQuickCanvas is now QQuickWindow, QQuickItem::canvas() is window() and rootItem() + is contentItem(). Also QQuickWindow::grabFrameBuffer() is now grabWindow(). + + * UIProcess/API/qt/qquickwebpage.cpp: + * UIProcess/API/qt/qquickwebview.cpp: + (QQuickWebViewPrivate::updateIcon): + * UIProcess/API/qt/tests/qquickwebview/tst_qquickwebview.cpp: + (tst_QQuickWebView::multipleWebViews): + (tst_QQuickWebView::basicRenderingSanity): + (tst_QQuickWebView::transparentWebViews): + * UIProcess/API/qt/tests/testwindow.h: + (TestWindow::TestWindow): + * UIProcess/qt/QtPageClient.cpp: + (WebKit::QtPageClient::isViewVisible): + * UIProcess/qt/QtWebPageEventHandler.cpp: + (WebKit::QtWebPageEventHandler::startDrag): + +2012-07-24 Balazs Kelemen <kbalazs@webkit.org> + + [Qt] Add quirks for running the web process in a profiler shell, like valgrind + https://bugs.webkit.org/show_bug.cgi?id=87672 + + Reviewed by Jocelyn Turcotte. + + If environment variables QT_WEBKIT_WEB_PROCESS_COMMAND_PREFIX + and/or QT_WEBKIT_PLUGIN_PROCESS_COMMAND_PREFIX are set, use their + values as the prefix of the command when launching the child process. + Example usage: + export QT_WEB_PROCESS_COMMAND_PREFIX="valgrind --smc-check=all" + ./MiniBrowser http://somepage.html + ./WebKitTestRunner --no-timeout-at-all some_layouttest.html + + * UIProcess/Launcher/qt/ProcessLauncherQt.cpp: + (WebKit::ProcessLauncher::launchProcess): + +2012-07-23 Oswald Buddenhagen <oswald.buddenhagen@nokia.com> + + [Qt] Fix compilation against namespaced Qt + + Reviewed by Simon Hausmann. + + * Platform/CoreIPC/Connection.h: + * Platform/PlatformProcessIdentifier.h: + * Platform/WorkQueue.h: + * Shared/qt/QtNetworkRequestData.h: + * Shared/qt/WebEventFactoryQt.h: + * UIProcess/API/C/qt/WKNativeEvent.h: + * UIProcess/API/qt/qquickwebview_p.h: + * UIProcess/API/qt/qwebnavigationhistory_p.h: + * UIProcess/API/qt/raw/qrawwebview_p.h: + * UIProcess/DrawingAreaProxy.h: + * UIProcess/Launcher/ThreadLauncher.h: + * UIProcess/LayerTreeCoordinatorProxy.h: + * UIProcess/qt/QtViewportHandler.h: + * UIProcess/qt/QtWebPageSGNode.h: + * UIProcess/qt/WebColorChooserProxyQt.h: + * UIProcess/qt/WebGeolocationProviderQt.h: + * UIProcess/qt/WebPopupMenuProxyQt.h: + * WebProcess/WebProcess.h: + +2012-07-24 Christophe Dumez <christophe.dumez@intel.com> + + [EFL][WK2] Remove unneeded WebURLRequestEfl and WebURLResponseEfl + https://bugs.webkit.org/show_bug.cgi?id=92087 + + Reviewed by Kenneth Rohde Christiansen. + + Remove WebURLRequestEfl and WebURLResponseEfl classes + and their corresponding C APIs since we don't need / use + them. + + * Shared/API/c/efl/WKURLRequestEfl.cpp: Removed. + * Shared/API/c/efl/WKURLRequestEfl.h: Removed. + * Shared/API/c/efl/WKURLResponseEfl.cpp: Removed. + * Shared/API/c/efl/WKURLResponseEfl.h: Removed. + * Shared/efl/WebURLRequestEfl.cpp: Removed. + * Shared/efl/WebURLRequestEfl.h: Removed. + * Shared/efl/WebURLResponseEfl.cpp: Removed. + * Shared/efl/WebURLResponseEfl.h: Removed. + * UIProcess/API/efl/ewk_url_request.cpp: + +2012-07-24 Pierre Rossi <pierre.rossi@gmail.com> + + [Qt] Enable touch slider when touch events are enabled + https://bugs.webkit.org/show_bug.cgi?id=91013 + + Reviewed by Kenneth Rohde Christiansen. + + TOUCH_SLIDER guards are used in WebCore, so we should really + be setting the corresponding ENABLE define in features.prf. + + * Target.pri: + +2012-07-24 Christophe Dumez <christophe.dumez@intel.com> + + [EFL][WK2] Fix possible crash in didSendRequestForResource + https://bugs.webkit.org/show_bug.cgi?id=92077 + + Reviewed by Kenneth Rohde Christiansen. + + Add NULL check for wkRedirectResponse in + didSendRequestForResource() before using it. The + argument may be NULL if there was no redirection. + + * UIProcess/API/efl/ewk_view.h: + * UIProcess/API/efl/ewk_view_resource_load_client.cpp: + (didSendRequestForResource): + +2012-07-24 Christophe Dumez <christophe.dumez@intel.com> + + [WK2][EFL][GTK] Share WebCoreArgumentCoders for soup-related types + https://bugs.webkit.org/show_bug.cgi?id=92073 + + Reviewed by Kenneth Rohde Christiansen. + + Move WebCoreArgumentCoders for soup-related types such as + ResourceRequest, ResourceResponse and ResourceError from + port specific file to Shared/soup/WebCoreArgumentCodersSoup.cpp. + This way, the different ports using libsoup can share + code and avoid duplication. + + * GNUmakefile.list.am: + * PlatformEfl.cmake: + * Shared/efl/WebCoreArgumentCodersEfl.cpp: Removed. + * Shared/soup/WebCoreArgumentCodersSoup.cpp: Renamed from Source/WebKit2/Shared/gtk/WebCoreArgumentCodersGtk.cpp. + (CoreIPC): + (CoreIPC::::encode): + (CoreIPC::::decode): + +2012-07-23 Sheriff Bot <webkit.review.bot@gmail.com> + + Unreviewed, rolling out r123184, r123195, and r123197. + http://trac.webkit.org/changeset/123184 + http://trac.webkit.org/changeset/123195 + http://trac.webkit.org/changeset/123197 + https://bugs.webkit.org/show_bug.cgi?id=92049 + + pagecycler regression (Requested by morrita on #webkit). + + * win/WebKit2.def: + * win/WebKit2CFLite.def: + +2012-07-23 Simon Fraser <simon.fraser@apple.com> + + Part 2 of: Implement sticky positioning + https://bugs.webkit.org/show_bug.cgi?id=90046 + + Reviewed by Ojan Vafai. + + Turn on ENABLE_CSS_STICKY_POSITION. + + * Configurations/FeatureDefines.xcconfig: + +2012-07-23 Christophe Dumez <christophe.dumez@intel.com> + + [WK2] WebKitTestRunner needs to print information about Web intents + https://bugs.webkit.org/show_bug.cgi?id=90873 + + Reviewed by Anders Carlsson. + + Add Bundle API for Web Intents. This is needed by the WebKitTestRunner + to print information about the new intent requests and the intent + service registrations. + + * CMakeLists.txt: Move WebIntentData and WebIntentServiceInfo from + UIProcess/ to Shared/. + * GNUmakefile.list.am: Move WebIntentData and WebIntentServiceInfo from + UIProcess/ to Shared/. + * Shared/APIClientTraits.h: + * Shared/WebIntentData.cpp: Renamed from Source/WebKit2/UIProcess/WebIntentData.cpp. + (WebKit): + (WebKit::WebIntentData::WebIntentData): + (WebKit::WebIntentData::data): + (WebKit::WebIntentData::suggestions): + (WebKit::WebIntentData::extra): + (WebKit::WebIntentData::extras): + * Shared/WebIntentData.h: Renamed from Source/WebKit2/UIProcess/WebIntentData.h. + (WebKit): + (WebIntentData): + (WebKit::WebIntentData::create): + (WebKit::WebIntentData::~WebIntentData): + (WebKit::WebIntentData::action): + (WebKit::WebIntentData::payloadType): + (WebKit::WebIntentData::service): + (WebKit::WebIntentData::store): + (WebKit::WebIntentData::type): + * Shared/WebIntentServiceInfo.cpp: Renamed from Source/WebKit2/UIProcess/WebIntentServiceInfo.cpp. + (WebKit): + (WebKit::WebIntentServiceInfo::WebIntentServiceInfo): + * Shared/WebIntentServiceInfo.h: Renamed from Source/WebKit2/UIProcess/WebIntentServiceInfo.h. + (WebKit): + (WebIntentServiceInfo): + (WebKit::WebIntentServiceInfo::create): + (WebKit::WebIntentServiceInfo::~WebIntentServiceInfo): + (WebKit::WebIntentServiceInfo::action): + (WebKit::WebIntentServiceInfo::payloadType): + (WebKit::WebIntentServiceInfo::href): + (WebKit::WebIntentServiceInfo::title): + (WebKit::WebIntentServiceInfo::disposition): + (WebKit::WebIntentServiceInfo::type): + * Target.pri: Move WebIntentData and WebIntentServiceInfo from + UIProcess/ to Shared/. + * UIProcess/API/C/WKPage.h: + * UIProcess/API/efl/ewk_view_loader_client.cpp: + (didReceiveIntentForFrame): + (registerIntentServiceForFrame): + * UIProcess/WebLoaderClient.cpp: + (WebKit::WebLoaderClient::didReceiveIntentForFrame): + (WebKit::WebLoaderClient::registerIntentServiceForFrame): + * UIProcess/WebLoaderClient.h: + (WebLoaderClient): + * UIProcess/WebPageProxy.cpp: + (WebKit::WebPageProxy::registerIntentServiceForFrame): + (WebKit::WebPageProxy::didReceiveIntentForFrame): + * UIProcess/WebPageProxy.h: + (WebPageProxy): + * UIProcess/WebPageProxy.messages.in: + * WebProcess/InjectedBundle/API/c/WKBundlePage.h: + * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp: + (WebKit): + (WebKit::InjectedBundlePageLoaderClient::didReceiveIntentForFrame): + (WebKit::InjectedBundlePageLoaderClient::registerIntentServiceForFrame): + * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h: + (WebKit): + (InjectedBundlePageLoaderClient): + * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: + (WebKit::WebFrameLoaderClient::dispatchIntent): + (WebKit::WebFrameLoaderClient::registerIntentService): + * WebProcess/qt/QtBuiltinBundlePage.cpp: + (WebKit::QtBuiltinBundlePage::QtBuiltinBundlePage): + +2012-07-23 Christophe Dumez <christophe.dumez@intel.com> + + [EFL][WK2] Add unit tests for Ewk_Cookie_Manager + https://bugs.webkit.org/show_bug.cgi?id=91639 + + Reviewed by Antonio Gomes. + + Add unit tests for Ewk_Cookie_Manager. + + * PlatformEfl.cmake: + * UIProcess/API/efl/ewk_cookie_manager.h: Fix "accept policy" documentation + to indicate that only cookies set by the main document are accepted by default. + * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestServer.cpp: Added. + (EWK2UnitTestServer::EWK2UnitTestServer): Add HTTP server similar to the one + used by GTK port unit tests. + (EWK2UnitTestServer::~EWK2UnitTestServer): + (EWK2UnitTestServer::run): + (EWK2UnitTestServer::getURIForPath): + * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestServer.h: Added. + (EWK2UnitTestServer): + (EWK2UnitTestServer::baseURI): + * UIProcess/API/efl/tests/test_ewk2_cookie_manager.cpp: Added. + (serverCallback): + (getAcceptPolicyCallback): + (getAcceptPolicy): + (getHostnamesWithCookiesCallback): + (getHostnamesWithCookies): + (freeHostNames): + (countHostnamesWithCookies): + (TEST_F): + (cleanUpCookieFiles): + +2012-07-23 Pierre Rossi <pierre.rossi@gmail.com> + + [Qt] Enable touch slider when touch events are enabled + https://bugs.webkit.org/show_bug.cgi?id=91013 + + Reviewed by Antonio Gomes. + + Take advantage of the logic introduced in r122286. + + * Target.pri: + +2012-07-23 Pierre Rossi <pierre.rossi@gmail.com> + + Unify numTouchEventHandlersChanged and needTouchEvents in the chrome client + https://bugs.webkit.org/show_bug.cgi?id=91006 + + Reviewed by Ryosuke Niwa. + + Remove numTouchEventHandlersChanged stub. + + * WebProcess/WebCoreSupport/WebChromeClient.h: + (WebChromeClient): + +2012-07-23 Simon Fraser <simon.fraser@apple.com> + + Part 1 of: Implement sticky positioning + https://bugs.webkit.org/show_bug.cgi?id=90046 + + Reviewed by Ojan Vafai. + + Add ENABLE_CSS_STICKY_POSITION, defaulting to off initially. + + Sort the ENABLE_CSS lines in the file. Make sure all the flags + are in FEATURE_DEFINES. + + * Configurations/FeatureDefines.xcconfig: + +2012-07-23 Christophe Dumez <christophe.dumez@intel.com> + + [EFL][WK2] Add request manager client + https://bugs.webkit.org/show_bug.cgi?id=91193 + + Reviewed by Kenneth Rohde Christiansen. + + Add a URL request manager client and attach it + to the Ewk_Context. + + The client application can now register a URL scheme + via the Ewk_Context API and provide a callback handler + that will get called whenever a URL request with this + scheme is made. + + A new Ewk_Url_Scheme_Request type is introduced to + provide information about the request to the client + and to allow the client to finish it by setting its + contents. + + * PlatformEfl.cmake: + * UIProcess/API/efl/EWebKit2.h: + * UIProcess/API/efl/ewk_context.cpp: + (_Ewk_Url_Scheme_Handler): + (_Ewk_Url_Scheme_Handler::_Ewk_Url_Scheme_Handler): + (_Ewk_Context): + (_Ewk_Context::_Ewk_Context): + (ewk_context_request_manager_get): + (ewk_context_url_scheme_request_received): + (createDefaultEwkContext): + (ewk_context_uri_scheme_register): + * UIProcess/API/efl/ewk_context.h: + * UIProcess/API/efl/ewk_context_private.h: + * UIProcess/API/efl/ewk_context_request_manager_client.cpp: Added. + (toEwkContext): + (didReceiveURIRequest): + (ewk_context_request_manager_client_attach): + * UIProcess/API/efl/ewk_context_request_manager_client_private.h: Added. + * UIProcess/API/efl/ewk_url_scheme_request.cpp: Added. + (_Ewk_Url_Scheme_Request): + (_Ewk_Url_Scheme_Request::_Ewk_Url_Scheme_Request): + (_Ewk_Url_Scheme_Request::~_Ewk_Url_Scheme_Request): + (ewk_url_scheme_request_ref): + (ewk_url_scheme_request_unref): + (ewk_url_scheme_request_scheme_get): + (ewk_url_scheme_request_url_get): + (ewk_url_scheme_request_path_get): + (ewk_url_scheme_request_id_get): + (ewk_url_scheme_request_finish): + (ewk_url_scheme_request_new): + * UIProcess/API/efl/ewk_url_scheme_request.h: Added. + * UIProcess/API/efl/ewk_url_scheme_request_private.h: Added. + +2012-07-23 KwangYong Choi <ky0.choi@samsung.com> + + [EFL][WK2] ProcessExecutablePath is required + https://bugs.webkit.org/show_bug.cgi?id=89719 + + Reviewed by Kenneth Rohde Christiansen. + + Added executablePathOfWebProcess and executablePathOfPluginProcess. + It's used for getting the location of WebProcess and PluginProcess. + + * PlatformEfl.cmake: Added LIBEXECDIR definition + * Shared/efl/ProcessExecutablePathEfl.cpp: Added. + (WebKit): + (WebKit::findWebKitProcess): + (WebKit::executablePathOfWebProcess): Get the absolute path of WebProcess + (WebKit::executablePathOfPluginProcess): Get the absolute path of PluginProcess + * UIProcess/Launcher/efl/ProcessLauncherEfl.cpp: + (WebKit::ProcessLauncher::launchProcess): Modified to use above routines + +2012-07-23 Christophe Dumez <christophe.dumez@intel.com> + + WebKit2 needs layoutTestController.setAlwaysAcceptCookies + https://bugs.webkit.org/show_bug.cgi?id=42778 + + Reviewed by Kenneth Rohde Christiansen. + + Add setAlwaysAcceptCookies() method to InjectedBundle + so that we can use it in LayoutTestController. + The method uses WebCookieManager::setHTTPCookieAcceptPolicy() + internally. + + * WebProcess/InjectedBundle/API/c/WKBundle.cpp: + (WKBundleSetAlwaysAcceptCookies): + * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h: + * WebProcess/InjectedBundle/InjectedBundle.cpp: + (WebKit::InjectedBundle::setAlwaysAcceptCookies): + (WebKit): + * WebProcess/InjectedBundle/InjectedBundle.h: + (InjectedBundle): + +2012-07-23 Thiago Marcos P. Santos <thiago.santos@intel.com> + + [WK2] SQL Database cannot be disabled at build time + https://bugs.webkit.org/show_bug.cgi?id=91837 + + Reviewed by Kenneth Rohde Christiansen. + + WebKit2 had no #ifdefs for SQL Database. This patch adds these + statments and it can now be disabled at build time. + + * Shared/OriginAndDatabases.cpp: + * Shared/OriginAndDatabases.h: + * Shared/WebCoreArgumentCoders.cpp: + (CoreIPC): + * UIProcess/API/C/WKContext.cpp: + (WKContextGetDatabaseManager): + * UIProcess/API/C/WKDatabaseManager.cpp: + (WKDatabaseManagerGetTypeID): + (WKDatabaseManagerGetOriginKey): + (WKDatabaseManagerGetOriginQuotaKey): + (WKDatabaseManagerGetOriginUsageKey): + (WKDatabaseManagerGetDatabaseDetailsKey): + (WKDatabaseManagerGetDatabaseDetailsNameKey): + (WKDatabaseManagerGetDatabaseDetailsDisplayNameKey): + (WKDatabaseManagerGetDatabaseDetailsExpectedUsageKey): + (WKDatabaseManagerGetDatabaseDetailsCurrentUsageKey): + (WKDatabaseManagerSetClient): + (WKDatabaseManagerGetDatabasesByOrigin): + (callGetDatabasesByOriginBlockAndDispose): + (WKDatabaseManagerGetDatabasesByOrigin_b): + (WKDatabaseManagerGetDatabaseOrigins): + (callGetDatabaseOriginsBlockBlockAndDispose): + (WKDatabaseManagerGetDatabaseOrigins_b): + (WKDatabaseManagerDeleteDatabasesWithNameForOrigin): + (WKDatabaseManagerDeleteDatabasesForOrigin): + (WKDatabaseManagerDeleteAllDatabases): + (WKDatabaseManagerSetQuotaForOrigin): + * UIProcess/WebContext.cpp: + (WebKit::WebContext::WebContext): + (WebKit::WebContext::~WebContext): + (WebKit::WebContext::shouldTerminate): + (WebKit::WebContext::disconnectProcess): + (WebKit::WebContext::didReceiveMessage): + * UIProcess/WebContext.h: + (WebContext): + * UIProcess/WebDatabaseManagerProxy.cpp: + * UIProcess/WebDatabaseManagerProxy.h: + * UIProcess/WebDatabaseManagerProxy.messages.in: + * WebProcess/InjectedBundle/InjectedBundle.cpp: + (WebKit::InjectedBundle::clearAllDatabases): + (WebKit::InjectedBundle::setDatabaseQuota): + * WebProcess/WebCoreSupport/WebDatabaseManager.cpp: + * WebProcess/WebCoreSupport/WebDatabaseManager.h: + * WebProcess/WebCoreSupport/WebDatabaseManager.messages.in: + * WebProcess/WebProcess.cpp: + (WebKit::WebProcess::didReceiveMessage): + +2012-07-23 Kent Tamura <tkent@chromium.org> + + Rename ENABLE_METER_TAG and ENABLE_PROGRESS_TAG to ENABLE_METER_ELEMENT and ENABLE_PROGRESS_ELEMENT respectively + https://bugs.webkit.org/show_bug.cgi?id=91941 + + Reviewed by Kentaro Hara. + + A flag name for an elmement should be ENABLE_*_ELEMENT. + + * Configurations/FeatureDefines.xcconfig: + +2012-07-22 Kent Tamura <tkent@chromium.org> + + Rename ENABLE_DETAILS to ENABLE_DETAILS_ELEMENT + https://bugs.webkit.org/show_bug.cgi?id=91928 + + Reviewed by Kentaro Hara. + + A flag name for an elmement should be ENABLE_*_ELEMENT. + + * Configurations/FeatureDefines.xcconfig: + +2012-07-20 Kent Tamura <tkent@chromium.org> + + Rename ENABLE_DATALIST to ENABLE_DATALIST_ELEMENT + https://bugs.webkit.org/show_bug.cgi?id=91846 + + Reviewed by Kentaro Hara. + + A flag name for an elmement should be ENABLE_*_ELEMENT. + + * Configurations/FeatureDefines.xcconfig: + +2012-07-20 Rafael Brandao <rafael.lobo@openbossa.org> + + QtNetworkAccessManager should not rely on signal sslErrors when QT_NO_SSL is defined + https://bugs.webkit.org/show_bug.cgi?id=91866 + + Reviewed by Noam Rosenthal. + + * WebProcess/qt/QtNetworkAccessManager.cpp: + (WebKit::QtNetworkAccessManager::QtNetworkAccessManager): QNAM's signal is only defined when + that flag is undefined. Removed the connection when we have the flag set. + (WebKit::QtNetworkAccessManager::onSslErrors): When the flag is set, this slot becomes unused. + +2012-07-20 Christophe Dumez <christophe.dumez@intel.com> + + [EFL] Proxy configuration should honor the no_proxy environment variable + https://bugs.webkit.org/show_bug.cgi?id=91747 + + Reviewed by Kenneth Rohde Christiansen. + + Use the new custom proxy resolver from WebCore in + WebKit2-EFL so that it is possible for the client + to set proxy exceptions via the "no_proxy" + environment variable. + + By default, the proxy set in the "http_proxy" + environment variable will not be used for requests + to localhost or 127.0.0.1. + + * WebProcess/efl/WebProcessMainEfl.cpp: + (WebKit::WebProcessMainEfl): + +2012-06-01 Dinu Jacob <dinu.jacob@nokia.com> + + [Qt][WK2] Add support for multi-select list + https://bugs.webkit.org/show_bug.cgi?id=85527 + + Reviewed by Kenneth Rohde Christiansen. + + Added support for multi-select list: + - Added multi-selection flag to PlatformPopupMenuData to indicate whether to accept multiple selections or not. + - Added selected state to WebPopupItem. + - Modified WebPopupMenuQt to support multiple selections. + + * Shared/PlatformPopupMenuData.cpp: + (WebKit::PlatformPopupMenuData::PlatformPopupMenuData): + (WebKit::PlatformPopupMenuData::encode): + (WebKit::PlatformPopupMenuData::decode): + * Shared/PlatformPopupMenuData.h: + (PlatformPopupMenuData): + * Shared/WebPopupItem.cpp: + (WebKit::WebPopupItem::WebPopupItem): + (WebKit::WebPopupItem::encode): + (WebKit::WebPopupItem::decode): + * Shared/WebPopupItem.h: + * UIProcess/API/qt/tests/qmltests/WebView/tst_multiSelect.qml: Added. + * UIProcess/API/qt/tests/qmltests/common/multiselect.html: Added. + * UIProcess/WebPageProxy.h: + (WebPageProxy): + * UIProcess/WebPopupMenuProxy.h: + (Client): + * UIProcess/qt/WebPageProxyQt.cpp: + (WebKit::WebPageProxy::changeSelectedIndex): + (WebKit): + (WebKit::WebPageProxy::closePopupMenu): + * UIProcess/qt/WebPopupMenuProxyQt.cpp: + (WebKit::PopupMenuItemModel::multiple): + (PopupMenuItemModel): + (WebKit::PopupMenuItemModel::Item::Item): + (ItemSelectorContextObject): + (WebKit::ItemSelectorContextObject::allowMultiSelect): + (WebKit::ItemSelectorContextObject::reject): + (WebKit::ItemSelectorContextObject::dismiss): + (WebKit::ItemSelectorContextObject::ItemSelectorContextObject): + (WebKit): + (WebKit::ItemSelectorContextObject::onIndexUpdate): + (WebKit::ItemSelectorContextObject::accept): + (WebKit::PopupMenuItemModel::PopupMenuItemModel): + (WebKit::PopupMenuItemModel::select): + (WebKit::PopupMenuItemModel::toggleItem): + (WebKit::PopupMenuItemModel::buildItems): + (WebKit::WebPopupMenuProxyQt::showPopupMenu): + (WebKit::WebPopupMenuProxyQt::hidePopupMenu): + (WebKit::WebPopupMenuProxyQt::selectIndex): + (WebKit::WebPopupMenuProxyQt::createItem): + * UIProcess/qt/WebPopupMenuProxyQt.h: + (WebPopupMenuProxyQt): + * WebProcess/WebCoreSupport/WebPopupMenu.cpp: + (WebKit::WebPopupMenu::didChangeSelectedIndex): + (WebKit::WebPopupMenu::populateItems): + * WebProcess/WebCoreSupport/WebPopupMenu.h: + (WebPopupMenu): + * WebProcess/WebCoreSupport/qt/WebPopupMenuQt.cpp: + (WebKit::WebPopupMenu::setUpPlatformData): + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::didChangeSelectedIndexForActivePopupMenu): + (WebKit): + (WebKit::WebPage::changeSelectedIndex): + * WebProcess/WebPage/WebPage.h: + (WebPage): + * WebProcess/WebPage/WebPage.messages.in: + * WebProcess/WebPage/qt/WebPageQt.cpp: + (WebKit::WebPage::selectedIndex): + (WebKit): + (WebKit::WebPage::hidePopupMenu): + +2012-07-20 Gyuyoung Kim <gyuyoung.kim@samsung.com> + + Unreviewed, rolling out r123085. + http://trac.webkit.org/changeset/123085 + https://bugs.webkit.org/show_bug.cgi?id=91719 + + r123085 causes crashes on EFL layout test bot. + + * UIProcess/efl/WebContextEfl.cpp: + (WebKit::WebContext::applicationCacheDirectory): + +2012-07-20 Christophe Dumez <christophe.dumez@intel.com> + + [EFL][WK2] Use "load,finished" signal in EWK2UnitTestBase::loadUrlSync() instead of "load,progress" + https://bugs.webkit.org/show_bug.cgi?id=91721 + + Reviewed by Kenneth Rohde Christiansen. + + The purpose of EWK2UnitTestBase::loadUrlSync() is to load + a URL in the view and wait synchronously for the load to finish. + The current implementation uses the "load,progress" signal to + detect when the load is finished, which is inefficient because + it gets emitted several times. + + It is better to wait for the "load,finished" signal which gets + emitted only once when the load is complete. + + * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp: + (EWK2UnitTest::onLoadFinished): + (EWK2UnitTest::EWK2UnitTestBase::EWK2UnitTestBase): + (EWK2UnitTest::EWK2UnitTestBase::loadUrlSync): + * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h: + (EWK2UnitTestBase): + +2012-07-19 MORITA Hajime <morrita@google.com> + + [Refactoring] Replace Node's Document pointer with a TreeScope pointer + https://bugs.webkit.org/show_bug.cgi?id=59816 + + Reviewed by Ryosuke Niwa. + + * win/WebKit2.def: Added newly exported symbols. + * win/WebKit2CFLite.def: Ditto. + +2012-07-19 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com> + + [EFL] [WK2] Add methods to get/set a custom text encoding + https://bugs.webkit.org/show_bug.cgi?id=90604 + + Reviewed by Kenneth Rohde Christiansen. + + Add methods to get/set custom character encoding. + + * UIProcess/API/efl/ewk_view.cpp: + (_Ewk_View_Private_Data): + (_ewk_view_priv_del): + (ewk_view_setting_encoding_custom_get): + (ewk_view_setting_encoding_custom_set): + * UIProcess/API/efl/ewk_view.h: + +2012-07-19 Gyuyoung Kim <gyuyoung.kim@samsung.com> + + Unreviewed. Fix build break because of changing parameter type of + vibration virtual function on EFL port. + + * WebProcess/WebCoreSupport/WebVibrationClient.cpp: + (WebKit::WebVibrationClient::vibrate): + * WebProcess/WebCoreSupport/WebVibrationClient.h: + (WebVibrationClient): + +2012-07-19 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com> + + [WK2] Add Vibration API integration to WebContext and WebPage + https://bugs.webkit.org/show_bug.cgi?id=91081 + + Reviewed by Anders Carlsson. + + Integrate Vibration API to WebPage, WebContext and properly route + messages to the WebVibrationProxy. + + * UIProcess/API/C/WKContext.cpp: + (WKContextGetVibration): + * UIProcess/API/C/WKContext.h: + * UIProcess/WebContext.cpp: + (WebKit::WebContext::WebContext): + (WebKit::WebContext::~WebContext): + (WebKit::WebContext::disconnectProcess): + (WebKit::WebContext::didReceiveMessage): + * UIProcess/WebContext.h: + (WebKit): + (WebContext): + (WebKit::WebContext::vibrationProxy): + * UIProcess/WebProcessProxy.cpp: + (WebKit::WebProcessProxy::didReceiveMessage): + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::WebPage): + +2012-07-19 No'am Rosenthal <noam.rosenthal@nokia.com> + + [Qt] Enable CSS shaders in Qt (software mode) + https://bugs.webkit.org/show_bug.cgi?id=85140 + + Reviewed by Simon Hausmann. + + Add CSSCustomFilterEnabled to QWebPreferences. It's disabled by default. + + * UIProcess/API/qt/qwebpreferences.cpp: + (QWebPreferencesPrivate::testAttribute): + (QWebPreferencesPrivate::setAttribute): + * UIProcess/API/qt/qwebpreferences_p_p.h: + +2012-07-19 No'am Rosenthal <noam.rosenthal@nokia.com> + + [Qt] Enable CSS shaders in Qt (software mode) + https://bugs.webkit.org/show_bug.cgi?id=85140 + + Reviewed by Simon Hausmann. + + Add CSSCustomFilterEnabled to QWebPreferences. It's disabled by default. + + * UIProcess/API/qt/qwebpreferences.cpp: + (QWebPreferencesPrivate::testAttribute): + (QWebPreferencesPrivate::setAttribute): + * UIProcess/API/qt/qwebpreferences_p_p.h: + +2012-07-19 Pierre Rossi <pierre.rossi@gmail.com> + + [Qt][WK2] Map the elementRect exposed in QML to the view for popup menu + https://bugs.webkit.org/show_bug.cgi?id=91645 + + Reviewed by Simon Hausmann. + + This way the geometry of the QML item is still sensible even if we panned + and zoomed. + + * UIProcess/qt/WebPopupMenuProxyQt.cpp: + (ItemSelectorContextObject): + (WebKit::ItemSelectorContextObject::elementRect): + (WebKit::ItemSelectorContextObject::ItemSelectorContextObject): + (WebKit::WebPopupMenuProxyQt::showPopupMenu): + +2012-07-19 Zoltan Nyul <zoltan.nyul@intel.com> + + [EFL][WK2] Using different cache directory for each WTR process + https://bugs.webkit.org/show_bug.cgi?id=91719 + + Reviewed by Kenneth Rohde Christiansen. + + Make sure we return a valid application cache directory in + WebContextEfl. + + * UIProcess/efl/WebContextEfl.cpp: + (WebKit::WebContext::applicationCacheDirectory): + +2012-07-18 Christophe Dumez <christophe.dumez@intel.com> + + [EFL][WK2] EFL should use DownloadSoup instead of defining DownloadEfl + https://bugs.webkit.org/show_bug.cgi?id=91602 + + Reviewed by Kenneth Rohde Christiansen. + + Reuse WebProcess/Downloads/soup/DownloadSoup.cpp in EFL port + instead of redefining our own DownloadEfl.cpp. The EFL port + is also using libsoup so it is best to avoid code duplication. + + * GNUmakefile.am: + * GNUmakefile.list.am: + * PlatformEfl.cmake: + * WebProcess/Downloads/Download.h: + (WebKit): + (Download): + * WebProcess/Downloads/efl/DownloadEfl.cpp: Removed. + * WebProcess/Downloads/efl/DownloadSoupErrorsEfl.cpp: Added. + (WebKit): + (WebKit::platformDownloadNetworkError): + (WebKit::platformDownloadDestinationError): + * WebProcess/Downloads/efl/FileDownloaderEfl.cpp: Removed. + * WebProcess/Downloads/efl/FileDownloaderEfl.h: Removed. + * WebProcess/Downloads/gtk/DownloadSoupErrorsGtk.cpp: Added. + (WebKit): + (WebKit::platformDownloadNetworkError): + (WebKit::platformDownloadDestinationError): + * WebProcess/Downloads/soup/DownloadSoup.cpp: Make the code + compile for other ports than GTK. + (WebKit::DownloadClient::didReceiveResponse): + (WebKit::DownloadClient::didReceiveData): + (WebKit::DownloadClient::didFail): + (WebKit::Download::continueWithoutCredential): + (WebKit): + (WebKit::Download::useCredential): + (WebKit::Download::cancelAuthenticationChallenge): + * WebProcess/Downloads/soup/DownloadSoupErrors.h: Added. + (WebKit): + +2012-07-18 Christophe Dumez <christophe.dumez@intel.com> + + [WK2] Add C API for Network Information API + https://bugs.webkit.org/show_bug.cgi?id=90762 + + Reviewed by Kenneth Rohde Christiansen. + + Add C API for WKNetworkInfo and WKNetworkInfoManager + so that they can be used by the client. + + * CMakeLists.txt: + * GNUmakefile.list.am: + * Target.pri: + * UIProcess/API/C/WKContext.cpp: + (WKContextGetNetworkInfoManager): + * UIProcess/API/C/WKContext.h: + * UIProcess/API/C/WKNetworkInfo.cpp: Copied from Source/WebKit2/UIProcess/API/C/WKNetworkInfoManager.cpp. + (WKNetworkInfoGetTypeID): + (WKNetworkInfoCreate): + * UIProcess/API/C/WKNetworkInfo.h: Copied from Source/WebKit2/UIProcess/API/C/WKNetworkInfoManager.cpp. + * UIProcess/API/C/WKNetworkInfoManager.cpp: + (WKNetworkInfoManagerSetProvider): + (WKNetworkInfoManagerProviderDidChangeNetworkInformation): + * UIProcess/API/C/WKNetworkInfoManager.h: + +2012-07-18 Christophe Dumez <christophe.dumez@intel.com> + + [EFL][WK2] ewk_cookie_manager_persistent_storage_set is not exported + https://bugs.webkit.org/show_bug.cgi?id=91647 + + Reviewed by Gustavo Noronha Silva. + + Properly export ewk_cookie_manager_persistent_storage_set in + ewk_cookie_manager.h by using EAPI. + + * UIProcess/API/efl/ewk_cookie_manager.h: + +2012-07-18 Christophe Dumez <christophe.dumez@intel.com> + + [EFL] Add central error management to EFL port + https://bugs.webkit.org/show_bug.cgi?id=91598 + + Reviewed by Kenneth Rohde Christiansen. + + Make use of ErrorsEfl header from WebCore in + WebKit2, for Ewk_Web_Error and WebErrorsEfl. + + * UIProcess/API/efl/ewk_web_error.cpp: + (ewk_web_error_type_get): + * UIProcess/API/efl/ewk_web_error.h: + * WebProcess/WebCoreSupport/efl/WebErrorsEfl.cpp: + (WebKit::cancelledError): + (WebKit::blockedError): + (WebKit::cannotShowURLError): + (WebKit::interruptedForPolicyChangeError): + (WebKit::cannotShowMIMETypeError): + (WebKit::fileDoesNotExistError): + (WebKit::pluginWillHandleLoadError): + +2012-07-18 Thiago Marcos P. Santos <thiago.santos@intel.com> + + [EFL] Set a theme for EFL WebKit2 unit test fixture + https://bugs.webkit.org/show_bug.cgi?id=91618 + + Reviewed by Kenneth Rohde Christiansen. + + The test fixture should load the theme generated by the build + instead of trying to load the system theme. + + * PlatformEfl.cmake: + * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp: + (EWK2UnitTest::EWK2UnitTestBase::SetUp): + * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestEnvironment.cpp: + (EWK2UnitTest::EWK2UnitTestEnvironment::defaultTheme): + (EWK2UnitTest): + * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestEnvironment.h: + (EWK2UnitTestEnvironment): + +2012-07-18 Pierre Rossi <pierre.rossi@gmail.com> + + [Qt] QQuickWebView shouldn't recieve mouse events while dialogs are active + https://bugs.webkit.org/show_bug.cgi?id=91634 + + Reviewed by Alexis Menard. + + One side-effect of reimplementing childMouseEventFilter() in r122438 is that it can end up + bypassing the mouseArea mechanism used in QML dialogs and still forward some mouse events + over to the web process. We can rely on the same m_dialogActive mechanism already used for + touch events in there as well. + + * UIProcess/API/qt/qquickwebview.cpp: + (QQuickWebView::childMouseEventFilter): ignore events and return early if a dialog is active. + +2012-07-18 Pierre Rossi <pierre.rossi@gmail.com> + + [Qt] Build fix for ENABLE_TOUCH_EVENTS=0 + + Rubber-stamped by No'am Rosenthal. + + Add the appropriate ENABLE(TOUCH_EVENTS) where they're needed. + + * UIProcess/API/qt/raw/qrawwebview.cpp: + * UIProcess/API/qt/raw/qrawwebview_p.h: include Platform.h so we can use the ENABLE macro. + * UIProcess/InspectorServer/qt/WebInspectorServerQt.cpp: Also add the missing QFile include. + * UIProcess/qt/QtWebPageEventHandler.cpp: + (WebKit::QtWebPageEventHandler::deactivateTapHighlight): + +2012-07-18 Christophe Dumez <christophe.dumez@intel.com> + + [EFL][WK2] Add Ewk class for cookie manager + https://bugs.webkit.org/show_bug.cgi?id=91053 + + Reviewed by Gustavo Noronha Silva. + + Add new Ewk_Cookie_Manager class to allow the client + to set/get the cookie acceptance policy, support + persistent cookie storage and clear cookies. + + The Ewk_Cookie_Manager instance can be retrieved + from the Ewk_Context API. + + * PlatformEfl.cmake: + * UIProcess/API/efl/EWebKit2.h: + * UIProcess/API/efl/ewk_context.cpp: + (_Ewk_Context): + (_Ewk_Context::_Ewk_Context): + (_Ewk_Context::~_Ewk_Context): + (ewk_context_cookie_manager_get): + * UIProcess/API/efl/ewk_context.h: + * UIProcess/API/efl/ewk_cookie_manager.cpp: Added. + (_Ewk_Cookie_Manager): + (_Ewk_Cookie_Manager::_Ewk_Cookie_Manager): + (ewk_cookie_manager_persistent_storage_set): + (ewk_cookie_manager_accept_policy_set): + (Get_Policy_Async_Data): + (getAcceptPolicyCallback): + (ewk_cookie_manager_async_accept_policy_get): + (Get_Hostnames_Async_Data): + (getHostnamesWithCookiesCallback): + (ewk_cookie_manager_async_hostnames_with_cookies_get): + (ewk_cookie_manager_hostname_cookies_clear): + (ewk_cookie_manager_cookies_clear): + (ewk_cookie_manager_free): + (ewk_cookie_manager_new): + * UIProcess/API/efl/ewk_cookie_manager.h: Added. + * UIProcess/API/efl/ewk_cookie_manager_private.h: Added. + +2012-07-18 Carlos Garcia Campos <cgarcia@igalia.com> + + [GTK] Add WebKitWebView::submit-form signal to WebKit2 GTK+ API + https://bugs.webkit.org/show_bug.cgi?id=91605 + + Reviewed by Gustavo Noronha Silva. + + The signal is emitted when a form is about to submitted, with a + form submission request that can be used to get the text fields + and to continue the form submission wheh done. + + * GNUmakefile.list.am: Add new files to compilation. + * UIProcess/API/gtk/WebKitFormClient.cpp: Added. + (willSubmitForm): Create a WebKitFormSubmissionRequest and call + webkitWebViewSubmitFormRequest() with the request. + (attachFormClientToView): Add impementation for willSubmitForm + callback. + * UIProcess/API/gtk/WebKitFormClient.h: Added. + * UIProcess/API/gtk/WebKitFormSubmissionRequest.cpp: Added. + (webkit_form_submission_request_init): + (webkitFormSubmissionRequestFinalize): + (webkit_form_submission_request_class_init): + (webkitFormSubmissionRequestCreate): Create a new + WebKitFormSubmissionRequest for the given values dictionary and + submission listener. + (webkit_form_submission_request_get_text_fields): Create a + GHashTable with the text fields values and return it. + (webkit_form_submission_request_submit): Continue the form + submission. + * UIProcess/API/gtk/WebKitFormSubmissionRequest.h: Added. + * UIProcess/API/gtk/WebKitFormSubmissionRequestPrivate.h: Added. + * UIProcess/API/gtk/WebKitWebView.cpp: + (webkitWebViewConstructed): Attach web view to form client. + (webkit_web_view_class_init): Add WebKitWebView::submit-form + signal. + (webkitWebViewSubmitFormRequest): Emit WebKitWebView::submit-form + signal. + * UIProcess/API/gtk/WebKitWebView.h: + * UIProcess/API/gtk/WebKitWebViewPrivate.h: + * UIProcess/API/gtk/docs/webkit2gtk-docs.sgml: Add new section for + WebKitFormSubmissionRequest. + * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Add new symbols. + * UIProcess/API/gtk/tests/TestWebKitWebView.cpp: + (testWebViewSubmitForm): + (beforeAll): + * UIProcess/API/gtk/webkit2.h: Include + WebKitFormSubmissionRequest.h. + +2012-07-18 Carlos Garcia Campos <cgarcia@igalia.com> + + [GTK] No main resource in WebView when page has been loaded from history cache + https://bugs.webkit.org/show_bug.cgi?id=91478 + + Reviewed by Gustavo Noronha Silva. + + We are assuming that a resource loaded for the main frame that is + provisionally loading is the main resource of the web view. However + that's not true for pages loaded from history cache, so when you + go back/forward webkit_web_view_get_main_resource() always returns + NULL. We can assume that the first resource loaded for the main + frame is the main resource of the web view when + pageIsProvisionallyLoading is false. + + * UIProcess/API/gtk/WebKitWebView.cpp: + (webkitWebViewResourceLoadStarted): Make sure we always have a + main resource for the web view. + * UIProcess/API/gtk/tests/TestResources.cpp: + (testWebViewResourcesHistoryCache): Test we always have a main + resource even after going back/forward. + (beforeAll): Add new test case. + +2012-07-18 Seokju Kwon <seokju.kwon@samsung.com> + + [EFL] Rename WebInspectorEfl.cpp as WebInspectorProxyEfl.cpp + https://bugs.webkit.org/show_bug.cgi?id=91585 + + Reviewed by Andreas Kling. + + Rename WebInspectorEfl.cpp as WebInspectorProxyEfl.cpp + since it implements the platform specific methods of WebInspectorProxy. + + * PlatformEfl.cmake: + * UIProcess/efl/WebInspectorProxyEfl.cpp: Renamed from Source/WebKit2/UIProcess/efl/WebInspectorEfl.cpp. + (WebKit): + (WebKit::WebInspectorProxy::platformCreateInspectorPage): + (WebKit::WebInspectorProxy::platformOpen): + (WebKit::WebInspectorProxy::platformDidClose): + (WebKit::WebInspectorProxy::platformBringToFront): + (WebKit::WebInspectorProxy::platformIsFront): + (WebKit::WebInspectorProxy::platformInspectedURLChanged): + (WebKit::WebInspectorProxy::inspectorPageURL): + (WebKit::WebInspectorProxy::inspectorBaseURL): + (WebKit::WebInspectorProxy::platformInspectedWindowHeight): + (WebKit::WebInspectorProxy::platformAttach): + (WebKit::WebInspectorProxy::platformDetach): + (WebKit::WebInspectorProxy::platformSetAttachedWindowHeight): + +2012-07-18 Zoltan Horvath <zoltan@webkit.org> + + [Qt] Modify the using of the QImage::Format enum to the appropriate functions from NativeImageQt + https://bugs.webkit.org/show_bug.cgi?id=91600 + + Reviewed by Andreas Kling. + + Use NativeImageQt::defaultFormatForAlphaEnabledImages() and NativeImageQt::defaultFormatForOpaqueImages() + instead of the direct imagetypes at the appropriate places. + + * Shared/qt/ShareableBitmapQt.cpp: + (WebKit::ShareableBitmap::createQImage): + +2012-07-18 Zeno Albisser <zeno@webkit.org> + + [Qt][WK2] Caching of ShareableSurfaces breaks tiling. + https://bugs.webkit.org/show_bug.cgi?id=91609 + + A ShareableSurface should only be cached, + when it is GraphicsSurface based. + + Reviewed by Kenneth Rohde Christiansen. + + * UIProcess/LayerTreeCoordinatorProxy.cpp: + (WebKit::LayerTreeCoordinatorProxy::updateTileForLayer): + * UIProcess/LayerTreeCoordinatorProxy.h: + (LayerTreeCoordinatorProxy): + +2012-07-18 Carlos Garcia Campos <cgarcia@igalia.com> + + [GTK] Fix a crash due to an invalid assert + https://bugs.webkit.org/show_bug.cgi?id=91614 + + Reviewed by Xan Lopez. + + In webkitWebViewBaseContainerAdd() there's + ASSERT(priv->inspectorView); that should be the opposite, since we + shoulnd't have an inspector view when the inspector view is added. + + * UIProcess/API/gtk/WebKitWebViewBase.cpp: + (webkitWebViewBaseContainerAdd): + +2012-07-18 Thiago Marcos P. Santos <thiago.santos@intel.com> + + [CMake] Make gtest a shared library + https://bugs.webkit.org/show_bug.cgi?id=90973 + + Reviewed by Daniel Bates. + + No need to link with gtest dependencies now since it is a shared library. + + * PlatformEfl.cmake: + +2012-07-18 YoungTaeck Song <youngtaeck.song@samsung.com> + + [WK2][EFL] Add a common code using Color instead of QColor + https://bugs.webkit.org/show_bug.cgi?id=91580 + + Reviewed by Simon Hausmann. + + This patch is a subset of Efl's UI_SIDE_COMPOSITING implementation. + drawBorder's argument is QColor. So add a common code using Color to be used by Efl. + + * UIProcess/texmap/LayerBackingStore.cpp: + (WebKit::LayerBackingStore::paintToTextureMapper): + +2012-07-17 Christophe Dumez <christophe.dumez@intel.com> + + [EFL] Replace 0 by NULL in public headers documentation + https://bugs.webkit.org/show_bug.cgi?id=91470 + + Reviewed by Dirk Pranke. + + Use NULL instead of 0 for pointer types in public + C headers. + + * UIProcess/API/efl/ewk_intent.h: + * UIProcess/API/efl/ewk_intent_service.h: + * UIProcess/API/efl/ewk_url_request.h: + * UIProcess/API/efl/ewk_url_response.h: + * UIProcess/API/efl/ewk_view.h: + * UIProcess/API/efl/ewk_web_resource.h: + +2012-07-17 Carlos Garcia Campos <cgarcia@igalia.com> + + [GTK] Don't use deprecated soup API in WebKit2APITests/TestResources + https://bugs.webkit.org/show_bug.cgi?id=91496 + + Reviewed by Martin Robinson. + + soup_message_headers_get() is deprecated, use + soup_message_headers_get_one() instead. + + * UIProcess/API/gtk/tests/TestResources.cpp: + (serverCallback): + +2012-07-17 Carlos Garcia Campos <cgarcia@igalia.com> + + [GTK] Fix a typo in WebKit2APITests/TestResources + https://bugs.webkit.org/show_bug.cgi?id=91495 + + Reviewed by Xan Lopez. + + * UIProcess/API/gtk/tests/TestResources.cpp: + (testWebResourceLoading): + (testWebResourceResponse): + (testWebResourceMimeType): + (testWebResourceActiveURI): + +2012-07-17 Vivek Galatage <vivekgalatage@gmail.com> + + Web Inspector: refactor InspectorController::connectFrontend() to accept InspectorFrontendChannel. + https://bugs.webkit.org/show_bug.cgi?id=91196 + + Reviewed by Pavel Feldman. + + Refactoring InspectorClients. InspectorClient::openInspectorFrontend + now returning the InspectorFrontendChannel. + + * WebProcess/WebCoreSupport/WebInspectorClient.cpp: + (WebKit::WebInspectorClient::openInspectorFrontend): + * WebProcess/WebCoreSupport/WebInspectorClient.h: + (WebInspectorClient): + +2012-07-17 Carlos Garcia Campos <cgarcia@igalia.com> + + [GTK] Paste primary selection when middle clicking in X11 WebKit2 + https://bugs.webkit.org/show_bug.cgi?id=91411 + + Reviewed by Xan Lopez. + + Handle middle click events to paste primary selection as expected + in any X11 application. + + * WebProcess/WebPage/WebPage.cpp: + (WebKit::handleMouseEvent): Call handleMousePressedEvent() for GTK+ + platform. + * WebProcess/WebPage/WebPage.h: + (WebPage): Add handleMousePressedEvent() for GTK+ platform. + * WebProcess/WebPage/gtk/WebPageGtk.cpp: + (WebKit::WebPage::handleMousePressedEvent): Handle middle click + events to paste primary selection like we do in WebKit1. + +2012-07-17 Ryuan Choi <ryuan.choi@samsung.com> + + [EFL] Move codes related to theme setting from Widget to RenderTheme + https://bugs.webkit.org/show_bug.cgi?id=89842 + + Reviewed by Kenneth Rohde Christiansen. + + * CMakeLists.txt: Added html/shadow to WebKit_INCLUDE_DIRECTORIES. + * WebProcess/WebPage/efl/WebPageEfl.cpp: + (WebKit::WebPage::setThemePath): Called RenderThemeEfl::setThemePath instead of setting theme in FrameView. + +2012-07-17 David Barr <davidbarr@chromium.org> + + Introduce ENABLE_CSS_IMAGE_ORIENTATION compile flag + https://bugs.webkit.org/show_bug.cgi?id=89055 + + Reviewed by Kent Tamura. + + The css3-images module is at candidate recommendation. + http://www.w3.org/TR/2012/CR-css3-images-20120417/#the-image-orientation + + Add a configuration option for CSS image-orientation support, disabling it by default. + + * Configurations/FeatureDefines.xcconfig: + +2012-07-16 Gyuyoung Kim <gyuyoung.kim@samsung.com> + + Add RegisterProtocolHandlerClient to the Modules/protocolhandler + https://bugs.webkit.org/show_bug.cgi?id=90940 + + Reviewed by Hajime Morita. + + As a step to let protocol handler be moved to the modules, RegisterProtocolHandlerClient needs + to be added to the Modules/protocolhandler. Because ChromeClient has some virtual functions for + protocol handlers, virtual functions should be moved to RegisterProtocolHandlerClient. + + In order to support this, WebRegisterProtocolHandlerClient class is added. However, this is not implemented yet. + In addition, existing virtual functions in WebChromeClient are moved to WebRegisterProtocolHandlerClient. + + * WebProcess/WebCoreSupport/WebChromeClient.h: + * WebProcess/WebCoreSupport/WebRegisterProtocolHandlerClient.h: Added. + (WebKit): + (WebRegisterProtoclHandlerClient): + (WebKit::WebRegisterProtoclHandlerClient::isProtocolHandlerRegistered): + (WebKit::WebRegisterProtoclHandlerClient::unregisterProtocolHandler): + +2012-07-16 Pete Williamson <petewil@google.com> + + Export the iconURL list to make it available to the Internals class for testing + https://bugs.webkit.org/show_bug.cgi?id=88665 + + Reviewed by Kent Tamura. + + * win/WebKit2.def: export the DocumentL::iconURLs function + +2012-07-16 Hajime Morrita <morrita@chromium.org> + + WebCore needs WEBCORE_TESTING macro to mark methods being exported for testing. + https://bugs.webkit.org/show_bug.cgi?id=90764 + + Reviewed by Adam Barth. + + Removed symbols which are now covered by WEBCORE_TESTING. + + * win/WebKit2.def: + * win/WebKit2CFLite.def: + +2012-07-16 Christophe Dumez <christophe.dumez@intel.com> + + [EFL][WK2] Implement decidePolicyForResponse in policy client + https://bugs.webkit.org/show_bug.cgi?id=91401 + + Reviewed by Kenneth Rohde Christiansen. + + Provide implementation for decidePolicyForResponse callback + in WebKit2 EFL's policy client. + + * UIProcess/API/efl/ewk_view_policy_client.cpp: + (decidePolicyForResponseCallback): + (ewk_view_policy_client_attach): + +2012-07-16 Ryuan Choi <ryuan.choi@samsung.com> + + [EFL][WK2] Add APIs to support theme. + https://bugs.webkit.org/show_bug.cgi?id=90107 + + Reviewed by Hajime Morita. + + RenderThemeEfl uses edj file to render native theme of form elements. + This patch provides default theme and a way to change edj theme file for + WebKit2/Efl. + + * PlatformEfl.cmake: + * UIProcess/API/efl/ewk_view.cpp: + (_Ewk_View_Private_Data): + (ewk_view_base_add): + (ewk_view_theme_set): + (ewk_view_theme_get): + * UIProcess/API/efl/ewk_view.h: + * UIProcess/WebPageProxy.h: + (WebPageProxy): + * UIProcess/efl/WebPageProxyEfl.cpp: + (WebKit::WebPageProxy::setThemePath): + * WebProcess/WebPage/WebPage.h: + * WebProcess/WebPage/WebPage.messages.in: + * WebProcess/WebPage/efl/WebPageEfl.cpp: + (WebKit::WebPage::setThemePath): + +2012-07-16 Kihong Kwon <kihong.kwon@samsung.com> + + Remove setController from BatteryClient + https://bugs.webkit.org/show_bug.cgi?id=90944 + + Reviewed by Adam Barth. + + Remove WebBatteryClient::setController function. + + * WebProcess/WebCoreSupport/WebBatteryClient.cpp: + * WebProcess/WebCoreSupport/WebBatteryClient.h: + (WebBatteryClient): + +2012-07-16 Christophe Dumez <christophe.dumez@intel.com> + + [EFL][WK2] Make Ewk_Navigation_Policy_Decision ref counted + https://bugs.webkit.org/show_bug.cgi?id=91343 + + Reviewed by Antonio Gomes. + + Make Ewk_Navigation_Policy_Decision ref counted so that the + client can make navigation policy decisions asynchronously + by ref'ing the Ewk_Navigation_Policy_Decision object passed + with the "policy,*" signals. + + * UIProcess/API/efl/ewk_navigation_policy_decision.cpp: + (_Ewk_Navigation_Policy_Decision): + (_Ewk_Navigation_Policy_Decision::_Ewk_Navigation_Policy_Decision): + (_Ewk_Navigation_Policy_Decision::~_Ewk_Navigation_Policy_Decision): + (ewk_navigation_policy_decision_ref): + (ewk_navigation_policy_decision_unref): + * UIProcess/API/efl/ewk_navigation_policy_decision.h: + * UIProcess/API/efl/ewk_view.h: + * UIProcess/API/efl/ewk_view_policy_client.cpp: + (decidePolicyForNavigationAction): + (decidePolicyForNewWindowAction): + +2012-07-16 Zoltan Horvath <zoltan@webkit.org> + + [Qt] Change NativeImagePtr from QPixmap* to QImage* + https://bugs.webkit.org/show_bug.cgi?id=88785 + + Reviewed by Simon Hausmann. + + Since we use raster engine there is no difference between QPixmap and QImage, so we are going + to use QImage everywhere where it is possible. This refactoring contains the change of the + NativeImagePtr typedef from QPixmap* to QImage* and covers the related modifications. + + Part of the change is similar to Viatcheslav Ostapenko's internal work. + + Covered by existing tests. + + * Shared/qt/ShareableBitmapQt.cpp: + (WebKit::ShareableBitmap::createImage): + * UIProcess/qt/QtWebIconDatabaseClient.cpp: + (WebKit::QtWebIconDatabaseClient::iconImageForPageURL): + * WebProcess/WebCoreSupport/qt/WebDragClientQt.cpp: + (WebKit::convertQImageToShareableBitmap): + (WebKit::WebDragClient::startDrag): + * WebProcess/WebPage/LayerTreeCoordinator/LayerTreeCoordinator.cpp: + (WebKit::LayerTreeCoordinator::adoptImageBackingStore): + +2012-07-16 Carlos Garcia Campos <cgarcia@igalia.com> + + Unreviewed. Fix make distcheck. + + * UIProcess/API/gtk/tests/GNUmakefile.am: Add test resources to + EXTRA_DIST. + +2012-07-15 Christophe Dumez <christophe.dumez@intel.com> + + [EFL][WK2] Define destructors for Ewk structures + https://bugs.webkit.org/show_bug.cgi?id=91338 + + Reviewed by Kentaro Hara. + + Add destructors to Ewk structures and move + memory freeing code from *_free() or *_unref() + functions to the destructors. + + * UIProcess/API/efl/ewk_intent.cpp: + (_Ewk_Intent::_Ewk_Intent): + (_Ewk_Intent): + (_Ewk_Intent::~_Ewk_Intent): + (ewk_intent_unref): + * UIProcess/API/efl/ewk_intent_service.cpp: + (_Ewk_Intent_Service): + (_Ewk_Intent_Service::~_Ewk_Intent_Service): + (ewk_intent_service_unref): + * UIProcess/API/efl/ewk_navigation_policy_decision.cpp: + (_Ewk_Navigation_Policy_Decision): + (_Ewk_Navigation_Policy_Decision::~_Ewk_Navigation_Policy_Decision): + (ewk_navigation_policy_decision_free): + * UIProcess/API/efl/ewk_url_request.cpp: + (_Ewk_Url_Request): + (_Ewk_Url_Request::~_Ewk_Url_Request): + (ewk_url_request_unref): + * UIProcess/API/efl/ewk_url_response.cpp: + (_Ewk_Url_Response): + (_Ewk_Url_Response::~_Ewk_Url_Response): + (ewk_url_response_unref): + * UIProcess/API/efl/ewk_view.cpp: + (_Ewk_View_Private_Data): + (_Ewk_View_Private_Data::~_Ewk_View_Private_Data): + (_ewk_view_priv_del): + * UIProcess/API/efl/ewk_web_error.cpp: + (_Ewk_Web_Error): + (_Ewk_Web_Error::~_Ewk_Web_Error): + (ewk_web_error_free): + * UIProcess/API/efl/ewk_web_resource.cpp: + (_Ewk_Web_Resource): + (_Ewk_Web_Resource::~_Ewk_Web_Resource): + (ewk_web_resource_unref): + +2012-07-14 Eric Carlson <eric.carlson@apple.com> + + Enable AVCF hardware video decoding + https://bugs.webkit.org/show_bug.cgi?id=90015 + <rdar://problem/10770317> + + Reviewed by Anders Carlsson. + + * DerivedSources.make: Define HAVE_AVCF if necessary. + + * WebProcess/WebCoreSupport/WebChromeClient.cpp: + (WebKit): + (WebKit::WebChromeClient::graphicsDeviceAdapter): New, return the layer tree host's + graphics adapter. + * WebProcess/WebCoreSupport/WebChromeClient.h: + (WebChromeClient): + * WebProcess/WebPage/LayerTreeHost.h: + (WebCore): + (LayerTreeHost): + (WebKit::LayerTreeHost::graphicsDeviceAdapter): New, default implementation. + + * WebProcess/WebPage/ca/win/LayerTreeHostCAWin.h: + (LayerTreeHostCAWin): + +2012-07-13 Thiago Marcos P. Santos <thiago.santos@intel.com> + + [CMake] Proper handling of ENABLE_API_TESTS build option + https://bugs.webkit.org/show_bug.cgi?id=91221 + + Reviewed by Rob Buis. + + Build unit tests only if ENABLE_API_TESTS is set. + + * PlatformEfl.cmake: + +2012-07-13 Christophe Dumez <christophe.dumez@intel.com> + + [EFL][WK2] Make new public Ewk headers as installable + https://bugs.webkit.org/show_bug.cgi?id=91232 + + Reviewed by Antonio Gomes. + + Make new public Ewk headers installable. + + * PlatformEfl.cmake: + +2012-07-13 Carlos Garcia Campos <cgarcia@igalia.com> + + [GTK] Implement disk cache in WebKit2 + https://bugs.webkit.org/show_bug.cgi?id=90797 + + Reviewed by Xan Lopez. + + * WebProcess/gtk/WebProcessGtk.cpp: + (WebKit::getCacheDiskFreeSize): Use an ASSERT instead of an early + return since the cache feature is now always added to the session. + (WebKit::WebProcess::platformSetCacheModel): Get the cache from + the session and set the maximum cache size as computed by + calculateCacheSizes(). + (WebKit::WebProcess::platformClearResourceCaches): Call + soup_cache_clear(). + (WebKit::WebProcess::platformTerminate): Make sure all pending + data is saved to the disk before the web process finishes. + * WebProcess/gtk/WebProcessMainGtk.cpp: + (WebKit::WebProcessMainGtk): Create a SoupCache feature and add it + to the default SoupSession. + +2012-07-13 Carlos Garcia Campos <cgarcia@igalia.com> + + [GTK] Fix disk cache size computation in WebKit2 + https://bugs.webkit.org/show_bug.cgi?id=91226 + + Reviewed by Xan Lopez. + + We are passing the free disk space value in bytes to + calculateCacheSizes() which expects values in MB. + + * WebProcess/gtk/WebProcessGtk.cpp: + (WebKit::WebProcess::platformSetCacheModel): + +2012-07-13 Carlos Garcia Campos <cgarcia@igalia.com> + + [GTK] WebKit2 crash when going back/forward + https://bugs.webkit.org/show_bug.cgi?id=91220 + + Reviewed by Xan Lopez. + + For some reason when a page is loaded from the backforward list, + when the didCommitLoadForFrame callback is called for the main + frame, the callback didInitiateLoadForResource hasn't been called + yet, so we don't even have a main resource at that point. We were + assuming we always had a main resource with a response. For now we + just check whether we have a resource before trying to set the + certificate to fix the crash, but we need to figue out why this is + happening an how to properly fix it. + + * UIProcess/API/gtk/WebKitLoaderClient.cpp: + (didCommitLoadForFrame): Check whether we have a main resource + before setting the certificate. + +2012-07-13 Christophe Dumez <christophe.dumez@intel.com> + + [EFL][WK2] Use eina stringsharing for Ewk_Web_Resource's url + https://bugs.webkit.org/show_bug.cgi?id=91200 + + Reviewed by Kenneth Rohde Christiansen. + + Use eina stringsharing for Ewk_Web_Resource's url + for consistency. + + * UIProcess/API/efl/ewk_web_resource.cpp: + (_Ewk_Web_Resource): + (_Ewk_Web_Resource::_Ewk_Web_Resource): + (ewk_web_resource_unref): + (ewk_web_resource_url_get): + * UIProcess/API/efl/ewk_web_resource.h: + +2012-07-13 Carlos Garcia Campos <cgarcia@igalia.com> + + [GTK] WebKitWebView::mouse-target-changed is not emitted when moved to/from edtiable content + https://bugs.webkit.org/show_bug.cgi?id=91216 + + Reviewed by Xan Lopez. + + The problem is that the function to check whether two hit test + results are equal doesn't check the editable flag. + + * UIProcess/API/gtk/WebKitHitTestResult.cpp: + (webkitHitTestResultCompare): Check also the editable flag. + +2012-07-13 Gyuyoung Kim <gyuyoung.kim@samsung.com> + + [EFL] Add *explicit* keyword to constructor which has a parameter + https://bugs.webkit.org/show_bug.cgi?id=91207 + + Reviewed by Zoltan Herczeg. + + Add *explicit* keyword to contructor which has a parameter in order to avoid implicit type conversion. + + * WebProcess/WebCoreSupport/efl/WebFrameNetworkingContext.h: + (WebFrameNetworkingContext::WebFrameNetworkingContext): + +2012-07-13 Zeno Albisser <zeno@webkit.org> + + [Qt][WK2] Implement GraphicsSurface for Linux/GLX. + https://bugs.webkit.org/show_bug.cgi?id=90881 + + Add a GLX based GraphicsSurface implementation for Linux. + + Reviewed by Noam Rosenthal. + + * Shared/ShareableSurface.cpp: + (WebKit::ShareableSurface::create): + Only create a GraphicsSurface from a ShareableSurface::Handle + in case the Handle contains a valid GraphicsSurface token. + Otherwise fall back to creating a ShareableBitmap. + * UIProcess/LayerTreeCoordinatorProxy.cpp: + (WebKit::createLayerTileUniqueKey): + Create a unique key for a surface based on tileID and layerID. + (WebKit::LayerTreeCoordinatorProxy::updateTileForLayer): + Even when GraphicsSurface is enabled, not all ShareableSurfaces + will necessarily be backed by a GraphicsSurface. In case of + a ShareableSurface being backed by a ShareableBitmap instead, + the GraphicsSurface token will always be null. + So instead of using the GraphicsSurface token as a key for + storing surfaces in a map, we create a unique key from + layerID and tileID. + * UIProcess/LayerTreeCoordinatorProxy.h: + (LayerTreeCoordinatorProxy): + +2012-07-12 Carlos Garcia Campos <cgarcia@igalia.com> + + [GTK] Add API to get HTTPS status to WebKit2 GTK+ + https://bugs.webkit.org/show_bug.cgi?id=91100 + + Reviewed by Martin Robinson. + + Add webkit_uri_response_get_https_status() to return + GTlsCertificate and GTlsCertificateFlags with information about + the SSL certificate and the possible errors with the certificate. + + * GNUmakefile.list.am: Add new files to compilation. + * PlatformEfl.cmake: Ditto. + * Shared/efl/PlatformCertificateInfo.h: Removed. + * Shared/soup/PlatformCertificateInfo.cpp: Added. + (WebKit::PlatformCertificateInfo::PlatformCertificateInfo): + (WebKit::PlatformCertificateInfo::~PlatformCertificateInfo): + (WebKit::PlatformCertificateInfo::encode): Encode the + GTlsCertificate and GTlsCertificateFlags. + (WebKit::PlatformCertificateInfo::decode): Decode + PlatformCertificateInfo into a GTlsCertificate and GTlsCertificateFlags. + * Shared/soup/PlatformCertificateInfo.h: Renamed from Source/WebKit2/Shared/gtk/PlatformCertificateInfo.h. + (WebKit::PlatformCertificateInfo::certificate): Return the certificate. + (WebKit::PlatformCertificateInfo::tlsErrors): Return the TLS errors + * UIProcess/API/gtk/WebKitLoaderClient.cpp: + (didCommitLoadForFrame): Set the certificate of the current frame + to the response of the main resource. + * UIProcess/API/gtk/WebKitURIResponse.cpp: + (webkit_uri_response_get_https_status): Return GTlsCertificate and + GTlsCertificateFlags. + (webkitURIResponseSetCertificateInfo): Update the internal + ResourceResponse with the GTlsCertificate and GTlsCertificateFlags + of the given PlatformCertificateInfo. + * UIProcess/API/gtk/WebKitURIResponse.h: + * UIProcess/API/gtk/WebKitURIResponsePrivate.h: + * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Add new symbol. + * UIProcess/API/gtk/tests/GNUmakefile.am: + * UIProcess/API/gtk/tests/TestMain.h: + (Test::getResourcesDir): Helper function to get the resources + directory of the WebKit2 API tests. + * UIProcess/API/gtk/tests/TestSSL.cpp: Added. + (testSSL): + (serverCallback): + (beforeAll): + (afterAll): + * UIProcess/API/gtk/tests/WebKitTestServer.cpp: + (WebKitTestServer::WebKitTestServer): Add support por SSL test + servers. + * UIProcess/API/gtk/tests/WebKitTestServer.h: + (WebKitTestServer): Add ssl parameter to create a HTTPS server. + * UIProcess/API/gtk/tests/resources/test-cert.pem: Added. + * UIProcess/API/gtk/tests/resources/test-key.pem: Added. + +2012-07-12 Christophe Dumez <christophe.dumez@intel.com> + + [WK2][EFL] Facilitate debugging of the Web Process + https://bugs.webkit.org/show_bug.cgi?id=90768 + + Reviewed by Kenneth Rohde Christiansen. + + The EFL port now checks if the WEB_PROCESS_CMD_PREFIX + environment variable is set and uses it as prefix + when spawning the Web process if it is. This is used + for debugging purposes with prefixes such as: + "xterm -title renderer -e gdb --args". + + * UIProcess/Launcher/ProcessLauncher.h: + (LaunchOptions): + * UIProcess/Launcher/efl/ProcessLauncherEfl.cpp: + (WebKit::ProcessLauncher::launchProcess): + * UIProcess/WebProcessProxy.cpp: + (WebKit::WebProcessProxy::connect): + +2012-07-12 Timothy Hatcher <timothy@apple.com> + + Make the "Inspect Element" context menu item appear in nightly builds again. + + https://webkit.org/b/89323 + + Reviewed by Anders Carlsson. + + * Shared/API/c/WKContextMenuItem.cpp: + (compatibleContextMenuItemTag): Added. Checks for the specific version of Safari 6 that needs the + tag fixed up to match values it expects. + (WKContextMenuItemGetTag): On Mac platforms call compatibleContextMenuItemTag to fix up the tag + before returning it. + * Shared/API/c/WKContextMenuItemTypes.h: Fix the order of the WKContextMenuItemTag enum + to be binary compatible with older versions of WebKit2. + +2012-07-12 Thiago Marcos P. Santos <thiago.santos@intel.com> + + [EFL] Port the test framework to WebKit 2 + https://bugs.webkit.org/show_bug.cgi?id=90606 + + Reviewed by Kenneth Rohde Christiansen. + + This port of EFL's WebKit 1 test framework uses a more gtest-ish + way of writing tests and it is based on a test fixture that loads a + page synchronously as convenience (if needed). This base fixture can be + easily extended by just inheriting from it. + + * PlatformEfl.cmake: + * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp: Added. + (EWK2UnitTest): + (EWK2UnitTest::onLoadProgress): + (EWK2UnitTest::EWK2UnitTestBase::EWK2UnitTestBase): + (EWK2UnitTest::EWK2UnitTestBase::SetUp): + (EWK2UnitTest::EWK2UnitTestBase::TearDown): + (EWK2UnitTest::EWK2UnitTestBase::loadUrlSync): + * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h: Added. + (EWK2UnitTest): + (EWK2UnitTestBase): + (EWK2UnitTest::EWK2UnitTestBase::setLoadProgress): + (EWK2UnitTest::EWK2UnitTestBase::webView): + * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestEnvironment.cpp: Added. + (EWK2UnitTest): + (EWK2UnitTest::EWK2UnitTestEnvironment::EWK2UnitTestEnvironment): + (EWK2UnitTest::EWK2UnitTestEnvironment::defaultTestPageUrl): + * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestEnvironment.h: Added. + (EWK2UnitTest): + (EWK2UnitTestEnvironment): + (EWK2UnitTest::EWK2UnitTestEnvironment::useX11Window): + (EWK2UnitTest::EWK2UnitTestEnvironment::defaultWidth): + (EWK2UnitTest::EWK2UnitTestEnvironment::defaultHeight): + * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestMain.cpp: Added. + (parseArguments): + (main): + * UIProcess/API/efl/tests/resources/default_test_page.html: Added. + * UIProcess/API/efl/tests/test_ewk2_view.cpp: Added. + (TEST_F): + +2012-07-12 Christophe Dumez <christophe.dumez@intel.com> + + [WK2] Add missing Network Information API integration to WebContext and WebPage + https://bugs.webkit.org/show_bug.cgi?id=90781 + + Reviewed by Anders Carlsson. + + Integrate Network Information API to WebPage, WebContext and + properly route messages to the WebNetworkInfoManagerProxy. + Without this, the Network Information tests are crashing for + WebKit2. + + * UIProcess/WebContext.cpp: + (WebKit::WebContext::WebContext): + (WebKit::WebContext::~WebContext): + (WebKit::WebContext::disconnectProcess): + (WebKit::WebContext::didReceiveMessage): + (WebKit::WebContext::didReceiveSyncMessage): + * UIProcess/WebContext.h: + (WebKit): + (WebContext): + (WebKit::WebContext::networkInfoManagerProxy): + * UIProcess/WebNetworkInfoManagerProxy.cpp: + (WebKit::WebNetworkInfoManagerProxy::didReceiveSyncMessage): + (WebKit): + * UIProcess/WebNetworkInfoManagerProxy.h: + (WebNetworkInfoManagerProxy): + * UIProcess/WebProcessProxy.cpp: + (WebKit::WebProcessProxy::didReceiveMessage): + (WebKit::WebProcessProxy::didReceiveSyncMessage): + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::WebPage): + +2012-07-12 No'am Rosenthal <noam.rosenthal@nokia.com> + + Move TextureMapperAnimation and texmap/LayerTransform to platform/graphics + https://bugs.webkit.org/show_bug.cgi?id=91111 + + Reviewed by Kenneth Rohde Christiansen. + + Include the new filenames. + + * WebProcess/WebPage/LayerTreeCoordinator/WebGraphicsLayer.h: + (WebGraphicsLayer): + +2012-07-12 Adenilson Cavalcanti <cavalcantii@gmail.com> + + [Qt][WK2] Implement web notifications support + https://bugs.webkit.org/show_bug.cgi?id=80702 + + Reviewed by Noam Rosenthal. + + Adding a new type of permission request for Desktop Notifications (plus required code + to register the handle for this requests). + + * UIProcess/API/qt/qwebpermissionrequest.cpp: + (QWebPermissionRequestPrivate::QWebPermissionRequestPrivate): + (QWebPermissionRequestPrivate): + (QWebPermissionRequest::create): + (QWebPermissionRequest::QWebPermissionRequest): + (QWebPermissionRequest::setAllow): + * UIProcess/API/qt/qwebpermissionrequest_p.h: + * UIProcess/API/qt/tests/qmltests/WebView/tst_notification.qml: Added. + * UIProcess/API/qt/tests/qmltests/common/notification.html: Added. + * UIProcess/qt/QtWebPageUIClient.cpp: + (WebKit::QtWebPageUIClient::QtWebPageUIClient): + (WebKit::QtWebPageUIClient::policyForNotificationPermissionRequest): + (WebKit): + * UIProcess/qt/QtWebPageUIClient.h: + +2012-07-12 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com> + + [EFL][WK2] Browser crashes running BatteryStatus tests. + https://bugs.webkit.org/show_bug.cgi?id=91065 + + Reviewed by Kentaro Hara. + + clientInfo was incorrectly casted to BatteryProviderEfl in helper + function. This patch fixes the issue. + + * UIProcess/API/efl/BatteryProvider.cpp: + (toBatteryProvider): + +2012-07-12 Christophe Dumez <christophe.dumez@intel.com> + + [EFL] [WK2] regression(r122411) Crashes in Ewk_View + https://bugs.webkit.org/show_bug.cgi?id=91068 + + Reviewed by Kentaro Hara. + + Avoid using calloc() to allocate memory for structures + and use new operator instead. calloc() causes unwanted + behavior when allocing a structure which contains + non-pointer types (e.g. a HashMap) and leads to + crashes. + + * UIProcess/API/efl/ewk_context.cpp: + (_Ewk_Context::_Ewk_Context): + * UIProcess/API/efl/ewk_intent.cpp: + (_Ewk_Intent): + (_Ewk_Intent::_Ewk_Intent): + (ewk_intent_unref): + (ewk_intent_new): + * UIProcess/API/efl/ewk_intent_service.cpp: + (_Ewk_Intent_Service): + (_Ewk_Intent_Service::_Ewk_Intent_Service): + (ewk_intent_service_unref): + (ewk_intent_service_new): + * UIProcess/API/efl/ewk_navigation_policy_decision.cpp: + (_Ewk_Navigation_Policy_Decision): + (_Ewk_Navigation_Policy_Decision::_Ewk_Navigation_Policy_Decision): + (ewk_navigation_policy_decision_free): + (ewk_navigation_policy_decision_new): + * UIProcess/API/efl/ewk_url_request.cpp: + (_Ewk_Url_Request): + (_Ewk_Url_Request::_Ewk_Url_Request): + (ewk_url_request_unref): + (ewk_url_request_new): + * UIProcess/API/efl/ewk_url_response.cpp: + (_Ewk_Url_Response): + (_Ewk_Url_Response::_Ewk_Url_Response): + (ewk_url_response_unref): + (ewk_url_response_new): + * UIProcess/API/efl/ewk_view.cpp: + (_Ewk_View_Private_Data): + (_Ewk_View_Private_Data::_Ewk_View_Private_Data): + (_ewk_view_priv_new): + (_ewk_view_priv_del): + * UIProcess/API/efl/ewk_web_error.cpp: + (_Ewk_Web_Error): + (_Ewk_Web_Error::_Ewk_Web_Error): + (ewk_web_error_free): + (ewk_web_error_new): + * UIProcess/API/efl/ewk_web_resource.cpp: + (_Ewk_Web_Resource): + (_Ewk_Web_Resource::_Ewk_Web_Resource): + (ewk_web_resource_unref): + (ewk_web_resource_new): + +2012-07-11 Andras Becsi <andras.becsi@nokia.com> + + [Qt][WK2] ASSERT: "!m_viewportItem->isMoving()" in QtViewportHandler::flickMoveEnded() + https://bugs.webkit.org/show_bug.cgi?id=90875 + + Reviewed by Kenneth Rohde Christiansen. + + Since MultiPointTouchArea and PinchArea use the childMouseEventFilter + method to filter touch events and because Flickable filters child mouse + events the canvas calls this function before propagating the touch event + to the WebView. Since Flickable does not accept touch events the canvas + tries to propagate a synthesized mouse event through the base class + childMouseEventFilter function which is accepted by Flickable and + interferes with the input events we send to Flicakble hence messes up + the internal state of the WebView. + This patch reimplements the virtual childMouseEventFilter method so that all + the mouse and touch events can be processed by WebKit before they arrive to + Flickable. + + * UIProcess/API/qt/qquickwebview.cpp: + (QQuickWebView::childMouseEventFilter): + * UIProcess/API/qt/qquickwebview_p.h: + +2012-07-12 Carlos Garcia Campos <cgarcia@igalia.com> + + Unreviewed. Fix GTK+ debug build after r122425. + + * WebProcess/Cookies/soup/WebKitSoupCookieJarSqlite.cpp: + (webkitSoupCookieJarSqliteNew): + +2012-07-12 Sergio Villar Senin <svillar@igalia.com> + + [WK2] Performance issue in FindController::findString + https://bugs.webkit.org/show_bug.cgi?id=78132 + + Reviewed by Anders Carlsson. + + FindController should not unmark all text matches by default. It + will be done only if the string is not found or if + markAllTextMatches() is called. This will allow clients to look + for the next/previous without having to unmark() + mark() all the + text matches for every single search operation. + + * UIProcess/API/gtk/WebKitFindController.cpp: + (webKitFindControllerPerform): + (webkit_find_controller_search_next): + (webkit_find_controller_search_previous): + * WebProcess/WebPage/FindController.cpp: + (WebKit::FindController::updateFindUIAfterPageScroll): + (WebKit::FindController::findString): + +2012-07-12 Christophe Dumez <christophe.dumez@intel.com> + + [WK2][EFL] Add policy client to Ewk_View + https://bugs.webkit.org/show_bug.cgi?id=90953 + + Reviewed by Kenneth Rohde Christiansen. + + Emit new "policy,decision,navigation" and "policy,decision,new,window" + on the Ewk_View when policy decisions should be taken by the client. + + A new Ewk_Navigation_Policy_Decision type is introduced to provide + information about the navigation request and make a decision. + By default, the navigation request is accepted. + + * PlatformEfl.cmake: + * UIProcess/API/efl/EWebKit2.h: + * UIProcess/API/efl/ewk_navigation_policy_decision.cpp: Added. + (_Ewk_Navigation_Policy_Decision): + (ewk_navigation_policy_decision_free): + (ewk_navigation_policy_navigation_type_get): + (ewk_navigation_policy_mouse_button_get): + (ewk_navigation_policy_modifiers_get): + (ewk_navigation_policy_frame_name_get): + (ewk_navigation_policy_request_get): + (ewk_navigation_policy_decision_accept): + (ewk_navigation_policy_decision_reject): + (ewk_navigation_policy_decision_download): + (ewk_navigation_policy_decision_new): + * UIProcess/API/efl/ewk_navigation_policy_decision.h: Added. + * UIProcess/API/efl/ewk_navigation_policy_decision_private.h: Added. + * UIProcess/API/efl/ewk_private.h: Added. + * UIProcess/API/efl/ewk_view.cpp: + (ewk_view_base_add): + (ewk_view_navigation_policy_decision): + (ewk_view_new_window_policy_decision): + * UIProcess/API/efl/ewk_view.h: + * UIProcess/API/efl/ewk_view_policy_client.cpp: Added. + (toEwkView): + (decidePolicyForNavigationAction): + (decidePolicyForNewWindowAction): + (ewk_view_policy_client_attach): + * UIProcess/API/efl/ewk_view_policy_client_private.h: Added. + * UIProcess/API/efl/ewk_view_private.h: + +2012-07-11 Carlos Garcia Campos <cgarcia@igalia.com> + + [GTK] Add webkit_cookie_manager_set_persistent_storage() to WebKit2 GTK+ API + https://bugs.webkit.org/show_bug.cgi?id=83016 + + Reviewed by Martin Robinson. + + Add a custom implementation of SoupCookieJarSqlite based on + libsoup code but using WebCore SQLite classes. SoupCookieJarSqlite + is part of libsoup-gnome, it's not a lot of code and it doesn't + change often, so it's better to simply have our own implementation + instead of making this important feature depend on an optional + dependency. There are plans to move the implementation to libsoup, + if that eventually happens we will remove our code to use libsoup + directly. + + * GNUmakefile.am: Add new dirs to include path. + * GNUmakefile.list.am: Add new files to compilation. + * PlatformEfl.cmake: Ditto. + * Shared/soup/SoupCookiePersistentStorageType.h: Added. + * UIProcess/API/gtk/WebKitCookieManager.cpp: + (webkit_cookie_manager_set_persistent_storage): Set a persistent + storage for cookies. + * UIProcess/API/gtk/WebKitCookieManager.h: + * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Add new symbols + * UIProcess/API/gtk/tests/TestCookieManager.cpp: + (testCookieManagerPersistentStorage): + (serverCallback): + (beforeAll): + (afterAll): + * UIProcess/WebCookieManagerProxy.h: + (WebCookieManagerProxy): Add setCookiePersistentStorage() method + when using soup. + * UIProcess/soup/WebCookieManagerProxySoup.cpp: Added. + (WebKit::WebCookieManagerProxy::setCookiePersistentStorage): Send + SetCookiePersistentStorage message to the web process. + * WebProcess/Cookies/WebCookieManager.h: + (WebCookieManager): Add setCookiePersistentStorage() method when + using soup. + * WebProcess/Cookies/WebCookieManager.messages.in: Add + SetCookiePersistentStorage message when using soup. + * WebProcess/Cookies/soup/WebCookieManagerSoup.cpp: + (WebKit::WebCookieManager::setCookiePersistentStorage): Create a + new cookie jar for the given filename and storage type and add it + to the soup session. + * WebProcess/Cookies/soup/WebKitSoupCookieJarSqlite.cpp: Added. + (webkitSoupCookieJarSqliteOpenDatabase): Open SQLite database. + (webkitSoupCookieJarSqliteCreateTable): Create moz_cookies if it + doesn't exist. + (webkitSoupCookieJarSqliteLoad): Load the initial set of cookies + from the database. + (webkitSoupCookieJarSqliteInsertCookie): Insert a new cookie into + the database. + (webkitSoupCookieJarSqliteDeleteCookie): Delete an exising cookie + from the database. + (webkitSoupCookieJarSqliteChanged): Insert/delete cookies + depending on the change. + (webkitSoupCookieJarSqliteFinalize): + (webkit_soup_cookie_jar_sqlite_init): + (webkit_soup_cookie_jar_sqlite_class_init): + (webkitSoupCookieJarSqliteNew): + * WebProcess/Cookies/soup/WebKitSoupCookieJarSqlite.h: Added. + +2012-07-11 Christophe Dumez <christophe.dumez@intel.com> + + [WK2][EFL] Ewk_View should provide more resource loading notifications + https://bugs.webkit.org/show_bug.cgi?id=90601 + + Reviewed by Antonio Gomes. + + Add new "resource,request,sent", "resource,request,response", + "resource,request,failed" and "resource,request,finished" to + Ewk_View in order to notify the clients of the main resource + load state changes. + + Introduce new Ewk_Url_Response type that is used to provide + information to the clients regarding the resource load + responses that are received. + + * PlatformEfl.cmake: + * UIProcess/API/efl/EWebKit2.h: + * UIProcess/API/efl/ewk_url_response.cpp: Added. + (_Ewk_Url_Response): + (ewk_url_response_ref): + (ewk_url_response_unref): + (ewk_url_response_url_get): + (ewk_url_response_status_code_get): + (ewk_url_response_mime_type_get): + (ewk_url_response_new): + * UIProcess/API/efl/ewk_url_response.h: Added. + * UIProcess/API/efl/ewk_url_response_private.h: Added. + * UIProcess/API/efl/ewk_view.cpp: + (_Ewk_View_Private_Data): + (ewk_view_resource_load_initiated): + (ewk_view_resource_load_response): + (ewk_view_resource_load_failed): + (ewk_view_resource_load_finished): + (ewk_view_resource_request_sent): + (ewk_view_load_provisional_started): + * UIProcess/API/efl/ewk_view.h: + * UIProcess/API/efl/ewk_view_private.h: + * UIProcess/API/efl/ewk_view_resource_load_client.cpp: + (toEwkView): + (didInitiateLoadForResource): + (didSendRequestForResource): + (didReceiveResponseForResource): + (didFinishLoadForResource): + (didFailLoadForResource): + (ewk_view_resource_load_client_attach): + +2012-07-11 Mark Rowe <mrowe@apple.com> + + Fix a logic error in the #if so that the correct code is compiled on Snow Leopard. + + I introduced this in r122403 when I inverted the sense of the #if. + + * UIProcess/mac/WKFullScreenWindowController.mm: + +2012-07-11 Mark Rowe <mrowe@apple.com> + + <http://webkit.org/b/91024> Build against the latest SDK when targeting older OS X versions. + + Reviewed by Dan Bernstein. + + The deployment target is already set to the version that we're targeting, and it's that setting + which determines which functionality from the SDK is available to us. + + * Configurations/Base.xcconfig: + +2012-07-11 Mark Rowe <mrowe@apple.com> + + <http://webkit.org/b/91022> WebFullScreenController and WKFullScreenWindowController shouldn't add unprefixed methods to AppKit classes + + Reviewed by Dan Bernstein. + + * UIProcess/mac/WKFullScreenWindowController.mm: + (convertRectToScreen): Add a static helper method that calls through to -[NSWindow convertRectToScreen:] on OS versions where it exists + but otherwise provides a compatibility implementation of it. + (-[WKFullScreenWindowController enterFullScreen:]): Call our new helper. + +2012-07-11 Mark Rowe <mrowe@apple.com> + + <http://webkit.org/b/91015> Remove BUILDING_ON / TARGETING macros in favor of system availability macros + + This removal was handled by a script that translates the relevant macros in to the equivalent checks + using the system availability macros. + + Reviewed by Filip Pizlo. + + * Shared/DictionaryPopupInfo.cpp: + * Shared/DictionaryPopupInfo.h: + * Shared/mac/PasteboardTypes.mm: + * Shared/mac/WebEventFactory.mm: + * UIProcess/API/mac/PDFViewController.mm: + * UIProcess/API/mac/PageClientImpl.mm: + * UIProcess/API/mac/WKView.mm: + * UIProcess/Launcher/mac/DynamicLinkerEnvironmentExtractor.h: + * UIProcess/Launcher/mac/DynamicLinkerEnvironmentExtractor.mm: + * UIProcess/Launcher/mac/EnvironmentVariables.cpp: + * UIProcess/Launcher/mac/EnvironmentVariables.h: + * UIProcess/Launcher/mac/ProcessLauncherMac.mm: + * UIProcess/Plugins/mac/PluginProcessProxyMac.mm: + * UIProcess/WebPageProxy.cpp: + * UIProcess/WebPageProxy.h: + * UIProcess/WebPageProxy.messages.in: + * UIProcess/mac/TextCheckerMac.mm: + * UIProcess/mac/WKFullScreenWindowController.mm: + * UIProcess/mac/WebContextMac.mm: + * UIProcess/mac/WebPageProxyMac.mm: + * WebKit2Prefix.h: + * WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp: + * WebProcess/Plugins/Netscape/mac/NetscapeSandboxFunctions.mm: + * WebProcess/WebCoreSupport/WebEditorClient.cpp: + * WebProcess/WebCoreSupport/WebEditorClient.h: + * WebProcess/WebCoreSupport/mac/WebSystemInterface.mm: + * WebProcess/WebPage/WebPage.cpp: + * WebProcess/WebPage/WebPage.h: + * WebProcess/WebPage/WebPage.messages.in: + * WebProcess/WebPage/mac/WebPageMac.mm: + * WebProcess/com.apple.WebProcess.sb.in: + * WebProcess/mac/KeychainItemShimMethods.mm: + * WebProcess/mac/SecItemShimMethods.mm: + * WebProcess/mac/WebProcessMac.mm: + * WebProcess/mac/WebProcessMainMac.mm: + * WebProcess/mac/WebProcessShim.mm: + +2012-07-11 Simon Fraser <simon.fraser@apple.com> + + pagesPerView param is misnamed for WKPageSetPageLength() + https://bugs.webkit.org/show_bug.cgi?id=91033 + + Rubber-stamped by Dan Bernstein. + + The name of the second parameter to WKPageSetPageLength(), + 'pagesPerView', was confusing; it's a page size (normally width) + in pixels. + + * UIProcess/API/C/WKPagePrivate.h: + +2012-07-11 Anders Carlsson <andersca@apple.com> + + Add -Wtautological-compare and -Wsign-compare warning flags + https://bugs.webkit.org/show_bug.cgi?id=90994 + + Reviewed by Mark Rowe. + + * Configurations/Base.xcconfig: + +2012-07-11 No'am Rosenthal <noam.rosenthal@nokia.com> + + [Qt][WK2] Test actual rendering results in API tests + https://bugs.webkit.org/show_bug.cgi?id=80609 + + Reviewed by Alexis Menard. + + Added a very basic test to tst_QQuickWebView to make sure rendering actually occurs. + + * UIProcess/API/qt/tests/qquickwebview/tst_qquickwebview.cpp: + (tst_QQuickWebView): + (tst_QQuickWebView::basicRenderingSanity): + +2012-07-11 Mark Rowe <mrowe@apple.com> + + Add a Mountain Lion version of libWebKitSystemInterface.a. + + Reviewed by John Sullivan. + + * Configurations/DebugRelease.xcconfig: Look for the library under its expected name. + +2012-07-11 No'am Rosenthal <noam.rosenthal@nokia.com> + + [Qt] QRawWebView should notify when rendering is done, so that pixel results can be grabbed at the appropriate moment. + https://bugs.webkit.org/show_bug.cgi?id=90641 + + Reviewed by Jocelyn Turcotte. + + Implement LayerTreeCoordinator::forceRepaint with logic equivalent to the one in + LayerTreeHostCA. If we flush the layers synchronously when forceRepaint is called,when + WKPageForceRepaint returns we are guaranteed to have an up-to-date image, as the visible + tiles are also synchronously updated. + + * UIProcess/API/qt/tests/qrawwebview/tst_qrawwebview.cpp: + (WebView::WebView): + (WebView::viewNeedsDisplay): + (WebView::frameLoaded): + (WebView): + (WebView::onRepaintDone): + (WebView::finishForceRepaint): + (WebView::finishFirstLayoutForFrame): + (tst_qrawwebview::doNoBackground1): + (tst_qrawwebview::doNoBackground2): + (tst_qrawwebview::doNoBackground3): + (tst_qrawwebview::run): + The test for QRawWebView has been updated to use the WebKit2 ForcePaint API prior to + generating the pixel results. This has exposed a timing bug in the test - setting the + transparentBackground property of a page has to be done before it's created. This has + been fixed in the test. + + * WebProcess/WebPage/LayerTreeCoordinator/LayerTreeCoordinator.cpp: + (WebKit::LayerTreeCoordinator::forceRepaint): + (WebKit::LayerTreeCoordinator::performScheduledLayerFlush): + (WebKit): + +2012-07-11 MORITA Hajime <morrita@google.com> + + WebCoreSupport needs objects each of which follows major WebCore objects + https://bugs.webkit.org/show_bug.cgi?id=88499 + + Reviewed by Alexey Proskuryakov. + + Added exporting symbols. + + * win/WebKit2.def: + * win/WebKit2CFLite.def: + +2012-07-11 Sheriff Bot <webkit.review.bot@gmail.com> + + Unreviewed, rolling out r122318. + http://trac.webkit.org/changeset/122318 + https://bugs.webkit.org/show_bug.cgi?id=90961 + + It made 11 fast/events/touch fail (Requested by bbandix on + #webkit). + + * UIProcess/API/qt/qquickwebview.cpp: + * UIProcess/API/qt/qquickwebview_p.h: + +2012-07-11 Keunsoon Lee <keunsoon.lee@samsung.com> + + [EFL][Wk2] WebErrorsEfl.cpp needs to return non-empty errors + https://bugs.webkit.org/show_bug.cgi?id=90688 + + Reviewed by Hajime Morita. + + Return meaningful error for each case. + + * WebProcess/WebCoreSupport/efl/WebErrorsEfl.cpp: + (WebKit::cancelledError): create ResourceError for "request canceled". + (WebKit::blockedError): create ResourceError for "request blocked". + (WebKit::cannotShowURLError): create ResourceError for "cannot show url". + (WebKit::interruptedForPolicyChangeError): create ResourceError for "Frame load interrupted by policy change". + (WebKit::cannotShowMIMETypeError): create ResourceError for "Cannot show mimetype". + (WebKit::fileDoesNotExistError): create ResourceError for "File does not exist". + (WebKit::pluginWillHandleLoadError): create ResourceError for "Plugin will handle load". + +2012-07-11 Andras Becsi <andras.becsi@nokia.com> + + [Qt][WK2] Fix wheel scrolling for simple pages + https://bugs.webkit.org/show_bug.cgi?id=90793 + + Reviewed by Kenneth Rohde Christiansen. + + Call WebPage::setFixedLayoutSize in setResizesToContentsUsingLayoutSize + instead of setting the view size manually and scheduling a relayout. + Since setFixedLayoutSize forces a relayout it also updates the scrollbars + after the visible rect is available. + This fixes scrolling with wheel events for a QML WebView loading a simple + local page which previously ended up in a state where scrolling was disabled + because the scrollbar update happened before the correct visible rect size was + available. + + Add a QML test and infrastructure to QWebKitTest to cover this case. + + * UIProcess/API/qt/qwebkittest.cpp: + (QWebKitTest::wheelEvent): + * UIProcess/API/qt/qwebkittest_p.h: + * UIProcess/API/qt/tests/qmltests/WebView/tst_wheelEventHandling.qml: Added. + * UIProcess/API/qt/tests/qmltests/common/test4.html: Added. + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::setResizesToContentsUsingLayoutSize): + +2012-07-11 Andras Becsi <andras.becsi@nokia.com> + + [Qt][WK2] ASSERT: "!m_viewportItem->isMoving()" in QtViewportHandler::flickMoveEnded() + https://bugs.webkit.org/show_bug.cgi?id=90875 + + Reviewed by Kenneth Rohde Christiansen. + + Since MultiPointTouchArea and PinchArea use the childMouseEventFilter + method to filter touch events too, and because Flickable filters child + mouse events the canvas calls this function before propagating the touch + event to the WebView. Since Flickable does not accept touch events the + canvas tries to propagate a synthesized mouse event through the base + class childMouseEventFilter function which is accepted by Flickable and + interferes with the input events we send to Flicakble hence messes up + the internal state of the WebView. + This patch reimplements the virtual childMouseEventFilter method so that all + the mouse and touch events can be processed by WebKit before they arrive to + Flickable. + + * UIProcess/API/qt/qquickwebview.cpp: + (QQuickWebView::childMouseEventFilter): + * UIProcess/API/qt/qquickwebview_p.h: + +2012-07-10 Christophe Dumez <christophe.dumez@intel.com> + + [WK2][EFL] Add Battery Status Provider + https://bugs.webkit.org/show_bug.cgi?id=90543 + + Reviewed by Kenneth Rohde Christiansen. + + Define a battery status provider for WebKit2 EFL which + relies on WebCore::BatteryProviderEfl. + + * CMakeLists.txt: Add WebCore/Modules/battery to include + paths. + * PlatformEfl.cmake: Add BatteryProvider class to CMake. + * UIProcess/API/efl/BatteryProvider.cpp: Added. + (toBatteryProvider): + (startUpdatingCallback): + (stopUpdatingCallback): + (BatteryProvider::~BatteryProvider): + (BatteryProvider::create): + (BatteryProvider::BatteryProvider): + (BatteryProvider::startUpdating): + (BatteryProvider::stopUpdating): + (BatteryProvider::didChangeBatteryStatus): + * UIProcess/API/efl/BatteryProvider.h: Added. + (BatteryProvider): + * UIProcess/API/efl/ewk_context.cpp: + (_Ewk_Context): Add BatteryProvider to Ewk_Context. + (createDefaultEwkContext): + (ewk_context_default_get): + +2012-07-10 No'am Rosenthal <noam.rosenthal@nokia.com> + + [Qt] Enable antialiasing for TextureMapper + https://bugs.webkit.org/show_bug.cgi?id=90915 + + Reviewed by Martin Robinson. + + Enable the new antialiasing functionality for WebLayerTreeRendering. + This will make one-tile layers antialiased when using UI_SIDE_COMPOSITING. + + * UIProcess/WebLayerTreeRenderer.cpp: + (WebKit::WebLayerTreeRenderer::ensureRootLayer): + +2012-07-10 Adam Barth <abarth@webkit.org> + + WebCore::Settings for Hixie76 WebSocket protocol doesn't do anything and should be removed + https://bugs.webkit.org/show_bug.cgi?id=90910 + + Reviewed by Eric Seidel. + + * Shared/WebPreferencesStore.h: + (WebKit): + * UIProcess/API/C/WKPreferences.cpp: + (WKPreferencesSetHixie76WebSocketProtocolEnabled): + (WKPreferencesGetHixie76WebSocketProtocolEnabled): + * WebProcess/InjectedBundle/InjectedBundle.cpp: + (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner): + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::updatePreferences): + +2012-07-10 Helder Correia <helder.correia@nokia.com> + + [Qt] Repaint counter for accelerated compositing + https://bugs.webkit.org/show_bug.cgi?id=90116 + + Reviewed by Noam Rosenthal. + + No new tests, just introducing a debug feature. + + For this feature to be enabled, the environment variable + QT_WEBKIT_SHOW_COMPOSITING_DEBUG_VISUALS must be set to 1. Once enabled, + both repaint counters and tile borders will be painted. + + Important notes: + - Only WebKit2 is targetted for now. + - There is no integration with Preferences. That aproach was + taken initially but revealed complex and overkill for such a + debugging-only functionality. Thus, to disable it simply restart with + the environment variable unset or set to some other value. + + A Qt-specific drawRepaintCounter() function was added to + TextureMapperGL. A QImage is used as scratch buffer to paint borders and + counters. It is then uploaded to a BitmapTexture acquired from the pool + and finally draw by TextureMapper. The actual compositing happens inside + LayerBackingStore::paintToTextureMapper(). Each LayerBackingStoreTile + now has a repaint counter which gets incremented in + LayerBackingStore::updateTile(). + + * UIProcess/texmap/LayerBackingStore.cpp: + (WebKit::LayerBackingStore::updateTile): + (WebKit): + (WebKit::shouldShowTileDebugVisuals): + (WebKit::LayerBackingStore::paintToTextureMapper): + * UIProcess/texmap/LayerBackingStore.h: + (WebKit::LayerBackingStoreTile::LayerBackingStoreTile): + (LayerBackingStoreTile): + (WebKit::LayerBackingStoreTile::incrementRepaintCount): + (WebKit::LayerBackingStoreTile::repaintCount): + +2012-07-10 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com> + + [WK2] Add Vibration API support for WebKit2 + https://bugs.webkit.org/show_bug.cgi?id=90058 + + Reviewed by Anders Carlsson. + + Add support for Vibration API to WebKit2. + + * CMakeLists.txt: + * DerivedSources.pri: + * GNUmakefile.list.am: + * Platform/CoreIPC/MessageID.h: + * Shared/API/c/WKBase.h: + * Shared/APIObject.h: + * Target.pri: + * UIProcess/API/C/WKAPICast.h: + (WebKit): + * UIProcess/API/C/WKVibration.cpp: Added. + (WKVibrationGetTypeID): + (WKVibrationSetProvider): + * UIProcess/API/C/WKVibration.h: Added. + * UIProcess/WebVibrationProvider.cpp: Added. + (WebKit): + (WebKit::WebVibrationProvider::vibrate): + (WebKit::WebVibrationProvider::cancelVibration): + * UIProcess/WebVibrationProvider.h: Added. + (WebKit): + (WebVibrationProvider): + * UIProcess/WebVibrationProxy.cpp: Added. + (WebKit): + (WebKit::WebVibrationProxy::create): + (WebKit::WebVibrationProxy::WebVibrationProxy): + (WebKit::WebVibrationProxy::~WebVibrationProxy): + (WebKit::WebVibrationProxy::invalidate): + (WebKit::WebVibrationProxy::initializeProvider): + (WebKit::WebVibrationProxy::didReceiveMessage): + (WebKit::WebVibrationProxy::vibrate): + (WebKit::WebVibrationProxy::cancelVibration): + * UIProcess/WebVibrationProxy.h: Added. + (CoreIPC): + (WebKit): + (WebVibrationProxy): + (WebKit::WebVibrationProxy::clearContext): + (WebKit::WebVibrationProxy::type): + * UIProcess/WebVibrationProxy.messages.in: Added. + * WebProcess/WebCoreSupport/WebVibrationClient.cpp: Added. + (WebKit): + (WebKit::WebVibrationClient::vibrate): + (WebKit::WebVibrationClient::cancelVibration): + (WebKit::WebVibrationClient::vibrationDestroyed): + * WebProcess/WebCoreSupport/WebVibrationClient.h: Added. + (WebKit): + (WebVibrationClient): + (WebKit::WebVibrationClient::WebVibrationClient): + (WebKit::WebVibrationClient::~WebVibrationClient): + +2012-07-10 Carlos Garcia Campos <cgarcia@igalia.com> + + [GTK] Add API to clear the cache to WebKit2 GTK+ + https://bugs.webkit.org/show_bug.cgi?id=90856 + + Reviewed by Martin Robinson. + + * UIProcess/API/gtk/WebKitWebContext.cpp: + (webkit_web_context_clear_cache): Call + WKResourceCacheManagerClearCacheForAllOrigins() to clear all + resources currently cached. + * UIProcess/API/gtk/WebKitWebContext.h: + * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Add new symbol. + +2012-07-10 Sheriff Bot <webkit.review.bot@gmail.com> + + Unreviewed, rolling out r122178. + http://trac.webkit.org/changeset/122178 + https://bugs.webkit.org/show_bug.cgi?id=90857 + + browser tests, PrerenderBrowserTest.PrerenderFavicon and other + tests, started to fail (Requested by hayato on #webkit). + + * win/WebKit2.def: + +2012-07-09 Matt Falkenhagen <falken@chromium.org> + + Add ENABLE_DIALOG_ELEMENT and skeleton files + https://bugs.webkit.org/show_bug.cgi?id=90521 + + Reviewed by Kent Tamura. + + * Configurations/FeatureDefines.xcconfig: + +2012-07-09 Pete Williamson <petewil@google.com> + + Export the iconURL list to make it available to the Internals class for testing + https://bugs.webkit.org/show_bug.cgi?id=88665 + + Reviewed by Kent Tamura. + + * win/WebKit2.def: export the DocumentL::iconURLs function + +2012-07-09 Christophe Dumez <christophe.dumez@intel.com> + + [WK2] Add missing Battery Status API integration to WebContext and WebPage + https://bugs.webkit.org/show_bug.cgi?id=90784 + + Reviewed by Anders Carlsson. + + Integrate Battery Status API to WebPage, WebContext and + properly route messages to the WebBatteryManagerProxy. + Without this, the Battery Status tests are crashing for + WebKit2. + + * UIProcess/API/C/WKContext.cpp: + (WKContextGetBatteryManager): + * UIProcess/API/C/WKContext.h: + * UIProcess/WebContext.cpp: + (WebKit::WebContext::WebContext): + (WebKit::WebContext::~WebContext): + (WebKit::WebContext::disconnectProcess): + (WebKit::WebContext::didReceiveMessage): + * UIProcess/WebContext.h: + (WebKit): + (WebContext): + (WebKit::WebContext::batteryManagerProxy): + * UIProcess/WebProcessProxy.cpp: + (WebKit::WebProcessProxy::didReceiveMessage): + * WebProcess/WebCoreSupport/WebBatteryClient.cpp: + (WebKit::WebBatteryClient::setController): + (WebKit): + * WebProcess/WebCoreSupport/WebBatteryClient.h: + (WebBatteryClient): + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::WebPage): + +2012-07-09 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com> + + [EFL] [WK2] ASSERTION FAILED: !HashTranslator::equal(KeyTraits::emptyValue(), key) + https://bugs.webkit.org/show_bug.cgi?id=90464 + + Reviewed by Daniel Bates. + + HashMap has the property that 0 is the empty value for integer + keys, so do not use 0 as a key in the HashMap. + + * Platform/efl/WorkQueueEfl.cpp: + (WorkQueue::dispatchAfterDelay): + +2012-07-09 Carlos Garcia Campos <cgarcia@igalia.com> + + [GTK] Add a setting to enable/disable page cache to WebKit2 GTK+ API + https://bugs.webkit.org/show_bug.cgi?id=90773 + + Reviewed by Martin Robinson. + + * UIProcess/API/gtk/WebKitSettings.cpp: + (webKitSettingsSetProperty): + (webKitSettingsGetProperty): + (webkit_settings_class_init): + (webkit_settings_get_enable_page_cache): + (webkit_settings_set_enable_page_cache): + * UIProcess/API/gtk/WebKitSettings.h: + * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: + * UIProcess/API/gtk/tests/TestWebKitSettings.cpp: + (testWebKitSettings): + +2012-07-09 Sheriff Bot <webkit.review.bot@gmail.com> + + Unreviewed, rolling out r122107. + http://trac.webkit.org/changeset/122107 + https://bugs.webkit.org/show_bug.cgi?id=90794 + + Build failure on Mac debug bots (Requested by falken_ on + #webkit). + + * Configurations/FeatureDefines.xcconfig: + +2012-07-09 Carlos Garcia Campos <cgarcia@igalia.com> + + [GTK] Fix inspector detach when inspector was attached by the client + https://bugs.webkit.org/show_bug.cgi?id=90763 + + Reviewed by Martin Robinson. + + When the inspector is detached, we are unconditionally removing it + from the inspected view, but if the inspector was attached by the + client, the parent might be another widget. + + * UIProcess/gtk/WebInspectorProxyGtk.cpp: + (WebKit::WebInspectorProxy::platformDetach): Remove the inspector + view from its parent widget. + +2012-07-09 Matt Falkenhagen <falken@chromium.org> + + Add ENABLE_DIALOG_ELEMENT and skeleton files + https://bugs.webkit.org/show_bug.cgi?id=90521 + + Reviewed by Kent Tamura. + + * Configurations/FeatureDefines.xcconfig: + +2012-07-09 Dan Bernstein <mitz@apple.com> + + Fix the Mac build when codesign_allocate is not installed at /usr/bin. + + * PluginProcess/mac/add-entitlements.sh: Let codesign(1) know where the codesign_allocate + tool is by setting the CODESIGN_ALLOCATE environment variable to its path as obtained with + xcrun. + +2012-07-06 Christophe Dumez <christophe.dumez@intel.com> + + [WK2] Add support for Network Information API + https://bugs.webkit.org/show_bug.cgi?id=89870 + + Reviewed by Anders Carlsson. + + Add Network Information API support for WebKit2. + + * CMakeLists.txt: + * DerivedSources.pri: + * GNUmakefile.am: + * GNUmakefile.list.am: + * Platform/CoreIPC/MessageID.h: + * Shared/API/c/WKBase.h: + * Shared/APIObject.h: + * Shared/WebNetworkInfo.cpp: Added. + (WebKit): + (WebKit::WebNetworkInfo::WebNetworkInfo): + (WebKit::WebNetworkInfo::~WebNetworkInfo): + (WebKit::WebNetworkInfo::Data::encode): + (WebKit::WebNetworkInfo::Data::decode): + * Shared/WebNetworkInfo.h: Added. + (WebKit): + (WebNetworkInfo): + (Data): + (WebKit::WebNetworkInfo::create): + (WebKit::WebNetworkInfo::bandwidth): + (WebKit::WebNetworkInfo::metered): + (WebKit::WebNetworkInfo::data): + (WebKit::WebNetworkInfo::type): + * Target.pri: + * UIProcess/API/C/WKAPICast.h: + (WebKit): + * UIProcess/API/C/WKNetworkInfoManager.cpp: Added. + (WKNetworkInfoManagerGetTypeID): + * UIProcess/API/C/WKNetworkInfoManager.h: Added. + * UIProcess/WebNetworkInfoManagerProxy.cpp: Added. + (WebKit): + (WebKit::WebNetworkInfoManagerProxy::create): + (WebKit::WebNetworkInfoManagerProxy::WebNetworkInfoManagerProxy): + (WebKit::WebNetworkInfoManagerProxy::~WebNetworkInfoManagerProxy): + (WebKit::WebNetworkInfoManagerProxy::invalidate): + (WebKit::WebNetworkInfoManagerProxy::initializeProvider): + (WebKit::WebNetworkInfoManagerProxy::providerDidChangeNetworkInformation): + (WebKit::WebNetworkInfoManagerProxy::didReceiveMessage): + (WebKit::WebNetworkInfoManagerProxy::startUpdating): + (WebKit::WebNetworkInfoManagerProxy::stopUpdating): + (WebKit::WebNetworkInfoManagerProxy::getBandwidth): + (WebKit::WebNetworkInfoManagerProxy::isMetered): + * UIProcess/WebNetworkInfoManagerProxy.h: Added. + (CoreIPC): + (WebKit): + (WebNetworkInfoManagerProxy): + (WebKit::WebNetworkInfoManagerProxy::clearContext): + (WebKit::WebNetworkInfoManagerProxy::type): + * UIProcess/WebNetworkInfoManagerProxy.messages.in: Added. + * UIProcess/WebNetworkInfoProvider.cpp: Added. + (WebKit): + (WebKit::WebNetworkInfoProvider::startUpdating): + (WebKit::WebNetworkInfoProvider::stopUpdating): + (WebKit::WebNetworkInfoProvider::bandwidth): + (WebKit::WebNetworkInfoProvider::metered): + * UIProcess/WebNetworkInfoProvider.h: Added. + (WebKit): + (WebNetworkInfoProvider): + * WebKit2.pri: + * WebProcess/NetworkInfo/WebNetworkInfoManager.cpp: Added. + (WebKit): + (WebKit::WebNetworkInfoManager::WebNetworkInfoManager): + (WebKit::WebNetworkInfoManager::~WebNetworkInfoManager): + (WebKit::WebNetworkInfoManager::didReceiveMessage): + (WebKit::WebNetworkInfoManager::registerWebPage): + (WebKit::WebNetworkInfoManager::unregisterWebPage): + (WebKit::WebNetworkInfoManager::bandwidth): + (WebKit::WebNetworkInfoManager::metered): + (WebKit::WebNetworkInfoManager::didChangeNetworkInformation): + * WebProcess/NetworkInfo/WebNetworkInfoManager.h: Added. + (CoreIPC): + (WebKit): + (WebNetworkInfoManager): + * WebProcess/NetworkInfo/WebNetworkInfoManager.messages.in: Added. + * WebProcess/WebCoreSupport/WebNetworkInfoClient.cpp: Added. + (WebKit): + (WebKit::WebNetworkInfoClient::~WebNetworkInfoClient): + (WebKit::WebNetworkInfoClient::bandwidth): + (WebKit::WebNetworkInfoClient::metered): + (WebKit::WebNetworkInfoClient::startUpdating): + (WebKit::WebNetworkInfoClient::stopUpdating): + * WebProcess/WebCoreSupport/WebNetworkInfoClient.h: Added. + (WebKit): + (WebNetworkInfoClient): + (WebKit::WebNetworkInfoClient::WebNetworkInfoClient): + * WebProcess/WebProcess.cpp: + (WebKit::WebProcess::WebProcess): + (WebKit::WebProcess::didReceiveMessage): + * WebProcess/WebProcess.h: + (WebProcess): + (WebKit::WebProcess::networkInfoManager): + +2012-07-06 Jessie Berlin <jberlin@apple.com> + + WKContext should ask for its injected bundle initialization user data when it needs it so the + client doesn't have to keep it up to date. + https://bugs.webkit.org/show_bug.cgi?id=90627 + + Reviewed by Anders Carlsson. + + Add a getInjectedBundleInitializationUserData callback to WKContextInjectedBundleClient. + + * Shared/APIClientTraits.cpp: + Allow the WKContextInjectedBundleClient API to be versioned. + * Shared/APIClientTraits.h: + + * UIProcess/API/C/WKContext.h: + Add the callback and bump the version of WKContextInjectedBundleClient. + + * UIProcess/WebContext.cpp: + (WebKit::WebContext::ensureWebProcess): + Prefer any user data returned when the callback is invoked over that set with + WKContextSetInitializationUserDataForInjectedBundle. + + * UIProcess/WebContextInjectedBundleClient.cpp: + (WebKit::WebContextInjectedBundleClient::getInjectedBundleInitializationUserData): + Invoke the callback if the client has registered for it. + * UIProcess/WebContextInjectedBundleClient.h: + +2012-07-06 Jessie Berlin <jberlin@apple.com> + + WebContext::injectedBundleInitializationUserData() is unused, should be removed + https://bugs.webkit.org/show_bug.cgi?id=90486 + + Reviewed by Anders Carlsson. + + * UIProcess/WebContext.h: + Remove it. + +2012-07-06 Carlos Garcia Campos <cgarcia@igalia.com> + + [GTK] Add site specific quirks setting to WebKit2 GTK+ API + https://bugs.webkit.org/show_bug.cgi?id=90663 + + Reviewed by Martin Robinson. + + * UIProcess/API/gtk/WebKitSettings.cpp: + (webKitSettingsSetProperty): + (webKitSettingsGetProperty): + (webkit_settings_class_init): + (webkit_settings_get_enable_site_specific_quirks): + (webkit_settings_set_enable_site_specific_quirks): + * UIProcess/API/gtk/WebKitSettings.h: + * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: + * UIProcess/API/gtk/tests/TestWebKitSettings.cpp: + (testWebKitSettings): + +2012-07-06 Dominik Röttsches <dominik.rottsches@intel.com> + + ProcessLauncher's WorkQueue's name is too long on Windows + https://bugs.webkit.org/show_bug.cgi?id=44041 + + Reviewed by Andreas Kling. + + Shorten thread name for process launcher so that we can silence the warning + for thread names getting truncated under VisualStudio - + see createThread() in Threading.cpp. + + * UIProcess/Launcher/ProcessLauncher.cpp: + (WebKit::processLauncherWorkQueue): + +2012-07-06 Christophe Dumez <christophe.dumez@intel.com> + + [EFL] WebKit-EFL headers do not build with gcc < 4.6 + https://bugs.webkit.org/show_bug.cgi?id=90681 + + Unreviewed EFL build fix. + + Remove several forward declarations from ewk_view + header to avoid typedef redefinitions which are + illegal in C. + + * UIProcess/API/efl/ewk_view.h: + +2012-07-06 Csaba Osztrogonác <ossy@webkit.org> + + [Qt] Buildfix for newer Qt5 + https://bugs.webkit.org/show_bug.cgi?id=90519 + + Reviewed by Tor Arne Vestbø. + + * UIProcess/API/qt/qwebkittest.cpp: Include qpa/qwindowsysteminterface.h instead of deprecated qwindowsysteminterface_qpa.h. + +2012-07-06 Oswald Buddenhagen <oswald.buddenhagen@nokia.com> + + [Qt] Adjust to changed generation of master include file + + The responsiblity for creating the master include was moved out of syncqt. + @ignore_for_master_contents still stays, as syncqt (ab-)uses this for + determining whether a header is private. + + https://bugs.webkit.org/show_bug.cgi?id=90461 + + Reviewed by Tor Arne Vestbø. + + * UIProcess/API/qt/tests/bytearraytestdata.h: + * UIProcess/API/qt/tests/testwindow.h: + +2012-07-05 Christophe Dumez <christophe.dumez@intel.com> + + [WK2][EFL] Ewk_View needs to report load status changes + https://bugs.webkit.org/show_bug.cgi?id=90566 + + Reviewed by Kenneth Rohde Christiansen. + + Add new "load,finished", "load,provisional,failed", + "load,provisional,redirect" and "load,provisional,started" + signals on the Ewk_View to notify the client of different + load state changes. + + * UIProcess/API/efl/ewk_view.cpp: + (ewk_view_load_finished): + (ewk_view_load_provisional_failed): + (ewk_view_load_provisional_redirect): + (ewk_view_load_provisional_started): + * UIProcess/API/efl/ewk_view.h: + * UIProcess/API/efl/ewk_view_loader_client.cpp: + (didFinishLoadForFrame): + (didFailLoadWithErrorForFrame): + (didStartProvisionalLoadForFrame): + (didReceiveServerRedirectForProvisionalLoadForFrame): + (didFailProvisionalLoadWithErrorForFrame): + (ewk_view_loader_client_attach): + * UIProcess/API/efl/ewk_view_private.h: + +2012-07-05 Luiz Agostini <luiz.agostini@nokia.com> + + [Qt] Transform should be applied to the clip rect in QRawWebView::paint + https://bugs.webkit.org/show_bug.cgi?id=90652 + + Reviewed by Kenneth Rohde Christiansen. + + Applying the transformation matrix to the clip rect in QRawWebView::paint. + + * UIProcess/API/qt/raw/qrawwebview.cpp: + (QRawWebView::paint): + +2012-07-05 Christophe Dumez <christophe.dumez@intel.com> + + [WK2][EFL] Ewk_View should provide API to set/get device pixel ratio + https://bugs.webkit.org/show_bug.cgi?id=90590 + + Reviewed by Kenneth Rohde Christiansen. + + Add API to Ewk_View so retrieve and set the device + pixel ratio. + + * UIProcess/API/efl/ewk_view.cpp: + (ewk_view_device_pixel_ratio_set): + (ewk_view_device_pixel_ratio_get): + * UIProcess/API/efl/ewk_view.h: + +2012-07-05 Anders Carlsson <andersca@apple.com> + + Type-ahead doesn't work in options inside optgroups + https://bugs.webkit.org/show_bug.cgi?id=90647 + <rdar://problem/5604894> + + Reviewed by Dan Bernstein. + + Set the title of the menu item to a string that doesn't contain any leading or trailing whitespace. + + * UIProcess/mac/WebPopupMenuProxyMac.mm: + (WebKit::WebPopupMenuProxyMac::populate): + +2012-07-05 Christophe Dumez <christophe.dumez@intel.com> + + [WK2] Add C API for Battery Status API + https://bugs.webkit.org/show_bug.cgi?id=90545 + + Reviewed by Anders Carlsson. + + Add C API for WKBatteryManager and WKBatteryStatus + so that clients can support the Battery Status API + in WebKit2. + + * CMakeLists.txt: + * GNUmakefile.list.am: + * Target.pri: + * UIProcess/API/C/WKBatteryManager.cpp: + (WKBatteryManagerProviderDidChangeBatteryStatus): + (WKBatteryManagerProviderUpdateBatteryStatus): + * UIProcess/API/C/WKBatteryStatus.cpp: Copied from Source/WebKit2/UIProcess/API/C/WKBatteryManager.cpp. + (WKBatteryStatusGetTypeID): + (WKBatteryStatusCreate): + * UIProcess/API/C/WKBatteryStatus.h: Copied from Source/WebKit2/UIProcess/API/C/WKBatteryManager.cpp. + +2012-07-05 Sheriff Bot <webkit.review.bot@gmail.com> + + Unreviewed, rolling out r121899. + http://trac.webkit.org/changeset/121899 + https://bugs.webkit.org/show_bug.cgi?id=90623 + + Unauthorized WK2 API breakage (Requested by andersca on + #webkit). + + * Shared/API/c/WKSharedAPICast.h: + (WebKit::toCopiedURLAPI): + +2012-07-05 Balazs Kelemen <kbalazs@webkit.org> + + [Qt] WTR crashes if a URL is passed as a parameter + https://bugs.webkit.org/show_bug.cgi?id=88093 + + Reviewed by Zoltan Herczeg. + + * Shared/API/c/WKSharedAPICast.h: + (WebKit::toCopiedURLAPI): + Don't special case null string. It's handled + fine by WebURL and passing 0 is not suitable + to the API. + +2012-07-05 Dongwoo Im <dw.im@samsung.com> + + [EFL] Enable the CUSTOM_SCHEME_HANDLER feature as default. + https://bugs.webkit.org/show_bug.cgi?id=88608 + + Reviewed by Hajime Morita. + + * WebProcess/WebCoreSupport/WebChromeClient.h: + (WebKit::WebChromeClient::isProtocolHandlerRegistered): Add a stub function. + (WebKit::WebChromeClient::unregisterProtocolHandler): Add a stub function. + (WebChromeClient): + +2012-07-05 Ryuan Choi <ryuan.choi@samsung.com> + + [Wk2][EFL] EFL needs a WebKitTestRunner + https://bugs.webkit.org/show_bug.cgi?id=87659 + + Reviewed by Kenneth Rohde Christiansen. + + * PlatformEfl.cmake: Added WKImageCairo.cpp in source list. + +2012-07-05 Hyerim Bae <hyerim.bae@samsung.com> + + [EFL][WK2] Add ewk_view_reload_bypass_cache API. + https://bugs.webkit.org/show_bug.cgi?id=89413 + + Reviewed by Kenneth Rohde Christiansen. + + Add API, which is for reloading documents without cache. + + * UIProcess/API/efl/ewk_view.cpp: + (ewk_view_reload_bypass_cache): + * UIProcess/API/efl/ewk_view.h: + +2012-07-05 Christophe Dumez <christophe.dumez@intel.com> + + [WK2][EFL] Ewk_View needs API to load HTML data + https://bugs.webkit.org/show_bug.cgi?id=90540 + + Reviewed by Kenneth Rohde Christiansen. + + Add method to Ewk_View to load provided HTML data. + This is used for e.g. when an URL cannot be reached + and we need to display an error page. + + * UIProcess/API/efl/ewk_view.cpp: + (ewk_view_html_load): + * UIProcess/API/efl/ewk_view.h: + +2012-07-05 Christophe Dumez <christophe.dumez@intel.com> + + [WK2][EFL] Ewk_View needs to report new resource requests + https://bugs.webkit.org/show_bug.cgi?id=90577 + + Reviewed by Kenneth Rohde Christiansen. + + Add new "resource,request,new" signal to Ewk_View to + notify clients of the resource requests being initiated. + New Ewk_Url_Request and Ewk_Web_Resource types are + introduced in order to provide the clients with the + needed information regarding the resource requests. + + * PlatformEfl.cmake: + * UIProcess/API/efl/EWebKit2.h: + * UIProcess/API/efl/ewk_url_request.cpp: Added. + (_Ewk_Url_Request): + (ewk_url_request_ref): + (ewk_url_request_unref): + (ewk_url_request_url_get): + (ewk_request_first_party_get): + (ewk_url_request_http_method_get): + (ewk_url_request_new): + * UIProcess/API/efl/ewk_url_request.h: Added. + * UIProcess/API/efl/ewk_url_request_private.h: Added. + * UIProcess/API/efl/ewk_view.cpp: + (ewk_view_base_add): + (ewk_view_resource_load_initiated): + * UIProcess/API/efl/ewk_view.h: + * UIProcess/API/efl/ewk_view_private.h: + * UIProcess/API/efl/ewk_view_resource_load_client.cpp: Added. + (didInitiateLoadForResource): + (ewk_view_resource_load_client_attach): + * UIProcess/API/efl/ewk_view_resource_load_client_private.h: Added. + * UIProcess/API/efl/ewk_web_resource.cpp: Added. + (_Ewk_Web_Resource): + (ewk_web_resource_ref): + (ewk_web_resource_unref): + (ewk_web_resource_uri_get): + (ewk_web_resource_new): + (ewk_web_resource_main_get): + * UIProcess/API/efl/ewk_web_resource.h: Added. + * UIProcess/API/efl/ewk_web_resource_private.h: Added. + +2012-07-04 John Mellor <johnme@chromium.org> + + Text Autosizing: Add compile flag and runtime setting + https://bugs.webkit.org/show_bug.cgi?id=87394 + + This patch renames Font Boosting to Text Autosizing. + + Reviewed by Adam Barth. + + * Configurations/FeatureDefines.xcconfig: + +2012-07-04 Christophe Dumez <christophe.dumez@intel.com> + + [EFL][WK2] Ewk_View should report load errors + https://bugs.webkit.org/show_bug.cgi?id=90479 + + Reviewed by Kenneth Rohde Christiansen. + + The Ewk_View now emits a "load,error" signal when the + main frame fails loading. Information about the error + is provided via the new Ewk_Web_Error type. + + * PlatformEfl.cmake: + * UIProcess/API/efl/EWebKit2.h: + * UIProcess/API/efl/ewk_view.cpp: + (ewk_view_load_error): + * UIProcess/API/efl/ewk_view.h: + * UIProcess/API/efl/ewk_view_loader_client.cpp: + (didFailLoadWithErrorForFrame): + (ewk_view_loader_client_attach): + * UIProcess/API/efl/ewk_view_private.h: + * UIProcess/API/efl/ewk_web_error.cpp: Added. + (_Ewk_Web_Error): + (ewk_web_error_free): + (ewk_web_error_domain_get): + (ewk_web_error_url_get): + (ewk_web_error_code_get): + (ewk_web_error_description_get): + (ewk_web_error_cancellation_get): + (ewk_web_error_new): + * UIProcess/API/efl/ewk_web_error.h: Added. + * UIProcess/API/efl/ewk_web_error_private.h: Added. + +2012-07-03 Christophe Dumez <christophe.dumez@intel.com> + + [WK2][EFL] Ewk_View should report the load progress + https://bugs.webkit.org/show_bug.cgi?id=90457 + + Reviewed by Kenneth Rohde Christiansen. + + The Ewk_View now reports the estimated load progress + of the page via the new "load,progress". + A method is also added to Ewk_View in order to + retrieve the current load progress. + + * UIProcess/API/efl/ewk_view.cpp: + (ewk_view_load_progress_get): + (ewk_view_load_progress_changed): + * UIProcess/API/efl/ewk_view.h: + * UIProcess/API/efl/ewk_view_loader_client.cpp: + (didChangeProgress): + (ewk_view_loader_client_attach): + * UIProcess/API/efl/ewk_view_private.h: + +2012-07-03 Christophe Dumez <christophe.dumez@intel.com> + + [WK2] Add support for Battery Status API + https://bugs.webkit.org/show_bug.cgi?id=89558 + + Reviewed by Anders Carlsson. + + Add support for Battery Status API to WebKit2. + + * CMakeLists.txt: + * DerivedSources.pri: + * GNUmakefile.am: + * GNUmakefile.list.am: + * Platform/CoreIPC/MessageID.h: + * Shared/API/c/WKBase.h: + * Shared/APIObject.h: + * Shared/WebBatteryStatus.cpp: Added. + (WebKit): + (WebKit::WebBatteryStatus::WebBatteryStatus): + (WebKit::WebBatteryStatus::~WebBatteryStatus): + (WebKit::WebBatteryStatus::Data::encode): + (WebKit::WebBatteryStatus::Data::decode): + * Shared/WebBatteryStatus.h: Added. + (WebKit): + (WebBatteryStatus): + (Data): + (WebKit::WebBatteryStatus::create): + (WebKit::WebBatteryStatus::isCharging): + (WebKit::WebBatteryStatus::chargingTime): + (WebKit::WebBatteryStatus::dischargingTime): + (WebKit::WebBatteryStatus::level): + (WebKit::WebBatteryStatus::data): + (WebKit::WebBatteryStatus::type): + * Target.pri: + * UIProcess/API/C/WKAPICast.h: + (WebKit): + * UIProcess/API/C/WKBatteryManager.cpp: Added. + (WKBatteryManagerGetTypeID): + * UIProcess/API/C/WKBatteryManager.h: Added. + * UIProcess/WebBatteryManagerProxy.cpp: Added. + (WebKit): + (WebKit::WebBatteryManagerProxy::create): + (WebKit::WebBatteryManagerProxy::WebBatteryManagerProxy): + (WebKit::WebBatteryManagerProxy::~WebBatteryManagerProxy): + (WebKit::WebBatteryManagerProxy::invalidate): + (WebKit::WebBatteryManagerProxy::initializeProvider): + (WebKit::WebBatteryManagerProxy::didReceiveMessage): + (WebKit::WebBatteryManagerProxy::startUpdating): + (WebKit::WebBatteryManagerProxy::stopUpdating): + (WebKit::WebBatteryManagerProxy::providerDidChangeBatteryStatus): + (WebKit::WebBatteryManagerProxy::providerUpdateBatteryStatus): + * UIProcess/WebBatteryManagerProxy.h: Added. + (CoreIPC): + (WebKit): + (WebBatteryManagerProxy): + (WebKit::WebBatteryManagerProxy::clearContext): + (WebKit::WebBatteryManagerProxy::type): + * UIProcess/WebBatteryManagerProxy.messages.in: Added. + * UIProcess/WebBatteryProvider.cpp: Added. + (WebKit): + (WebKit::WebBatteryProvider::startUpdating): + (WebKit::WebBatteryProvider::stopUpdating): + * UIProcess/WebBatteryProvider.h: Added. + (WebKit): + (WebBatteryProvider): + * WebKit2.pri: + * WebProcess/Battery/WebBatteryManager.cpp: Added. + (WebKit): + (WebKit::WebBatteryManager::WebBatteryManager): + (WebKit::WebBatteryManager::~WebBatteryManager): + (WebKit::WebBatteryManager::didReceiveMessage): + (WebKit::WebBatteryManager::registerWebPage): + (WebKit::WebBatteryManager::unregisterWebPage): + (WebKit::WebBatteryManager::didChangeBatteryStatus): + (WebKit::WebBatteryManager::updateBatteryStatus): + * WebProcess/Battery/WebBatteryManager.h: Added. + (CoreIPC): + (WebKit): + (WebBatteryManager): + * WebProcess/Battery/WebBatteryManager.messages.in: Added. + * WebProcess/WebCoreSupport/WebBatteryClient.cpp: Added. + (WebKit): + (WebKit::WebBatteryClient::startUpdating): + (WebKit::WebBatteryClient::stopUpdating): + (WebKit::WebBatteryClient::batteryControllerDestroyed): + * WebProcess/WebCoreSupport/WebBatteryClient.h: Added. + (WebKit): + (WebBatteryClient): + (WebKit::WebBatteryClient::WebBatteryClient): + (WebKit::WebBatteryClient::~WebBatteryClient): + * WebProcess/WebProcess.cpp: + (WebKit::WebProcess::WebProcess): + (WebKit::WebProcess::didReceiveMessage): + * WebProcess/WebProcess.h: + (WebProcess): + (WebKit::WebProcess::batteryManager): + +2012-07-03 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> + + [Qt] Make use of .qmake.cache for caching features + + Instead of loading() features from the files that need them (and re-running + a bunch of checks), we now run feature detection as part of configure.pro, + and have build-webkit write the computed feature-defines and CONFIG to + .qmake.cache, which is then loaded by qmake _before_ even defaults_pre + when building WebKit.pro. + + At some point we'll be able to selectivly prevent running of config tests + in configure.pro, which means we don't need a separate code-path for + the build-webkit --help case. + + We should also move the code in build-webkit that now uses .webkit.config + to detect clean builds, to use .qmake.cache, since we now store the same + thing there. + + Original patch by Oswald Buddenhagen <oswald.buddenhagen@nokia.com> + + Reviewed by Tor Arne Vestbø. + + * DerivedSources.pri: + * Target.pri: + +2012-07-03 Sheriff Bot <webkit.review.bot@gmail.com> + + Unreviewed, rolling out r121766. + http://trac.webkit.org/changeset/121766 + https://bugs.webkit.org/show_bug.cgi?id=90465 + + It caused flakey build errors on the bots (Requested by Ossy + on #webkit). + + * DerivedSources.pri: + * Target.pri: + +2012-07-03 Carlos Garcia Campos <cgarcia@igalia.com> + + [GTK] Add WebKitWebView::context-menu-dismissed signal to WebKit2 GTK+ API + https://bugs.webkit.org/show_bug.cgi?id=90386 + + Reviewed by Martin Robinson. + + * UIProcess/API/gtk/WebKitWebView.cpp: + (webkit_web_view_class_init): Add context-menu-dismissed signal. + (contextMenuDismissed): Emit context-menu-dismissed signal. + (webkitWebViewPopulateContextMenu): Connect to deactivate signal + of the GtkMenu and emit WebKitWebView::context-menu-dismissed when + the gtk menu is deactivated. + * UIProcess/API/gtk/WebKitWebView.h: + (_WebKitWebViewClass): Add virtual methos for + context-menu-dismissed signal. + * UIProcess/API/gtk/tests/TestContextMenu.cpp: + (testContextMenuDismissed): + (beforeAll): + * UIProcess/gtk/WebContextMenuProxyGtk.h: + (WebKit::WebContextMenuProxyGtk::gtkMenu): Get the GtkMenu built + for the context menu proxy. + +2012-07-03 Piotr Roguski <p.roguski@samsung.com> + + [EFL][WK2] Added missing WebPageProxy::ViewIsFocused flag to WebPageProxy::viewStateDidChange() + call in _ewk_view_smart_focus_out() function. + https://bugs.webkit.org/show_bug.cgi?id=89877 + + Reviewed by Andreas Kling. + + Although name of the flag suggest it should be used only on focus in, + omitting it in case of focus out will prevent WebPageProxy::viewStateDidChange() + from sending Messages::WebPage::SetFocused(false). + + * UIProcess/API/efl/ewk_view.cpp: + (_ewk_view_smart_focus_out): + +2012-07-03 Viatcheslav Ostapenko <ostapenko.viatcheslav@nokia.com> + + [Qt][WK2] API tests randomly asserts in QQuickWebPage::setContentsScale(qreal) + https://bugs.webkit.org/show_bug.cgi?id=88679 + + Reviewed by Csaba Osztrogonác. + + Viewport parameters cannot be calculated while viewport is not visible and + viewport size is 0, so let's delay calculation of viewport parameters until view + becomes visible. + + * UIProcess/qt/QtViewportHandler.cpp: + (WebKit::QtViewportHandler::pageContentsSizeChanged): + +2012-07-03 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> + + [Qt] Make use of .qmake.cache for caching features + + Instead of loading() features from the files that need them (and re-running + a bunch of checks), we now run feature detection as part of configure.pro, + and have build-webkit write the computed feature-defines and CONFIG to + .qmake.cache, which is then loaded by qmake _before_ even defaults_pre + when building WebKit.pro. + + At some point we'll be able to selectivly prevent running of config tests + in configure.pro, which means we don't need a separate code-path for + the build-webkit --help case. + + We should also move the code in build-webkit that now uses .webkit.config + to detect clean builds, to use .qmake.cache, since we now store the same + thing there. + + Original patch by Oswald Buddenhagen <oswald.buddenhagen@nokia.com> + + Reviewed by Tor Arne Vestbø. + + * DerivedSources.pri: + * Target.pri: + +2012-07-03 Alexis Menard <alexis.menard@openbossa.org> + + [Qt] When calling accept() on the FilePickerContextObject with an empty list, early return and call reject(). + https://bugs.webkit.org/show_bug.cgi?id=89755 + + Reviewed by Simon Hausmann. + + When calling accept with an empty list of files we can just bailout + and call reject(). Any other processing is pointless. + + * UIProcess/API/qt/tests/qmltests/WebView/tst_singleFileUpload.qml: + * UIProcess/qt/QtDialogRunner.cpp: + (WebKit::FilePickerContextObject::accept): + +2012-07-03 Balazs Kelemen <kbalazs@webkit.org> + + [Qt][WK2] fast/viewport/viewport-91.html still fails after r121555 and r121661 + https://bugs.webkit.org/show_bug.cgi?id=90376 + + Reviewed by Csaba Osztrogonác. + + layoutTestController.dumpConfigurationForViewport still need + to use the constant target DPI of 160. + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::viewportConfigurationAsText): + +2012-07-03 Christophe Dumez <christophe.dumez@intel.com> + + [EFL][WK2] Add API to deliver a Web Intent to a frame + https://bugs.webkit.org/show_bug.cgi?id=90067 + + Reviewed by Kenneth Rohde Christiansen. + + Add ewk_view_intent_deliver() method on the Ewk_View + to deliver a Web Intent to the view's main frame. + + * UIProcess/API/efl/ewk_view.cpp: + (ewk_view_intent_deliver): + * UIProcess/API/efl/ewk_view.h: + +2012-07-02 Christophe Dumez <christophe.dumez@intel.com> + + [EFL][WK2] Add API to inspect a Web Intent service + https://bugs.webkit.org/show_bug.cgi?id=90066 + + Reviewed by Kenneth Rohde Christiansen. + + Add EFL API to inspect a Web Intent Service and emit + a signal on the view when a new intent service + registers. + + * PlatformEfl.cmake: + * UIProcess/API/efl/EWebKit2.h: + * UIProcess/API/efl/ewk_intent_service.cpp: Added. + (_Ewk_Intent_Service): + (ewk_intent_service_ref): + (ewk_intent_service_unref): + (ewk_intent_service_action_get): + (ewk_intent_service_type_get): + (ewk_intent_service_href_get): + (ewk_intent_service_title_get): + (ewk_intent_service_disposition_get): + (ewk_intent_service_new): + * UIProcess/API/efl/ewk_intent_service.h: Added. + * UIProcess/API/efl/ewk_intent_service_private.h: Copied from Source/WebKit2/UIProcess/API/efl/ewk_view_loader_client.cpp. + * UIProcess/API/efl/ewk_view.cpp: + (ewk_view_intent_service_register): + * UIProcess/API/efl/ewk_view.h: + * UIProcess/API/efl/ewk_view_loader_client.cpp: + (registerIntentServiceForFrame): + (ewk_view_loader_client_attach): + * UIProcess/API/efl/ewk_view_private.h: + +2012-07-02 Christophe Dumez <christophe.dumez@intel.com> + + [WK2][EFL] Free Ewk_Intent calloc'd memory with free() instead of delete + https://bugs.webkit.org/show_bug.cgi?id=90433 + + Reviewed by Kenneth Rohde Christiansen. + + Free calloc'd memory with free() instead of delete in Ewk_Intent. + Add blank lines before return statements for consistency. + + * UIProcess/API/efl/ewk_intent.cpp: + (ewk_intent_unref): + (ewk_intent_action_get): + (ewk_intent_type_get): + (ewk_intent_service_get): + (ewk_intent_suggestions_get): + (ewk_intent_extra_get): + (ewk_intent_extra_names_get): + (ewk_intent_new): + +2012-07-02 Martin Robinson <mrobinson@igalia.com> + + [TextureMapper] The TextureMapper should support edge-distance anti-antialiasing + https://bugs.webkit.org/show_bug.cgi?id=90308 + + Reviewed by Noam Rosenthal. + + * UIProcess/texmap/LayerBackingStore.cpp: + (WebKit::LayerBackingStore::paintToTextureMapper): Update the method to call paint with + the new argument. + +2012-07-02 Benjamin Poulain <bpoulain@apple.com> + + Do not do any logging initialization when logging is disabled + https://bugs.webkit.org/show_bug.cgi?id=90228 + + Reviewed by Simon Fraser. + + * Platform/Logging.cpp: + * Platform/Logging.h: + * UIProcess/WebContext.cpp: + (WebKit::WebContext::WebContext): + * WebProcess/WebProcess.cpp: + (WebKit::WebProcess::WebProcess): + +2012-07-02 No'am Rosenthal <noam.rosenthal@nokia.com> + + [Qt][WK2] New API tests introduced in r121620 fail + https://bugs.webkit.org/show_bug.cgi?id=90372 + + Reviewed by Luiz Agostini. + + Updated the pixel comparison to produce more predictable results. + + * UIProcess/API/qt/tests/qrawwebview/tst_qrawwebview.cpp: + (compareImages): + +2012-07-02 Alexis Menard <alexis.menard@openbossa.org> + + [Qt] Fix WebProcess crash on Mac when accessing a site with video tag. + https://bugs.webkit.org/show_bug.cgi?id=90384 + + Reviewed by Jocelyn Turcotte. + + We need to initialize the private symbols used by MediaPlayerPrivateQTKit + otherwise they will be null and it will lead to a crash. We copy WebSystemInterface + files for WK2 just like the Mac port as WK2 may have different needs than WK1 layer (we + may add or remove symbols in here). It doesn't fix the video rendering yet but it's + first step. + + * Target.pri: + * WebProcess/WebCoreSupport/qt/WebSystemInterface.h: Added. + * WebProcess/WebCoreSupport/qt/WebSystemInterface.mm: Added. + (InitWebCoreSystemInterfaceForWK2): + * WebProcess/qt/WebProcessMainQt.cpp: + (WebKit::WebProcessMainQt): + +2012-07-02 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com> + + [EFL] [WK2] Remove content sniffer and decoder initialization from WebProcess + https://bugs.webkit.org/show_bug.cgi?id=90275 + + Reviewed by Martin Robinson. + + Do not initialize content sniffer and decoder in the WebProcess + because the initialization is now done in WebCore. + + * WebProcess/efl/WebProcessMainEfl.cpp: + (WebKit::WebProcessMainEfl): + +2012-07-02 Sheriff Bot <webkit.review.bot@gmail.com> + + Unreviewed, rolling out r120329, r121113, and r121138. + http://trac.webkit.org/changeset/120329 + http://trac.webkit.org/changeset/121113 + http://trac.webkit.org/changeset/121138 + https://bugs.webkit.org/show_bug.cgi?id=90368 + + Introduced noticeable keyboard-related spins due to + synchronous IPC. (Requested by kling on #webkit). + + * UIProcess/WebPageProxy.cpp: + (WebKit::WebPageProxy::handleKeyboardEvent): + (WebKit::WebPageProxy::didReceiveEvent): + * UIProcess/WebPageProxy.h: + (WebPageProxy): + * UIProcess/WebPageProxy.messages.in: + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::keyEvent): + +2012-07-01 Christophe Dumez <christophe.dumez@intel.com> + + [EFL][WK2] Add API to inspect a Web Intent + https://bugs.webkit.org/show_bug.cgi?id=89749 + + Reviewed by Kenneth Rohde Christiansen. + + Add EFL API to inspect a Web Intent and emit a signal + on the view when a new intent request is made. + + * PlatformEfl.cmake: + * UIProcess/API/efl/EWebKit2.h: + * UIProcess/API/efl/ewk_intent.cpp: Added. + (_Ewk_Intent): + (ewk_intent_ref): + (ewk_intent_unref): + (ewk_intent_action_get): + (ewk_intent_type_get): + (ewk_intent_service_get): + (ewk_intent_suggestions_get): + (ewk_intent_extra_get): + (ewk_intent_extra_names_get): + (ewk_intent_new): + * UIProcess/API/efl/ewk_intent.h: Added. + * UIProcess/API/efl/ewk_intent_private.h: Copied from Source/WebKit2/UIProcess/API/efl/ewk_view_loader_client.cpp. + * UIProcess/API/efl/ewk_view.cpp: + (ewk_view_intent_request_new): + * UIProcess/API/efl/ewk_view.h: + * UIProcess/API/efl/ewk_view_loader_client.cpp: + (didReceiveIntentForFrame): + (ewk_view_loader_client_attach): + * UIProcess/API/efl/ewk_view_private.h: + +2012-06-29 Luiz Agostini <luiz.agostini@nokia.com> + + [Qt][WK2] Private non-QtQuick API + https://bugs.webkit.org/show_bug.cgi?id=84532 + + Reviewed by Noam Rosenthal. + + Adding new private non-QtQuick API. This new C++ API makes it possible + to have control over the lower levels of WebKit without going via QML. + + This is a first version of the API, enough to show pages on the screen. + Many features are not implemented. + + * Target.pri: + * UIProcess/API/qt/raw/qrawwebview.cpp: Added. + * UIProcess/API/qt/raw/qrawwebview_p.h: Added. + * UIProcess/API/qt/raw/qrawwebview_p_p.h: Added. + + The tests for the new API are pixel tests. They use QRawWebView to load + html files and generate images, and them compare those images to the ones + in UIProcess/API/qt/tests/html/resources. + + * UIProcess/API/qt/tests/html/bluesquare.html: Added. + * UIProcess/API/qt/tests/html/redsquare.html: Added. + * UIProcess/API/qt/tests/html/resources/qwkview_noBackground1.png: Added. + * UIProcess/API/qt/tests/html/resources/qwkview_noBackground3.png: Added. + * UIProcess/API/qt/tests/html/resources/qwkview_paint.png: Added. + * UIProcess/API/qt/tests/qrawwebview/qrawwebview.pro: Added. + * UIProcess/API/qt/tests/qrawwebview/tst_qrawwebview.cpp: Added. + +2012-06-29 Christophe Dumez <christophe.dumez@intel.com> + + [WK2] Move intent delivery code from the frame to the page + https://bugs.webkit.org/show_bug.cgi?id=89974 + + Reviewed by Anders Carlsson. + + Move the intent delivery code from the frame to the page + and add the corresponding C API for WKPage. + + * UIProcess/API/C/WKPage.cpp: + (WKPageDeliverIntentToFrame): + * UIProcess/API/C/WKPage.h: + * UIProcess/WebFrameProxy.cpp: + (WebKit::WebFrameProxy::stopLoading): + * UIProcess/WebFrameProxy.h: + (WebKit): + * UIProcess/WebPageProxy.cpp: + (WebKit): + (WebKit::WebPageProxy::deliverIntentToFrame): + * UIProcess/WebPageProxy.h: + (WebPageProxy): + +2012-06-29 Dan Bernstein <mitz@apple.com> + + Can’t get basic element info from a WKRenderObject + https://bugs.webkit.org/show_bug.cgi?id=90301 + + Reviewed by Anders Carlsson. + + Moved the element info (tag name, id and class names) from WebRenderLayer to WebRenderObject, + and gave WebRenderLayer a reference to a (shallow) WebRenderObject. Added WKRenderObject API + for getting element info, while leaving the WKRenderLayer API in place for now for Safari. + + * Shared/API/c/WKRenderLayer.cpp: + (WKRenderLayerGetRenderer): Added this wrapper. + (WKRenderLayerCopyRendererName): Changed to get the name from the renderer. + (WKRenderLayerCopyElementTagName): Changed to go through the renderer. + (WKRenderLayerCopyElementID): Ditto. + (WKRenderLayerGetElementClassNames): Ditto. + * Shared/API/c/WKRenderLayer.h: Added declaration of WKRenderLayerGetRenderer() and comments + about removing older API. + * Shared/API/c/WKRenderObject.cpp: + (WKRenderObjectCopyElementTagName): Added this wrapper. + (WKRenderObjectCopyElementID): Ditto. + (WKRenderObjectGetElementClassNames): Ditto. + * Shared/API/c/WKRenderObject.h: + * Shared/UserMessageCoders.h: + (WebKit::UserMessageEncoder::baseEncode): Removed the element info from the encoding of + WebRenderLayer, and added the renderer. Added the element info to the encoding of + WebRenderObject. + (WebKit::UserMessageDecoder::baseDecode): Updated to match the encoding changes. + * Shared/WebRenderLayer.cpp: + (WebKit::WebRenderLayer::WebRenderLayer): Changed to initialize the m_renderer member + variable with a WebRenderObject for the layer’s renderer, and removed the initialization of + the element-related member variables that were removed. + * Shared/WebRenderLayer.h: + (WebKit::WebRenderLayer::create): Changed to take a renderer instead of renderer and element + info. + (WebKit::WebRenderLayer::renderer): Added this getter. + (WebKit::WebRenderLayer::WebRenderLayer): Changed to take a renderer instead of renderer and + element info. + * Shared/WebRenderObject.cpp: + (WebKit::WebRenderObject::create): Changed to pass true for the shouldIncludeDescendants + parameter. + (WebKit::WebRenderObject::WebRenderObject): Added a shouldIncludeDescdendants boolean + parameter. When it is false, the m_children array remains null. Added initialization of + member variables with the element’s tag name, id and class list. + * Shared/WebRenderObject.h: + (WebKit::WebRenderObject::create): Added an overload that takes a RenderObject and creates + a shallow WebRenderObject. + (WebRenderObject): Changed to take element tag name, id and class list. + (WebKit::WebRenderObject::elementTagName): Added this getter. + (WebKit::WebRenderObject::elementID): Ditto. + (WebKit::WebRenderObject::elementClassNames): Ditto. + (WebKit::WebRenderObject::WebRenderObject): + +2012-06-29 Tony Chang <tony@chromium.org> + + Unreviewed, rolling out r121572. + http://trac.webkit.org/changeset/121572 + https://bugs.webkit.org/show_bug.cgi?id=90249 + + Breaks Mac build since it depends on r121547, which was rolled + out + + * WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp: + (WebKit::NPN_GetValue): + * WebProcess/WebCoreSupport/WebEditorClient.cpp: + (WebKit::WebEditorClient::shouldEraseMarkersAfterChangeSelection): + * WebProcess/WebCoreSupport/WebEditorClient.h: + +2012-06-29 Eric Seidel <eric@webkit.org> + + Remove BUILDING_ON_LEOPARD now that no ports build on Leopard + https://bugs.webkit.org/show_bug.cgi?id=90249 + + Reviewed by Ryosuke Niwa. + + * WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp: + (WebKit::NPN_GetValue): + * WebProcess/WebCoreSupport/WebEditorClient.cpp: + (WebKit::WebEditorClient::shouldEraseMarkersAfterChangeSelection): + * WebProcess/WebCoreSupport/WebEditorClient.h: + +2012-06-29 Konrad Piascik <kpiascik@rim.com> + + Don't hardcode target dpi of 160 (it should be 96 on desktop) + https://bugs.webkit.org/show_bug.cgi?id=88114 + + Reviewed by Adam Barth. + + Updated the call to computeViewportAttributes. + + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::sendViewportAttributesChanged): + (WebKit::WebPage::viewportConfigurationAsText): + +2012-06-29 Sheriff Bot <webkit.review.bot@gmail.com> + + Unreviewed, rolling out r121529. + http://trac.webkit.org/changeset/121529 + https://bugs.webkit.org/show_bug.cgi?id=90260 + + Failed to compile on Chromium WebKitMacBuilder (Requested by + keishi on #webkit). + + * UIProcess/mac/WKFullScreenWindowController.mm: + (-[WKFullScreenWindowController finishedEnterFullScreenAnimation:]): + (-[WKFullScreenWindowController beganExitFullScreenWithInitialFrame:WebCore::finalFrame:WebCore::]): + * WebProcess/Plugins/Netscape/mac/NetscapeSandboxFunctions.mm: + * WebProcess/WebCoreSupport/mac/WebSystemInterface.mm: + (InitWebCoreSystemInterface): + +2012-06-29 Eric Seidel <eric@webkit.org> + + Remove more BUILDING_ON_LEOPARD branches now that no port builds on Leopard + https://bugs.webkit.org/show_bug.cgi?id=90252 + + Reviewed by Ryosuke Niwa. + + * UIProcess/mac/WKFullScreenWindowController.mm: + (-[WKFullScreenWindowController finishedEnterFullScreenAnimation:]): + (-[WKFullScreenWindowController beganExitFullScreenWithInitialFrame:WebCore::finalFrame:WebCore::]): + * WebProcess/Plugins/Netscape/mac/NetscapeSandboxFunctions.mm: + * WebProcess/WebCoreSupport/mac/WebSystemInterface.mm: + (InitWebCoreSystemInterface): + +2012-06-28 MORITA Hajime <morrita@google.com> + + [Refactoring] NodeRenderingContext ctor could be built on top of the ComposedShadowTreeWalker + https://bugs.webkit.org/show_bug.cgi?id=89732 + + Reviewed by Dimitri Glazkov. + + * win/WebKit2.def: + * win/WebKit2CFLite.def: + +2012-06-28 John Sullivan <sullivan@apple.com> + + <https://bugs.webkit.org/show_bug.cgi?id=90216> + <rdar://problem/11766518> + Undo handling in WebKit2 is not robust against some page-closing code paths + + Reviewed by Enrica Casucci. + + * UIProcess/API/mac/PageClientImpl.h: + Declared public function viewWillMoveToAnotherWindow(). + + * UIProcess/API/mac/PageClientImpl.mm: + (WebKit::PageClientImpl::viewWillMoveToAnotherWindow): + New function, calls clearAllEditCommands() to remove any Undo actions from the stack. + This guarantees that no Undo actions will be abandoned when the PageClientImpl is dealloc'ed. + + * UIProcess/API/mac/WKView.mm: + (-[WKView viewWillMoveToWindow:]): + Now informs PageClientImpl via new function PageClientImpl::viewWillMoveToAnotherWindow(). + +2012-06-28 Christophe Dumez <christophe.dumez@intel.com> + + [WK2] Add C API to inspect a Web Intent service + https://bugs.webkit.org/show_bug.cgi?id=89276 + + Reviewed by Anders Carlsson. + + Add C API for Web intent service so that it can be queried + on client side. + + * CMakeLists.txt: + * GNUmakefile.list.am: + * Target.pri: + * UIProcess/API/C/WKIntentServiceInfo.cpp: Added. + (WKIntentServiceInfoGetTypeID): + (WKIntentServiceInfoCopyAction): + (WKIntentServiceInfoCopyType): + (WKIntentServiceInfoCopyHref): + (WKIntentServiceInfoCopyTitle): + (WKIntentServiceInfoCopyDisposition): + * UIProcess/API/C/WKIntentServiceInfo.h: Added. + +2012-06-28 Balazs Kelemen <kbalazs@webkit.org> + + [Qt] KURL assert at fast/loader/opaque-base-url.html + https://bugs.webkit.org/show_bug.cgi?id=89468 + + Reviewed by Simon Hausmann. + + Don't use the KURL(ParsedURLStringTag, const String&) constructor. + We cannot be sure that the url in encode was valid and even if it + was the message could have been corrupted. + * Shared/qt/WebCoreArgumentCodersQt.cpp: + (CoreIPC::::encode): + (CoreIPC::::decode): + +2012-06-27 Carlos Garcia Campos <cgarcia@igalia.com> + + Unreviewed. Fix the build without TEXTURE_MAPPER_GL. + + * WebProcess/WebPage/gtk/LayerTreeHostGtk.cpp: + * WebProcess/WebPage/gtk/LayerTreeHostGtk.h: + * WebProcess/WebPage/gtk/WebPageGtk.cpp: + (WebKit::WebPage::platformInitialize): + +2012-06-25 Mark Hahnenberg <mhahnenberg@apple.com> + + JSLock should be per-JSGlobalData + https://bugs.webkit.org/show_bug.cgi?id=89123 + + Reviewed by Geoffrey Garen. + + Changed all sites that used JSLock to instead use the new JSLockHolder + and pass in the correct JS context that the code is about to interact with that + needs protection. Also added a couple JSLocks to places that didn't already + have it that needed it. + + * Shared/mac/WebMemorySampler.mac.mm: + (WebKit::WebMemorySampler::sampleWebKit): + * WebProcess/InjectedBundle/InjectedBundle.cpp: + (WebKit::InjectedBundle::javaScriptObjectsCount): + (WebKit::InjectedBundle::reportException): + * WebProcess/Plugins/Netscape/JSNPObject.cpp: + (WebKit::JSNPObject::callMethod): + (WebKit::JSNPObject::callObject): + (WebKit::JSNPObject::callConstructor): + (WebKit::JSNPObject::put): + (WebKit::JSNPObject::deleteProperty): + (WebKit::JSNPObject::getOwnPropertyNames): + (WebKit::JSNPObject::propertyGetter): + * WebProcess/Plugins/Netscape/NPJSObject.cpp: + (WebKit::NPJSObject::hasMethod): + (WebKit::NPJSObject::invoke): + (WebKit::NPJSObject::invokeDefault): + (WebKit::NPJSObject::hasProperty): + (WebKit::NPJSObject::getProperty): + (WebKit::NPJSObject::setProperty): + (WebKit::NPJSObject::removeProperty): + (WebKit::NPJSObject::enumerate): + (WebKit::NPJSObject::construct): + * WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp: + (WebKit::NPRuntimeObjectMap::convertJSValueToNPVariant): + (WebKit::NPRuntimeObjectMap::evaluate): + (WebKit::NPRuntimeObjectMap::moveGlobalExceptionToExecState): + * WebProcess/WebPage/WebFrame.cpp: + (WebKit::WebFrame::jsWrapperForWorld): + (WebKit::WebFrame::computedStyleIncludingVisitedInfo): + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::runJavaScriptInMainFrame): + * WebProcess/WebProcess.cpp: + (WebKit::WebProcess::getWebCoreStatistics): + +2012-06-27 Thiago Marcos P. Santos <thiago.santos@intel.com> + + REGRESSION(r121135): It made qmltests::WebViewColorChooser::test_accept() fail + https://bugs.webkit.org/show_bug.cgi?id=89871 + + Reviewed by Simon Hausmann. + + Added proper event synchronization to the test case. + + * UIProcess/API/qt/tests/qmltests/WebView/tst_colorChooser.qml: + +2012-06-27 Brady Eidson <beidson@apple.com> + + https://bugs.webkit.org/show_bug.cgi?id=87513 + WebBackForwardList needs an overhaul to consistently and clearly handle error conditions. + + Reviewed by Darin Adler. + + - We think a null entry might somehow be getting in the list so we now try to prevent that. + - We think a null entry might somehow be in the list so we now null check when indexing into m_entries. + - A lot of index math - especially tracking "no current index" - was implicit or wrong. + - Operating on a WebBackForwardList whose page has been closed is now an explicit no-op. + - The session state data reading and writing code was fragile and needed an overhaul. + - This includes adding a new V1 format of the session data that is easier to validate when reading back in. + + * UIProcess/WebBackForwardList.cpp: + (WebKit::WebBackForwardList::~WebBackForwardList): + (WebKit::WebBackForwardList::pageClosed): + (WebKit::WebBackForwardList::addItem): + (WebKit::WebBackForwardList::goToItem): + (WebKit::WebBackForwardList::backListCount): + (WebKit::WebBackForwardList::forwardListCount): + (WebKit::WebBackForwardList::backListAsImmutableArrayWithLimit): + (WebKit::WebBackForwardList::forwardListAsImmutableArrayWithLimit): + (WebKit::WebBackForwardList::clear): + + * UIProcess/WebBackForwardList.h: + (WebBackForwardList): + + * UIProcess/cf/WebBackForwardListCF.cpp: + (WebKit::createEmptySessionHistoryDictionary): + (WebKit::WebBackForwardList::createCFDictionaryRepresentation): + (WebKit::WebBackForwardList::restoreFromCFDictionaryRepresentation): + (WebKit::WebBackForwardList::restoreFromV0CFDictionaryRepresentation): + (WebKit::WebBackForwardList::restoreFromV1CFDictionaryRepresentation): + (WebKit::extractBackForwardListEntriesFromArray): + +2012-06-27 Zan Dobersek <zandobersek@gmail.com> + + [Gtk] Add support for the Gamepad API + https://bugs.webkit.org/show_bug.cgi?id=87503 + + Reviewed by Carlos Garcia Campos. + + Add the Gamepad feature dependencies libraries to the LIBADD + list for the libwebkitgtk2 library. + + * GNUmakefile.am: + +2012-06-26 Simon Hausmann <simon.hausmann@nokia.com> + + [Qt] Avoid use of deprecated Qt API + + Reviewed by Tor Arne Vestbø. + + QGuiApplication::inputPanel() has been deprecated in favour of + inputMethod(). + + * UIProcess/qt/QtWebPageEventHandler.cpp: + (WebKit::QtWebPageEventHandler::QtWebPageEventHandler): + (WebKit::QtWebPageEventHandler::~QtWebPageEventHandler): + (WebKit::setInputPanelVisible): + (WebKit::QtWebPageEventHandler::inputPanelVisibleChanged): + (WebKit::QtWebPageEventHandler::updateTextInputState): + +2012-06-26 Christophe Dumez <christophe.dumez@intel.com> + + [WK2][GTK] Uninitialized variable in TextCheckerGtk.cpp + https://bugs.webkit.org/show_bug.cgi?id=89948 + + Reviewed by Martin Robinson. + + Properly initialize didInitializeState in + TextChecker::state(). + + * UIProcess/gtk/TextCheckerGtk.cpp: + (WebKit::TextChecker::state): + +2012-06-25 Simon Hausmann <simon.hausmann@nokia.com> + + [Qt] Make it possible to build WebKit without QtWidgets + https://bugs.webkit.org/show_bug.cgi?id=78109 + + Reviewed by Tor Arne Vestbø. + + * WebKit2.pri: Add missing WK2 specific dependencies. + * qt/MainQt.cpp: Do the QStyle initialization hook only if we are + compiling with QtWidgets support. + (WebKit): + (main): + +2012-06-25 Raphael Kubo da Costa <rakuco@webkit.org> + + [EFL][WK2] Include unistd.h in PlatformProcessIdentifier.h. + https://bugs.webkit.org/show_bug.cgi?id=89804 + + Reviewed by Hajime Morita. + + The pid_t typedef ends up coming from stdlib.h (indirectly via WTF + includes) on Mac and Linux, even though that is not mandated by + POSIX and breaks other platforms (such as FreeBSD). Fix that by + explicitly including unistd.h, which is where the typedef is + supposed to come from. + + * Platform/PlatformProcessIdentifier.h: + +2012-06-25 YoungTaeck Song <youngtaeck.song@samsung.com> + + [WK2][Qt][EFL] Extract common code from LayerTreeHostQt + https://bugs.webkit.org/show_bug.cgi?id=89837 + + Reviewed by Noam Rosenthal. + + Extract common code from LayerTreeHostQt to be used by both Qt and Efl. + I renamed LayerTreeHost to LayerTreeCoordinator, and these are moved under WebProcess/WebPage/LayerTreeCoordinator. + I Modified LayerTreeHostProxy to LayerTreeCoordinatorProxy too, Because LayerTreeHostProxy and LayerTreeHost were pair. + Also WebGraphicsLayer moved under that directory. + + * CMakeLists.txt: + * DerivedSources.pri: + * GNUmakefile.list.am: + * Platform/CoreIPC/MessageID.h: + * Target.pri: + * UIProcess/API/qt/qquickwebpage.cpp: + (QQuickWebPagePrivate::paint): + (QQuickWebPage::updatePaintNode): + (QQuickWebPagePrivate::updateSize): + * UIProcess/DrawingAreaProxy.cpp: + (WebKit::DrawingAreaProxy::didReceiveLayerTreeCoordinatorProxyMessage): + * UIProcess/DrawingAreaProxy.h: + (WebKit): + (WebKit::DrawingAreaProxy::layerTreeCoordinatorProxy): + (DrawingAreaProxy): + * UIProcess/DrawingAreaProxyImpl.cpp: + (WebKit::DrawingAreaProxyImpl::DrawingAreaProxyImpl): + (WebKit::DrawingAreaProxyImpl::enterAcceleratedCompositingMode): + (WebKit::DrawingAreaProxyImpl::didReceiveLayerTreeCoordinatorProxyMessage): + (WebKit::DrawingAreaProxyImpl::setVisibleContentsRect): + * UIProcess/DrawingAreaProxyImpl.h: + (WebKit): + (DrawingAreaProxyImpl): + * UIProcess/LayerTreeCoordinatorProxy.cpp: Renamed from Source/WebKit2/UIProcess/LayerTreeHostProxy.cpp. + (WebKit): + (WebKit::LayerTreeCoordinatorProxy::LayerTreeCoordinatorProxy): + (WebKit::LayerTreeCoordinatorProxy::~LayerTreeCoordinatorProxy): + (WebKit::LayerTreeCoordinatorProxy::updateViewport): + (WebKit::LayerTreeCoordinatorProxy::dispatchUpdate): + (WebKit::LayerTreeCoordinatorProxy::createTileForLayer): + (WebKit::LayerTreeCoordinatorProxy::updateTileForLayer): + (WebKit::LayerTreeCoordinatorProxy::removeTileForLayer): + (WebKit::LayerTreeCoordinatorProxy::deleteCompositingLayer): + (WebKit::LayerTreeCoordinatorProxy::setRootCompositingLayer): + (WebKit::LayerTreeCoordinatorProxy::setCompositingLayerState): + (WebKit::LayerTreeCoordinatorProxy::setCompositingLayerChildren): + (WebKit::LayerTreeCoordinatorProxy::setCompositingLayerFilters): + (WebKit::LayerTreeCoordinatorProxy::didRenderFrame): + (WebKit::LayerTreeCoordinatorProxy::createDirectlyCompositedImage): + (WebKit::LayerTreeCoordinatorProxy::destroyDirectlyCompositedImage): + (WebKit::LayerTreeCoordinatorProxy::setContentsSize): + (WebKit::LayerTreeCoordinatorProxy::setVisibleContentsRect): + (WebKit::LayerTreeCoordinatorProxy::renderNextFrame): + (WebKit::LayerTreeCoordinatorProxy::didChangeScrollPosition): + (WebKit::LayerTreeCoordinatorProxy::syncCanvas): + (WebKit::LayerTreeCoordinatorProxy::purgeBackingStores): + * UIProcess/LayerTreeCoordinatorProxy.h: Renamed from Source/WebKit2/UIProcess/LayerTreeHostProxy.h. + (WebKit): + (LayerTreeCoordinatorProxy): + (WebKit::LayerTreeCoordinatorProxy::layerTreeRenderer): + * UIProcess/LayerTreeCoordinatorProxy.messages.in: Renamed from Source/WebKit2/UIProcess/LayerTreeHostProxy.messages.in. + * UIProcess/WebLayerTreeRenderer.cpp: + (WebKit::WebLayerTreeRenderer::WebLayerTreeRenderer): + (WebKit::WebLayerTreeRenderer::updateViewport): + (WebKit::WebLayerTreeRenderer::renderNextFrame): + (WebKit::WebLayerTreeRenderer::purgeBackingStores): + (WebKit::WebLayerTreeRenderer::detach): + * UIProcess/WebLayerTreeRenderer.h: + (WebKit): + (WebLayerTreeRenderer): + * UIProcess/WebPageProxy.cpp: + (WebKit::WebPageProxy::didReceiveMessage): + * WebKit2.pri: + * WebProcess/WebPage/DrawingArea.h: + (DrawingArea): + * WebProcess/WebPage/DrawingAreaImpl.cpp: + (WebKit::DrawingAreaImpl::didReceiveLayerTreeCoordinatorMessage): + * WebProcess/WebPage/DrawingAreaImpl.h: + (DrawingAreaImpl): + * WebProcess/WebPage/LayerTreeCoordinator/LayerTreeCoordinator.cpp: Renamed from Source/WebKit2/WebProcess/WebPage/qt/LayerTreeHostQt.cpp. + (WebKit): + (WebKit::LayerTreeCoordinator::create): + (WebKit::LayerTreeCoordinator::~LayerTreeCoordinator): + (WebKit::LayerTreeCoordinator::LayerTreeCoordinator): + (WebKit::LayerTreeCoordinator::setLayerFlushSchedulingEnabled): + (WebKit::LayerTreeCoordinator::scheduleLayerFlush): + (WebKit::LayerTreeCoordinator::cancelPendingLayerFlush): + (WebKit::LayerTreeCoordinator::setShouldNotifyAfterNextScheduledLayerFlush): + (WebKit::LayerTreeCoordinator::setRootCompositingLayer): + (WebKit::LayerTreeCoordinator::invalidate): + (WebKit::LayerTreeCoordinator::setNonCompositedContentsNeedDisplay): + (WebKit::LayerTreeCoordinator::scrollNonCompositedContents): + (WebKit::LayerTreeCoordinator::forceRepaint): + (WebKit::LayerTreeCoordinator::sizeDidChange): + (WebKit::LayerTreeCoordinator::didInstallPageOverlay): + (WebKit::LayerTreeCoordinator::didUninstallPageOverlay): + (WebKit::LayerTreeCoordinator::setPageOverlayNeedsDisplay): + (WebKit::LayerTreeCoordinator::setPageOverlayOpacity): + (WebKit::LayerTreeCoordinator::flushPendingLayerChanges): + (WebKit::LayerTreeCoordinator::syncLayerState): + (WebKit::LayerTreeCoordinator::syncLayerChildren): + (WebKit::LayerTreeCoordinator::syncCanvas): + (WebKit::LayerTreeCoordinator::syncLayerFilters): + (WebKit::LayerTreeCoordinator::attachLayer): + (WebKit::LayerTreeCoordinator::detachLayer): + (WebKit::updateOffsetFromViewportForSelf): + (WebKit::updateOffsetFromViewportForLayer): + (WebKit::LayerTreeCoordinator::syncFixedLayers): + (WebKit::LayerTreeCoordinator::performScheduledLayerFlush): + (WebKit::LayerTreeCoordinator::layerFlushTimerFired): + (WebKit::LayerTreeCoordinator::createPageOverlayLayer): + (WebKit::LayerTreeCoordinator::destroyPageOverlayLayer): + (WebKit::LayerTreeCoordinator::adoptImageBackingStore): + (WebKit::LayerTreeCoordinator::releaseImageBackingStore): + (WebKit::LayerTreeCoordinator::notifyAnimationStarted): + (WebKit::LayerTreeCoordinator::notifySyncRequired): + (WebKit::LayerTreeCoordinator::paintContents): + (WebKit::LayerTreeCoordinator::showDebugBorders): + (WebKit::LayerTreeCoordinator::showRepaintCounter): + (WebKit::LayerTreeHost::supportsAcceleratedCompositing): + (WebKit::LayerTreeCoordinator::createTile): + (WebKit::LayerTreeCoordinator::updateTile): + (WebKit::LayerTreeCoordinator::removeTile): + (WebKit::LayerTreeCoordinator::visibleContentsRect): + (WebKit::LayerTreeCoordinator::setVisibleContentsRect): + (WebKit::LayerTreeCoordinator::renderNextFrame): + (WebKit::LayerTreeCoordinator::layerTreeTileUpdatesAllowed): + (WebKit::LayerTreeCoordinator::purgeBackingStores): + (WebKit::LayerTreeCoordinator::beginContentUpdate): + * WebProcess/WebPage/LayerTreeCoordinator/LayerTreeCoordinator.h: Renamed from Source/WebKit2/WebProcess/WebPage/qt/LayerTreeHostQt.h. + (WebKit): + (LayerTreeCoordinator): + (WebKit::LayerTreeCoordinator::layerTreeContext): + (WebKit::LayerTreeCoordinator::pageOverlayShouldApplyFadeWhenPainting): + (WebKit::LayerTreeCoordinator::pauseRendering): + (WebKit::LayerTreeCoordinator::resumeRendering): + (WebKit::LayerTreeCoordinator::deviceScaleFactorDidChange): + * WebProcess/WebPage/LayerTreeCoordinator/LayerTreeCoordinator.messages.in: Renamed from Source/WebKit2/WebProcess/WebPage/LayerTreeHost.messages.in. + * WebProcess/WebPage/LayerTreeCoordinator/WebGraphicsLayer.cpp: Renamed from Source/WebKit2/WebProcess/WebCoreSupport/WebGraphicsLayer.cpp. + (WebCore): + (WebCore::layerByIDMap): + (WebCore::WebGraphicsLayer::layerByID): + (WebCore::toWebLayerID): + (WebCore::WebGraphicsLayer::didChangeLayerState): + (WebCore::WebGraphicsLayer::didChangeChildren): + (WebCore::WebGraphicsLayer::didChangeFilters): + (WebCore::WebGraphicsLayer::setShouldUpdateVisibleRect): + (WebCore::WebGraphicsLayer::didChangeGeometry): + (WebCore::WebGraphicsLayer::WebGraphicsLayer): + (WebCore::WebGraphicsLayer::~WebGraphicsLayer): + (WebCore::WebGraphicsLayer::willBeDestroyed): + (WebCore::WebGraphicsLayer::setChildren): + (WebCore::WebGraphicsLayer::addChild): + (WebCore::WebGraphicsLayer::addChildAtIndex): + (WebCore::WebGraphicsLayer::addChildAbove): + (WebCore::WebGraphicsLayer::addChildBelow): + (WebCore::WebGraphicsLayer::replaceChild): + (WebCore::WebGraphicsLayer::removeFromParent): + (WebCore::WebGraphicsLayer::setPosition): + (WebCore::WebGraphicsLayer::setAnchorPoint): + (WebCore::WebGraphicsLayer::setSize): + (WebCore::WebGraphicsLayer::setTransform): + (WebCore::WebGraphicsLayer::setChildrenTransform): + (WebCore::WebGraphicsLayer::setPreserves3D): + (WebCore::WebGraphicsLayer::setMasksToBounds): + (WebCore::WebGraphicsLayer::setDrawsContent): + (WebCore::WebGraphicsLayer::setContentsOpaque): + (WebCore::WebGraphicsLayer::setBackfaceVisibility): + (WebCore::WebGraphicsLayer::setOpacity): + (WebCore::WebGraphicsLayer::setContentsRect): + (WebCore::WebGraphicsLayer::setContentsNeedsDisplay): + (WebCore::WebGraphicsLayer::setContentsToCanvas): + (WebCore::WebGraphicsLayer::setFilters): + (WebCore::WebGraphicsLayer::setContentsToImage): + (WebCore::WebGraphicsLayer::setMaskLayer): + (WebCore::WebGraphicsLayer::setReplicatedByLayer): + (WebCore::WebGraphicsLayer::setNeedsDisplay): + (WebCore::WebGraphicsLayer::setNeedsDisplayInRect): + (WebCore::WebGraphicsLayer::id): + (WebCore::WebGraphicsLayer::syncCompositingState): + (WebCore::toWebGraphicsLayer): + (WebCore::WebGraphicsLayer::syncChildren): + (WebCore::WebGraphicsLayer::syncFilters): + (WebCore::WebGraphicsLayer::syncLayerState): + (WebCore::WebGraphicsLayer::syncCanvas): + (WebCore::WebGraphicsLayer::ensureImageBackingStore): + (WebCore::WebGraphicsLayer::syncCompositingStateForThisLayerOnly): + (WebCore::WebGraphicsLayer::tiledBackingStorePaintBegin): + (WebCore::WebGraphicsLayer::setRootLayer): + (WebCore::WebGraphicsLayer::setVisibleContentRectTrajectoryVector): + (WebCore::WebGraphicsLayer::setContentsScale): + (WebCore::WebGraphicsLayer::effectiveContentsScale): + (WebCore::WebGraphicsLayer::adjustContentsScale): + (WebCore::WebGraphicsLayer::createBackingStore): + (WebCore::WebGraphicsLayer::tiledBackingStorePaint): + (WebCore::WebGraphicsLayer::tiledBackingStorePaintEnd): + (WebCore::WebGraphicsLayer::tiledBackingStoreUpdatesAllowed): + (WebCore::WebGraphicsLayer::tiledBackingStoreContentsRect): + (WebCore::WebGraphicsLayer::shouldUseTiledBackingStore): + (WebCore::WebGraphicsLayer::tiledBackingStoreVisibleRect): + (WebCore::WebGraphicsLayer::tiledBackingStoreBackgroundColor): + (WebCore::WebGraphicsLayer::beginContentUpdate): + (WebCore::WebGraphicsLayer::createTile): + (WebCore::WebGraphicsLayer::updateTile): + (WebCore::WebGraphicsLayer::removeTile): + (WebCore::WebGraphicsLayer::updateContentBuffers): + (WebCore::WebGraphicsLayer::purgeBackingStores): + (WebCore::WebGraphicsLayer::setWebGraphicsLayerClient): + (WebCore::WebGraphicsLayer::adjustVisibleRect): + (WebCore::WebGraphicsLayer::computeTransformedVisibleRect): + (WebCore::createWebGraphicsLayer): + (WebCore::WebGraphicsLayer::initFactory): + (WebCore::WebGraphicsLayer::selfOrAncestorHaveNonAffineTransforms): + * WebProcess/WebPage/LayerTreeCoordinator/WebGraphicsLayer.h: Renamed from Source/WebKit2/WebProcess/WebCoreSupport/WebGraphicsLayer.h. + (WebCore): + (WebKit): + (WebGraphicsLayerClient): + (WebGraphicsLayer): + (WebCore::WebGraphicsLayer::image): + (WebCore::WebGraphicsLayer::fixedToViewport): + (WebCore::WebGraphicsLayer::setFixedToViewport): + (WebCore::WebGraphicsLayer::maskTarget): + (WebCore::WebGraphicsLayer::setMaskTarget): + * WebProcess/WebPage/LayerTreeHost.cpp: + (WebKit::LayerTreeHost::create): + * WebProcess/WebPage/LayerTreeHost.h: + (LayerTreeHost): + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::didReceiveMessage): + +2012-06-25 Anders Carlsson <andersca@apple.com> + + [Lion WK2] fast/loader/reload-zero-byte-plugin.html hits assert + https://bugs.webkit.org/show_bug.cgi?id=89611 + <rdar://problem/11714023> + + Reviewed by Sam Weinig. + + Make sure to send the response along to the plug-in in the case where the stream was empty. + + * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: + (WebKit::WebFrameLoaderClient::finishedLoading): + +2012-06-25 YoungTaeck Song <youngtaeck.song@samsung.com> + + [WK2][Qt][EFL] Move LayerBackingStore into common directory + https://bugs.webkit.org/show_bug.cgi?id=89838 + + Reviewed by Noam Rosenthal. + + Move LayerBackingStore into 'Source/WebKit2/UIProcess/texmap' to be used by both Qt and Efl. + + * Target.pri: + * UIProcess/texmap/LayerBackingStore.cpp: Renamed from Source/WebKit2/UIProcess/qt/LayerBackingStore.cpp. + (WebKit): + (WebKit::LayerBackingStoreTile::swapBuffers): + (WebKit::LayerBackingStoreTile::setBackBuffer): + (WebKit::LayerBackingStore::createTile): + (WebKit::LayerBackingStore::removeTile): + (WebKit::LayerBackingStore::updateTile): + (WebKit::LayerBackingStore::texture): + (WebKit::LayerBackingStore::paintToTextureMapper): + (WebKit::LayerBackingStore::commitTileOperations): + * UIProcess/texmap/LayerBackingStore.h: Renamed from Source/WebKit2/UIProcess/qt/LayerBackingStore.h. + (WebKit): + (LayerBackingStoreTile): + (WebKit::LayerBackingStoreTile::LayerBackingStoreTile): + (WebKit::LayerBackingStoreTile::scale): + (LayerBackingStore): + (WebKit::LayerBackingStore::create): + (WebKit::LayerBackingStore::LayerBackingStore): + +2012-06-25 Carlos Garcia Campos <cgarcia@igalia.com> + + [GTK] Test /webkit2/WebKitWebView/permission-requests fails due to a runtime warning + https://bugs.webkit.org/show_bug.cgi?id=89858 + + Reviewed by Xan Lopez. + + * UIProcess/API/gtk/tests/TestWebKitWebView.cpp: + (testWebViewPermissionRequests): Make runtime warnings non-fatal + for test /webkit2/WebKitWebView/permission-requests. + +2012-06-25 Huang Dongsung <luxtella@company100.net> + + [GTK] Remove unused code in LayerTreeHostGtk. + https://bugs.webkit.org/show_bug.cgi?id=89854 + + LayerTreeHostGtk::deviceScaleFactor() is unused and LayerTreeHost does not have + virtual float deviceScaleFactor() const; + + Reviewed by Martin Robinson. + + * WebProcess/WebPage/gtk/LayerTreeHostGtk.cpp: + * WebProcess/WebPage/gtk/LayerTreeHostGtk.h: + (LayerTreeHostGtk): + +2012-06-24 Andreas Kling <kling@webkit.org> + + REGRESSION(r120329): Intermittent WebProcess shutdowns due to out-of-line DidReceiveEvent messages. + <rdar://problem/11686974> + <http://webkit.org/b/89659> + + Unreviewed tests assertion fix, handleKeyboardEvent() should call didReceiveKeyEvent() + rather than didReceiveEvent(). + + * UIProcess/WebPageProxy.cpp: + (WebKit::WebPageProxy::handleKeyboardEvent): + (WebKit::WebPageProxy::didReceiveKeyEvent): + +2012-06-24 YoungTaeck Song <youngtaeck.song@samsung.com> + + [WK2][Qt][EFL] Modify Qt specific code to common code + https://bugs.webkit.org/show_bug.cgi?id=89839 + + Reviewed by Noam Rosenthal. + + Modify paintToGraphicsContext’s first argument QPainter to PlatformGraphicsContext to be used by both Qt and Efl. + + * UIProcess/WebLayerTreeRenderer.cpp: + (WebKit::WebLayerTreeRenderer::paintToGraphicsContext): + +2012-06-24 Simon Fraser <simon.fraser@apple.com> + + Rename isPositioned to isOutOfFlowPositioned for clarity + https://bugs.webkit.org/show_bug.cgi?id=89836 + + Reviewed by Antti Koivisto. + + RenderObject and RenderStyle had an isPositioned() method that was + confusing, because it excluded relative positioning. Rename to + isOutOfFlowPositioned(), which makes it clearer that it only applies + to absolute and fixed positioning. + + Simple rename; no behavior change. + + * WebProcess/WebPage/qt/LayerTreeHostQt.cpp: + (WebKit::updateOffsetFromViewportForSelf): + +2012-06-24 Andreas Kling <kling@webkit.org> + + REGRESSION(r120329): Intermittent WebProcess shutdowns due to out-of-line DidReceiveEvent messages. + <rdar://problem/11686974> + <http://webkit.org/b/89659> + + Reviewed by Sam Weinig. + + Instead of sending DidReceiveEvent for key events as DispatchMessageEvenWhenWaitingForSyncReply, + use proper synchronous messages. This makes the WebProcess block while the UIProcess handles + the event but prevents a weird race condition where DidReceiveEvent gets dispatched just before + a synchronous DecidePolicyForNavigationAction and something happens below DidReceiveEvent that + invalidates the frame ID passed to DecidePolicyForNavigationAction. + + This is a speculative fire-fighting fix. + + * UIProcess/WebPageProxy.cpp: + (WebKit::WebPageProxy::didReceiveKeyEvent): + (WebKit::WebPageProxy::didReceiveEvent): + * UIProcess/WebPageProxy.h: + * UIProcess/WebPageProxy.messages.in: + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::keyEvent): + +2012-06-23 Sheriff Bot <webkit.review.bot@gmail.com> + + Unreviewed, rolling out r121058. + http://trac.webkit.org/changeset/121058 + https://bugs.webkit.org/show_bug.cgi?id=89809 + + Patch causes plugins tests to crash in GTK debug builds + (Requested by zdobersek on #webkit). + + * Shared/mac/WebMemorySampler.mac.mm: + (WebKit::WebMemorySampler::sampleWebKit): + * WebProcess/InjectedBundle/InjectedBundle.cpp: + (WebKit::InjectedBundle::javaScriptObjectsCount): + (WebKit::InjectedBundle::reportException): + * WebProcess/Plugins/Netscape/JSNPObject.cpp: + (WebKit::JSNPObject::callMethod): + (WebKit::JSNPObject::callObject): + (WebKit::JSNPObject::callConstructor): + (WebKit::JSNPObject::put): + (WebKit::JSNPObject::deleteProperty): + (WebKit::JSNPObject::getOwnPropertyNames): + (WebKit::JSNPObject::propertyGetter): + * WebProcess/Plugins/Netscape/NPJSObject.cpp: + (WebKit::NPJSObject::hasMethod): + (WebKit::NPJSObject::invoke): + (WebKit::NPJSObject::invokeDefault): + (WebKit::NPJSObject::hasProperty): + (WebKit::NPJSObject::getProperty): + (WebKit::NPJSObject::setProperty): + (WebKit::NPJSObject::removeProperty): + (WebKit::NPJSObject::enumerate): + (WebKit::NPJSObject::construct): + * WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp: + (WebKit::NPRuntimeObjectMap::convertJSValueToNPVariant): + (WebKit::NPRuntimeObjectMap::evaluate): + (WebKit::NPRuntimeObjectMap::moveGlobalExceptionToExecState): + * WebProcess/WebPage/WebFrame.cpp: + (WebKit::WebFrame::jsWrapperForWorld): + (WebKit::WebFrame::computedStyleIncludingVisitedInfo): + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::runJavaScriptInMainFrame): + * WebProcess/WebProcess.cpp: + (WebKit::WebProcess::getWebCoreStatistics): + +2012-06-23 Zan Dobersek <zandobersek@gmail.com> + + Unreviewed build fix for GTK's WebKit2 build after r121093. + + * UIProcess/API/gtk/WebKitWebView.cpp: + (webkitWebViewPopulateContextMenu): + +2012-06-23 Carlos Garcia Campos <cgarcia@igalia.com> + + Unreviewed. Fix several GTK+ unit tests. + + GTK+ unit tests using WebViewTest::wait() started to fail due to a + bug introduced in r121093. + + * UIProcess/API/gtk/tests/WebViewTest.cpp: + (WebViewTest::wait): Use this instead of m_mainLoop as user data + for the idle callback. + +2012-06-23 Carlos Garcia Campos <cgarcia@igalia.com> + + [GTK] Add ContextMenu API to WebKit2 GTK+ API + https://bugs.webkit.org/show_bug.cgi?id=81011 + + Reviewed by Martin Robinson. + + Add WebKitWebView::context-menu signal and WebKitContextMenu and + WebKitContextMenuItem objects to customize the default menu or + buils new menus. + + * GNUmakefile.list.am: Add new files to destination. + * UIProcess/API/gtk/WebKitContextMenu.cpp: Added. + (webkitContextMenuFinalize): + (webkit_context_menu_init): + (webkit_context_menu_class_init): + (webkitContextMenuPopulate): Populate the given vector of + ContextMenuItems with the WebKitContextMenu items releasing the + items added to the vector. + (webkitContextMenuCreate): Create a new WebKitContextMenu for the + given WKArrayRef of WKContextMenuItemRef. + (webkitContextMenuSetParentItem): Set the parent menu item of the + menu. Used when a menu is added as a submenu of a menu item. + (webkitContextMenuGetParentItem): Return the parent menu item of + the menu. + (webkit_context_menu_new): Create a new WebKitContextMenu. + (webkit_context_menu_new_with_items): Create a new + WebKitContextMenu using the given list of WebKitContextMenuItem. + (webkit_context_menu_prepend): Add item at the beginning. + (webkit_context_menu_append): Add item at the end. + (webkit_context_menu_insert): Insert item at a random position. + (webkit_context_menu_move_item): Move an existing item to a new + position. + (webkit_context_menu_get_items): Get the list of items. + (webkit_context_menu_get_n_items): Get the number of items. + (webkit_context_menu_first): Get the first item. + (webkit_context_menu_last): Get the last item. + (webkit_context_menu_get_item_at_position): Get the item at the + given position. + (webkit_context_menu_remove): Remove the given item. + (webkit_context_menu_remove_all): Remove all items. + * UIProcess/API/gtk/WebKitContextMenu.h: Added. + * UIProcess/API/gtk/WebKitContextMenuActions.cpp: Added. + (webkitContextMenuActionIsCheckable): Check if the given stock + action is a toggle action. + (webkitContextMenuActionGetActionTag): Get the WebCore + ContextMenuAction corresponding to the given stock action. + (webkitContextMenuActionGetForContextMenuItem): Get the stock + action corresponding to the given WebCore ContextMenuAction. + (webkitContextMenuActionGetLabel): Get the label string of the + given stock action. + * UIProcess/API/gtk/WebKitContextMenuActions.h: Added. + * UIProcess/API/gtk/WebKitContextMenuActionsPrivate.h: Added. + * UIProcess/API/gtk/WebKitContextMenuItem.cpp: Added. + (webkitContextMenuItemFinalize): + (webkit_context_menu_item_init): + (webkit_context_menu_item_class_init): + (checkAndWarnIfMenuHasParentItem): Check whether the given menu + is already inside another menu showing a warning in such case. + (webkitContextMenuItemSetSubMenu): Set the submenu of a menu item, + checking that the menu is not part of another menu and setting the + item as the parent of the submenu. + (webkitContextMenuItemCreate): Create a new WebKitContextMenuItem + for the given WKContextMenuItemRef. + (webkitContextMenuItemCreateForGtkItem): Create a new + WebKitContextMenuItem using the given GtkMenuItem. + (webkitContextMenuItemSetSubMenuFromGtkMenu): Set the given + GtkMenu as submenu of the item. This is used only to add Input + Methods submenu that is created by GTK. + (webkitContextMenuItemRelease): Release the WebCore + ContextMenuItem associated to the item. + (webkit_context_menu_item_new): Create a new WebKitContextMenuItem + for the given GtkAction. + (webkit_context_menu_item_new_from_stock_action): Create a new + WebKitContextMenuItem for a stock action. + (webkit_context_menu_item_new_from_stock_action_with_label): + Create a new WebKitContextMenuItem for a stock action using a + custom label. + (webkit_context_menu_item_new_with_submenu): Create a new + WebKitContextMenuItem with a submenu. + (webkit_context_menu_item_new_separator): Create a new separator + menu item. + (webkit_context_menu_item_get_action): Get the GtkAction of the item. + (webkit_context_menu_item_get_stock_action): Get the stock action + of the item. + (webkit_context_menu_item_is_separator): Whether item is a separator. + (webkit_context_menu_item_set_submenu): Set or replace the + submenu of the item. + (webkit_context_menu_item_get_submenu): Get the submenu of the item. + * UIProcess/API/gtk/WebKitContextMenuItem.h: Added. + * UIProcess/API/gtk/WebKitContextMenuItemPrivate.h: Added. + * UIProcess/API/gtk/WebKitContextMenuPrivate.h: Added. + * UIProcess/API/gtk/WebKitDefines.h: + * UIProcess/API/gtk/WebKitWebView.cpp: + (webkit_web_view_class_init): Add WebKitWebView::context-menu signal. + (getUnicodeMenuItemPosition): Helper function that returns the + position of the unicode menu item in the proposed context menu. + (webkitWebViewCreateAndAppendInputMethodsMenuItem): Use + WebKitContextMenu API to add the input methods submenu to the + default context menu. + (webkitWebViewPopulateContextMenu): Create a WebKitContextMenu for + the default context menu and emit WebKitWebView::context-menu + signal. Then populate the context menu proxy with the resulting + WebKitContextMenu. + * UIProcess/API/gtk/WebKitWebView.h: + * UIProcess/API/gtk/WebKitWebViewBase.cpp: + (webkitWebViewBaseButtonPressEvent): In case of right click save + the event to be used by context menu signal. + (webkitWebViewBaseTakeContextMenuEvent): Return and release the + saved button event. + * UIProcess/API/gtk/WebKitWebViewBasePrivate.h: + * UIProcess/API/gtk/docs/webkit2gtk-docs.sgml: Add sections for + WebKitContextMenu and WebKitContextMenuItem. + * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Add new symbols. + * UIProcess/API/gtk/docs/webkit2gtk.types: Add + webkit_context_menu_get_type and webkit_context_menu_item_get_type. + * UIProcess/API/gtk/tests/GNUmakefile.am: Add new test for context menu. + * UIProcess/API/gtk/tests/TestContextMenu.cpp: Added. + (testContextMenuDefaultMenu): + (testContextMenuPopulateMenu): + (testContextMenuCustomMenu): + (testContextMenuDisableMenu): + (testContextMenuSubMenu): + (beforeAll): + (afterAll): + * UIProcess/API/gtk/tests/TestMain.h: + (Test::addLogFatalFlag): Add a log level flag to the mask of flags + causing the program to abort. + (Test::removeLogFatalFlag): Remove a log level flag to the mask of + flags causing the program to abort. + * UIProcess/API/gtk/tests/WebViewTest.cpp: + (WebViewTest::quitMainLoop): Finish the main loop. + (WebViewTest::quitMainLoopAfterProcessingPendingEvents): Finish + the main loop when all pending events have been processed. + (quitMainLoopIdleCallback): + (WebViewTest::wait): + * UIProcess/API/gtk/tests/WebViewTest.h: + * UIProcess/API/gtk/webkit2.h: Include WebKitContextMenu.h, + WebKitContextMenuItem.h and WebKitContextMenuActions.h. + * UIProcess/API/gtk/webkit2marshal.list: + * UIProcess/gtk/WebContextMenuProxyGtk.cpp: + (WebKit::WebContextMenuProxyGtk::showContextMenu): Attach the + popup menu to the view widget before showing it. + +2012-06-22 Alexandru Chiculita <achicu@adobe.com> + + [CSS Shaders] Re-enable the CSS Shaders compile time flag on Safari Mac + https://bugs.webkit.org/show_bug.cgi?id=89781 + + Reviewed by Dean Jackson. + + Added ENABLE_CSS_SHADERS flag as enabled by default on Safari for Mac. + + * Configurations/FeatureDefines.xcconfig: + +2012-06-22 Ryuan Choi <ryuan.choi@samsung.com> + + [EFL][WK2] Support keyboard event + https://bugs.webkit.org/show_bug.cgi?id=89268 + + Reviewed by Chang Shu. + + * WebProcess/WebCoreSupport/efl/WebEditorClientEfl.cpp: + (WebKit::WebEditorClient::handleKeyboardEvent): Implemented default behavior. + * WebProcess/WebPage/efl/WebPageEfl.cpp: + (WebKit::WebPage::interpretKeyEvent): Implemented like WebKit1/Efl did. + +2012-06-20 Mark Hahnenberg <mhahnenberg@apple.com> + + JSLock should be per-JSGlobalData + https://bugs.webkit.org/show_bug.cgi?id=89123 + + Reviewed by Gavin Barraclough. + + Changed all sites that used JSLock to instead use the new JSLockHolder + and pass in the correct JS context that the code is about to interact with that + needs protection. + + * Shared/mac/WebMemorySampler.mac.mm: + (WebKit::WebMemorySampler::sampleWebKit): + * WebProcess/InjectedBundle/InjectedBundle.cpp: + (WebKit::InjectedBundle::javaScriptObjectsCount): + (WebKit::InjectedBundle::reportException): + * WebProcess/Plugins/Netscape/JSNPObject.cpp: + (WebKit::JSNPObject::callMethod): + (WebKit::JSNPObject::callObject): + (WebKit::JSNPObject::callConstructor): + (WebKit::JSNPObject::put): + (WebKit::JSNPObject::deleteProperty): + (WebKit::JSNPObject::getOwnPropertyNames): + (WebKit::JSNPObject::propertyGetter): + * WebProcess/Plugins/Netscape/NPJSObject.cpp: + (WebKit::NPJSObject::hasMethod): + (WebKit::NPJSObject::invoke): + (WebKit::NPJSObject::invokeDefault): + (WebKit::NPJSObject::hasProperty): + (WebKit::NPJSObject::getProperty): + (WebKit::NPJSObject::setProperty): + (WebKit::NPJSObject::removeProperty): + (WebKit::NPJSObject::enumerate): + (WebKit::NPJSObject::construct): + * WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp: + (WebKit::NPRuntimeObjectMap::convertJSValueToNPVariant): + (WebKit::NPRuntimeObjectMap::evaluate): + (WebKit::NPRuntimeObjectMap::moveGlobalExceptionToExecState): + * WebProcess/WebPage/WebFrame.cpp: + (WebKit::WebFrame::jsWrapperForWorld): + (WebKit::WebFrame::computedStyleIncludingVisitedInfo): + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::runJavaScriptInMainFrame): + * WebProcess/WebProcess.cpp: + (WebKit::WebProcess::getWebCoreStatistics): + +2012-06-22 Jocelyn Turcotte <turcotte.j@gmail.com> + + [Qt] Fix the remote inspector loading problems on Mac + https://bugs.webkit.org/show_bug.cgi?id=89747 + + Reviewed by Simon Hausmann. + + Reverse the creation order of the inter-dependent WebSocketServerConnection + and SocketStreamHandle to make sure that the later has a client properly + set on construction. + + This is to work around the assert on m_state in SocketStreamHandle::setClient. + + * UIProcess/InspectorServer/WebSocketServer.cpp: + (WebKit::WebSocketServer::didAcceptConnection): + * UIProcess/InspectorServer/WebSocketServer.h: + (WebKit::WebSocketServer::client): + (WebSocketServer): + * UIProcess/InspectorServer/WebSocketServerConnection.cpp: + (WebKit::WebSocketServerConnection::WebSocketServerConnection): + (WebKit::WebSocketServerConnection::setSocketHandle): + (WebKit): + * UIProcess/InspectorServer/WebSocketServerConnection.h: + (WebSocketServerConnection): + * UIProcess/InspectorServer/qt/WebSocketServerQt.cpp: + (WebKit::QtTcpServerHandler::handleNewConnection): + +2012-06-22 Sergio Villar Senin <svillar@igalia.com> + + [WK2] FindController::hideFindUI should unmark highlighted text matches + https://bugs.webkit.org/show_bug.cgi?id=77747 + + Reviewed by Carlos Garcia Campos. + + Unmark all text matches whenever FindController::hideFindUI is + called to allow callers using the ShowHighlight find option to + remove highlighting. + + This patch enables a unit test for the WebKitFindController + previously guarded by a #if(0) after r109222. + + * UIProcess/API/gtk/tests/TestWebKitFindController.cpp: + (testFindControllerHide): + * WebProcess/WebPage/FindController.cpp: + (WebKit::FindController::hideFindUI): + +2012-06-21 Christophe Dumez <christophe.dumez@intel.com> + + [WK2] Add C API to inspect a Web Intent + https://bugs.webkit.org/show_bug.cgi?id=89275 + + Reviewed by Anders Carlsson. + + Add C API for Web Intent so that it can be queried + on client side. + + * CMakeLists.txt: + * GNUmakefile.list.am: + * Target.pri: + * UIProcess/API/C/WKIntentData.cpp: Copied from Source/WebKit2/UIProcess/WebIntentData.cpp. + (WKIntentDataGetTypeID): + (WKIntentDataCopyAction): + (WKIntentDataCopyType): + (WKIntentDataCopyService): + (WKIntentDataCopySuggestions): + (WKIntentDataCopyExtra): + (WKIntentDataCopyExtras): + * UIProcess/API/C/WKIntentData.h: Copied from Source/WebKit2/UIProcess/WebIntentData.cpp. + * UIProcess/WebIntentData.cpp: + (WebKit::WebIntentData::suggestions): + (WebKit): + (WebKit::WebIntentData::extra): + (WebKit::WebIntentData::extras): + * UIProcess/WebIntentData.h: + (WebIntentData): + +2012-06-21 Christophe Dumez <christophe.dumez@intel.com> + + [WK2] Properly encode/decode service in IntentData + https://bugs.webkit.org/show_bug.cgi?id=89460 + + Reviewed by Gustavo Noronha Silva. + + Update IntentData::encode() and IntentData::decode() + so that the "service" member is properly encoded + and decoded. + + * Shared/IntentData.cpp: + (WebKit::IntentData::encode): + (WebKit::IntentData::decode): + +2012-06-21 Ryuan Choi <ryuan.choi@gmail.com> + + [EFL][WK2] Make WebKit2/Efl headers and resources installable. + https://bugs.webkit.org/show_bug.cgi?id=88207 + + Reviewed by Chang Shu. + + * CMakeLists.txt: Install WebProcess. + * PlatformEfl.cmake: Generate ewebkit2.pc and install it. + * efl/ewebkit2.pc.in: Added. + +2012-06-21 Ryuan Choi <ryuan.choi@samsung.com> + + [EFL[WK2] Add WKViewEfl and WebKit2 API Object to represent Evas_Object. + https://bugs.webkit.org/show_bug.cgi?id=88935 + + Reviewed by Chang Shu. + + Add WKViewEfl to support WTR/Efl. + + * PlatformEfl.cmake: + * Shared/API/c/WKBase.h: + * Shared/API/c/efl/WKBaseEfl.h: Added. + * UIProcess/API/C/WKAPICast.h: + * UIProcess/API/C/efl/WKAPICastEfl.h: Added. + (WebKit): + * UIProcess/API/C/efl/WKView.cpp: Added. + (WKViewCreate): + (WKViewGetPage): + * UIProcess/API/C/efl/WKView.h: Added. + * UIProcess/API/efl/ewk_view.cpp: + (ewk_view_page_get): + * UIProcess/API/efl/ewk_view_private.h: + +2012-06-21 Thiago Marcos P. Santos <thiago.santos@intel.com> + + [Qt] API tests for ColorChooser + https://bugs.webkit.org/show_bug.cgi?id=88101 + + Reviewed by Kenneth Rohde Christiansen. + + The test uses the value sanitization to detect if the feature is + enabled or disabled and will just pass when disabled. + + * UIProcess/API/qt/tests/qmltests/WebView/tst_colorChooser.qml: Added. + * UIProcess/API/qt/tests/qmltests/common/colorChooser.html: Added. + +2012-06-21 Thiago Marcos P. Santos <thiago.santos@intel.com> + + [WK2][Qt] Color chooser API missing + https://bugs.webkit.org/show_bug.cgi?id=87749 + + Reviewed by Kenneth Rohde Christiansen. + + Added public experimental API for ColorChooser. This will + allow the browser to define a custom dialog for selecting + color when a input field of type "color" get focus. + + The current implementation gives a model to the QML Component + that has methods for canceling a request, selecting a color + and fetching what is the current value of the HTML input. + + * Target.pri: + * UIProcess/API/qt/qquickwebview.cpp: + (QQuickWebViewPrivate::QQuickWebViewPrivate): + (QQuickWebViewExperimental::colorChooser): + (QQuickWebViewExperimental::setColorChooser): + * UIProcess/API/qt/qquickwebview_p.h: + * UIProcess/API/qt/qquickwebview_p_p.h: + (QQuickWebViewPrivate): + * UIProcess/qt/QtPageClient.cpp: + (WebKit::QtPageClient::createColorChooserProxy): + * UIProcess/qt/WebColorChooserProxyQt.cpp: Added. + (WebKit): + (ColorChooserContextObject): + (WebKit::ColorChooserContextObject::ColorChooserContextObject): + (WebKit::ColorChooserContextObject::currentColor): + (WebKit::ColorChooserContextObject::accept): + (WebKit::ColorChooserContextObject::reject): + (WebKit::WebColorChooserProxyQt::WebColorChooserProxyQt): + (WebKit::WebColorChooserProxyQt::~WebColorChooserProxyQt): + (WebKit::WebColorChooserProxyQt::createItem): + (WebKit::WebColorChooserProxyQt::createContext): + (WebKit::WebColorChooserProxyQt::setSelectedColor): + (WebKit::WebColorChooserProxyQt::notifyColorSelected): + (WebKit::WebColorChooserProxyQt::endChooser): + * UIProcess/qt/WebColorChooserProxyQt.h: Added. + (WebCore): + (WebKit): + (WebColorChooserProxyQt): + (WebKit::WebColorChooserProxyQt::create): + +2012-06-21 Mario Sanchez Prada <msanchez@igalia.com> + + [GTK] Add support for window.showModalDialog in WebKit2GTK+ + https://bugs.webkit.org/show_bug.cgi?id=79500 + + Reviewed by Carlos Garcia Campos. + + Implement runModal in WebKitUIClient to make the WebKitWebView + emit a 'run-as-modal' signal when requested, creating a new + mainloop there to block user interaction with the original window + while the modal dialog is showing. + + * UIProcess/API/gtk/WebKitUIClient.cpp: + (runModal): Call to the new webkitWebViewRunAsModalPage function. + (attachUIClientToView): Add runModal. + * UIProcess/API/gtk/WebKitWebView.cpp: + (_WebKitWebViewPrivate): Add an atribute for a new main loop. + (webkitWebViewFinalize): Make sure the main loop for main dialogs, + if any, is stopped if it was still running. + (webkit_web_view_class_init): Declare new signal 'run-as-modal'. + (webkitWebViewRunAsModal): Emit the 'run-as-modal' signal and, if + handled, create and run a new main loop. + * UIProcess/API/gtk/WebKitWebView.h: + (_WebKitWebViewClass): New handler for the 'run-as-modal' signal. + * UIProcess/API/gtk/WebKitWebViewPrivate.h: Add webkitWebViewRunAsModalPage. + + Allow setting and getting the value of WebPage's canRunModal + attribute in the WebProcess from the UIProcess after the creation + of a WebPage, to allow using it from WebKitWebView to allow the + client application to decide whether to allow create modal + dialogs, which would result in launching an additional nested + event loop in the web process, after creating the dialog. + + * UIProcess/WebPageProxy.cpp: + (WebKit::WebPageProxy::WebPageProxy): Initialize the new + m_canRunModal attribute, to cache the current status of the + WebPage in the WebProcess. + (WebKit::WebPageProxy::initializeUIClient): Call the new function + setCanRunModal, instead of manually sending the SetCanRunModal message. + (WebKit::WebPageProxy::creationParameters): Use m_canRunModal + instead of m_uiClient.canRunModal when preparing the parameters. + (WebKit::WebPageProxy::setCanRunModal): New public function, it + sets the value of m_canRunModal and sends a message to the Web + process for updating the WebPage, whenever possible. + (WebKit::WebPageProxy::canRunModal): New public function, returns + the value of the m_canRunModal attribute. + * UIProcess/WebPageProxy.h: + (WebPageProxy): Added new public functions and private attribute. + + New property in WebKitSettings to be able to decide whether it is + allowed to create and run new child webviews as modal dialogs. + + * UIProcess/API/gtk/WebKitSettings.cpp: + (_WebKitSettingsPrivate): New attribute allowModalDialogs. + (webKitSettingsSetProperty): Handle the new property. + (webKitSettingsGetProperty): Ditto. + (webkit_settings_class_init): Install the new property. + (webkitSettingsAttachSettingsToPage): Make sure the WebPage is + initialized with the value of the new property. + (webkit_settings_set_allow_modal_dialogs): New setter. + (webkit_settings_get_allow_modal_dialogs): New getter. + * UIProcess/API/gtk/WebKitSettings.h: + * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Added new accessors. + + Connect to the 'notify::allow-modal-dialogs' signal from + WebKitSettings to ensure that canRunModal property of the WebPage + is kept up to date. Ensure that signal handlers for monitoring + settings are disconnected when the webview is finalized. + + * UIProcess/API/gtk/WebKitWebView.cpp: + (webkitWebViewSetSettings): Connect to the new signal + 'notify::allow-modal-dialogs', from WebKitSettings. + (allowModalDialogsChanged): Callback to update WebPage's + canRunModal property when updated through WebKitSettings. + (webkitWebViewDisconnectSettingsSignalHandlers): Disconnect signal + handlers for monitoring WebKitSettings properties. + (webkitWebViewFinalize): Ensure signal handlers are disconnected. + (webkit_web_view_set_settings): Ditto. + * UIProcess/API/gtk/WebKitWebView.h: + + Add new unit tests to check the 'run-as-modal' signal is emitted + only when the new property in WebKitSettings is set to TRUE. + + * UIProcess/API/gtk/tests/TestWebKitWebView.cpp: + (testWebViewAllowModalDialogs): New unit test to check that modal + dialogs are properly created from JavaScript when allowed. + (testWebViewDisallowModalDialogs): New unit test to check that + it's not possible to create modal dialogs when not allowed. + (beforeAll): Add the new unit test. + +2012-06-20 Thiago Marcos P. Santos <thiago.santos@intel.com> + + [WK2] Color chooser API missing + https://bugs.webkit.org/show_bug.cgi?id=87495 + + Reviewed by Andreas Kling. + + Added ColorChooser API to WebKit2. This API allows the + embedder to define a custom color picker for <input type="color">. + + Only one ColorChooser can be active for a page at a time. Although + the implementation doesn't not assume a modal dialog, no other + color chooser will be created until the active one is closed. + + Also added stubs for all platforms, so it wont break the build when + enabling color chooser, even though they don't have the backend + implemented yet. + + * CMakeLists.txt: + * GNUmakefile.list.am: + * Target.pri: + * UIProcess/API/efl/PageClientImpl.cpp: + (WebKit): + (WebKit::PageClientImpl::createColorChooserProxy): + * UIProcess/API/efl/PageClientImpl.h: + (PageClientImpl): + * UIProcess/API/gtk/PageClientImpl.cpp: + (WebKit): + (WebKit::PageClientImpl::createColorChooserProxy): + * UIProcess/API/gtk/PageClientImpl.h: + (PageClientImpl): + * UIProcess/API/mac/PageClientImpl.h: + (PageClientImpl): + * UIProcess/API/mac/PageClientImpl.mm: + (WebKit): + (WebKit::PageClientImpl::createColorChooserProxy): + * UIProcess/PageClient.h: + (WebKit): + (PageClient): + * UIProcess/WebColorChooserProxy.h: Added. + (WebCore): + (WebKit): + (WebColorChooserProxy): + (Client): + (WebKit::WebColorChooserProxy::Client::~Client): + (WebKit::WebColorChooserProxy::~WebColorChooserProxy): + (WebKit::WebColorChooserProxy::invalidate): + (WebKit::WebColorChooserProxy::WebColorChooserProxy): + * UIProcess/WebPageProxy.cpp: + (WebKit::WebPageProxy::close): + (WebKit): + (WebKit::WebPageProxy::showColorChooser): + (WebKit::WebPageProxy::setColorChooserColor): + (WebKit::WebPageProxy::endColorChooser): + (WebKit::WebPageProxy::didChooseColor): + (WebKit::WebPageProxy::didEndColorChooser): + (WebKit::WebPageProxy::processDidCrash): + * UIProcess/WebPageProxy.h: + (WebPageProxy): + * UIProcess/WebPageProxy.messages.in: + * UIProcess/qt/QtPageClient.cpp: + (WebKit): + (WebKit::QtPageClient::createColorChooserProxy): + * UIProcess/qt/QtPageClient.h: + (QtPageClient): + * UIProcess/win/WebView.cpp: + (WebKit): + (WebKit::WebView::createColorChooserProxy): + * UIProcess/win/WebView.h: + (WebView): + * WebKit2.xcodeproj/project.pbxproj: + * WebProcess/WebCoreSupport/WebChromeClient.cpp: + (WebKit::WebChromeClient::createColorChooser): + * WebProcess/WebCoreSupport/WebColorChooser.cpp: Added. + (WebKit): + (WebKit::WebColorChooser::WebColorChooser): + (WebKit::WebColorChooser::~WebColorChooser): + (WebKit::WebColorChooser::didChooseColor): + (WebKit::WebColorChooser::didEndChooser): + (WebKit::WebColorChooser::disconnectFromPage): + (WebKit::WebColorChooser::setSelectedColor): + (WebKit::WebColorChooser::endChooser): + * WebProcess/WebCoreSupport/WebColorChooser.h: Added. + (WebCore): + (WebKit): + (WebColorChooser): + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::WebPage): + (WebKit::WebPage::close): + (WebKit): + (WebKit::WebPage::setActiveColorChooser): + (WebKit::WebPage::didEndColorChooser): + (WebKit::WebPage::didChooseColor): + * WebProcess/WebPage/WebPage.h: + (WebKit): + (WebPage): + (WebKit::WebPage::activeColorChooser): + * WebProcess/WebPage/WebPage.messages.in: + * win/WebKit2.vcproj: + +2012-06-20 Brady Eidson <beidson@apple.com> + + <rdar://problem/11653784> and https://bugs.webkit.org/show_bug.cgi?id=89590 + showModalDialog message handling is flaky in WebKit2 + + Because RunLoop::performWork() swaps the function queue to a temporary Vector before calling + the functions an inner run-loop - such as we see with running a modal dialog - does not have + a change to handle any of the functions that were queued after the WebPageProxy::RunModal message. + + By servicing the functions in the queue one at a time we can give the RunLoop a chance to pick up + where it left off if RunLoop::performWork is re-entered. + + To guarantee RunLoop::performWork is re-entered to handle those functions we also need to signal + its source before entering the modal run loop so our RunLoop is woken up. + + Reviewed by Darin Adler. + + * Platform/CoreIPC/Connection.cpp: + (CoreIPC::Connection::wakeUpRunLoop): Added so the WebPageProxy can signal the runloop to be woken up + before it enters the modal dialog run loop. + * Platform/CoreIPC/Connection.h: + + * UIProcess/WebPageProxy.cpp: + (WebKit::WebPageProxy::runModal): Call wakeUpRunLoop() before entering the modal dialog run loop. + +2012-06-20 Julien Chaffraix <jchaffraix@webkit.org> + + Use IntSize in RenderLayer to represent scroll offsets + https://bugs.webkit.org/show_bug.cgi?id=89154 + + Reviewed by Eric Seidel. + + * WebProcess/WebPage/win/WebPageWin.cpp: + (WebKit::WebPage::gestureDidScroll): + Updated to pass an IntSize to scrollByRecursively. + +2012-06-20 Christophe Dumez <christophe.dumez@intel.com> + + [WK2] Implement Web Intent delivery + https://bugs.webkit.org/show_bug.cgi?id=88989 + + Reviewed by Anders Carlsson. + + Add a deliverIntent() method to the WebFrame so that + Web intents can be delivered once matched to a + specific service. + + * UIProcess/WebFrameProxy.cpp: + (WebKit): + (WebKit::WebFrameProxy::deliverIntent): + * UIProcess/WebFrameProxy.h: + (WebKit): + (WebFrameProxy): + * UIProcess/WebIntentData.h: + (WebKit::WebIntentData::store): + * WebProcess/WebPage/WebFrame.cpp: + (WebKit): + (WebKit::WebFrame::deliverIntent): + * WebProcess/WebPage/WebFrame.h: + (WebKit): + (WebFrame): + * WebProcess/WebPage/WebPage.cpp: + (WebKit): + (WebKit::WebPage::deliverIntentToFrame): + * WebProcess/WebPage/WebPage.h: + (WebKit): + (WebPage): + * WebProcess/WebPage/WebPage.messages.in: + +2012-06-20 Alexis Menard <alexis.menard@openbossa.org> + + REGRESSION (120705) : LayerTreeHostQt asserts in debug. + https://bugs.webkit.org/show_bug.cgi?id=89487 + + Reviewed by Noam Rosenthal. + + We try to call createHandle twice on the same handle when the + first matching atlas is full. This patch solved the problem by + moving the createHandle call inside UpdateAtlas and call createHandle + only when the atlas is not full. We can also remove the surface() + getter as it is not used anymore. + + * WebProcess/WebPage/UpdateAtlas.cpp: + (WebKit::UpdateAtlas::beginPaintingOnAvailableBuffer): + * WebProcess/WebPage/UpdateAtlas.h: + (UpdateAtlas): + * WebProcess/WebPage/qt/LayerTreeHostQt.cpp: + (WebKit::LayerTreeHostQt::beginContentUpdate): + +2012-06-19 Ryuan Choi <ryuan.choi@samsung.com> + + [EFL][Regression] Build break after r120786 + https://bugs.webkit.org/show_bug.cgi?id=89549 + + Unreviewed build fix for Efl port. + + * CMakeLists.txt: Added disassembler in includes. + +2012-06-19 Dan Bernstein <mitz@apple.com> + + WebKit2 part of: Paginated display API doesn’t allow setting the page progression direction + https://bugs.webkit.org/show_bug.cgi?id=89394 + + Reviewed by Darin Adler. + + * UIProcess/API/C/WKPage.cpp: + (WKPageSetPaginationMode): Changed to map new WKPaginationMode values to new + Pagination::Mode values. + (WKPageGetPaginationMode): Similarly, in the opposite direction. + * UIProcess/API/C/WKPagePrivate.h: Replaced WKPaginationMode values with ones that specify + an axis and a direction along that axis. + * UIProcess/API/mac/WKBrowsingContextController.mm: + (-[WKBrowsingContextController setPaginationMode:]): Changed to handle new values. + (-[WKBrowsingContextController paginationMode]): Ditto. + * UIProcess/API/mac/WKBrowsingContextControllerPrivate.h: Replaced + WKBrowsingContextPaginationMode values with ones that specify an axis and a direction along + that axis. + +2012-06-19 Alexis Menard <alexis.menard@openbossa.org> + + [Qt] Create an extra atlas when there is no available buffer space. + https://bugs.webkit.org/show_bug.cgi?id=89012 + + Reviewed by Noam Rosenthal. + + In case of the desktop mode when we scroll the view all the tiles + are updated. It can happen that there no available buffer space for + the currently used atlas(especially when scrolling fast). In that case + we can create a new one. One future improvement could be to make a timer and + delete this extra atlas when it is not used. + + * WebProcess/WebPage/qt/LayerTreeHostQt.cpp: + (WebKit::beginContentUpdateInAtlas): + (WebKit::LayerTreeHostQt::beginContentUpdate): + * WebProcess/WebPage/qt/LayerTreeHostQt.h: + (LayerTreeHostQt): + +2012-06-19 Csaba Osztrogonác <ossy@webkit.org> + + [Qt] Buildfix for newer Qt5, use QPointer instead of the deprecated QWeakPointer. + https://bugs.webkit.org/show_bug.cgi?id=89449 + + Reviewed by Simon Hausmann. + + * UIProcess/API/qt/qquicknetworkreply_p.h: + +2012-06-19 Mike West <mkwst@chromium.org> + + Introduce ENABLE_CSP_NEXT configuration flag. + https://bugs.webkit.org/show_bug.cgi?id=89300 + + Reviewed by Adam Barth. + + The 1.0 draft of the Content Security Policy spec is just about to + move to Last Call. We'll hide work on the upcoming 1.1 spec behind + this ENABLE flag, disabled by default. + + Spec: https://dvcs.w3.org/hg/content-security-policy/raw-file/tip/csp-specification.dev.html + + * Configurations/FeatureDefines.xcconfig: + +2012-06-19 Mike West <mkwst@chromium.org> + + Add a scheme registry for bypassing Content Security Policy. + https://bugs.webkit.org/show_bug.cgi?id=89373 + + Reviewed by Adam Barth. + + * win/WebKit2.def: + * win/WebKit2CFLite.def: + +2012-06-16 Adam Barth <abarth@webkit.org> + + Settings::devicePixelRatio doesn't do anything and is confusing + https://bugs.webkit.org/show_bug.cgi?id=89272 + + Reviewed by James Robinson. + + * Shared/WebPreferencesStore.h: + (WebKit): + - Remove boilerplate code for the setting. + * UIProcess/API/qt/qquickwebview.cpp: + (QQuickWebViewExperimental::devicePixelRatio): + (QQuickWebViewExperimental::setDevicePixelRatio): + - Change these functions to get and set the real device scale factor. + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::sendViewportAttributesChanged): + - Use the real device scale factor for the viewport calculation. + (WebKit::WebPage::updatePreferences): + - Remove boilerplate code for the setting. + +2012-06-15 Christophe Dumez <christophe.dumez@intel.com> + + [WK2] Add support for explicit intents + https://bugs.webkit.org/show_bug.cgi?id=89206 + + Reviewed by Kenneth Rohde Christiansen. + + Expose the service URL of a Web Intent. This URL + is set for explicit intents. + + * Shared/IntentData.h: + (IntentData): + * UIProcess/WebIntentData.h: + (WebKit::WebIntentData::service): + * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: + (WebKit::WebFrameLoaderClient::dispatchIntent): + +2012-06-15 Christophe Dumez <christophe.dumez@intel.com> + + [EFL][WK2] Add title support to Ewk_View + https://bugs.webkit.org/show_bug.cgi?id=89095 + + Reviewed by Kenneth Rohde Christiansen. + + Add a method to get the title of the main frame in + an Ewk_View. A "title,changed" signal is now emitted + on the view to notify clients that the main frame + title was changed. + + * PlatformEfl.cmake: + * UIProcess/API/efl/ewk_view.cpp: + (_Ewk_View_Private_Data): + (_ewk_view_priv_del): + (ewk_view_base_add): + (ewk_view_title_get): + (ewk_view_title_changed): + * UIProcess/API/efl/ewk_view.h: + * UIProcess/API/efl/ewk_view_loader_client.cpp: Added. + (didReceiveTitleForFrame): + (ewk_view_loader_client_attach): + * UIProcess/API/efl/ewk_view_loader_client_private.h: Added. + * UIProcess/API/efl/ewk_view_private.h: + +2012-06-15 Christophe Dumez <christophe.dumez@intel.com> + + [WK2][EFL] Implement navigation back/forward in Ewk_View + https://bugs.webkit.org/show_bug.cgi?id=89173 + + Reviewed by Kenneth Rohde Christiansen. + + Add API for Ewk_View to ask the main frame to navigate backwards + or forwards in history. Also add API to query if such navigation + is possible. + + * UIProcess/API/efl/ewk_view.cpp: + (ewk_view_back): + (ewk_view_forward): + (ewk_view_back_possible): + (ewk_view_forward_possible): + * UIProcess/API/efl/ewk_view.h: + +2012-06-15 Christophe Dumez <christophe.dumez@intel.com> + + [EFL][WK2] Implement reload / stop in Ewk_View + https://bugs.webkit.org/show_bug.cgi?id=89168 + + Reviewed by Kenneth Rohde Christiansen. + + Add API on the Ewk_View to reload the main frame + and to stop the current load. + + * UIProcess/API/efl/ewk_view.cpp: + (ewk_view_reload): + (ewk_view_stop): + * UIProcess/API/efl/ewk_view.h: + +2012-06-14 Kent Tamura <tkent@chromium.org> + + Validate form state strings in FormController::setStateForNewFormElements() + https://bugs.webkit.org/show_bug.cgi?id=88768 + + Reviewed by Hajime Morita. + + * win/WebKit2.def: Expose some symbols used by Internals.cpp. + * win/WebKit2CFLite.def: ditto. + +2012-06-14 Tim Horton <timothy_horton@apple.com> + + DrawingArea: Painting is being resumed while the view is not visible + https://bugs.webkit.org/show_bug.cgi?id=88940 + <rdar://problem/11652545> + + Reviewed by Dean Jackson. + + Using requestAnimationFrame and the fullscreen API on a DrawingArea-backed window would cause + rAF to permanently suspend animations after entering full-screen mode, because of the following: + + 0. JavaScript causes fullscreen transition to start. + 1. Painting (and rAF) are suspended. + 2. The page changes size. + a. DrawingAreaProxyImpl::sizeDidChange() calls DrawingAreaImpl::updateBackingStoreState, which calls DrawingAreaImpl::resumePainting. + b. DrawingAreaImpl::resumePainting resumes painting, but does *not* resume rAF, because windowIsVisible is (legitimately) false. + 3. The view becomes visible, windowIsVisible is updated to true. + 4. visibilityDidChange() calls resumePainting again, but this time it early exits because painting is not suspended. + + Notice that because of the early exit in 4, rAF is never resumed. + + To solve this and prevent any further bugs caused by these unnecessary calls to resume/suspendPainting, + temporarily stop sending SuspendPainting/ResumePainting messages from DrawingAreaProxyImpl::visibilityDidChange + during the window animations that occur while entering and exiting full-screen. + + * UIProcess/API/mac/WKViewInternal.h: + * UIProcess/API/mac/WKView.mm: + (-[WKView setAutomaticallySuspendAndResumePainting:]): + (-[WKView automaticallySuspendAndResumePainting]): + * UIProcess/DrawingAreaProxyImpl.cpp: + (WebKit::DrawingAreaProxyImpl::visibilityDidChange): + * UIProcess/WebPageProxy.h: + (WebKit::WebPageProxy::setShouldSuspendAndResumePainting): + (WebKit::WebPageProxy::shouldSuspendAndResumePainting): + * UIProcess/mac/WKFullScreenWindowController.mm: + (-[WKFullScreenWindowController enterFullScreen:]): + (-[WKFullScreenWindowController _startEnterFullScreenAnimationWithDuration:]): + +2012-06-14 Jia Pu <jpu@apple.com> + + Mark text with text alternative with blue underline. + https://bugs.webkit.org/show_bug.cgi?id=83047 + + Reviewed by Enrica Casucci. + + Changes in WebKit2 include implementation of new functions declared in AlternativeTextClient, + and logic for calling Editor::insertDictatedText() instead of Editor::insertText() when there's + alternatives attached to the input string. + + * Shared/API/c/WKContextMenuItemTypes.h: + * Shared/API/c/WKSharedAPICast.h: + * Shared/WebCoreArgumentCoders.cpp: + * Shared/WebCoreArgumentCoders.h: + * UIProcess/API/mac/PageClientImpl.h: + * UIProcess/API/mac/PageClientImpl.mm: + (WebKit::PageClientImpl::PageClientImpl): + (WebKit::PageClientImpl::pageClosed): + (WebKit::PageClientImpl::addDictationAlternatives): + (WebKit::PageClientImpl::removeDictationAlternatives): + (WebKit::PageClientImpl::showDictationAlternativeUI): + (WebKit::PageClientImpl::dictationAlternatives): + (WebKit::PageClientImpl::dismissDictationAlternativeUI): + * UIProcess/API/mac/WKView.mm: + (-[WKView insertText:replacementRange:]): + (-[WKView validAttributesForMarkedText]): + (-[WKView handleAcceptedAlternativeText:]): + * UIProcess/API/mac/WKViewInternal.h: + * UIProcess/PageClient.h: + * UIProcess/WebPageProxy.cpp: + (WebKit::WebPageProxy::showDictationAlternativeUI): + (WebKit::WebPageProxy::dismissDictationAlternativeUI): + (WebKit::WebPageProxy::removeDictationAlternatives): + (WebKit::WebPageProxy::dictationAlternatives): + * UIProcess/WebPageProxy.h: + * UIProcess/WebPageProxy.messages.in: + * UIProcess/mac/CorrectionPanel.mm: + (correctionIndicatorType): + (WebKit::CorrectionPanel::handleAcceptedReplacement): + * UIProcess/mac/WebPageProxyMac.mm: + (WebKit::WebPageProxy::insertDictatedText): + * WebProcess/WebCoreSupport/WebAlternativeTextClient.h: + (WebAlternativeTextClient): + * WebProcess/WebCoreSupport/mac/WebAlternativeTextClient.cpp: + (WebKit::WebAlternativeTextClient::showCorrectionAlternative): + (WebKit::WebAlternativeTextClient::dismissAlternative): + (WebKit::WebAlternativeTextClient::dismissAlternativeSoon): + (WebKit::WebAlternativeTextClient::recordAutocorrectionResponse): + (WebKit::WebAlternativeTextClient::removeDictationAlternatives): + (WebKit::WebAlternativeTextClient::showDictationAlternativeUI): + (WebKit::WebAlternativeTextClient::dismissDictationAlternativeUI): + (WebKit::WebAlternativeTextClient::dictationAlternatives): + * WebProcess/WebPage/WebPage.h: + * WebProcess/WebPage/WebPage.messages.in: + * WebProcess/WebPage/mac/WebPageMac.mm: + (WebKit::WebPage::insertDictatedText): + +2012-06-13 Andreas Kling <kling@webkit.org> + + Chinese IM receives incorrect/duplicated key events in text fields in webpages in Safari. + <http://webkit.org/b/89048> + <rdar://problem/11449702> + + Reviewed by Darin Adler. + + Send the DidReceiveEvent message with the DispatchMessageEvenWhenWaitingForSyncReply flag + for keyboard events. This ensures that it always arrives before the corresponding synchronous + InterpretQueuedKeyEvent message. + + The problem was that we relied on DidReceiveEvent / InterpretQueuedKeyEvent always arriving in + the same order they were sent. This was not always true, since DidReceiveEvent (async) would + get deferred during an unrelated waitForSyncReply() whereas InterpretQueuedKeyEvent (sync) + gets dispatched right away. + + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::keyEvent): + +2012-06-14 Carlos Garcia Campos <cgarcia@igalia.com> + + [GTK] Add input methods submenu item to the default context menu for editable content + https://bugs.webkit.org/show_bug.cgi?id=80600 + + Reviewed by Martin Robinson. + + * GNUmakefile.am: Add new files to compilation. + * UIProcess/API/gtk/WebKitContextMenuClient.cpp: Added. + (getContextMenuFromProposedMenu): Call webkitWebViewContextMenu(). + (attachContextMenuClientToView): Add implementation for + getContextMenuFromProposedMenu callback. + * UIProcess/API/gtk/WebKitContextMenuClient.h: Added. + * UIProcess/API/gtk/WebKitWebView.cpp: + (webkitWebViewConstructed): Attach context menu client to view. + (webkitWebViewCreateAndAppendDefaultMenuItems): Helper function to + add default context menu items to the new context menu items vector. + (webkitWebViewShouldShowInputMethodsMenu): Helper function to + check whether to show the input methods submenu according to the + gtk-show-input-method-menu GTK+ setting. + (webkitWebViewCreateAndAppendInputMethodsMenuItem): Helper + function to add input methods submenu to the new context menu + items vector. + (webkitWebViewContextMenu): Create a new context menu items vector + containing default items and input methods submenu in case of + editable content. The active content menu is populated using that + new vector. + * UIProcess/API/gtk/WebKitWebViewBase.cpp: + (webkitWebViewBaseSetActiveContextMenu): Set the active context menu. + (webkitWebViewBaseGetActiveContextMenu): Get the active context menu. + * UIProcess/API/gtk/WebKitWebViewBasePrivate.h: + * UIProcess/API/gtk/WebKitWebViewPrivate.h: + * UIProcess/gtk/WebContextMenuProxyGtk.cpp: + (WebKit::WebContextMenuProxyGtk::append): Helper method to add a + new item to the context menu. + (WebKit::WebContextMenuProxyGtk::populate): Add items to the + context menu. + (WebKit::WebContextMenuProxyGtk::showContextMenu): Populate the + menu with the given items and popup the menu if it's not empty. + (WebKit::WebContextMenuProxyGtk::hideContextMenu): Get the GtkMenu + from the WebCore ContextMenu to popdown it. + (WebKit::WebContextMenuProxyGtk::WebContextMenuProxyGtk): Call + webkitWebViewBaseSetActiveContextMenu() to set the menu as the current + active one for the view. + (WebKit::WebContextMenuProxyGtk::~WebContextMenuProxyGtk): Call + webkitWebViewBaseSetActiveContextMenu() with NULL to reset the + current active context of the view. GtkMenu is destroyed by + WebCore ContextMenu in its destructor. + * UIProcess/gtk/WebContextMenuProxyGtk.h: + +2012-06-14 Christophe Dumez <christophe.dumez@intel.com> + + [WK2] Add implementation for registerIntentService in WebFrameLoaderClient + https://bugs.webkit.org/show_bug.cgi?id=88399 + + Reviewed by Kenneth Rohde Christiansen. + + Add implementation for registerIntentService() in + WebFrameLoaderClient. + + * CMakeLists.txt: + * GNUmakefile.list.am: + * Shared/API/c/WKBase.h: + * Shared/APIClientTraits.h: + * Shared/APIObject.h: + * Shared/IntentServiceInfo.cpp: Added. + (WebKit): + (WebKit::IntentServiceInfo::encode): + (WebKit::IntentServiceInfo::decode): + * Shared/IntentServiceInfo.h: Added. + (CoreIPC): + (WebKit): + (IntentServiceInfo): + * Target.pri: + * UIProcess/API/C/WKAPICast.h: + (WebKit): + * UIProcess/API/C/WKPage.h: + * UIProcess/API/gtk/WebKitLoaderClient.cpp: + (attachLoaderClientToView): + * UIProcess/WebIntentServiceInfo.cpp: Added. + (WebKit): + (WebKit::WebIntentServiceInfo::WebIntentServiceInfo): + * UIProcess/WebIntentServiceInfo.h: Added. + (WebKit): + (WebIntentServiceInfo): + (WebKit::WebIntentServiceInfo::create): + (WebKit::WebIntentServiceInfo::~WebIntentServiceInfo): + (WebKit::WebIntentServiceInfo::action): + (WebKit::WebIntentServiceInfo::payloadType): + (WebKit::WebIntentServiceInfo::href): + (WebKit::WebIntentServiceInfo::title): + (WebKit::WebIntentServiceInfo::disposition): + (WebKit::WebIntentServiceInfo::type): + * UIProcess/WebLoaderClient.cpp: + (WebKit): + (WebKit::WebLoaderClient::registerIntentServiceForFrame): + * UIProcess/WebLoaderClient.h: + (WebKit): + (WebLoaderClient): + * UIProcess/WebPageProxy.cpp: + (WebKit): + (WebKit::WebPageProxy::registerIntentServiceForFrame): + * UIProcess/WebPageProxy.h: + (WebKit): + (WebPageProxy): + * UIProcess/WebPageProxy.messages.in: + * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: + (WebKit): + (WebKit::WebFrameLoaderClient::registerIntentService): + * WebProcess/WebCoreSupport/WebFrameLoaderClient.h: + (WebFrameLoaderClient): + +2012-06-14 Carlos Garcia Campos <cgarcia@igalia.com> + + [WK2] Add WKHitTestResultIsContentEditable() + https://bugs.webkit.org/show_bug.cgi?id=80597 + + Reviewed by Martin Robinson. + + * Shared/WebHitTestResult.cpp: + (WebKit::WebHitTestResult::Data::encode): Encode isContentEditable. + (WebKit::WebHitTestResult::Data::decode): Decode isContentEditable. + * Shared/WebHitTestResult.h: + (Data): Add isContentEditable. + (WebKit::WebHitTestResult::Data::Data): Initialize + isContentEditable. + (WebKit::WebHitTestResult::isContentEditable): Returns whether + hit test result target is editable content. + * UIProcess/API/C/WKHitTestResult.cpp: + (WKHitTestResultIsContentEditable): C API to get whether hit test + result target is editable content. + * UIProcess/API/C/WKHitTestResult.h: + * UIProcess/API/gtk/WebKitHitTestResult.cpp: + (webkitHitTestResultCreate): Add + WEBKIT_HIT_TEST_RESULT_CONTEXT_EDITABLE flags to the context if + hit test result target is editable content. + (webkit_hit_test_result_context_is_editable): Returns TRUE if + WEBKIT_HIT_TEST_RESULT_CONTEXT_EDITABLE flags is present in + context. + * UIProcess/API/gtk/WebKitHitTestResult.h: + * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Add new symbols. + * UIProcess/API/gtk/tests/TestWebKitWebView.cpp: + (testWebViewMouseTarget): Add tests for + WEBKIT_HIT_TEST_RESULT_CONTEXT_EDITABLE. + +2012-06-14 Grzegorz Czajkowski <g.czajkowski@samsung.com> + + [WK2] Fix client interface size for WKPageLoaderClient. + https://bugs.webkit.org/show_bug.cgi?id=88764 + + Reviewed by Anders Carlsson. + + Fixes offset of WKPageLoaderClient for version 0 by adding didDetectXSSForFrame. + The offset should be off the first new callback that was added in the new version. + + * Shared/APIClientTraits.cpp: + (WebKit): + +2012-06-13 Christophe Dumez <christophe.dumez@intel.com> + + [WK2] Add implementation for dispatchIntent in WebFrameLoaderClient + https://bugs.webkit.org/show_bug.cgi?id=88340 + + Reviewed by Kenneth Rohde Christiansen. + + Add implementation for dispatchIntent() in WebFrameLoaderClient. + + * CMakeLists.txt: + * GNUmakefile.list.am: + * Shared/API/c/WKBase.h: + * Shared/APIClientTraits.h: + * Shared/APIObject.h: + * Shared/IntentData.cpp: Added. + (WebKit): + (WebKit::IntentData::encode): + (WebKit::IntentData::decode): + * Shared/IntentData.h: Added. + (CoreIPC): + (WebKit): + (IntentData): + * Target.pri: + * UIProcess/API/C/WKAPICast.h: + (WebKit): + * UIProcess/API/C/WKPage.h: + * UIProcess/API/gtk/WebKitLoaderClient.cpp: + (attachLoaderClientToView): + * UIProcess/WebIntentData.cpp: Added. + (WebKit): + (WebKit::WebIntentData::WebIntentData): + (WebKit::WebIntentData::data): + * UIProcess/WebIntentData.h: Added. + (WebKit): + (WebIntentData): + (WebKit::WebIntentData::create): + (WebKit::WebIntentData::~WebIntentData): + (WebKit::WebIntentData::action): + (WebKit::WebIntentData::payloadType): + (WebKit::WebIntentData::extras): + (WebKit::WebIntentData::suggestions): + (WebKit::WebIntentData::type): + * UIProcess/WebLoaderClient.cpp: + (WebKit): + (WebKit::WebLoaderClient::didReceiveIntentForFrame): + * UIProcess/WebLoaderClient.h: + (WebKit): + (WebLoaderClient): + * UIProcess/WebPageProxy.cpp: + (WebKit): + (WebKit::WebPageProxy::didReceiveIntentForFrame): + * UIProcess/WebPageProxy.h: + (WebKit): + (WebPageProxy): + * UIProcess/WebPageProxy.messages.in: + * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: + (WebKit::WebFrameLoaderClient::dispatchIntent): + +2012-06-13 Tim Horton <timothy_horton@apple.com> + + Rename _swapView:with: to _replaceView:with: + https://bugs.webkit.org/show_bug.cgi?id=89037 + + Reviewed by Darin Adler. + + _swapView:with: is a misnomer - after calling it, the first view is no longer + contained within the view hierarchy. "Replace" is a more accurate term. + + * UIProcess/mac/WKFullScreenWindowController.mm: + (-[WKFullScreenWindowController enterFullScreen:]): + (-[WKFullScreenWindowController finishedExitFullScreenAnimation:]): + (-[WKFullScreenWindowController _replaceView:with:]): + +2012-06-13 Martin Robinson <mrobinson@igalia.com> + + [GTK] Add an accelerated compositing implementation for WebKit2 + https://bugs.webkit.org/show_bug.cgi?id=86037 + + Reviewed by Alejandro G. Castro. + + Add an implementation of LayerTreeHost for GTK+ that uses TextureMapperGL. + Later this implementation will fall back to using the ImageBuffer TextureMapper. + + * GNUmakefile.am: Add new files to the compilation. + * Shared/LayerTreeContext.h: + (LayerTreeContext): The GTK+ version of the LayerTreeContext just holds window handle. + * Shared/gtk/LayerTreeContextGtk.cpp: Copied from Source/WebKit2/WebProcess/WebPage/LayerTreeHost.cpp. + * WebProcess/WebPage/gtk/LayerTreeHostGtk.h: Added. + * WebProcess/WebPage/gtk/LayerTreeHostGtk.cpp: Added. + Add this LayerTreeHost implementation that just creates a GL context from the widget X11 window ID. + Later implementations might find a more cross-platform solution. + * WebProcess/WebPage/gtk/WebPageGtk.cpp: + (WebKit::WebPage::platformInitialize): Initialize the native window handle to be zero. + (WebKit::WebPage::widgetMapped): When mapping the widget, try to get the native window + handle and send it to the WebProcess. + +2012-06-13 Andras Becsi <andras.becsi@nokia.com> + + [Qt][WK2] ASSERT(m_rawAttributes.initialScale > 0) in QtViewportHandler::initialRect() + https://bugs.webkit.org/show_bug.cgi?id=89026 + + Reviewed by Csaba Osztrogonác. + + Only act on viewport attribute changes if the layout size is valid. + + * UIProcess/qt/QtViewportHandler.cpp: + (WebKit::QtViewportHandler::setInitialScaleIfNeeded): + (WebKit::QtViewportHandler::viewportAttributesChanged): + +2012-06-13 Brent Fulgham <bfulgham@webkit.org> + + [WinCairo] Build fix after Windows export definition file change. + + * win/WebKit2CFLite.def: Add missing symbol exports. + +2012-06-13 Allan Sandfeld Jensen <allan.jensen@nokia.com> + + [Qt] Fixed visible content rect lost during page-load + https://bugs.webkit.org/show_bug.cgi?id=88991 + + Reviewed by Kenneth Rohde Christiansen. + + * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: + (WebKit::WebFrameLoaderClient::transitionToCommittedForNewPage): + +2012-06-13 Sheriff Bot <webkit.review.bot@gmail.com> + + Unreviewed, rolling out r120209. + http://trac.webkit.org/changeset/120209 + https://bugs.webkit.org/show_bug.cgi?id=89007 + + Broke the WebKit2 mac build. (Requested by andersca on + #webkit). + + * CMakeLists.txt: + * GNUmakefile.list.am: + * Shared/API/c/WKBase.h: + * Shared/APIClientTraits.h: + * Shared/APIObject.h: + * Shared/IntentData.cpp: Removed. + * Shared/IntentData.h: Removed. + * Target.pri: + * UIProcess/API/C/WKAPICast.h: + (WebKit): + * UIProcess/API/C/WKPage.h: + * UIProcess/API/gtk/WebKitLoaderClient.cpp: + (attachLoaderClientToView): + * UIProcess/WebIntentData.cpp: Removed. + * UIProcess/WebIntentData.h: Removed. + * UIProcess/WebLoaderClient.cpp: + * UIProcess/WebLoaderClient.h: + (WebKit): + (WebLoaderClient): + * UIProcess/WebPageProxy.cpp: + * UIProcess/WebPageProxy.h: + (WebKit): + (WebPageProxy): + * UIProcess/WebPageProxy.messages.in: + * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: + (WebKit::WebFrameLoaderClient::dispatchIntent): + +2012-06-13 Alexis Menard <alexis.menard@openbossa.org> + + Web Inspector: add a way to get the remote inspector url for a given page. + https://bugs.webkit.org/show_bug.cgi?id=88902 + + Reviewed by Jocelyn Turcotte. + + Expose the remote inspector url for a given page in the API. If you want + to create a web view and load directly the inspector for the page you want to inspect, + it helps to get the url as it is impossible to figure it out from the API layer. + + * UIProcess/API/qt/qquickwebview.cpp: + (QQuickWebViewExperimental::remoteInspectorUrl): + * UIProcess/API/qt/qquickwebview_p.h: + * UIProcess/InspectorServer/WebInspectorServer.cpp: + (WebKit): + (WebKit::WebInspectorServer::inspectorUrlForPageID): + * UIProcess/InspectorServer/WebInspectorServer.h: + (WebInspectorServer): + * UIProcess/InspectorServer/WebSocketServer.cpp: + (WebKit::WebSocketServer::WebSocketServer): + (WebKit::WebSocketServer::listen): + (WebKit::WebSocketServer::close): + * UIProcess/InspectorServer/WebSocketServer.h: + (WebKit::WebSocketServer::bindAddress): + (WebKit::WebSocketServer::port): + (WebKit::WebSocketServer::serverState): + (WebSocketServer): + * UIProcess/InspectorServer/qt/WebInspectorServerQt.cpp: + (WebKit::remoteInspectorPagePath): + (WebKit): + (WebKit::WebInspectorServer::inspectorUrlForPageID): + (WebKit::WebInspectorServer::buildPageList): + * UIProcess/WebInspectorProxy.h: + (WebKit::WebInspectorProxy::remoteInspectionPageID): + +2012-06-13 Christophe Dumez <christophe.dumez@intel.com> + + [WK2] Add implementation for dispatchIntent in WebFrameLoaderClient + https://bugs.webkit.org/show_bug.cgi?id=88340 + + Reviewed by Kenneth Rohde Christiansen. + + Add implementation for dispatchIntent() in WebFrameLoaderClient. + + * CMakeLists.txt: + * GNUmakefile.list.am: + * Shared/API/c/WKBase.h: + * Shared/APIClientTraits.h: + * Shared/APIObject.h: + * Shared/IntentData.cpp: Added. + (WebKit): + (WebKit::IntentData::encode): + (WebKit::IntentData::decode): + * Shared/IntentData.h: Added. + (CoreIPC): + (WebKit): + (IntentData): + * Target.pri: + * UIProcess/API/C/WKAPICast.h: + (WebKit): + * UIProcess/API/C/WKPage.h: + * UIProcess/API/gtk/WebKitLoaderClient.cpp: + (attachLoaderClientToView): + * UIProcess/WebIntentData.cpp: Added. + (WebKit): + (WebKit::WebIntentData::WebIntentData): + (WebKit::WebIntentData::data): + * UIProcess/WebIntentData.h: Added. + (WebKit): + (WebIntentData): + (WebKit::WebIntentData::create): + (WebKit::WebIntentData::~WebIntentData): + (WebKit::WebIntentData::action): + (WebKit::WebIntentData::payloadType): + (WebKit::WebIntentData::extras): + (WebKit::WebIntentData::suggestions): + (WebKit::WebIntentData::type): + * UIProcess/WebLoaderClient.cpp: + (WebKit): + (WebKit::WebLoaderClient::didReceiveIntentForFrame): + * UIProcess/WebLoaderClient.h: + (WebKit): + (WebLoaderClient): + * UIProcess/WebPageProxy.cpp: + (WebKit): + (WebKit::WebPageProxy::didReceiveIntentForFrame): + * UIProcess/WebPageProxy.h: + (WebKit): + (WebPageProxy): + * UIProcess/WebPageProxy.messages.in: + * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: + (WebKit::WebFrameLoaderClient::dispatchIntent): + +2012-06-13 Balazs Kelemen <kbalazs@webkit.org> + + [Qt][WK2] Scanning plugins blocks the UI for a long time + https://bugs.webkit.org/show_bug.cgi?id=88535 + + Reviewed by Simon Hausmann. + + Implement a persistent cache for the meta data of plugins. + This way the UI process will not block for too long when + it's time to scan the plugins (except the first time). + The cache is a json file stored in a standard hidden cache + directory. + + * Shared/qt/QtDefaultDataLocation.cpp: Added. + (WebKit): + (WebKit::defaultDataLocation): + * Shared/qt/QtDefaultDataLocation.h: Added. + (WebKit): + Added a common helper for the path we use to + put stuff into. + + * Target.pri: + * UIProcess/Plugins/qt/PluginProcessProxyQt.cpp: + (WebKit::cacheFile): + (WebKit): + (WebKit::readMetaDataFromCacheFile): + (WebKit::writeToCacheFile): + (WebKit::appendToCacheFile): + (WebKit::tryReadPluginMetaDataFromCacheFile): + (WebKit::PluginProcessProxy::scanPlugin): + * UIProcess/qt/WebContextQt.cpp: + +2012-06-13 Kenneth Rohde Christiansen <kenneth@webkit.org> + + [Qt] Do not set contents pos to the current position + https://bugs.webkit.org/show_bug.cgi?id=88990 + + Reviewed by Laszlo Gombos. + + This is basically an optimization but it also solves flickering + in some cases. + + * UIProcess/API/qt/qquickwebview.cpp: + (QQuickWebView::setContentPos): + +2012-06-12 MORITA Hajime <morrita@google.com> + + Shadow Pseudo ID should be able to nest to point nested shadow DOM. + https://bugs.webkit.org/show_bug.cgi?id=62218 + + Reviewed by Dimitri Glazkov. + + * win/WebKit2.def: + * win/WebKit2CFLite.def: + +2012-06-12 Kenneth Rohde Christiansen <kenneth@webkit.org> + + Unreviewed build fix. + + * UIProcess/qt/QtViewportHandler.cpp: + (WebKit::QtViewportHandler::initialRect): + +2012-06-11 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> + + Using extrernal ICU library on case unsensitive drives will not work + https://bugs.webkit.org/show_bug.cgi?id=70913 + + Reviewed by Csaba Osztrogonác. + + * WebProcess/WebPage/UpdateAtlas.cpp: + +2012-06-12 Kenneth Rohde Christiansen <kenneth@webkit.org> + + [Qt] Do not move/scale content while the user is interacting with it + https://bugs.webkit.org/show_bug.cgi?id=88872 + + Reviewed by Simon Hausmann. + + Don't try moving content into valid bounds when the content + size changes and the user is interacting with the content. + + Only apply the viewport initial scale after user interaction + has ended. + + * UIProcess/qt/QtViewportHandler.cpp: + (WebKit::ViewportUpdateDeferrer::~ViewportUpdateDeferrer): + (WebKit::QtViewportHandler::setInitialScaleIfNeeded): + (WebKit::QtViewportHandler::viewportAttributesChanged): + (WebKit::QtViewportHandler::pageContentsSizeChanged): + (WebKit::QtViewportHandler::initialRect): + (WebKit): + * UIProcess/qt/QtViewportHandler.h: + (QtViewportHandler): + +2012-06-11 Kaustubh Atrawalkar <kaustubh@motorola.com> + + [DRT] LTC:: counterValueForElementById() could be moved to Internals. + https://bugs.webkit.org/show_bug.cgi?id=84406 + + Reviewed by Hajime Morita. + + Exporting Internals::counterValueForElement symbols for the win build. + + * win/WebKit2.def: + +2012-06-11 Ryuan Choi <ryuan.choi@samsung.com> + + [CMAKE][WK2] Make WebProcess target name more clear. + https://bugs.webkit.org/show_bug.cgi?id=88767 + + Reviewed by Ryosuke Niwa. + + * CMakeLists.txt: Change WebProcess_NAME to WebProcess_EXECUTABLE_NAME. + +2012-06-11 Alexis Menard <alexis.menard@openbossa.org> + + [CSS3 Backgrounds and Borders] Protect box-decoration-break behind a feature flag. + https://bugs.webkit.org/show_bug.cgi?id=88804 + + Reviewed by Tony Chang. + + Protect box-decoration-break behind a feature flag enabled by default. + + * Configurations/FeatureDefines.xcconfig: + +2012-06-11 Gyuyoung Kim <gyuyoung.kim@samsung.com> + + [CMAKE][EFL] Remove duplicated executable output path + https://bugs.webkit.org/show_bug.cgi?id=88765 + + Reviewed by Daniel Bates. + + CMake files for EFL port have redefined executable output path. However, EFL port doesn't + need to define again because it is already defined in top-level CMake file. + + * CMakeLists.txt: + +2012-06-11 Anders Carlsson <andersca@apple.com> + + Pass the right color space over to the web process so we can set it on our CA context + https://bugs.webkit.org/show_bug.cgi?id=88819 + <rdar://problem/11629050> + + Reviewed by John Sullivan. + + * Platform/mac/LayerHostingContext.h: + (LayerHostingContext): + * Platform/mac/LayerHostingContext.mm: + (WebKit::LayerHostingContext::createForPort): + (WebKit::LayerHostingContext::createForWindowServer): + Use a single constructor and explicitly set up the parameters of the constructed object. + + (WebKit::LayerHostingContext::setColorSpace): + (WebKit::LayerHostingContext::colorSpace): + Add getter and setter. + + * Scripts/webkit2/messages.py: + (struct_or_class): + WebKit::ColorSpaceData is a struct. + + * Shared/WebPageCreationParameters.cpp: + Encode and decode the color space parameter. + + * Shared/WebPageCreationParameters.h: + Add the color space. + + * Shared/mac/ColorSpaceData.h: Added. + * Shared/mac/ColorSpaceData.mm: Added. + Add a new class that represents a color space that can be sent over the wire. + + * UIProcess/API/mac/PageClientImpl.h: + * UIProcess/API/mac/PageClientImpl.mm: + (WebKit::PageClientImpl::colorSpace): + Call through to the WKView. + + * UIProcess/API/mac/WKView.mm: + (-[WKView _windowDidChangeBackingProperties:]): + Fix whitespace. + + (-[WKView viewDidChangeBackingProperties]): + Check if our new color space is different from the current one and null the current one out if that is the case, + it will be reinitialized by the next call to -[WKView _colorSpace]. + + (-[WKView _colorSpace:]): + Compute the color space. If we're not in a window we'll get the main screen's color space. + + * UIProcess/DrawingAreaProxy.h: + (WebKit::DrawingAreaProxy::colorSpaceDidChange): + Add empty stub. + + * UIProcess/PageClient.h: + Add colorSpace getter. + + * UIProcess/WebPageProxy.cpp: + (WebKit::WebPageProxy::creationParameters): + Initialize the color space. + + * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h: + * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm: + (WebKit::TiledCoreAnimationDrawingAreaProxy::colorSpaceDidChange): + Send the new color space over to the web process. + + * UIProcess/mac/WebPageProxyMac.mm: + (WebKit::WebPageProxy::colorSpace): + Call through to the page client. + + * WebKit2.xcodeproj/project.pbxproj: + Add ColorSpaceData.h and ColorSpaceData.mm. + + * WebProcess/WebPage/DrawingArea.h: + * WebProcess/WebPage/DrawingArea.messages.in: + Add SetColorSpace message. + + * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm: + (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea): + Set the color space from the creation parameters. + + (WebKit::TiledCoreAnimationDrawingArea::setColorSpace): + Set the color space on the layer hosting context. + + (WebKit::TiledCoreAnimationDrawingArea::updateLayerHostingContext): + Make sure we apply the color space from the previous layer hosting context if one exists. + +2012-06-11 Anders Carlsson <andersca@apple.com> + + Crash when a plug-in tries to use the NPRuntime API with JavaScript disabled + https://bugs.webkit.org/show_bug.cgi?id=88797 + <rdar://problem/11574844> + + Reviewed by Brady Eidson. + + * PluginProcess/PluginControllerProxy.cpp: + (WebKit::PluginControllerProxy::initialize): + Handle the windowNPObjectID being 0. + + (WebKit::PluginControllerProxy::windowScriptNPObject): + Handle m_windownPObject being null. + + * WebProcess/Plugins/PluginView.cpp: + (WebKit::PluginView::windowScriptNPObject): + Return null if JavaScript is disabled. + + (WebKit::PluginView::pluginElementNPObject): + Ditto. + +2012-06-11 Kenneth Rohde Christiansen <kenneth@webkit.org> + + Add QML api for setting device width and height + https://bugs.webkit.org/show_bug.cgi?id=88777 + + Reviewed by Simon Hausmann. + + Add the new API and set the default values to 0 (unset). The + current values were introduced by Qt and only Qt depends on them. + + * Shared/WebPreferencesStore.h: + (WebKit): + * UIProcess/API/qt/qquickwebview.cpp: + (QQuickWebViewExperimental::deviceWidth): + (QQuickWebViewExperimental::setDeviceWidth): + (QQuickWebViewExperimental::deviceHeight): + (QQuickWebViewExperimental::setDeviceHeight): + * UIProcess/API/qt/qquickwebview_p.h: + * UIProcess/qt/QtViewportHandler.cpp: + (WebKit::QtViewportHandler::viewportItemSizeChanged): + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::sendViewportAttributesChanged): + +2012-06-11 Michael Brüning <michael.bruning@nokia.com> + + [Qt][WK2] Compute and set cache capacities using the current CacheModel + https://bugs.webkit.org/show_bug.cgi?id=73918 + + Reviewed by Kenneth Rohde Christiansen. + + Added implementation of cache model for Qt WK 2 port including supporting + functionality such as WebProcess creation parameters and default values + for disk cache directories. + + * Shared/WebProcessCreationParameters.cpp: + (WebKit::WebProcessCreationParameters::encode): + (WebKit::WebProcessCreationParameters::decode): + * Shared/WebProcessCreationParameters.h: + (WebProcessCreationParameters): + * UIProcess/qt/WebContextQt.cpp: + (WebKit::defaultDiskCacheDirectory): + (WebKit): + (WebKit::WebContext::platformInitializeWebProcess): + * WebProcess/qt/WebProcessQt.cpp: + (WebKit::physicalMemorySizeInBytes): + (WebKit::WebProcess::platformSetCacheModel): + (WebKit::WebProcess::platformInitializeWebProcess): + +2012-06-10 Darin Adler <darin@apple.com> + + Remove unneeded callRemovedLastRef function from TreeShared refactoring + https://bugs.webkit.org/show_bug.cgi?id=88653 + + Reviewed by Sam Weinig. + + * win/WebKit2.def: Export removedLastRef instead of callRemovedLastRef. + * win/WebKit2CFLite.def: Ditto. + +2012-06-10 Ryuan Choi <ryuan.choi@samsung.com> + + [EFL][WK2] Add and refactor ewk API in order to support MiniBrowser without WK API. + https://bugs.webkit.org/show_bug.cgi?id=84124 + + Reviewed by Chang Shu. + + Modify ewk_view and add ewk_context to provide a platform-depedent WebKit2 + API. + This patch provides the minimum to support MiniBrowser. + + * PlatformEfl.cmake: add ewk_context.cpp. + * UIProcess/API/efl/EWebKit2.h: Added. + * UIProcess/API/efl/ewk_context.cpp: Added. + (_Ewk_Context): + (createDefaultWebContext): + (ewk_context_WKContext_get): + (ewk_context_default_get): + * UIProcess/API/efl/ewk_context.h: Added. + * UIProcess/API/efl/ewk_context_private.h: Added. + * UIProcess/API/efl/ewk_view.cpp: + (_Ewk_View_Private_Data): + (_ewk_view_priv_del): + (ewk_view_base_add): + (ewk_view_add_with_context): + (ewk_view_add): + (ewk_view_uri_set): + (ewk_view_uri_get): + * UIProcess/API/efl/ewk_view.h: + * UIProcess/API/efl/ewk_view_private.h: + +2012-06-09 Sukolsak Sakshuwong <sukolsak@google.com> + + Add UNDO_MANAGER flag + https://bugs.webkit.org/show_bug.cgi?id=87908 + + Reviewed by Tony Chang. + + * Configurations/FeatureDefines.xcconfig: + +2012-06-08 Brent Fulgham <bfulgham@webkit.org> + [WinCairo] Build fix after Windows export definition file change. + + * win/WebKit2CFLite.def: This file needs to be kept in sync with + WebKit2.def (aside from the WebKitInterface exports.) + +2012-06-08 Viatcheslav Ostapenko <ostapenko.viatcheslav@nokia.com> + + [Qt] [WK2] API tests randomly assert in WebLayerTreeRenderer::assignImageToLayer + https://bugs.webkit.org/show_bug.cgi?id=88667 + + Reviewed by Noam Rosenthal. + + Move deactivation of WebLayerTreeRenderer from LayerTreeHostProxy::purgeBackingStores + to WebLayerTreeRenderer::purgeGLResources. LayerTreeHostProxy::purgeBackingStores is + invoked on main thread after going through call gate and it is too late to deactivate + renderer here, because some update messages are able to go through. + WebLayerTreeRenderer::purgeGLResources is called directly from render node deallocation + and it is right place to deactivate renderer. + + * UIProcess/LayerTreeHostProxy.cpp: + (WebKit::LayerTreeHostProxy::purgeBackingStores): + * UIProcess/WebLayerTreeRenderer.cpp: + (WebKit::WebLayerTreeRenderer::purgeGLResources): + +2012-06-08 Carlos Garcia Campos <cgarcia@igalia.com> + + [GTK] Add API to get the library version to WebKit2 GTK+ + https://bugs.webkit.org/show_bug.cgi?id=88426 + + Reviewed by Martin Robinson. + + * GNUmakefile.am: + * GNUmakefile.list.am: + * UIProcess/API/gtk/WebKitVersion.cpp: Added. + (webkit_get_major_version): + (webkit_get_minor_version): + (webkit_get_micro_version): + * UIProcess/API/gtk/WebKitVersion.h.in: Added. + * UIProcess/API/gtk/docs/webkit2gtk-docs.sgml: Add new symbols. + * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Add new section + for WebKitVersion. + * UIProcess/API/gtk/tests/GNUmakefile.am: + * UIProcess/API/gtk/tests/TestWebKitVersion.cpp: Added. + (testWebKitVersion): + (testWebKitCheckVersion): + (beforeAll): + (afterAll): + * UIProcess/API/gtk/webkit2.h: Include WebKitVersion.h. + +2012-06-08 Dan Bernstein <mitz@apple.com> + + Tried to fix the Snow Leopard build after r119806. + + * WebKit2Prefix.h: + +2012-06-08 Andy Estes <aestes@apple.com> + + [WebKit2] Move Mac-specific bits from config.h to WebKit2Prefix.h + https://bugs.webkit.org/show_bug.cgi?id=88625 + + Reviewed by Dan Bernstein. + + Since the Mac supports prefix headers, there is no point in having + Mac-specific code in WebKit2's config.h. Move it to WebKit2Prefix.h. + + * WebKit2Prefix.h: + * config.h: + +2012-06-07 Kentaro Hara <haraken@chromium.org> + + Reduce Node object size from 72 byte to 64 byte + https://bugs.webkit.org/show_bug.cgi?id=88528 + + Reviewed by Ryosuke Niwa. + + Added a symbol for callRemovedLastRef(). + + * mac/WebKit2.order: + * win/WebKit2.def: + * win/WebKit2CFLite.def: + +2012-06-07 Andy Estes <aestes@apple.com> + + [WebKit2] Explicitly include CoreFoundation.h in config.h + https://bugs.webkit.org/show_bug.cgi?id=88619 + + Reviewed by Dan Bernstein. + + WebKit2 relies (probably unintentionally) on CoreFoundation.h being + included by CoreGraphics.h (via CGSession.h), but some versions of + CoreGraphics headers don't include CoreFoundation.h. WebKit2 should + include it explicitly in config.h. + + * config.h: Import CoreFoundation.h. + +2012-06-07 Andy Estes <aestes@apple.com> + + [WebKit2] Only include Cocoa.h on platforms that use AppKit + https://bugs.webkit.org/show_bug.cgi?id=88517 + + Reviewed by Sam Weinig. + + * WebKit2Prefix.h: Include Platform.h to get USE() macros. GTK needs to + include autotoolsconfig.h before including Platform.h, so do that first + if building on GTK. Then, if compiling an Objective-C file, it's safe + to include Foundation.h, but not necessarily Cocoa.h; only include the + latter if USE(APPKIT) is true. + * config.h: There's no need to import Cocoa.h since this is already + imported in the prefix header. + +2012-06-07 Anders Carlsson <andersca@apple.com> + + Search highlight does not scroll with the content of the page, and find overlay doesn't work, on large-enough window + https://bugs.webkit.org/show_bug.cgi?id=88577 + <rdar://problem/11430118> + + Reviewed by John Sullivan. + + Prevent the page overlay layer from falling into tiled mode. + + * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm: + (WebKit::TiledCoreAnimationDrawingArea::createPageOverlayLayer): + +2012-06-07 Alexander Færøy <ahf@0x90.dk> + + Add QML API tests for Device Pixel Ratio + https://bugs.webkit.org/show_bug.cgi?id=88531 + + Reviewed by Kenneth Rohde Christiansen. + + This patch adds an initial test case for the QML device pixel ratio + API. The test currently fails and is therefore marked as being + expected to fail. This will be fixed in a separated patch. + + * UIProcess/API/qt/tests/qmltests/WebView/tst_devicePixelRatio.qml: Added. + +2012-06-07 Christophe Dumez <christophe.dumez@intel.com> + + [EFL][WK2] WebKit2-EFL does not link in debug mode + https://bugs.webkit.org/show_bug.cgi?id=88518 + + Unreviewed. Fix WebKit2-EFL linking error in debug mode. + + * CMakeLists.txt: + +2012-06-07 Simon Pena <spena@igalia.com> + + [GTK] Fix broken build due to missing <SECTION> in GTK-DOC + https://bugs.webkit.org/show_bug.cgi?id=88525 + + Unreviewed gardening. Added missing <SECTION> tag. + + * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: + +2012-06-07 Carlos Garcia Campos <cgarcia@igalia.com> + + [GTK] Add API to register custom URI schemes to WebKit2 GTK+ API + https://bugs.webkit.org/show_bug.cgi?id=84133 + + Reviewed by Martin Robinson. + + * GNUmakefile.list.am: Add new files to compilation. + * UIProcess/API/gtk/WebKitPrivate.h: + * UIProcess/API/gtk/WebKitRequestManagerClient.cpp: Added. + (didReceiveURIRequest): Callback emitted by the C API when a + request for a custom URI scheme has been received. Call + webkitWebContextReceivedURIRequest() to handle the request. + (didFailToLoadURIRequest): Callback emitted by the C API when a + request for a custom URI scheme failed to load. Call + webkitWebContextDidFailToLoadURIRequest() to noitfy the web + context. + (attachRequestManagerClientToContext): Initialize the + WKSoupRequestManagerClient. + * UIProcess/API/gtk/WebKitRequestManagerClient.h: Added. + * UIProcess/API/gtk/WebKitURISchemeRequest.cpp: Added. + (webkit_uri_scheme_request_init): + (webkitURISchemeRequestFinalize): + (webkit_uri_scheme_request_class_init): + (webkitURISchemeRequestCreate): Create a new + WebKitURISchemeRequest for the given URI and request identifier. + (webkitURISchemeRequestGetID): Return the request identifier. + (webkitURISchemeRequestCancel): Cancel the request operation. + (webkit_uri_scheme_request_get_scheme): Return the scheme of the + request. + (webkit_uri_scheme_request_get_uri): Return the full URI of the + request. + (webkit_uri_scheme_request_get_path): Return the path of the URI. + (webkitURISchemeRequestReadCallback): Read callback emitted when + reading the contents of the input stream. + (webkit_uri_scheme_request_finish): Finish the request by reading + the contents of the input stream and sending the data to the + WebProcess. + * UIProcess/API/gtk/WebKitURISchemeRequest.h: Added. + * UIProcess/API/gtk/WebKitURISchemeRequestPrivate.h: Added. + * UIProcess/API/gtk/WebKitWebContext.cpp: + (WebKitURISchemeHandler::WebKitURISchemeHandler): Helper struct to + save callback and user data of registered URI schemes. + (createDefaultWebContext): Initialize the SoupRequestManager. + (webkit_web_context_register_uri_scheme): Public API to register a + custom URI scheme providing a callback that will be called to + handle requests for that URI scheme. + (webkitWebContextGetRequestManager): Helper private method to + return the SoupRequestManager. + (webkitWebContextReceivedURIRequest): Get the + WebKitURISchemeHandler for the given request identifier and call + the callback. Save the request in the request map. + (webkitWebContextDidFailToLoadURIRequest): Cancel the ongoing + request. + (webkitWebContextDidFinishURIRequest): Remove the request from the + map. + * UIProcess/API/gtk/WebKitWebContext.h: + * UIProcess/API/gtk/WebKitWebContextPrivate.h: + * UIProcess/API/gtk/docs/webkit2gtk-docs.sgml: Add + WebKitURISchemeRequest section. + * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Add new symbols. + * UIProcess/API/gtk/docs/webkit2gtk.types: Add + webkit_uri_scheme_request_get_type. + * UIProcess/API/gtk/tests/TestWebKitWebContext.cpp: + (testWebContextURIScheme): + (beforeAll): + * UIProcess/API/gtk/webkit2.h: Include WebKitURISchemeRequest.h. + +2012-06-07 Andras Becsi <andras.becsi@nokia.com> + + [Qt][WK2] setPageItemRectVisible() is not guarded by ViewportUpdateDeferrer at scaleAnimationValueChanged() + https://bugs.webkit.org/show_bug.cgi?id=87954 + + Reviewed by Kenneth Rohde Christiansen. + + Resetting the end value, the easing curve or the duration of the scale animation triggers + a recalculation of the animation interval. This might change the current value of the + animated property. + Since guarding of setPageItemRectVisible() relies on animation state change we have to + make sure we only act on animation value changes if the animation is in active state. + + * UIProcess/qt/QtViewportHandler.cpp: + (WebKit::QtViewportHandler::QtViewportHandler): + (WebKit::QtViewportHandler::animatePageItemRectVisible): + (WebKit::QtViewportHandler::scaleAnimationValueChanged): + +2012-06-06 Carlos Garcia Campos <cgarcia@igalia.com> + + [SOUP] WebSoupRequestManager should handle loading errors and zero-length replies + https://bugs.webkit.org/show_bug.cgi?id=88087 + + Reviewed by Martin Robinson. + + * UIProcess/API/C/soup/WKSoupRequestManager.h: + * UIProcess/soup/WebSoupRequestManagerClient.cpp: + (WebKit::WebSoupRequestManagerClient::didFailToLoadURIRequest): + Call didFailToLoadURIRequest in the client if present. + * UIProcess/soup/WebSoupRequestManagerClient.h: + * UIProcess/soup/WebSoupRequestManagerProxy.cpp: + (WebKit::WebSoupRequestManagerProxy::WebSoupRequestManagerProxy): + Initialize m_loadFailed. + (WebKit::WebSoupRequestManagerProxy::didReceiveURIRequestData): + Don't send more data to the web process if the resource failed to + load. + (WebKit::WebSoupRequestManagerProxy::didFailToLoadURIRequest): Set + m_loadFailed and notifiy the client calling didFailToLoadURIRequest. + * UIProcess/soup/WebSoupRequestManagerProxy.h: + * UIProcess/soup/WebSoupRequestManagerProxy.messages.in: Add + DidFailToLoadURIRequest message. + * WebProcess/soup/WebKitSoupRequestGeneric.cpp: + (webkitSoupRequestGenericSendAsync): Pass the cancellable to the + WebSoupRequestManager. + * WebProcess/soup/WebSoupRequestManager.cpp: + (WebKit::WebSoupRequestAsyncData::WebSoupRequestAsyncData): Helper + struct to save requests. + (WebSoupRequestAsyncData): Add a weak pointer to invalidate the + request when it's destroyed before the operation has finished. + (WebKit::WebSoupRequestAsyncData::~WebSoupRequestAsyncData): + Remove the weak pointer. + (WebKit::WebSoupRequestAsyncData::requestFailed): Return whther + the request failed. + (WebKit::WebSoupRequestAsyncData::releaseResult): Return the + result and clear the pointer. + (WebKit::WebSoupRequestManager::didHandleURIRequest): Create and + empty memory stream for zero-length replies instead of creating an + error. + (WebKit::WebSoupRequestManager::didReceiveURIRequestData): If the + request failed and more data expected from the UI process, send a + message to the UI process to notify that the resource load failed. + (WebKit::WebSoupRequestManager::send): Save request information in + the request map. + * WebProcess/soup/WebSoupRequestManager.h: + +2012-06-06 Andy Estes <aestes@apple.com> + + Wrap uppercaseWord, lowercaseWord, and capitalizeWord with USE(APPKIT) + https://bugs.webkit.org/show_bug.cgi?id=88504 + + Reviewed by Dan Bernstein. + + uppercaseWord, lowercaseWord, and capitalizeWord are methods declared + by NSResponder that subclasses are expected to implement. WebKit should + only support these implementations on platforms that use AppKit. + + * UIProcess/WebPageProxy.h: + * WebProcess/WebCoreSupport/WebEditorClient.h: + * WebProcess/WebCoreSupport/mac/WebEditorClientMac.mm: + * WebProcess/WebPage/WebPage.cpp: + * WebProcess/WebPage/WebPage.h: + * WebProcess/WebPage/WebPage.messages.in: + +2012-06-06 chandra Shekar Vallala <chandra.vallala@motorola.com> + + [WK2-Gtk]Compilation errors with flag CONTEXT_MENUS=0 + https://bugs.webkit.org/show_bug.cgi?id=87842 + + Reviewed by Martin Robinson. + + Fix for compilation errors while building webkit2-gtk with CONTEXT_MENUS=0 + + * UIProcess/gtk/WebContextMenuProxyGtk.cpp: Added code under CONTEXT_MENUS CC + * UIProcess/gtk/WebContextMenuProxyGtk.h: Ditto + * WebProcess/WebCoreSupport/gtk/WebContextMenuClientGtk.cpp: Ditto + +2012-06-06 Michael Brüning <michael.bruning@nokia.com> + + [Qt][WK2] Add preferredMinimumContentsWidth to the viewport info in MiniBrowser. + https://bugs.webkit.org/show_bug.cgi?id=88327 + + Reviewed by Kenneth Rohde Christiansen. + + * UIProcess/API/qt/qquickwebview.cpp: + (QQuickWebViewExperimental::setPreferredMinimumContentsWidth): + * UIProcess/API/qt/qquickwebview_p.h: + +2012-06-06 Tim Horton <timothy_horton@apple.com> + + WebPage::windowIsVisible is incorrect during resumePainting + https://bugs.webkit.org/show_bug.cgi?id=88374 + <rdar://problem/11587039> + + Reviewed by Simon Fraser. + + Currently, when changing window visibility, WKView calls viewStateDidChange(ViewIsVisible) + and then _updateWindowVisibility. This means that during viewStateDidChange, the WebPage's + windowIsVisible state is incorrect. + + viewStateDidChange(ViewIsVisible) can end up in (one of the DrawingArea implementations)::resumePainting(), + which uses windowIsVisible to determine whether or not to unpause requestAnimationFrame. + + This results in a state where, with some configurations, doing the following: + + 1. requestAnimationFrame() + 2. requestFullScreen() + 3. requestAnimationFrame() + 4. cancelFullScreen() + 5. requestAnimationFrame() + + Will cause the second and third rAF calls to have no effect. Even after cancelFullScreen() is called, + the fact that we have had unpaired suspend/resumeScriptedAnimations will cause the suspend count + on the ScriptedAnimationController to never return to zero, which will cause us to never + recover rAF functionality. + + The fix is very simple: we should _updateWindowVisibility *before* viewStateDidChange, so that it is + always correct for any code called underneath that method. + + * UIProcess/API/mac/WKView.mm: + (-[WKView viewDidMoveToWindow]): + (-[WKView _windowDidOrderOffScreen:]): + (-[WKView _windowDidOrderOnScreen:]): + +2012-06-05 Dinu Jacob <dinu.jacob@nokia.com> + + [Qt][WK2] Use Component.onCompleted in API tests for single and multi file upload tests. + https://bugs.webkit.org/show_bug.cgi?id=88247 + + Reviewed by Kenneth Rohde Christiansen. + + With r116936, Component.onCompleted can be used for callback instead of the + 1s timer in single and multi file upload tests. + + * UIProcess/API/qt/tests/qmltests/WebView/tst_multiFileUpload.qml: + * UIProcess/API/qt/tests/qmltests/WebView/tst_singleFileUpload.qml: + +2012-06-04 Stephanie Lewis <slewis@apple.com> + + https://bugs.webkit.org/show_bug.cgi?id=88370 + Memory sampler should trigger low memory signal + + Reviewed by Geoff Garen. + + Send low memory signal when running the memory sampler. We'd + like to test memory that cannot be freed. + + * Shared/WebMemorySampler.cpp: + (WebKit::WebMemorySampler::sampleTimerFired): + * Shared/WebMemorySampler.h: + (WebMemorySampler): + * Shared/mac/WebMemorySampler.mac.mm: + (WebKit): + (WebKit::WebMemorySampler::sendMemoryPressureEvent): + +2012-06-05 Brady Eidson <beidson@apple.com> + + <rdar://problem/11575898> and https://bugs.webkit.org/show_bug.cgi?id=88372 + REGRESSION(110494): Can no longer drag-and-drop links into FileMaker Pro 12 + + - Before r110494 we used to write the NSStringPboardType to the pasteboard. + After r110494 we write NSURLPboardType instead. + That's basically a no-op, but the NSStringPboardType needs to be restored. + - Before r110494 we wrote the link destination URL to the pasteboard. + After r110494 we write the image src URL if the link is an image. + We need to revert to writing the link URL. + + Fortunately these changes can be accomplished with a 2-line fix. + + Reviewed by Enrica Casucci. + + * UIProcess/API/mac/WKView.mm: + (-[WKView _setPromisedData:WebCore::withFileName:withExtension:withTitle:withURL:withVisibleURL:withArchive:WebCore::forPasteboard:]): + n + +2012-06-05 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> + + [Qt] Implement log channel initialization for WebKit2 + + Reviewed by Alexis Menard. + + * Platform/Logging.cpp: + (WebKit): + * Platform/Logging.h: + (WebKit): + * Platform/qt/LoggingQt.cpp: Copied from Source/WebKit2/Platform/gtk/LoggingGtk.cpp + (WebKit): + (WebKit::initializeLogChannel): + * Target.pri: + +2012-06-05 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> + + WebLayerTreeRenderer behaves wrongly when no contentsScale is set. + https://bugs.webkit.org/show_bug.cgi?id=88357 + + Reviewed by Alexis Menard. + + The contentsScale needs to get a default value in case no + value is explicitely set yet. + This fixes the blank-until-resize problem when running MiniBrowser + in --desktop mode. + + * UIProcess/WebLayerTreeRenderer.cpp: + (WebKit::WebLayerTreeRenderer::WebLayerTreeRenderer): + +2012-06-05 Alexis Menard <alexis.menard@openbossa.org> + + [Qt] Don't propagate viewport size changes if the viewport is empty. + https://bugs.webkit.org/show_bug.cgi?id=88336 + + Reviewed by Tor Arne Vestbø. + + Qt Quick sequentially set the x, y, width, height of the view. We really want to + start propagating further when the size of the viewport becomes valid, i.e. both + height and width are defined. In any case lower level classes are discarding an empty + size such as WebPage::sendViewportAttributesChanged() so it was pointless to send the size + through the IPC bus for nothing. + + * UIProcess/API/qt/qquickwebview.cpp: + (QQuickWebViewLegacyPrivate::updateViewportSize): + +2012-06-05 Carlos Garcia Campos <cgarcia@igalia.com> + + [GTK] Add webkit_download_get_received_data_length to WebKit2 GTK+ API + https://bugs.webkit.org/show_bug.cgi?id=88323 + + Reviewed by Martin Robinson. + + * UIProcess/API/gtk/WebKitDownload.cpp: + (webkit_download_get_received_data_length): + * UIProcess/API/gtk/WebKitDownload.h: + * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: + * UIProcess/API/gtk/tests/TestDownloads.cpp: + +2012-06-05 Dongwoo Im <dw.im@samsung.com> + + Add 'isProtocolHandlerRegistered' and 'unregisterProtocolHandler'. + https://bugs.webkit.org/show_bug.cgi?id=73176 + + Reviewed by Adam Barth. + + Two more APIs are added in Custom Scheme Handler specification. + http://dev.w3.org/html5/spec/Overview.html#custom-handlers + One is 'isProtocolHandlerRegistered' to query whether the specific URL + is registered or not. + The other is 'unregisterProtocolHandler' to remove the registered URL. + + * Configurations/FeatureDefines.xcconfig: Add a macro 'ENABLE_CUSTOM_SCHEME_HANDLER'. + +2012-06-05 Christophe Dumez <christophe.dumez@intel.com> + + [EFL][WK2] WebKit2-EFL does not link with gold linker + https://bugs.webkit.org/show_bug.cgi?id=88295 + + Unreviewed. Fix linking when using gold linker. + + * PlatformEfl.cmake: + +2012-06-05 Mario Sanchez Prada <msanchez@igalia.com> + + [GTK][WK2] Implement API for Geolocation permission requests in the GTK port + https://bugs.webkit.org/show_bug.cgi?id=83879 + + Reviewed by Carlos Garcia Campos. + + Added a new kind of permission request for supporting the + Geolocation API in WebKit2GTK+. + + New WebKitGeolocationPermissionRequest class, implementing the + WebKitPermissionRequest interface, to enabling client applications + to allow or deny geolocation permission requests. + + * GNUmakefile.list.am: Added new files. + * UIProcess/API/gtk/WebKitGeolocationPermissionRequest.cpp: Added. + (_WebKitGeolocationPermissionRequestPrivate): + (webkitGeolocationPermissionRequestAllow): + (webkitGeolocationPermissionRequestDeny): + (webkit_permission_request_interface_init): + (webkit_geolocation_permission_request_init): + (webkitGeolocationPermissionRequestFinalize): + (webkit_geolocation_permission_request_class_init): + (webkitGeolocationPermissionRequestCreate): + * UIProcess/API/gtk/WebKitGeolocationPermissionRequest.h: Added. + (_WebKitGeolocationPermissionRequest): + (_WebKitGeolocationPermissionRequestClass): + * UIProcess/API/gtk/WebKitGeolocationPermissionRequestPrivate.h: Added. + + Include WKGeolocationPermissionRequest.h in WebKitPrivate.h, so we + can use it from the new WebKitGeolocationPermissionRequest class. + + * UIProcess/API/gtk/WebKitPrivate.h: Added new include. + + Implement geolocation permission requests in the UI client. + + * UIProcess/API/gtk/WebKitUIClient.cpp: + (decidePolicyForGeolocationPermissionRequest): Create a new + instance of the WebKitGeolocationPermissionRequest class and call + to webkitWebViewMakePermissionRequest(). + (attachUIClientToView): Provide an implementation function for + decidePolicyForGeolocationPermissionRequest. + * UIProcess/API/gtk/WebKitWebView.h: Add new element to + WebKitPermissionRequestType enumeration for geolocation requests. + * UIProcess/API/gtk/webkit2.h: Added header file for + WebKitGeolocationPermissionRequest + + New unit tests to test allowing and denying permission requests. + + * UIProcess/API/gtk/tests/TestWebKitWebView.cpp: + (testWebViewPermissionRequests): New test that loads a simple HTML + with JavaScript code requesting the current location. + (beforeAll): Added new test. + + Updated documentation files. + + * UIProcess/API/gtk/docs/webkit2gtk-docs.sgml: + * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: + +2012-06-04 Sadrul Habib Chowdhury <sadrul@chromium.org> + + [chromium] Fix software rendering for device-scale-factor > 1 + https://bugs.webkit.org/show_bug.cgi?id=88136 + + Reviewed by Darin Fisher. + + Export WebCore::Page::setDeviceScaleFactor and WebCore::Settings::setDefaultDeviceScaleFactor. + + * win/WebKit2.def: + * win/WebKit2CFLite.def: + +2012-06-04 Andy Estes <aestes@apple.com> + + Use ENABLE() and USE() macros in a few more places + https://bugs.webkit.org/show_bug.cgi?id=88245 + + Reviewed by Anders Carlsson. + + * UIProcess/API/C/WKPluginSiteDataManager.cpp: Only include npapi.h if + Netscape plug-in API is enabled. + * UIProcess/mac/CorrectionPanel.h: Wrap with USE(AUTOCORRECTION_PANEL) + * WebProcess/Authentication/AuthenticationManager.cpp: Use the stub + version of tryUsePlatformCertificateInfoForChallenge if + Security.framework isn't available. + * WebProcess/WebProcess.messages.in: Only generate two messages if + Security.framework is available. + * WebProcess/mac/KeychainItemShimMethods.mm: Wrap with + USE(SECURITY_FRAMEWORK). + +2012-06-04 Andy Estes <aestes@apple.com> + + Add stub WebKit2 implementations of PLUGIN_PROXY_FOR_VIDEO methods declared in FrameLoaderClient + https://bugs.webkit.org/show_bug.cgi?id=88244 + + Reviewed by Anders Carlsson. + + * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: + (WebKit::WebFrameLoaderClient::createMediaPlayerProxyPlugin): Add a stub implementation. + (WebKit::WebFrameLoaderClient::hideMediaPlayerProxyPlugin): Ditto. + (WebKit::WebFrameLoaderClient::showMediaPlayerProxyPlugin): Ditto. + * WebProcess/WebCoreSupport/WebFrameLoaderClient.h: + +2012-06-04 Mario Sanchez Prada <msanchez@igalia.com> + + [GTK][WK2] Implement geolocation provider for the GTK port + https://bugs.webkit.org/show_bug.cgi?id=83877 + + Reviewed by Carlos Garcia Campos. + + Add a new client-based geolocation provider for WebKit2GTK+, relying the + new Geoclue-based geolocation provider available in WebCore. + + * GNUmakefile.am: + * GNUmakefile.list.am: + * UIProcess/API/gtk/WebKitGeolocationProvider.cpp: Added. + (toGeolocationProvider): + (startUpdatingCallback): + (stopUpdatingCallback): + (WebKitGeolocationProvider::~WebKitGeolocationProvider): + (WebKitGeolocationProvider::create): + (WebKitGeolocationProvider::WebKitGeolocationProvider): + (WebKitGeolocationProvider::startUpdating): + (WebKitGeolocationProvider::stopUpdating): + (WebKitGeolocationProvider::notifyPositionChanged): + (WebKitGeolocationProvider::notifyErrorOccurred): + * UIProcess/API/gtk/WebKitGeolocationProvider.h: Added. + * UIProcess/API/gtk/WebKitPrivate.h: + * UIProcess/API/gtk/WebKitWebContext.cpp: + (_WebKitWebContextPrivate): + (createDefaultWebContext): + +2012-06-04 Zalan Bujtas <zbujtas@gmail.com> + + [Qt][WK2] Rename QtViewportInteractionEngine to QtViewportHandler. + https://bugs.webkit.org/show_bug.cgi?id=88226 + + Reviewed by Kenneth Rohde Christiansen. + + * Target.pri: + * UIProcess/API/qt/qquickwebpage_p_p.h: + (WebKit): + * UIProcess/API/qt/qquickwebview.cpp: + (QQuickWebViewFlickablePrivate::~QQuickWebViewFlickablePrivate): + (QQuickWebViewFlickablePrivate::onComponentComplete): + (QQuickWebViewFlickablePrivate::didChangeViewportProperties): + (QQuickWebViewFlickablePrivate::updateViewportSize): + (QQuickWebViewFlickablePrivate::pageDidRequestScroll): + (QQuickWebViewFlickablePrivate::didChangeContentsSize): + * UIProcess/API/qt/qquickwebview_p.h: + (WebKit): + * UIProcess/API/qt/qquickwebview_p_p.h: + (WebKit): + (QQuickWebViewPrivate::viewportHandler): + (QQuickWebViewFlickablePrivate::viewportHandler): + (QQuickWebViewFlickablePrivate): + * UIProcess/API/qt/qwebkittest.cpp: + (QWebKitTest::contentsScale): + (QWebKitTest::devicePixelRatio): + (QWebKitTest::initialScale): + (QWebKitTest::minimumScale): + (QWebKitTest::maximumScale): + (QWebKitTest::isScalable): + (QWebKitTest::layoutSize): + * UIProcess/qt/QtGestureRecognizer.cpp: + (WebKit::QtGestureRecognizer::viewportHandler): + * UIProcess/qt/QtGestureRecognizer.h: + (WebKit): + * UIProcess/qt/QtPanGestureRecognizer.cpp: + (WebKit::QtPanGestureRecognizer::update): + (WebKit::QtPanGestureRecognizer::finish): + (WebKit::QtPanGestureRecognizer::cancel): + * UIProcess/qt/QtPinchGestureRecognizer.cpp: + (WebKit::QtPinchGestureRecognizer::update): + (WebKit::QtPinchGestureRecognizer::finish): + (WebKit::QtPinchGestureRecognizer::cancel): + * UIProcess/qt/QtViewportHandler.cpp: Copied from Source/WebKit2/UIProcess/qt/QtViewportInteractionEngine.cpp. + (WebKit::ViewportUpdateDeferrer::ViewportUpdateDeferrer): + (WebKit::ViewportUpdateDeferrer::~ViewportUpdateDeferrer): + (ViewportUpdateDeferrer): + (WebKit::QtViewportHandler::suspendPageContent): + (WebKit::QtViewportHandler::resumePageContent): + (WebKit::QtViewportHandler::cssScaleFromItem): + (WebKit::QtViewportHandler::itemScaleFromCSS): + (WebKit::QtViewportHandler::itemCoordFromCSS): + (WebKit::QtViewportHandler::itemRectFromCSS): + (WebKit::QtViewportHandler::QtViewportHandler): + (WebKit::QtViewportHandler::~QtViewportHandler): + (WebKit::QtViewportHandler::innerBoundedCSSScale): + (WebKit::QtViewportHandler::outerBoundedCSSScale): + (WebKit::QtViewportHandler::viewportAttributesChanged): + (WebKit::QtViewportHandler::pageContentsSizeChanged): + (WebKit::QtViewportHandler::setPageItemRectVisible): + (WebKit::QtViewportHandler::animatePageItemRectVisible): + (WebKit::QtViewportHandler::flickMoveStarted): + (WebKit::QtViewportHandler::flickMoveEnded): + (WebKit::QtViewportHandler::pageItemPositionChanged): + (WebKit::QtViewportHandler::pageContentPositionRequested): + (WebKit::QtViewportHandler::scaleAnimationStateChanged): + (WebKit::QtViewportHandler::scaleAnimationValueChanged): + (WebKit::QtViewportHandler::touchBegin): + (WebKit::QtViewportHandler::touchEnd): + (WebKit::QtViewportHandler::computePosRangeForPageItemAtScale): + (WebKit::QtViewportHandler::focusEditableArea): + (WebKit::QtViewportHandler::zoomToAreaGestureEnded): + (WebKit::QtViewportHandler::nearestValidBounds): + (WebKit::QtViewportHandler::setCSSScale): + (WebKit::QtViewportHandler::currentCSSScale): + (WebKit::QtViewportHandler::scrollAnimationActive): + (WebKit::QtViewportHandler::panGestureActive): + (WebKit::QtViewportHandler::panGestureStarted): + (WebKit::QtViewportHandler::panGestureRequestUpdate): + (WebKit::QtViewportHandler::panGestureEnded): + (WebKit::QtViewportHandler::panGestureCancelled): + (WebKit::QtViewportHandler::scaleAnimationActive): + (WebKit::QtViewportHandler::cancelScrollAnimation): + (WebKit::QtViewportHandler::interruptScaleAnimation): + (WebKit::QtViewportHandler::pinchGestureActive): + (WebKit::QtViewportHandler::pinchGestureStarted): + (WebKit::QtViewportHandler::pinchGestureRequestUpdate): + (WebKit::QtViewportHandler::pinchGestureEnded): + (WebKit::QtViewportHandler::pinchGestureCancelled): + (WebKit::QtViewportHandler::visibleContentsRect): + (WebKit::QtViewportHandler::informVisibleContentChange): + (WebKit::QtViewportHandler::viewportItemSizeChanged): + (WebKit::QtViewportHandler::scaleContent): + * UIProcess/qt/QtViewportHandler.h: Copied from Source/WebKit2/UIProcess/qt/QtViewportInteractionEngine.h. + (QtViewportHandler): + * UIProcess/qt/QtViewportInteractionEngine.cpp: Removed. + * UIProcess/qt/QtViewportInteractionEngine.h: Removed. + * UIProcess/qt/QtWebPageEventHandler.cpp: + (WebKit::QtWebPageEventHandler::QtWebPageEventHandler): + (WebKit::QtWebPageEventHandler::setViewportHandler): + (WebKit::QtWebPageEventHandler::inputPanelVisibleChanged): + (WebKit::QtWebPageEventHandler::doneWithTouchEvent): + (WebKit::QtWebPageEventHandler::didFindZoomableArea): + * UIProcess/qt/QtWebPageEventHandler.h: + (WebKit): + (QtWebPageEventHandler): + (WebKit::QtWebPageEventHandler::viewportHandler): + +2012-06-04 David Kilzer <ddkilzer@apple.com> + + BUILD FIX: FeatureDefines.xcconfig should match across projects + + * Configurations/FeatureDefines.xcconfig: + - Add missing ENABLE_LEGACY_CSS_VENDOR_PREFIXES. + +2012-06-04 Allan Sandfeld Jensen <allan.jensen@nokia.com> + + [Qt] Tap-to-zoom overshoot animation. + https://bugs.webkit.org/show_bug.cgi?id=87108 + + Reviewed by Tor Arne Vestbø. + + Reverts the change in animation, so the default is more "neutral". + This should be made configurable later. + + * UIProcess/qt/QtViewportInteractionEngine.cpp: + (WebKit::QtViewportInteractionEngine::animatePageItemRectVisible): + +2012-06-04 Andras Becsi <andras.becsi@nokia.com> + + [Qt][WK2] Refactor the tap gesture recognizer + https://bugs.webkit.org/show_bug.cgi?id=88096 + + Reviewed by Simon Hausmann. + + Refactor the tap gesture recognizer so that its internal state machine is + self contained and independent of input event types. + Also change the internal API for tap highlighting to make the code easier + to understand on the caller side. + + This patch makes the tap gesture recognizer more robust, consistent with + other gesture recognizers and fixes some issues related to highlighting + and link activation with respect to native touch events. + + * UIProcess/qt/QtTapGestureRecognizer.cpp: + (WebKit::QtTapGestureRecognizer::QtTapGestureRecognizer): + (WebKit::QtTapGestureRecognizer::withinDistance): + (WebKit::QtTapGestureRecognizer::update): + (WebKit::QtTapGestureRecognizer::finish): + (WebKit::QtTapGestureRecognizer::cancel): + (WebKit::QtTapGestureRecognizer::highlightTimeout): + (WebKit::QtTapGestureRecognizer::singleTapTimeout): + (WebKit::QtTapGestureRecognizer::tapAndHoldTimeout): + (WebKit::QtTapGestureRecognizer::reset): + * UIProcess/qt/QtTapGestureRecognizer.h: + (QtTapGestureRecognizer): + * UIProcess/qt/QtWebPageEventHandler.cpp: + (WebKit::QtWebPageEventHandler::QtWebPageEventHandler): + (WebKit::QtWebPageEventHandler::activateTapHighlight): + (WebKit::QtWebPageEventHandler::deactivateTapHighlight): + (WebKit): + (WebKit::QtWebPageEventHandler::handleSingleTapEvent): + (WebKit::QtWebPageEventHandler::handleDoubleTapEvent): + (WebKit::QtWebPageEventHandler::doneWithTouchEvent): + * UIProcess/qt/QtWebPageEventHandler.h: + (QtWebPageEventHandler): + +2012-06-02 Geoffrey Garen <ggaren@apple.com> + + Try to fix the Windows build. + + * win/WebKit2.def: + * win/WebKit2CFLite.def: + +2012-06-02 Andy Estes <aestes@apple.com> + + [WebKit2] Use USE(), ENABLE(), and HAVE() macros in more places + https://bugs.webkit.org/show_bug.cgi?id=88182 + + Reviewed by Sam Weinig. + + Use USE(APPKIT): + * Shared/mac/NativeWebKeyboardEventMac.mm: + * Shared/mac/NativeWebMouseEventMac.mm: + * Shared/mac/NativeWebWheelEventMac.mm: + * Shared/mac/WebEventFactory.h: + * UIProcess/API/mac/WKTextInputWindowController.h: + * UIProcess/API/mac/WKTextInputWindowController.mm: + * UIProcess/PageClient.h: + * UIProcess/WebPageProxy.h: + + Use ENABLE(NETSCAPE_PLUGIN_API): + * UIProcess/API/C/WKPluginSiteDataManager.cpp: + (WKPluginSiteDataManagerClearSiteData): + (WKPluginSiteDataManagerClearAllSiteData): + + Use USE(AUTOCORRECTION_PANEL): + * UIProcess/API/mac/PageClientImpl.h: + * UIProcess/API/mac/PageClientImpl.mm: + (WebKit::PageClientImpl::showCorrectionPanel): + (WebKit::PageClientImpl::dismissCorrectionPanel): + (WebKit::PageClientImpl::dismissCorrectionPanelSoon): + * UIProcess/mac/CorrectionPanel.mm: + + Use HAVE(HOSTED_CORE_ANIMATION): + * UIProcess/mac/WebContextMac.mm: + + Put ENABLE(FULLSCREEN_API) in the right place: + * UIProcess/mac/WebFullScreenManagerProxyMac.mm: + + Remove unnecessary use of USE(APPKIT): + * UIProcess/mac/WebPageProxyMac.mm: + + Use USE(SECURITY_FRAMEWORK): + * WebProcess/Authentication/mac/AuthenticationManager.mac.mm: + + Use ENABLE(CONTEXT_MENUS): + * WebProcess/WebCoreSupport/mac/WebContextMenuClientMac.mm: + + Use USE(SECURITY_FRAMEWORK): + * WebProcess/WebProcess.h: + + Remove unnecessary use of USE(SECURITY_FRAMEWORK): + * WebProcess/mac/WebProcessMac.mm: + +2012-06-02 Andy Estes <aestes@apple.com> + + Remove a duplicate INIT() from WebSystemInterface.mm + https://bugs.webkit.org/show_bug.cgi?id=88181 + + Reviewed by Anders Carlsson. + + * WebProcess/WebCoreSupport/mac/WebSystemInterface.mm: + (InitWebCoreSystemInterface): + +2012-06-02 Andy Estes <aestes@apple.com> + + Remove unnecessary import of <Cocoa/Cocoa.h> + https://bugs.webkit.org/show_bug.cgi?id=88180 + + Reviewed by Sam Weinig. + + * UIProcess/mac/WKFullKeyboardAccessWatcher.h: + +2012-06-02 Andy Estes <aestes@apple.com> + + Ensure cpu_type_t is defined by including <mach/machine.h> + https://bugs.webkit.org/show_bug.cgi?id=88178 + + Reviewed by Anders Carlsson. + + * Shared/Plugins/PluginModuleInfo.h: + +2012-06-02 Sam Weinig <sam@webkit.org> + + InjectedBundles' sandbox extensions don't do what we think they do + https://bugs.webkit.org/show_bug.cgi?id=88177 + + Reviewed by Anders Carlsson. + + This cannot be tested with our current infrastructure (or any modifications of the + infrastructure I can think of) since it relies on the bundle being put outside + the build directory where WebKit is put. + + * WebProcess/InjectedBundle/mac/InjectedBundleMac.cpp: + (WebKit::InjectedBundle::load): + Use SandboxExtension::consumePermanently() rather than consume(), otherwise, + nulling out the SandboxExtension a few lines later invalidates the extension + we just consumed. + +2012-06-02 Dan Bernstein <mitz@apple.com> + + Reverted the last change. + + * WebKit2.xcodeproj/project.pbxproj: + +2012-06-02 Dan Bernstein <mitz@apple.com> + + Stop treating two Python scripts as private headers. + + * WebKit2.xcodeproj/project.pbxproj: Removed model.py and parser.py from the Copy Headers + build phase. + +2012-06-02 Zeno Albisser <zeno@webkit.org> + + Fix and enable WebGL for WebKit2 on Qt. + https://bugs.webkit.org/show_bug.cgi?id=86214 + + Added glue code to make use of GraphicsSurface + as a backend for the webgl-canvas in case of WK2. + + Reviewed by Noam Rosenthal. + + * UIProcess/API/qt/qwebpreferences.cpp: + (QWebPreferencesPrivate::testAttribute): + (QWebPreferencesPrivate::setAttribute): + (QWebPreferences::webGLEnabled): + (QWebPreferences::setWebGLEnabled): + * UIProcess/API/qt/qwebpreferences_p.h: + * UIProcess/API/qt/qwebpreferences_p_p.h: + Added WebGLEnabled enum to allow enabling/disabling of + WebGL using QWebPreferences. + + * UIProcess/LayerTreeHostProxy.cpp: + (WebKit::LayerTreeHostProxy::syncCanvas): + Dispatch syncCanvas calls to the apropriate + WebLayerTreeRenderer. + + * UIProcess/LayerTreeHostProxy.h: + (LayerTreeHostProxy): + * UIProcess/LayerTreeHostProxy.messages.in: + * UIProcess/WebLayerTreeRenderer.h: + (WebLayerTreeRenderer): + * UIProcess/WebLayerTreeRenderer.cpp: + (WebKit::WebLayerTreeRenderer::syncCanvas): + (WebKit::WebLayerTreeRenderer::deleteLayer): + (WebKit::WebLayerTreeRenderer::purgeGLResources): + Create a TextureMapperSurfaceBackingStore for the canvas + if necessary and pass or update the graphicsSurfaceToken + for to be used with the backing store. + + * WebProcess/WebCoreSupport/WebGraphicsLayer.cpp: + (WebCore::WebGraphicsLayer::WebGraphicsLayer): + (WebCore): + (WebCore::WebGraphicsLayer::setContentsToCanvas): + (WebCore::WebGraphicsLayer::syncCanvas): + Copy the multisample framebuffer contents onto the GraphicsSurface. + Notify the UIProcess of the availability of a new texture. + (WebCore::WebGraphicsLayer::syncCompositingStateForThisLayerOnly): + Sync the canvas as well. + + * WebProcess/WebCoreSupport/WebGraphicsLayer.h: + Added a pure virtual function syncCanvas. + This is guarded by PLATFORM(QT). + (WebGraphicsLayerClient): + (WebGraphicsLayer): + + * WebProcess/WebPage/qt/LayerTreeHostQt.cpp: + (WebKit::LayerTreeHostQt::syncLayerChildren): + (WebKit): + (WebKit::LayerTreeHostQt::syncCanvas): + * WebProcess/WebPage/qt/LayerTreeHostQt.h: + (LayerTreeHostQt): + +2012-06-01 Brady Eidson <beidson@apple.com> + + <rdar://problem/11335622> and https://bugs.webkit.org/show_bug.cgi?id=88119 + REGRESSION (r99448) Zero-sized plug-ins no longer get an NPP_SetWindow call + + Followup to r119260 + + Rubber-stamped by Anders Carlsson. + + * WebProcess/Plugins/Netscape/NetscapePlugin.cpp: + (WebKit::NetscapePlugin::callSetWindow): Set the m_hasCalledSetWindow here... + (WebKit::NetscapePlugin::geometryDidChange): ...instead of here. + +2012-06-01 Brady Eidson <beidson@apple.com> + + <rdar://problem/11335622> and https://bugs.webkit.org/show_bug.cgi?id=88119 + REGRESSION (r99448) Zero-sized plug-ins no longer get an NPP_SetWindow call + + Reviewed by Oliver Hunt. + + Add a flag to NetscapePlugin to track whether or not NPP_SetWindow has ever been called. + Check this flag in geometryDidChange to make sure every plug-in gets the call at least once. + + "Everybody gets one. Tell him, Peter." + "Apparently everybody gets one." + "Bingo." + + * WebProcess/Plugins/Netscape/NetscapePlugin.cpp: + (WebKit::NetscapePlugin::NetscapePlugin): + (WebKit::NetscapePlugin::geometryDidChange): + * WebProcess/Plugins/Netscape/NetscapePlugin.h: + (NetscapePlugin): + +2012-06-01 Dinu Jacob <dinu.jacob@nokia.com> + + [WK2] WebLayerTreeRenderer::setContentsSize called synchronously + https://bugs.webkit.org/show_bug.cgi?id=88091 + + Reviewed by Noam Rosenthal. + + Do not call WebLayerTreeRenderer::setContentsSize synchronously + from LayerTreeHostProxy. + + * UIProcess/LayerTreeHostProxy.cpp: + (WebKit::LayerTreeHostProxy::setContentsSize): + +2012-06-01 Dinu Jacob <dinu.jacob@nokia.com> + + [Qt][WK2] Set QWebKitTest::isScalable default as false + https://bugs.webkit.org/show_bug.cgi?id=88095 + + Reviewed by Tor Arne Vestbø. + + Set QWebKitTest::isScalable default as false + + * UIProcess/API/qt/qwebkittest.cpp: + (QWebKitTest::isScalable): + +2012-06-01 Allan Sandfeld Jensen <allan.jensen@nokia.com> + + [Qt] Remove QtViewportInteractionEngine::pageItemSizeChanged. + https://bugs.webkit.org/show_bug.cgi?id=88082 + + Reviewed by Kenneth Rohde Christiansen. + + The function was causing flickering, and after testing it was verified + that it was no longer needed either. + + * UIProcess/qt/QtViewportInteractionEngine.cpp: + (WebKit::QtViewportInteractionEngine::QtViewportInteractionEngine): + * UIProcess/qt/QtViewportInteractionEngine.h: + (QtViewportInteractionEngine): + +2012-06-01 Dinu Jacob <dinu.jacob@nokia.com> + + [Qt][WK2] Contents not rendered in MiniBrowser for some pages + https://bugs.webkit.org/show_bug.cgi?id=87922 + + Reviewed by Kenneth Rohde Christiansen. + + Set drawing area visible contents rect if new visible contents rect is different from + the previous one. + + * UIProcess/qt/QtViewportInteractionEngine.cpp: + (WebKit::QtViewportInteractionEngine::informVisibleContentChange): + * UIProcess/qt/QtViewportInteractionEngine.h: + (QtViewportInteractionEngine): + +2012-06-01 Kenneth Rohde Christiansen <kenneth@webkit.org> + + [Qt] Move suspension to QtViewportInteractionEngine + https://bugs.webkit.org/show_bug.cgi?id=88078 + + Reviewed by Simon Hausmann. + + Next step is to take care of visibility changes. + + * UIProcess/API/qt/qquickwebview.cpp: + (QQuickWebViewFlickablePrivate::QQuickWebViewFlickablePrivate): + (QQuickWebViewFlickablePrivate::onComponentComplete): + * UIProcess/API/qt/qquickwebview_p.h: + * UIProcess/API/qt/qquickwebview_p_p.h: + (QQuickWebViewPrivate): + (QQuickWebViewFlickablePrivate): + * UIProcess/qt/QtViewportInteractionEngine.cpp: + (WebKit::ViewportUpdateDeferrer::ViewportUpdateDeferrer): + (WebKit::ViewportUpdateDeferrer::~ViewportUpdateDeferrer): + (WebKit::QtViewportInteractionEngine::suspendPageContent): + (WebKit): + (WebKit::QtViewportInteractionEngine::resumePageContent): + * UIProcess/qt/QtViewportInteractionEngine.h: + (QtViewportInteractionEngine): + +2012-06-01 Dinu Jacob <dinu.jacob@nokia.com> + + [Qt][W2] Qml Error in ViewportInfoItem.qml in MiniBrowser + https://bugs.webkit.org/show_bug.cgi?id=87999 + + Reviewed by Kenneth Rohde Christiansen. + + Return default viewport attributes rather than invalid QVariant. + + * UIProcess/API/qt/qwebkittest.cpp: + (QWebKitTest::contentsScale): + (QWebKitTest::devicePixelRatio): + (QWebKitTest::initialScale): + (QWebKitTest::minimumScale): + (QWebKitTest::maximumScale): + (QWebKitTest::isScalable): + (QWebKitTest::layoutSize): + +2012-05-31 Kenneth Rohde Christiansen <kenneth@webkit.org> + + [Qt] Clean up our viewport handling mess + https://bugs.webkit.org/show_bug.cgi?id=87977 + + Reviewed by Simon Hausmann. + + Consolidated functionality from QQuickWebViewPrivate* into + ViewportInteractionEngine that belongs there, in preparation for + renaming ViewportInteractionEngine in the future. + + Remove unneeded methods and move others to private. + + * UIProcess/API/qt/qquickwebview.cpp: + (QQuickWebViewFlickablePrivate::QQuickWebViewFlickablePrivate): + (QQuickWebViewFlickablePrivate::onComponentComplete): + (QQuickWebViewFlickablePrivate::didChangeViewportProperties): + (QQuickWebViewFlickablePrivate::updateViewportSize): + (QQuickWebViewFlickablePrivate::_q_resume): + (QQuickWebViewFlickablePrivate::pageDidRequestScroll): + * UIProcess/API/qt/qquickwebview_p.h: + * UIProcess/API/qt/qquickwebview_p_p.h: + (QQuickWebViewPrivate): + (QQuickWebViewFlickablePrivate): + * UIProcess/qt/QtViewportInteractionEngine.cpp: + (WebKit::ViewportUpdateDeferrer::~ViewportUpdateDeferrer): + (WebKit::QtViewportInteractionEngine::QtViewportInteractionEngine): + (WebKit::QtViewportInteractionEngine::viewportAttributesChanged): + (WebKit::QtViewportInteractionEngine::pageContentsSizeChanged): + (WebKit::QtViewportInteractionEngine::pageItemPositionChanged): + (WebKit::QtViewportInteractionEngine::pageContentPositionRequested): + (WebKit::QtViewportInteractionEngine::visibleContentsRect): + (WebKit): + (WebKit::QtViewportInteractionEngine::informVisibleContentChange): + (WebKit::QtViewportInteractionEngine::viewportItemSizeChanged): + * UIProcess/qt/QtViewportInteractionEngine.h: + (WebKit): + (QtViewportInteractionEngine): + +2012-05-31 Hajime Morrita <morrita@chromium.org> + + REGRESSION(r117572): editing/spelling/spellcheck-async-remove-frame.html crashes on Mac + https://bugs.webkit.org/show_bug.cgi?id=86859 + + Reviewed by Ryosuke Niwa. + + * WebProcess/WebCoreSupport/WebEditorClient.cpp: + (WebKit::WebEditorClient::requestCheckingOfString): + * WebProcess/WebCoreSupport/WebEditorClient.h: + +2012-05-31 Andy Estes <aestes@apple.com> + + [WebKit2] Remove nested #if conditions from messages.in files + https://bugs.webkit.org/show_bug.cgi?id=88039 + + Reviewed by Filip Pizlo. + + The code generator that processes messages.in files can't handle nested + #if conditions. Sadly I added said conditions in r117700 but failed to + verify the generated result. Un-nest the conditions I added. + + * UIProcess/WebPageProxy.messages.in: + * WebProcess/WebPage/WebPage.messages.in: + +2012-05-31 Andy Estes <aestes@apple.com> + + Disentangle code that relies on USE(AUTOMATIC_TEXT_REPLACEMENT) from that which merely relies on PLATFORM(MAC) + https://bugs.webkit.org/show_bug.cgi?id=87933 + + Reviewed by Dan Bernstein. + + * WebProcess/WebCoreSupport/WebEditorClient.h: + * WebProcess/WebCoreSupport/mac/WebEditorClientMac.mm: + +2012-05-31 Carlos Garcia Campos <cgarcia@igalia.com> + + [GTK] Add webkit_download_get_request to WebKit2 GTK+ API + https://bugs.webkit.org/show_bug.cgi?id=87957 + + Reviewed by Martin Robinson. + + * UIProcess/API/gtk/WebKitDownload.cpp: + (webkit_download_get_request): Return the WebKitURIRequest + representing the request that originated the download. + * UIProcess/API/gtk/WebKitDownload.h: + * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Add new symbol. + * UIProcess/API/gtk/tests/TestDownloads.cpp: + (testDownloadLocalFile): + (testDownloadRemoteFile): + +2012-05-31 Carlos Garcia Campos <cgarcia@igalia.com> + + [SOUP] WebProcess crashes when a download is started from an existing ResourceHandle + https://bugs.webkit.org/show_bug.cgi?id=87953 + + Reviewed by Martin Robinson. + + The output stream to write the downloaded data is created in the + didReceiveResponse callback of the download client. When a + download is created for an existing ResourceHandle (this happens + for example when policy decision is download), the response has + already been received. In this case we should make sure that the + download client is notified about the response, so that when data + actually arrives the output stream has already been created. + + * WebProcess/Downloads/soup/DownloadSoup.cpp: + (WebKit::Download::startWithHandle): + +2012-05-31 Carlos Garcia Campos <cgarcia@igalia.com> + + [GTK] Fix webkit_web_view_can_execute_editing_command() API doc + https://bugs.webkit.org/show_bug.cgi?id=87930 + + Reviewed by Martin Robinson. + + * UIProcess/API/gtk/WebKitWebView.cpp: + +2012-05-31 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> + + [Qt] Simplify QT_VERSION_CHECKS for Qt5 by introducing HAVE(QT5) + https://bugs.webkit.org/show_bug.cgi?id=87955 + + Reviewed by Simon Hausmann. + + * UIProcess/API/qt/tests/publicapi/tst_publicapi.cpp: + +2012-05-31 Zalan Bujtas <zbujtas@gmail.com> + + [Qt][WK2] Add missing ViewportUpdateDeferrer guarding to setPageItemRectVisible() calls. + https://bugs.webkit.org/show_bug.cgi?id=87936 + + Reviewed by Kenneth Rohde Christiansen. + + * UIProcess/qt/QtViewportInteractionEngine.cpp: + (WebKit::QtViewportInteractionEngine::viewportAttributesChanged): + (WebKit::QtViewportInteractionEngine::pageContentsSizeChanged): + +2012-05-31 Keunsoon Lee <keunsoon.lee@samsung.com> + + [EFL][WK2] Add WKURLRequestEfl and WKURLResponseEfl + https://bugs.webkit.org/show_bug.cgi?id=70231 + + Reviewed by Chang Shu. + + These codes can be used for WKPageDecidePolicyForResponseCallback on page policy callbacks. + The callback conveys WKURLResponseRef and WKURLRequestRef as parameter. + + By the way, EFL browser needs content type from response to decide correct policy. + Another information, cookie, is necessary with similar reason. + But, there is no way to obtain such information on WebKit2 main stream, except for WKURLRequestCopyURL(). + + So, EFL port created those files to extract necessary information from WKURLResponseRef and WKURLRequestRef, + and not to desturb WebKit2 main stream. + + * Shared/API/c/efl/WKURLRequestEfl.cpp: Added. + (WKURLRequestEflCopyCookies): extracting cookie information from WKURLRequestRef. + * Shared/API/c/efl/WKURLRequestEfl.h: Added. + * Shared/API/c/efl/WKURLResponseEfl.cpp: Added. + (WKURLResponseEflCopyContentType): extracting content type (i.e. MIME type) from WKURLResponseRef. + * Shared/API/c/efl/WKURLResponseEfl.h: Added. + * Shared/efl/WebCoreArgumentCodersEfl.cpp: Added. + (CoreIPC): + (CoreIPC::::encode): + (CoreIPC::::decode): + * Shared/efl/WebURLRequestEfl.cpp: Added. + (WebKit): + (WebKit::WebURLRequestEfl::WebURLRequestEfl): + (WebKit::WebURLRequestEfl::cookies): obtaining cookie information from ResourceRequest. + * Shared/efl/WebURLRequestEfl.h: Added. + (WebKit): + (WebURLRequestEfl): + (WebKit::WebURLRequestEfl::create): + * Shared/efl/WebURLResponseEfl.cpp: Added. + (WebKit): + (WebKit::WebURLResponseEfl::WebURLResponseEfl): + (WebKit::WebURLResponseEfl::contentType): obtaining content type (i.e. MIME type) from ResourceResponse. + * Shared/efl/WebURLResponseEfl.h: Added. + (WebKit): + (WebURLResponseEfl): + (WebKit::WebURLResponseEfl::create): + +2012-05-31 Gyuyoung Kim <gyuyoung.kim@samsung.com> + + [EFL][WK2] Rename ewk_private.h to ewk_view_private.h + https://bugs.webkit.org/show_bug.cgi?id=87923 + + Reviewed by Kenneth Rohde Christiansen. + + EFL WK1 decided to divide up ewk_private.h into each file's XXX_private.h file in order to maintain + internal functions more easily. EFL WK2 needs to adjust this as well. + + * UIProcess/API/efl/PageClientImpl.cpp: + * UIProcess/API/efl/ewk_view_private.h: Renamed from Source/WebKit2/UIProcess/API/efl/ewk_private.h. + (WebCore): + * UIProcess/cairo/BackingStoreCairo.cpp: + +2012-05-31 Andy Estes <aestes@apple.com> + + Move the specification of framework and library linking out of WebKit2.xcodeproj and into WebKit2.xcconfig + https://bugs.webkit.org/show_bug.cgi?id=87932 + + Reviewed by Dan Bernstein. + + Doing this makes it easier to vary linking based on SDK or other factors. + + * Configurations/WebKit2.xcconfig: Create FRAMEWORK_AND_LIBRARY_LDFLAGS, + which specifies the same list of frameworks and libraries that were + previously in WebKit2's 'Link Binary With Libraries' build phase, and + append it to $(OTHER_LDFLAGS). + * WebKit2.xcodeproj/project.pbxproj: Remove all frameworks and + libraries from the 'Link Binary With Libraries' build phase. + +2012-05-30 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com> + + [GTK] [WK2] Memory leak in webkitWebViewBaseStartDrag + https://bugs.webkit.org/show_bug.cgi?id=87756 + + Reviewed by Carlos Garcia Campos. + + Fixed memory leaks in drag and drop by using adoptRef instead + of just getting new references. + + * UIProcess/API/gtk/WebKitWebViewBase.cpp: + (webkitWebViewBaseStartDrag): + +2012-05-30 Luiz Agostini <luiz.agostini@nokia.com> + + [Qt] handled touchmove events should not cancel tap gesture recognition + https://bugs.webkit.org/show_bug.cgi?id=87808 + + Reviewed by Kenneth Rohde Christiansen. + + Tap gesture recognition should not be canceled if a touchmove event is handled + by the web process. + + * UIProcess/qt/QtWebPageEventHandler.cpp: + (WebKit::QtWebPageEventHandler::doneWithTouchEvent): + +2012-05-30 Mario Sanchez Prada <msanchez@igalia.com> + + [GTK][WK2] Errors in documentation about webkit_web_view_run_javascript() + https://bugs.webkit.org/show_bug.cgi?id=87866 + + Reviewed by Martin Robinson. + + * UIProcess/API/gtk/WebKitWebView.cpp: Fix errors. + +2012-05-30 Andy Estes <aestes@apple.com> + + WebProcessMainMac.mm doesn't need to import WKView.h. + + Rubber-stamped by Anders Carlsson. + + * WebProcess/mac/WebProcessMainMac.mm: + +2012-05-30 Marcelo Lira <marcelo.lira@openbossa.org> + + WebKit2: Implement layoutTestController.setPluginsEnabled() in WebKitTestRunner. + https://bugs.webkit.org/show_bug.cgi?id=58593 + + Adds the ability to change the pluginsEnabled flag in WebCore::Settings + to WebKitTestRunner's LayoutTestController. The flag is modified via the + public C API of the WebProcess. + + Reviewed by Darin Adler. + + * WebProcess/InjectedBundle/API/c/WKBundle.cpp: + (WKBundleSetPluginsEnabled): + * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h: + * WebProcess/InjectedBundle/InjectedBundle.cpp: + (WebKit::InjectedBundle::setPluginsEnabled): Calls the setPluginsEnabled + method for the WebCore::Settings of each WebCore::Page in the current + page group. + (WebKit): + * WebProcess/InjectedBundle/InjectedBundle.h: + (InjectedBundle): + +2012-05-30 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org> + + HashTable.h has using directives for std::pair and std::make_pair + https://bugs.webkit.org/show_bug.cgi?id=29919 + + Reviewed by Darin Adler. + + Change code to use std::pair and std::make_pair. + + * UIProcess/Launcher/mac/DynamicLinkerEnvironmentExtractor.mm: + (WebKit::DynamicLinkerEnvironmentExtractor::processEnvironmentVariable): + * UIProcess/WebContext.cpp: + (WebKit::WebContext::postMessageToInjectedBundle): + +2012-05-30 Kenneth Rohde Christiansen <kenneth@webkit.org> + + Unreviewed: Fix wrongly typed Qt slot. + + * UIProcess/qt/QtViewportInteractionEngine.cpp: + (WebKit::QtViewportInteractionEngine::QtViewportInteractionEngine): + +2012-05-30 Kenneth Rohde Christiansen <kenneth@webkit.org> + + [Qt] Move ViewportAttribute related methods to the interaction engine. + https://bugs.webkit.org/show_bug.cgi?id=87855 + + Reviewed by Simon Hausmann. + + Move the logic of didChange{ViewportProperties|ContentsSize} to the + interaction engine and update our testing object. + + * UIProcess/API/qt/qquickwebview.cpp: + (QQuickWebViewLegacyPrivate::QQuickWebViewLegacyPrivate): + (QQuickWebViewFlickablePrivate::didChangeViewportProperties): + (QQuickWebViewFlickablePrivate::didChangeContentsSize): + * UIProcess/API/qt/qquickwebview_p_p.h: + (QQuickWebViewPrivate): + * UIProcess/API/qt/qwebkittest.cpp: + (QWebKitTest::contentsScale): + (QWebKitTest::devicePixelRatio): + (QWebKitTest::initialScale): + (QWebKitTest::minimumScale): + (QWebKitTest::maximumScale): + (QWebKitTest::isScalable): + (QWebKitTest::layoutSize): + * UIProcess/qt/QtViewportInteractionEngine.cpp: + (WebKit::QtViewportInteractionEngine::viewportAttributesChanged): + (WebKit): + (WebKit::QtViewportInteractionEngine::pageContentsSizeChanged): + * UIProcess/qt/QtViewportInteractionEngine.h: + (QtViewportInteractionEngine): + +2012-05-30 Kenneth Rohde Christiansen <kenneth@webkit.org> + + [Qt] Do renames in ViewportInteractionEngine as agreed upon + https://bugs.webkit.org/show_bug.cgi?id=87845 + + Reviewed by Simon Hausmann. + + Mostly moving methods around and renaming them to be more + consistent and avoid terminology clashes. + + * UIProcess/API/qt/qquickwebview.cpp: + (QQuickWebViewFlickablePrivate::didChangeViewportProperties): + (QQuickWebViewFlickablePrivate::pageDidRequestScroll): + (QQuickWebViewFlickablePrivate::didChangeContentsSize): + * UIProcess/qt/QtViewportInteractionEngine.cpp: + (WebKit::boundPosition): + (WebKit): + (WebKit::QtViewportInteractionEngine::QtViewportInteractionEngine): + (WebKit::QtViewportInteractionEngine::setPageItemRectVisible): + (WebKit::QtViewportInteractionEngine::animatePageItemRectVisible): + (WebKit::QtViewportInteractionEngine::flickMoveStarted): + (WebKit::QtViewportInteractionEngine::flickMoveEnded): + (WebKit::QtViewportInteractionEngine::pageItemPositionChanged): + (WebKit::QtViewportInteractionEngine::pageContentPositionRequest): + (WebKit::QtViewportInteractionEngine::scaleAnimationValueChanged): + (WebKit::QtViewportInteractionEngine::computePosRangeForPageItemAtScale): + (WebKit::QtViewportInteractionEngine::focusEditableArea): + (WebKit::QtViewportInteractionEngine::zoomToAreaGestureEnded): + (WebKit::QtViewportInteractionEngine::nearestValidBounds): + (WebKit::QtViewportInteractionEngine::cancelScrollAnimation): + (WebKit::QtViewportInteractionEngine::pinchGestureEnded): + (WebKit::QtViewportInteractionEngine::pageItemSizeChanged): + * UIProcess/qt/QtViewportInteractionEngine.h: + (WebKit::QtViewportInteractionEngine::setDevicePixelRatio): + (QtViewportInteractionEngine): + +2012-05-30 Mariusz Grzegorczyk <mariusz.g@samsung.com>, Ryuan Choi <ryuan.choi@samsung.com> + + [EFL][WK2] Fix WebKit2-EFL build + https://bugs.webkit.org/show_bug.cgi?id=83693 + + Reviewed by Carlos Garcia Campos. + + * CMakeLists.txt: Move IDL generator codes to generate port specific *.messages.in. + * PlatformEfl.cmake: Add soup related files after r115411 and includes to fix build break. + * UIProcess/API/efl/PageClientImpl.cpp: Fix build break with ENABLE_TOUCH_EVENTS. + (WebKit): + (WebKit::PageClientImpl::doneWithTouchEvent): + * UIProcess/API/efl/PageClientImpl.h: + (PageClientImpl): + * WebProcess/WebCoreSupport/WebChromeClient.cpp: Fix build break with ENABLE_INPUT_TYPE_COLOR and ENABLE_REGISTER_PROTOCOL_HANDLER. + (WebKit): + (WebKit::WebChromeClient::createColorChooser): + * WebProcess/WebCoreSupport/WebChromeClient.h: + (WebChromeClient): + * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: Fix build break with ENABLE_WEB_INTENTS + (WebKit): + (WebKit::WebFrameLoaderClient::dispatchIntent): + * WebProcess/WebCoreSupport/WebFrameLoaderClient.h: + (WebCore): + (WebFrameLoaderClient): + * WebProcess/WebProcess.cpp: Guard PLATFORM_STRATEGIES codes. + (WebKit::WebProcess::didGetPlugins): + * WebProcess/soup/WebSoupRequestManager.cpp: Try to share with EFL port. + (WebKit::WebSoupRequestManager::didHandleURIRequest): + +2012-05-30 Kenneth Rohde Christiansen <kenneth@webkit.org> + + [Qt] Variable renaming as preparation of further refactoring. + + Rubberstamped by Simon Hausmann. + + Change m_viewport to m_viewportItem and m_content to m_pageItem. + + * UIProcess/qt/QtViewportInteractionEngine.cpp: + (WebKit::QtViewportInteractionEngine::QtViewportInteractionEngine): + (WebKit::QtViewportInteractionEngine::setItemRectVisible): + (WebKit::QtViewportInteractionEngine::animateItemRectVisible): + (WebKit::QtViewportInteractionEngine::flickableMoveStarted): + (WebKit::QtViewportInteractionEngine::flickableMoveEnded): + (WebKit::QtViewportInteractionEngine::flickableMovingPositionUpdate): + (WebKit::QtViewportInteractionEngine::scaleAnimationStateChanged): + (WebKit::QtViewportInteractionEngine::pagePositionRequest): + (WebKit::QtViewportInteractionEngine::computePosRangeForItemAtScale): + (WebKit::QtViewportInteractionEngine::focusEditableArea): + (WebKit::QtViewportInteractionEngine::zoomToAreaGestureEnded): + (WebKit::QtViewportInteractionEngine::nearestValidBounds): + (WebKit::QtViewportInteractionEngine::reset): + (WebKit::QtViewportInteractionEngine::setCSSScale): + (WebKit::QtViewportInteractionEngine::currentCSSScale): + (WebKit::QtViewportInteractionEngine::scrollAnimationActive): + (WebKit::QtViewportInteractionEngine::panGestureActive): + (WebKit::QtViewportInteractionEngine::panGestureStarted): + (WebKit::QtViewportInteractionEngine::panGestureRequestUpdate): + (WebKit::QtViewportInteractionEngine::panGestureEnded): + (WebKit::QtViewportInteractionEngine::panGestureCancelled): + (WebKit::QtViewportInteractionEngine::cancelScrollAnimation): + (WebKit::QtViewportInteractionEngine::pinchGestureStarted): + (WebKit::QtViewportInteractionEngine::pinchGestureRequestUpdate): + (WebKit::QtViewportInteractionEngine::scaleContent): + * UIProcess/qt/QtViewportInteractionEngine.h: + (QtViewportInteractionEngine): + +2012-05-30 Zalan Bujtas <zbujtas@gmail.com> + + [Qt][WK2] Do not use anonymous variables for ViewportUpdateDeferrer. + https://bugs.webkit.org/show_bug.cgi?id=87831 + + Reviewed by Kenneth Rohde Christiansen. + + * UIProcess/qt/QtViewportInteractionEngine.cpp: + (WebKit::QtViewportInteractionEngine::pagePositionRequest): + (WebKit::QtViewportInteractionEngine::cancelScrollAnimation): + (WebKit::QtViewportInteractionEngine::itemSizeChanged): + +2012-05-30 Carlos Garcia Campos <cgarcia@igalia.com> + + Unreviewed. Fix WebKit2GTK+ API tests in the bots. + + * UIProcess/API/gtk/tests/TestWebKitWebView.cpp: + (testWebViewCanShowMIMEType): Remove the check for multimedia and + plugins MIME types since they depend on the configuration and they + are not available in the bots. + +2012-05-29 Jer Noble <jer.noble@apple.com> + + Noticeable delay taking an HTML5 trailer fullscreen. + https://bugs.webkit.org/show_bug.cgi?id=87794 + + Reviewed by Darin Adler. + + Work around a not-entirely understood delay when using the results of a CGWindowListCreateImage() + call as the contents of a placeholder view. The backing of the resulting CGImageRef resides on + the WindowServer, and drawing that image requires synchronous calls to the WindowServer process. + By copying the image data, up front, into our own process, we can avoid those synchronous calls + later and avoid the delay-causing drawing behavior. + + * UIProcess/mac/WKFullScreenWindowController.mm: + (CGImageDeepCopy): Added a helper function which copies the image data into a new CGImage. + (-[WKFullScreenWindowController enterFullScreen:]): Use the above. + +2012-05-29 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com> + + [GTK] [WK2] Reproducible crash in performDragControllerAction + https://bugs.webkit.org/show_bug.cgi?id=87744 + + Reviewed by Martin Robinson. + + Fix a crash by using deref() instead of delete to dereference and + release the platformData of DragData. + + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::performDragControllerAction): + +2012-05-29 Simon Pena <spena@igalia.com> + + [GTK] Missing field initializers for WKPageLoaderClient and WKPageUIClient + https://bugs.webkit.org/show_bug.cgi?id=87745 + + Reviewed by Carlos Garcia Campos. + + Add missing initializers for WKPageLoaderClient and + WKPageUIClient, for callbacks WKPagePluginDidFailCallback and + WKPageUnavailablePluginButtonClickedCallback, introduced in + revision r116716. + + * UIProcess/API/gtk/WebKitLoaderClient.cpp: + (attachLoaderClientToView): Initialize WKPagePluginDidFailCallback + * UIProcess/API/gtk/WebKitUIClient.cpp: + (attachUIClientToView): Initialize callback + WKPageUnavailablePluginButtonClickedCallback + +2012-05-29 Carlos Garcia Campos <cgarcia@igalia.com> + + [GTK] Policy decision headers are not included in the main webkit2.h header + https://bugs.webkit.org/show_bug.cgi?id=87753 + + Reviewed by Martin Robinson. + + * UIProcess/API/gtk/webkit2.h: Include + WebKitNavigationPolicyDecision.h and WebKitResponsePolicyDecision.h. + +2012-05-29 Carlos Garcia Campos <cgarcia@igalia.com> + + [GTK] Add webkit_web_view_can_show_mime_type() to WebKit2 GTK+ API + https://bugs.webkit.org/show_bug.cgi?id=85998 + + Reviewed by Martin Robinson. + + And use it in the default handler of WebKitWebView::decide-policy + signal to decide whether to use or ignore a response policy + decision depending on whether the mime type of the response can be + displayed in the WebView or not. + + * UIProcess/API/gtk/WebKitURIResponse.cpp: + (webkitURIResponseGetProperty): Add getter for mime-type property. + (webkit_uri_response_class_init): Add mime-type property. + (webkit_uri_response_get_mime_type): Return the mime type of the + response. + * UIProcess/API/gtk/WebKitURIResponse.h: + * UIProcess/API/gtk/WebKitWebView.cpp: + (webkitWebViewDecidePolicy): In case of response policy decisions, + use the URI response to decide what to do: download if the + response is an attachment, use if the mime type is supported by + the web view or ignore otherwise. + (webkit_web_view_can_show_mime_type): Returns whether the given + mime type can be displayed in the WebView or not. + * UIProcess/API/gtk/WebKitWebView.h: + * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Add new symbols. + * UIProcess/API/gtk/tests/TestResources.cpp: + (testWebResourceResponse): + (testWebResourceMimeType): + (serverCallback): + (beforeAll): + * UIProcess/API/gtk/tests/TestWebKitWebView.cpp: + (testWebViewCanShowMIMEType): + (beforeAll): + +2012-05-29 David Barr <davidbarr@chromium.org> + + Introduce ENABLE_CSS_IMAGE_RESOLUTION compile flag + https://bugs.webkit.org/show_bug.cgi?id=87685 + + Reviewed by Eric Seidel. + + Add a configuration option for CSS image-resolution support, disabling it by default. + + * Configurations/FeatureDefines.xcconfig: + +2012-05-29 Kenneth Rohde Christiansen <kenneth@webkit.org> + + [Qt] Move tests from DesktopBehavior which can be made to work + https://bugs.webkit.org/show_bug.cgi?id=87736 + + Rubberstamped by Simon Hausmann. + + Move and modify the following tests to WebView/ and make them + use touch events. + + * UIProcess/API/qt/tests/qmltests/WebView/tst_itemSelector.qml: Renamed from Source/WebKit2/UIProcess/API/qt/tests/qmltests/DesktopBehavior/tst_itemSelector.qml. + * UIProcess/API/qt/tests/qmltests/WebView/tst_messaging.qml: Renamed from Source/WebKit2/UIProcess/API/qt/tests/qmltests/DesktopBehavior/tst_messaging.qml. + * UIProcess/API/qt/tests/qmltests/WebView/tst_multiFileUpload.qml: Renamed from Source/WebKit2/UIProcess/API/qt/tests/qmltests/DesktopBehavior/tst_multiFileUpload.qml. + * UIProcess/API/qt/tests/qmltests/WebView/tst_singleFileUpload.qml: Renamed from Source/WebKit2/UIProcess/API/qt/tests/qmltests/DesktopBehavior/tst_singleFileUpload.qml. + +2012-05-29 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> + + [Qt] Sync up favicon-implementation with WebView url changes in r118158 + + https://bugs.webkit.org/show_bug.cgi?id=87133 + + We now base64-encode the page url in the image-provider url, so that any + normalization done by QUrl will not mess up the page-url. The logic of + creating and parsing the provider-url has been moved into the image + provider, to keep it in one place. + + We were also releasing icons (even ones we hadn't retained), which we can't + do since we don't know when the icon url is no longer in use. + + Reviewed-by Simon Hausmann. + + * UIProcess/API/qt/qquickwebview.cpp: + (QQuickWebViewPrivate::initialize): + (QQuickWebViewPrivate::loadProgressDidChange): + (QQuickWebViewPrivate::_q_onUrlChanged): + (QQuickWebViewPrivate::_q_onIconChangedForPageURL): + (QQuickWebViewPrivate::updateIcon): + (QQuickWebView::icon): + * UIProcess/API/qt/qquickwebview_p.h: + * UIProcess/API/qt/qquickwebview_p_p.h: + (QQuickWebViewPrivate): + * UIProcess/API/qt/qwebiconimageprovider.cpp: + (QWebIconImageProvider::iconURLForPageURLInContext): + (QWebIconImageProvider::requestImage): + * UIProcess/API/qt/qwebiconimageprovider_p.h: + (WebKit): + * UIProcess/API/qt/tests/qmltests/WebView/tst_favIconLoad.qml: + * UIProcess/qt/QtWebIconDatabaseClient.cpp: + (WebKit::QtWebIconDatabaseClient::didChangeIconForPageURL): + (WebKit::QtWebIconDatabaseClient::iconForPageURL): + (WebKit): + (WebKit::QtWebIconDatabaseClient::iconImageForPageURL): + * UIProcess/qt/QtWebIconDatabaseClient.h: + (QtWebIconDatabaseClient): + +2012-05-29 Kenneth Rohde Christiansen <kenneth@webkit.org> + + [Qt][WK2] Fix failing qmltests::FitToView::test_basic() + https://bugs.webkit.org/show_bug.cgi?id=87236 + + Reviewed by Simon Hausmann. + + The fix is a combination of things. First of all some events + were emitted at the wrong times or when nothing had changed. + + We also initialized the view saying it was suspended which is + not correct. + + Another bug was that the touch tap, didn't result in marking + the view as having user interaction. This was recently fixed + in r118493. + + * UIProcess/API/qt/qquickwebpage.cpp: + (QQuickWebPage::setContentsScale): + * UIProcess/API/qt/qquickwebview.cpp: + (QQuickWebViewFlickablePrivate::QQuickWebViewFlickablePrivate): + + Make sure pageIsSuspended is initialized to false. + + (QQuickWebViewFlickablePrivate::_q_onInformVisibleContentChange): + + Early bail out if there is no change. + + Inform contentScaleCommitted if the scale changed since last time. + + (QQuickWebViewFlickablePrivate::didChangeContentsSize): + + Make sure to commit the right signals, ie. *Changed and not *Committed. + + * UIProcess/API/qt/qquickwebview_p.h: + * UIProcess/API/qt/qwebkittest.cpp: + (touchPoint): + (QWebKitTest::sendTouchEvent): + (QWebKitTest::touchTap): + (QWebKitTest::touchDoubleTap): + + Add proper touch emulation for the testing system. Call directly + to our WebKit API (avoid Qt event loop) to ensure all events gets + delivered. + + * UIProcess/API/qt/qwebkittest_p.h: + * UIProcess/qt/QtViewportInteractionEngine.cpp: + (WebKit::QtViewportInteractionEngine::setItemRectVisible): + + Assert that a ViewportUpdateDeferrer is always used when calling + this method. + + (WebKit::QtViewportInteractionEngine::animateItemRectVisible): + + Remove work around now we have the proper fix in place. + + (WebKit::QtViewportInteractionEngine::pagePositionRequest): + + Do not send the informVisibleContentChange manually, use the + ViewportUpdateDeferrer instead. + + (WebKit::QtViewportInteractionEngine::cancelScrollAnimation): + + Add missing ViewportUpdateDeferrer. + + (WebKit::QtViewportInteractionEngine::pinchGestureStarted): + + No reason to emit informVisibleContentChange before pinch + start, as it is always done on end (due to the ViewportUpdateDeferrer). + + (WebKit::QtViewportInteractionEngine::itemSizeChanged): + + Add missing ViewportUpdateDeferrer. + +2012-05-29 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org> + + [Qt] [WK2] Allow user to inject JS scripts when the page loads + https://bugs.webkit.org/show_bug.cgi?id=85827 + + Reviewed by Simon Hausmann. + + Create a new experimental property to list URLs of JS scripts that should be + loaded when a page is loaded. These scripts will run in the normal JS environment + of the page. + + The supported URL schemes are file:/// and qrc:///. The scripts are read from the + UI process and transfered to the Web process. + + Together with the experimental messaging API this provides a way for the + application to manipulate the DOM (by injecting a script that does the + manipulation and communicating with it via postMessage). This covers some of the + use cases of QWebElement in our WK1 API. + + * UIProcess/API/qt/qquickwebview.cpp: + (QQuickWebViewPrivate::didRelaunchProcess): + (readUserScript): + (QQuickWebViewPrivate::updateUserScripts): + (QQuickWebViewExperimental::userScripts): + (QQuickWebViewExperimental::setUserScripts): + * UIProcess/API/qt/qquickwebview_p.h: + * UIProcess/API/qt/qquickwebview_p_p.h: + (QQuickWebViewPrivate): + * UIProcess/API/qt/tests/qmltests/WebView.pro: + * UIProcess/API/qt/tests/qmltests/WebView/tst_userScripts.qml: Added. + * UIProcess/API/qt/tests/qmltests/common/append-document-title.js: Added. + * UIProcess/API/qt/tests/qmltests/common/big-user-script.js: Added. + * UIProcess/API/qt/tests/qmltests/common/change-document-title.js: Added. + * UIProcess/API/qt/tests/qmltests/resources.qrc: Added. + * UIProcess/WebPageProxy.h: + (WebPageProxy): + * UIProcess/qt/WebPageProxyQt.cpp: + (WebKit::WebPageProxy::setUserScripts): + (WebKit): + * WebProcess/WebPage/WebPage.h: + (WebPage): + * WebProcess/WebPage/WebPage.messages.in: + * WebProcess/WebPage/qt/WebPageQt.cpp: + (WebKit::WebPage::setUserScripts): + (WebKit): + +2012-05-29 Sheriff Bot <webkit.review.bot@gmail.com> + + Unreviewed, rolling out r118752. + http://trac.webkit.org/changeset/118752 + https://bugs.webkit.org/show_bug.cgi?id=87731 + + incomplete patch (Requested by cmarcelo on #webkit). + + * UIProcess/API/qt/qquickwebview.cpp: + (QQuickWebViewPrivate::didRelaunchProcess): + * UIProcess/API/qt/qquickwebview_p.h: + * UIProcess/API/qt/qquickwebview_p_p.h: + (QQuickWebViewPrivate): + * UIProcess/API/qt/tests/qmltests/WebView.pro: + * UIProcess/WebPageProxy.h: + (WebPageProxy): + * UIProcess/qt/WebPageProxyQt.cpp: + * WebProcess/WebPage/WebPage.h: + (WebPage): + * WebProcess/WebPage/WebPage.messages.in: + * WebProcess/WebPage/qt/WebPageQt.cpp: + +2012-05-21 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org> + + [Qt] [WK2] Allow user to inject JS scripts when the page loads + https://bugs.webkit.org/show_bug.cgi?id=85827 + + Reviewed by Simon Hausmann. + + Create a new experimental property to list URLs of JS scripts that should be + loaded when a page is loaded. These scripts will run in the normal JS environment + of the page. + + The supported URL schemes are file:/// and qrc:///. The scripts are read from the + UI process and transfered to the Web process. + + Together with the experimental messaging API this provides a way for the + application to manipulate the DOM (by injecting a script that does the + manipulation and communicating with it via postMessage). This covers some of the + use cases of QWebElement in our WK1 API. + + * UIProcess/API/qt/qquickwebview.cpp: + (QQuickWebViewPrivate::didRelaunchProcess): + (readUserScript): + (QQuickWebViewPrivate::updateUserScripts): + (QQuickWebViewExperimental::userScripts): + (QQuickWebViewExperimental::setUserScripts): + * UIProcess/API/qt/qquickwebview_p.h: + * UIProcess/API/qt/qquickwebview_p_p.h: + (QQuickWebViewPrivate): + * UIProcess/API/qt/tests/qmltests/WebView.pro: + * UIProcess/API/qt/tests/qmltests/WebView/tst_userScripts.qml: Added. + * UIProcess/API/qt/tests/qmltests/common/append-document-title.js: Added. + * UIProcess/API/qt/tests/qmltests/common/big-user-script.js: Added. + * UIProcess/API/qt/tests/qmltests/common/change-document-title.js: Added. + * UIProcess/API/qt/tests/qmltests/resources.qrc: Added. + * UIProcess/WebPageProxy.h: + (WebPageProxy): + * UIProcess/qt/WebPageProxyQt.cpp: + (WebKit::WebPageProxy::setUserScripts): + (WebKit): + * WebProcess/WebPage/WebPage.h: + (WebPage): + * WebProcess/WebPage/WebPage.messages.in: + * WebProcess/WebPage/qt/WebPageQt.cpp: + (WebKit::WebPage::setUserScripts): + (WebKit): + +2012-05-29 Carlos Garcia Campos <cgarcia@igalia.com> + + [GTK] Add return value information to WebKitWebView::load-failed signal documentation + https://bugs.webkit.org/show_bug.cgi?id=87704 + + Reviewed by Martin Robinson. + + * UIProcess/API/gtk/WebKitWebView.cpp: + (webkit_web_view_class_init): + +2012-05-29 Carlos Garcia Campos <cgarcia@igalia.com> + + [GTK] Add WebKitWebInspector.h to the list of WebKit2 GTK public headers + https://bugs.webkit.org/show_bug.cgi?id=87703 + + Reviewed by Martin Robinson. + + * GNUmakefile.list.am: Add WebKitWebInspector.h to webkit2gtk_h_api. + +2012-05-25 Jesus Sanchez-Palencia <jesus.palencia@openbossa.org> + + WebKitTestRunner needs to support layoutTestController.setJavaScriptProfilingEnabled + https://bugs.webkit.org/show_bug.cgi?id=42328 + + Reviewed by Eric Seidel. + + Removed unneeded setJavaScriptProfilingEnabled function from WTR after its + move to windows.internals.settings. + + * WebProcess/InjectedBundle/API/c/WKBundleInspector.cpp: + * WebProcess/InjectedBundle/API/c/WKBundleInspector.h: + * WebProcess/WebPage/WebInspector.cpp: + (WebKit::WebInspector::setJavaScriptProfilingEnabled): + * win/WebKit2.def: + +2012-05-28 No'am Rosenthal <noam.rosenthal@nokia.com> + + Remove unused argument coders for animation + https://bugs.webkit.org/show_bug.cgi?id=87435 + + Reviewed by Sam Weinig. + + Left the used argument coders only, behind a proper USE(UI_SIDE_COMPOSITING) flag. + + * Shared/WebCoreArgumentCoders.cpp: + (CoreIPC): + * Shared/WebCoreArgumentCoders.h: + +2012-05-28 Gyuyoung Kim <gyuyoung.kim@samsung.com> + + Move allowRoundingHacks to Internals interface + https://bugs.webkit.org/show_bug.cgi?id=87328 + + Reviewed by Hajime Morita. + + * win/WebKit2.def: Add setAllowsRoundingHacks() to symbol filter. + +2012-05-26 Geoffrey Garen <ggaren@apple.com> + + WebKit should be lazy-finalization-safe (esp. the DOM) v2 + https://bugs.webkit.org/show_bug.cgi?id=87581 + + Reviewed by Oliver Hunt. + + * WebProcess/Plugins/Netscape/JSNPObject.cpp: + (WebKit::JSNPObject::destroy): + (WebKit::JSNPObject::leakNPObject): + * WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp: + (WebKit::NPRuntimeObjectMap::finalize): Use static_cast instead of jsCast because + jsCast does Structure-based validation, and our Structure is not guaranteed + to be alive when we get finalized. + +2012-05-25 Maciej Stachowiak <mjs@apple.com> + + REGRESSION (r116720): Subframe PDF scrolls extremely slowly + https://bugs.webkit.org/show_bug.cgi?id=87557 + <rdar://problem/11499408> + + Reviewed by Anders Carlsson. + + It's not possible to make an automated test for this. + + * WebProcess/Plugins/PDF/BuiltInPDFView.mm: + (WebKit::BuiltInPDFView::wantsWheelEvents): Return true instead of false and delete + misleading comment. While the built-in PDF view would get added to the set of scrollable + areas anyway, there are some code paths that check wantsWheelEvents explicitly, so it seems + necessary to reutrn true. + +2012-05-25 Brady Eidson <beidson@apple.com> + + https://bugs.webkit.org/show_bug.cgi?id=87418 + WebBackForwardList should separate "has no current index" from the integer value of the current index + + This patch also renames "m_current" to "m_currentIndex" for clarity and symmetry with + other variable names that reference "index", + + It also removes the m_closed and m_enabled flags which were never actually used. + + Reviewed by Darin Adler. + + * UIProcess/WebBackForwardList.cpp: + (WebKit::WebBackForwardList::WebBackForwardList): + (WebKit::WebBackForwardList::addItem): + (WebKit::WebBackForwardList::goToItem): + (WebKit::WebBackForwardList::currentItem): + (WebKit::WebBackForwardList::backItem): + (WebKit::WebBackForwardList::forwardItem): + (WebKit::WebBackForwardList::itemAtIndex): + (WebKit::WebBackForwardList::backListCount): + (WebKit::WebBackForwardList::forwardListCount): + (WebKit::WebBackForwardList::backListAsImmutableArrayWithLimit): + (WebKit::WebBackForwardList::forwardListAsImmutableArrayWithLimit): + (WebKit::WebBackForwardList::clear): + + * UIProcess/WebBackForwardList.h: + (WebKit::WebBackForwardList::currentIndex): + (WebBackForwardList): + + * UIProcess/cf/WebBackForwardListCF.cpp: + (WebKit::WebBackForwardList::createCFDictionaryRepresentation): + (WebKit::WebBackForwardList::restoreFromCFDictionaryRepresentation): + +2012-05-25 Beth Dakin <bdakin@apple.com> + + https://bugs.webkit.org/show_bug.cgi?id=87529 + Background tabs hosted in window server flash before painting + when they first become active + + Reviewed by Anders Carlsson. + + Initialize to LayerHostingModeInWindowServer if that is + available to avoid having to re-make the context and re-set + everything later on. + * UIProcess/WebPageProxy.cpp: + (WebKit::WebPageProxy::WebPageProxy): + +2012-05-25 Mario Sanchez Prada <msanchez@igalia.com> + + [GTK][WK2] Implement API for generic permission requests + https://bugs.webkit.org/show_bug.cgi?id=84018 + + Reviewed by Martin Robinson. + + Added new 'permission-request' signal to WebKitWebView, to be + fired when WebKit needs confirmation from the user on whether to + allow or deny certain operations, such as sharing the user's + location with web site through the Geolocation API. + + New WebKitPermissionRequest interface, providing allow() and + deny() operations, to be called over the objects implementing it + when emitted along with the new 'permission-request' signal. + + * UIProcess/API/gtk/WebKitPermissionRequest.cpp: Added. + (webkit_permission_request_default_init): + (webkit_permission_request_allow): + (webkit_permission_request_deny): + * UIProcess/API/gtk/WebKitPermissionRequest.h: Added. + (_WebKitPermissionRequestIface): + * GNUmakefile.am: Added new files. + + Added the new signal to WebKitWebView, providing a default handler + that will just deny the request when the signal is not handled. + + * UIProcess/API/gtk/WebKitWebView.cpp: + (webkitWebViewDecidePermissionRequest): Default handler. + (webkit_web_view_class_init): Declare the new signal and connect + to the default handler. + (webkitWebViewMakePermissionRequest): Helper function to create a + make a new permission request and emit the new signal signal. + * UIProcess/API/gtk/WebKitWebView.h: + (_WebKitWebViewClass): + * UIProcess/API/gtk/WebKitWebViewPrivate.h: Declare the creational + function webkitWebViewMakePermissionRequest for internal use only. + + Updated documentation files. + + * UIProcess/API/gtk/docs/webkit2gtk-docs.sgml: + * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: + +2012-05-25 Grzegorz Czajkowski <g.czajkowski@samsung.com> + + [WK2] Fix client interface size for WKPageContextMenuClient. + https://bugs.webkit.org/show_bug.cgi?id=87472 + + Reviewed by Carlos Garcia Campos. + + Add correct offset for version 1 and 2 of WKPageContextMenuClient. + Revision 109750 introduces a new API and increases size of interfaceSizesByVersion + but the table is not properly initialized for newly introduced version 2. + + * Shared/APIClientTraits.cpp: + (WebKit): + +2012-05-24 Andreas Kling <kling@webkit.org> + + Mac bots crashing under PluginInfo destructor. + <http://webkit.org/b/87414> + <rdar://problem/11527172> + + Reviewed by Darin Adler. + + We can't safely pass WTF::String to another thread without a deref() race, + so pass the PluginInfo vector by pointer instead of by value. + + * UIProcess/WebContext.cpp: + (WebKit::WebContext::sendDidGetPlugins): + (WebKit::WebContext::handleGetPlugins): + * UIProcess/WebContext.h: + +2012-05-25 Zalan Bujtas <zbujtas@gmail.com> + + [Qt][WK2] Fix failing qmltests::FitToView::test_basic() + https://bugs.webkit.org/show_bug.cgi?id=87236 + + Reviewed by Kenneth Rohde Christiansen. + + Rename contentViewportChanged to informVisibleContentChange() to + reflect its functionality better. Centralize m_hadUserInteraction flag + setting and add assertions on it to ensure that designated + functions are called only on user interaction. + + * UIProcess/API/qt/qquickwebview.cpp: + (QQuickWebViewFlickablePrivate::onComponentComplete): + (QQuickWebViewFlickablePrivate::updateViewportSize): + (QQuickWebViewFlickablePrivate::_q_onInformVisibleContentChange): + (QQuickWebViewFlickablePrivate::_q_resume): + * UIProcess/API/qt/qquickwebview_p.h: + * UIProcess/API/qt/qquickwebview_p_p.h: + (QQuickWebViewPrivate::_q_onInformVisibleContentChange): + (QQuickWebViewFlickablePrivate): + * UIProcess/qt/QtViewportInteractionEngine.cpp: + (WebKit::ViewportUpdateDeferrer::~ViewportUpdateDeferrer): + (WebKit::QtViewportInteractionEngine::flickableMovingPositionUpdate): + (WebKit::QtViewportInteractionEngine::pagePositionRequest): + (WebKit::QtViewportInteractionEngine::touchBegin): + (WebKit::QtViewportInteractionEngine::focusEditableArea): + (WebKit::QtViewportInteractionEngine::zoomToAreaGestureEnded): + (WebKit::QtViewportInteractionEngine::panGestureStarted): + (WebKit::QtViewportInteractionEngine::pinchGestureStarted): + * UIProcess/qt/QtViewportInteractionEngine.h: + (QtViewportInteractionEngine): + +2012-05-24 Tim Horton <timothy_horton@apple.com> + + Add feature defines for web-facing parts of CSS Regions and Exclusions + https://bugs.webkit.org/show_bug.cgi?id=87442 + <rdar://problem/10887709> + + Reviewed by Dan Bernstein. + + * Configurations/FeatureDefines.xcconfig: + +2012-05-24 Geoffrey Garen <ggaren@apple.com> + + WebKit should be lazy-finalization-safe (esp. the DOM) + https://bugs.webkit.org/show_bug.cgi?id=87456 + + Reviewed by Filip Pizlo. + + * WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp: + (WebKit::NPRuntimeObjectMap::getOrCreateJSObject): Use the new idioms. + + (WebKit::NPRuntimeObjectMap::invalidate): Check for null while iterating, + since that's possible now. + + (WebKit::NPRuntimeObjectMap::finalize): Use the new idioms. + +2012-05-24 Brady Eidson <beidson@apple.com> + + Fix the build after http://trac.webkit.org/changeset/118441 + Also fix a glaring bug with the new code, will run it by original reviewer retroactively. + + * UIProcess/cf/WebBackForwardListCF.cpp: + (WebKit::WebBackForwardList::restoreFromCFDictionaryRepresentation): Fix up the types of the ? operands + to appease super-strict compilers. Don't allow negative indexes (besides the -1 "No index" index). + +2012-05-24 Brady Eidson <beidson@apple.com> + + <rdar://problem/10090764> and https://bugs.webkit.org/show_bug.cgi?id=87417 + (Unrepro) Crashes saving session state in WebBackForwardList + + Reviewed by Darin Adler. + + * UIProcess/WebBackForwardList.cpp: + (WebKit::WebBackForwardList::addItem): Null check the proposed item and also m_page, to make + sure the page hasn't been closed making this list inactive. Be more aggressive about + clearing the current entries out if there is no current item index. + (WebKit::WebBackForwardList::itemAtIndex): Early null return if there is no current index. + (WebKit::WebBackForwardList::clear): Don't put the current item back in the array if there was + no current item. + + * UIProcess/cf/WebBackForwardListCF.cpp: + (WebKit::WebBackForwardList::createCFDictionaryRepresentation): Don't create a meaningless WebURL. + Don't successfully return a dictionary if any of the entries were null. Be more aggressive about + validating the current index we plan to return in the dictionary. + (WebKit::WebBackForwardList::restoreFromCFDictionaryRepresentation): More aggressively validate the + current index read from disk. Replace a meaningless sanity check with our typical ASSERT. + +2012-05-24 Anders Carlsson <andersca@apple.com> + + Make sure that the layer hosting mode is up-to-date when reconnecting to a new web process + https://bugs.webkit.org/show_bug.cgi?id=87421 + <rdar://problem/11510337> + + Reviewed by Beth Dakin. + + Send over the layer hosting mode as part of the web page creation parameters and create the right + layer hosting context based on the mode. + + * Shared/WebPageCreationParameters.cpp: + (WebKit::WebPageCreationParameters::encode): + (WebKit::WebPageCreationParameters::decode): + * Shared/WebPageCreationParameters.h: + (WebPageCreationParameters): + * UIProcess/WebPageProxy.cpp: + (WebKit::WebPageProxy::creationParameters): + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::WebPage): + * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h: + (TiledCoreAnimationDrawingArea): + * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm: + (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea): + (WebKit::TiledCoreAnimationDrawingArea::setLayerHostingMode): + (WebKit): + (WebKit::TiledCoreAnimationDrawingArea::updateLayerHostingContext): + +2012-05-24 John Mellor <johnme@chromium.org> + + Font Boosting: Add compile flag and runtime setting + https://bugs.webkit.org/show_bug.cgi?id=87394 + + Reviewed by Adam Barth. + + Add ENABLE_FONT_BOOSTING. + + * Configurations/FeatureDefines.xcconfig: + +2012-05-24 Yael Aharon <yael.aharon@nokia.com> + + [Qt] Stop using the flag FIXED_POSITION_CREATES_STACKING_CONTEXT + https://bugs.webkit.org/show_bug.cgi?id=87392 + + Reviewed by Antonio Gomes. + + Turn on the setting setFixedPositionCreatesStackingContext. + + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::setResizesToContentsUsingLayoutSize): + +2012-05-24 Alexey Proskuryakov <ap@apple.com> + + [WK2] Let the client give local files universal access on a case by case basis + https://bugs.webkit.org/show_bug.cgi?id=87174 + <rdar://problem/11024330> + + Reviewed by Maciej Stachowiak. + + * WebProcess/InjectedBundle/API/c/WKBundlePage.h: + * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp: + (WebKit::InjectedBundlePageLoaderClient::shouldForceUniversalAccessFromLocalURL): + * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h: + * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: + (WebKit::WebFrameLoaderClient::shouldForceUniversalAccessFromLocalURL): + * WebProcess/WebCoreSupport/WebFrameLoaderClient.h: + * WebProcess/qt/QtBuiltinBundlePage.cpp: + (WebKit::QtBuiltinBundlePage::QtBuiltinBundlePage): + Added glue code to call bundle client. + +2012-05-24 Alexander Færøy <alexander.faeroy@nokia.com> + + Reorder arguments to compare() in the QML WebView tests + https://bugs.webkit.org/show_bug.cgi?id=87374 + + Reviewed by Simon Hausmann. + + Based on patch by Kenneth Rohde Christiansen. + + The reordering is necessary to get correct information printed when + the tests fails. Without this, the test suite will display the bogus + value and not the expected value. + + This patch also removes the delayed windowShown since this is not + needed anymore, due to us using the touch events instead of mouse + events. + + * UIProcess/API/qt/tests/qmltests/WebView/tst_doubleTapToZoom.qml: + +2012-05-24 Allan Sandfeld Jensen <allan.jensen@nokia.com> + + [Qt] Tiles not painted after wheel or keyboard scroll. + https://bugs.webkit.org/show_bug.cgi?id=87358 + + Reviewed by Kenneth Rohde Christiansen. + + After performing a scroll requested from the WebProcess we also need + to inform the painting layer of the viewport change. + + * UIProcess/qt/QtViewportInteractionEngine.cpp: + (WebKit::QtViewportInteractionEngine::pagePositionRequest): + +2012-05-24 Andras Becsi <andras.becsi@nokia.com> + + [Qt][WK2] Fix bounce-back animation on pinch->pan + https://bugs.webkit.org/show_bug.cgi?id=87266 + + Reviewed by Kenneth Rohde Christiansen. + + If ending an out-of-bounds pinch gesture with releasing one finger + (transition to a pan gesture) the bounce back animation blinks in + the end position immediately first, then animates the content back + into bounds. + + QtViewportInteractionEngine::cancelScrollAnimation should return + early if there is no active kinetic animation. + + * UIProcess/qt/QtViewportInteractionEngine.cpp: + (WebKit::QtViewportInteractionEngine::cancelScrollAnimation): + +2012-05-23 Ojan Vafai <ojan@chromium.org> + + add back the ability to disable flexbox + https://bugs.webkit.org/show_bug.cgi?id=87147 + + Reviewed by Tony Chang. + + * Configurations/FeatureDefines.xcconfig: + +2012-05-23 Jer Noble <jer.noble@apple.com> + + REGRESSION (117623) - Entering/exiting fullscreen HTML5 videos, there is a quick animated fade + https://bugs.webkit.org/show_bug.cgi?id=87294 + + Reviewed by Darin Adler. + + When setting the sublayers array on the layer hosting view, wrap the call in a CATransaction which disables + animations. + + * UIProcess/API/mac/WKView.mm: + (-[WKView _updateAcceleratedCompositingMode:WebKit::]): + +2012-05-23 Dinu Jacob <dinu.jacob@nokia.com> + + [Qt][Wk2] Assertion failure when selecting an option in select list with size attribute greater than one + https://bugs.webkit.org/show_bug.cgi?id=86974 + + Reviewed by Simon Hausmann. + + Select list with size attribute greater than one will not initially have any + item in selected state (if no option has 'selected' tag), resulting in + m_selectedModelIndex in WebPopupMenuProxyQt to be invalid. Hence, need to check + whether the old index is invalid before accessing the item at that index. + + * UIProcess/API/qt/tests/qmltests/DesktopBehavior/tst_itemSelector.qml: Added new test that + tests selection in a select list with size attribute value of 2. + * UIProcess/API/qt/tests/qmltests/common/selectwithsize.html: Added. + * UIProcess/qt/WebPopupMenuProxyQt.cpp: + (WebKit::PopupMenuItemModel::select): Check whether old index is valid before accessing + the item at that index. + +2012-05-23 Jer Noble <jer.noble@apple.com> + + REGRESSION (r116188): After exiting full screen, Safari window is frozen, then inline video speeds through frames as it catches up with audio + https://bugs.webkit.org/show_bug.cgi?id=87206 + + Reviewed by Darin Adler. + + When re-enabling the Safari window's autodisplay flag, also force the window to re-display. + Otherwise, the window will not repaint itself until it is forced to by user interaction. + + * UIProcess/mac/WKFullScreenWindowController.mm: + (-[WKFullScreenWindowController completeFinishExitFullScreenAnimationAfterRepaint]): + +2012-05-23 Martin Robinson <mrobinson@igalia.com> + + [GTK] [WebKit2] Add an API to enable and disable composited layer indicators + https://bugs.webkit.org/show_bug.cgi?id=87053 + + Reviewed by Carlos Garcia Campos. + + Add a WebKitSetting that allows the client to enable and disable debug + borders and repaint counters for accelerated content. + + * UIProcess/API/gtk/WebKitSettings.cpp: + (webKitSettingsSetProperty): Added. + (webKitSettingsGetProperty): Added. + (webkit_settings_class_init): Add the new property. + (webkit_settings_set_draw_compositing_indicators): Added. + (webkit_settings_get_draw_compositing_indicators): Added. + * UIProcess/API/gtk/WebKitSettings.h: + * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Add the new API points to the + documentation. + * UIProcess/API/gtk/test/TestWebKitSettings.h: Add a new unit test. + +2012-05-23 Michael Brüning <michael.bruning@nokia.com> + + [Qt][WK2] Small refactoring WebPage::confirmComposition. + https://bugs.webkit.org/show_bug.cgi?id=87243 + + Reviewed by Kenneth Rohde Christiansen. + + Change nested if into an early return to reduce complexity. + + * WebProcess/WebPage/qt/WebPageQt.cpp: + (WebKit::WebPage::confirmComposition): + +2012-05-22 Alexander Færøy <alexander.faeroy@nokia.com> + + [Qt] Missing tests for the evaluateJavaScript API + https://bugs.webkit.org/show_bug.cgi?id=86351 + + Reviewed by Kenneth Rohde Christiansen. + + * UIProcess/API/qt/tests/qmltests/WebView/tst_evaluateJavaScript.qml: + * UIProcess/API/qt/tests/qmltests/common/evaluatejavascript.html: Added. + +2012-05-23 Allan Sandfeld Jensen <allan.jensen@nokia.com> + + [Qt] FloatSize Qt Support + https://bugs.webkit.org/show_bug.cgi?id=87237 + + Reviewed by Andreas Kling. + + Basic cleanup possible to new Qt support in FloatSize. + + * UIProcess/API/qt/qquickwebpage.cpp: + (QQuickWebPagePrivate::updateSize): + * UIProcess/API/qt/qwebkittest.cpp: + (QWebKitTest::layoutSize): + +2012-04-18 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> + + [Qt] Make the web view's url property follow the active url + + https://bugs.webkit.org/show_bug.cgi?id=77554 + + The url property of the webview now reflects the 'active' url of the + page, which maps to either the currently loading url, in the case of + an ongoing load, or the result of a load, even when the load failed. + + In practice this means that setting the url though QML, or navigating + to a new url in the page by e.g clicking, will both instantly change + the url-property of the webview to the target url. This differs from + earlier behavior, where we would update the url when the load + committed. + + An optional argument is added to loadHtml(), to allow setting + the unreachable url when providing replacement content for failed + loads. + + Finally, the location bar in the minibrowser is updated to behave + a bit more like normal browsers in terms of when the url will change + and how active focus is handled. + + Reviewed by Simon Hausmann. + + * UIProcess/API/qt/qquickwebview.cpp: + (QQuickWebViewPrivate::onComponentComplete): + (QQuickWebView::reload): + (QQuickWebView::url): + (QQuickWebView::setUrl): + (QQuickWebView::loadHtml): + * UIProcess/API/qt/qquickwebview_p.h: + * UIProcess/API/qt/tests/qmltests/DesktopBehavior.pro: + * UIProcess/API/qt/tests/qmltests/WebView.pro: + * UIProcess/API/qt/tests/qmltests/WebView/tst_loadUrl.qml: + * UIProcess/API/qt/tests/qmltests/common/link.html: Added. + * UIProcess/API/qt/tests/qmltests/common/redirect.html: Added. + * UIProcess/qt/QtWebPageLoadClient.cpp: + (QtWebPageLoadClient::QtWebPageLoadClient): + (QtWebPageLoadClient::didStartProvisionalLoadForFrame): + (QtWebPageLoadClient::didReceiveServerRedirectForProvisionalLoadForFrame): + (QtWebPageLoadClient::didCommitLoadForFrame): + (QtWebPageLoadClient::dispatchLoadFailed): + (QtWebPageLoadClient::didFailProvisionalLoadWithErrorForFrame): + (QtWebPageLoadClient::didFailLoadWithErrorForFrame): + * UIProcess/qt/QtWebPageLoadClient.h: + (QtWebPageLoadClient): + +2012-05-23 Simon Hausmann <simon.hausmann@nokia.com> + + [Qt] Race condition in LayerTreeHost/Proxy can cause blank rendering + https://bugs.webkit.org/show_bug.cgi?id=87239 + + Reviewed by Kenneth Rohde Christiansen. + + On the UI process side the WebLayerTreeRenderer/LayerTreeHostProxy pair is + created with m_active = false, which makes it ignore any incoming layer updates. + It remains inactive until the ContentsSGNode is created and setActive(true) is called. + + On the web process side the LayerTreeHost is created with m_waitingForUIProcess = false. + + Those two variables must be in sync, otherwise a race condition can + happen: The web process sends updates to the ui process before the + ContentsSGNode is created. This can happen for example when re-using an + existing WebProcess to create a QQuickWebView and load a page very fast + from the disk cache. The update arrives on the ui process side, but it + is discarded because setActive(true) hasn't been called yet. As a + result any updates that would for example create and populate the tiles + required for rendering are ignored. + + This patch ensures that the variables are initialized with the same values and that calling + setActive(true) will trigger the rendering of the next frame. + + * UIProcess/WebLayerTreeRenderer.cpp: + (WebKit::WebLayerTreeRenderer::setActive): + * WebProcess/WebPage/qt/LayerTreeHostQt.cpp: + (WebKit::LayerTreeHostQt::LayerTreeHostQt): + +2012-05-23 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> + + [Qt] Make QtWebError return the failing URL as a QString instead of QUrl + + We don't want to use QUrl inside QtWebKit (only in the API layer), due + to how QUrl normalizes the url. + + Reviewed by Simon Hausmann. + + * UIProcess/qt/QtWebError.cpp: + (WebKit::QtWebError::url): + * UIProcess/qt/QtWebError.h: + +2012-05-22 Carlos Garcia Campos <cgarcia@igalia.com> + + [GTK] Add inspector API to WebKit2 GTK+ + https://bugs.webkit.org/show_bug.cgi?id=87113 + + Reviewed by Martin Robinson. + + * GNUmakefile.list.am: Add new files to compilation. + * UIProcess/API/C/gtk/WKInspectorClientGtk.cpp: Added. + (WKInspectorSetInspectorClientGtk): + * UIProcess/API/C/gtk/WKInspectorClientGtk.h: Added. + * UIProcess/API/gtk/WebKitPrivate.h: + * UIProcess/API/gtk/WebKitWebInspector.cpp: Added. + (webkitWebInspectorFinalize): + (webkit_web_inspector_init): + (webkit_web_inspector_class_init): + (openWindow): Emit WebKitWebInspector::open-window singal. + (didClose): Emit WebKitWebInspector::closed signal. + (bringToFront): Emit WebKitWebInspector::bring-to-front singal. + (inspectedURLChanged): Set the inspected URI and emit + GObject::notify signal if it changed. + (attach): Emit WebKitWebInspector::attach signal. + (detach): Emit WebKitWebInspector::detach signal. + (didChangeAttachedHeight): Set the attached height and emit + GObject::notify signal if it changed. + (webkitWebInspectorCreate): Ceate a new WebKitWebInspector object + for the given WKInspector. Also initialize and set the inspector + client. + (webkit_web_inspector_get_web_view): Return the web view used to + render the inspector. + (webkit_web_inspector_get_inspected_uri): Return the URI that is + being inspected. + (webkit_web_inspector_is_attached): Whether the inspector view is + currently attached. + (webkit_web_inspector_attach): Request to attach the inspector. + (webkit_web_inspector_detach): Request to detach the inspector. + (webkit_web_inspector_show): Request to show the inspector. + (webkit_web_inspector_close): Request to close the inspector. + (webkit_web_inspector_get_attached_height): Return the height that + the inspector view should have when attached. + * UIProcess/API/gtk/WebKitWebInspector.h: Added. + * UIProcess/API/gtk/WebKitWebInspectorPrivate.h: Added. + * UIProcess/API/gtk/WebKitWebView.cpp: + (webkit_web_view_get_inspector): Return the WebKitWebInspector + associated to the web view. + * UIProcess/API/gtk/WebKitWebView.h: + * UIProcess/API/gtk/docs/webkit2gtk-docs.sgml: Add new section for + WebKitWebInspector. + * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Ad new symbols. + * UIProcess/API/gtk/docs/webkit2gtk.types: Add + webkit_web_inspector_get_type. + * UIProcess/API/gtk/tests/GNUmakefile.am: Add new test for the + inspector API. + * UIProcess/API/gtk/tests/TestInspector.cpp: Added. + (testInspectorDefault): + (testInspectorCustom): + (testInspectorWindowDestroyed): + (beforeAll): + (afterAll): + * UIProcess/API/gtk/tests/WebViewTest.cpp: + (WebViewTest::showInWindowAndWaitUntilMapped): Add optional + parameter to create a toplevel or popup window. + (WebViewTest::resizeView): Helper function to set the widget + allocation to a given size. + * UIProcess/API/gtk/tests/WebViewTest.h: + * UIProcess/API/gtk/webkit2.h: Include WebKitWebInspector.h + * UIProcess/WebInspectorProxy.h: + (WebKit::WebInspectorProxy::inspectorView): Return the view used + to render the inspector. + * UIProcess/gtk/WebInspectorClientGtk.cpp: Added. + (WebKit::WebInspectorClientGtk::openWindow): + (WebKit::WebInspectorClientGtk::didClose): + (WebKit::WebInspectorClientGtk::bringToFront): + (WebKit::WebInspectorClientGtk::inspectedURLChanged): + (WebKit::WebInspectorClientGtk::attach): + (WebKit::WebInspectorClientGtk::detach): + (WebKit::WebInspectorClientGtk::didChangeAttachedHeight): + * UIProcess/gtk/WebInspectorClientGtk.h: Added. + * UIProcess/gtk/WebInspectorProxyGtk.cpp: + (WebKit::inspectorViewDestroyed): Close the inspector page when + the inspector view is destroyed, instead of when the inspector + window is deleted, because the inspector view can now be inside a + window created by the user. + (WebKit::WebInspectorProxy::initializeInspectorClientGtk): + Initialze the inspector client. + (WebKit::WebInspectorProxy::platformCreateInspectorPage): Add a + weak pointer to the inspector view to make sure it's NULL when + destroyed. + (WebKit::WebInspectorProxy::createInspectorWindow): Call + openWindow on the inspector client, and return early if the + callback was handled. + (WebKit::WebInspectorProxy::platformOpen): Connect to destroy + signal of the inspector view to close the page when the view is + destroyed. + (WebKit::WebInspectorProxy::platformDidClose): Call didClose on + the inspector client. + (WebKit::WebInspectorProxy::platformBringToFront): Call + bringToFront on the inspector client, and return early if the + callback was handled. + (WebKit::WebInspectorProxy::platformInspectedURLChanged): Call + inspectedURLChanged on the inspector client. + (WebKit::WebInspectorProxy::platformAttach): Call attach on the + inspector client and return if the callback was handled. + (WebKit::WebInspectorProxy::platformDetach): Call detach on the + inspector client and return if the callback was handled. + (WebKit::WebInspectorProxy::platformSetAttachedWindowHeight): Call + didChangeAttachedHeight on the inspector client. + +2012-05-22 Anders Carlsson <andersca@apple.com> + + Functions dispatched by dispatchAfterEnsuringUpdatedScrollPosition can be called after drawing area has been destroyed + https://bugs.webkit.org/show_bug.cgi?id=87173 + <rdar://problem/11474087> + + Reviewed by Beth Dakin. + + Don't try to call forceRepaint if the drawing area has already been destroyed. + + * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm: + (WebKit::TiledCoreAnimationDrawingArea::forceRepaintAsync): + +2012-05-22 Anders Carlsson <andersca@apple.com> + + Crash when a plug-in view outlives its containing WebPage + https://bugs.webkit.org/show_bug.cgi?id=87163 + <rdar://problem/10849258> + + Reviewed by Dan Bernstein. + + In rare cases, when a plug-in is kept alive for some reason it can outlive its WebPage. When that happens, + the PluginView destructor will try to access the (deleted) web page and we'll crash. + + Fix this by making the WebPage destructor iterate over all the registered plug-ins and null out the m_webPage pointer. + Don't try to access the WebPage object if it's null. + + Also, remove PLATFORM(MAC) ifdefs around the HashSet of known plug-in views as well as the member functions that access the set; + we want this to be cross platform now. + + * WebProcess/Plugins/PluginView.cpp: + (WebKit::PluginView::PluginView): + (WebKit::PluginView::~PluginView): + (WebKit::PluginView::webPageDestroyed): + (WebKit): + * WebProcess/Plugins/PluginView.h: + (PluginView): + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::~WebPage): + (WebKit::WebPage::scalePage): + (WebKit): + * WebProcess/WebPage/WebPage.h: + (WebPage): + +== Rolled over to ChangeLog-2012-05-22 == diff --git a/Source/WebKit2/Configurations/FeatureDefines.xcconfig b/Source/WebKit2/Configurations/FeatureDefines.xcconfig index 835e2e40d..3f40c7149 100644 --- a/Source/WebKit2/Configurations/FeatureDefines.xcconfig +++ b/Source/WebKit2/Configurations/FeatureDefines.xcconfig @@ -38,7 +38,7 @@ ENABLE_BLOB = ENABLE_BLOB; ENABLE_CHANNEL_MESSAGING = ENABLE_CHANNEL_MESSAGING; ENABLE_CSP_NEXT = ; ENABLE_CSS_BOX_DECORATION_BREAK = ENABLE_CSS_BOX_DECORATION_BREAK; -ENABLE_CSS_COMPOSITING = ; +ENABLE_CSS_COMPOSITING = ENABLE_CSS_COMPOSITING; ENABLE_CSS_EXCLUSIONS = ENABLE_CSS_EXCLUSIONS; ENABLE_CSS_FILTERS = ENABLE_CSS_FILTERS; ENABLE_CSS_HIERARCHIES = ; @@ -64,6 +64,8 @@ ENABLE_FILTERS_macosx = ENABLE_FILTERS; ENABLE_FULLSCREEN_API = ENABLE_FULLSCREEN_API; ENABLE_GAMEPAD = ; ENABLE_GEOLOCATION = ENABLE_GEOLOCATION; +ENABLE_HIDDEN_PAGE_DOM_TIMER_THROTTLING = $(ENABLE_HIDDEN_PAGE_DOM_TIMER_THROTTLING_$(REAL_PLATFORM_NAME)); +ENABLE_HIDDEN_PAGE_DOM_TIMER_THROTTLING_macosx = ENABLE_HIDDEN_PAGE_DOM_TIMER_THROTTLING; ENABLE_HIGH_DPI_CANVAS = ENABLE_HIGH_DPI_CANVAS; ENABLE_ICONDATABASE = $(ENABLE_ICONDATABASE_$(REAL_PLATFORM_NAME)); ENABLE_ICONDATABASE_macosx = ENABLE_ICONDATABASE; @@ -114,6 +116,11 @@ ENABLE_NOTIFICATIONS_macosx_1070 = ; ENABLE_NOTIFICATIONS_macosx_1080 = ENABLE_NOTIFICATIONS; ENABLE_NOTIFICATIONS_macosx_1090 = ENABLE_NOTIFICATIONS; ENABLE_PAGE_VISIBILITY_API = ; +ENABLE_PDFKIT_PLUGIN = $(ENABLE_PDFKIT_PLUGIN_$(REAL_PLATFORM_NAME)); +ENABLE_PDFKIT_PLUGIN_macosx = $(ENABLE_PDFKIT_PLUGIN_macosx_$(TARGET_MAC_OS_X_VERSION_MAJOR)); +ENABLE_PDFKIT_PLUGIN_macosx_1070 = ; +ENABLE_PDFKIT_PLUGIN_macosx_1080 = ; +ENABLE_PDFKIT_PLUGIN_macosx_1090 = ENABLE_PDFKIT_PLUGIN; ENABLE_PROGRESS_ELEMENT = ENABLE_PROGRESS_ELEMENT; ENABLE_QUOTA = ; ENABLE_REQUEST_ANIMATION_FRAME = ENABLE_REQUEST_ANIMATION_FRAME; @@ -137,9 +144,8 @@ ENABLE_WEBGL = ENABLE_WEBGL; ENABLE_WEB_AUDIO = ENABLE_WEB_AUDIO; ENABLE_WEB_SOCKETS = ENABLE_WEB_SOCKETS; ENABLE_WEB_TIMING = ; -ENABLE_WIDGET_REGION = $(ENABLE_WIDGET_REGION_$(REAL_PLATFORM_NAME)); -ENABLE_WIDGET_REGION_macosx = ENABLE_WIDGET_REGION; +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) $(LEGACY_VENDOR_PREFIXES) $(ENABLE_LEGACY_WEB_AUDIO) $(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_HIDDEN_PAGE_DOM_TIMER_THROTTLING) $(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_LEGACY_WEB_AUDIO) $(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_PDFKIT_PLUGIN) $(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/NetworkProcess.xcconfig b/Source/WebKit2/Configurations/NetworkProcess.xcconfig new file mode 100644 index 000000000..aebab349e --- /dev/null +++ b/Source/WebKit2/Configurations/NetworkProcess.xcconfig @@ -0,0 +1,29 @@ +// Copyright (C) 2012 Apple Inc. 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. ``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 +// 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 "BaseTarget.xcconfig" + +GCC_ENABLE_OBJC_GC = NO; +PRODUCT_NAME = NetworkProcess; +INFOPLIST_FILE = NetworkProcess/Info.plist; +INSTALL_PATH = $(WEBKIT2_FRAMEWORKS_DIR)/WebKit2.framework; diff --git a/Source/WebKit2/Configurations/Version.xcconfig b/Source/WebKit2/Configurations/Version.xcconfig index 2fff18a71..0415cfc2a 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 = 12; +MINOR_VERSION = 15; TINY_VERSION = 0; FULL_VERSION = $(MAJOR_VERSION).$(MINOR_VERSION); diff --git a/Source/WebKit2/DerivedSources.make b/Source/WebKit2/DerivedSources.make index 896c8e06e..aff292408 100644 --- a/Source/WebKit2/DerivedSources.make +++ b/Source/WebKit2/DerivedSources.make @@ -22,9 +22,11 @@ VPATH = \ $(WebKit2) \ + $(WebKit2)/NetworkProcess \ $(WebKit2)/PluginProcess \ $(WebKit2)/PluginProcess/mac \ $(WebKit2)/Shared/Plugins \ + $(WebKit2)/Shared \ $(WebKit2)/WebProcess/ApplicationCache \ $(WebKit2)/WebProcess/Authentication \ $(WebKit2)/WebProcess/Cookies \ @@ -51,6 +53,7 @@ MESSAGE_RECEIVERS = \ DrawingAreaProxy \ DownloadProxy \ EventDispatcher \ + NetworkProcess \ NPObjectMessageReceiver \ PluginControllerProxy \ PluginProcess \ @@ -61,6 +64,7 @@ MESSAGE_RECEIVERS = \ WebApplicationCacheManagerProxy \ WebCookieManager \ WebCookieManagerProxy \ + WebConnection \ WebContext \ WebDatabaseManager \ WebDatabaseManagerProxy \ @@ -79,6 +83,7 @@ MESSAGE_RECEIVERS = \ WebNotificationManagerProxy \ WebNotificationManager \ WebPage \ + WebPageGroupProxy \ WebPageProxy \ WebProcess \ WebProcessConnection \ diff --git a/Source/WebKit2/DerivedSources.pri b/Source/WebKit2/DerivedSources.pri index ad0288b18..0fdc49c7d 100644 --- a/Source/WebKit2/DerivedSources.pri +++ b/Source/WebKit2/DerivedSources.pri @@ -59,6 +59,7 @@ VPATH = \ UIProcess/Downloads \ UIProcess/Notifications \ UIProcess/Plugins \ + Shared \ Shared/Plugins MESSAGE_RECEIVERS = \ @@ -76,6 +77,7 @@ MESSAGE_RECEIVERS = \ WebApplicationCacheManagerProxy.messages.in \ WebBatteryManager.messages.in \ WebBatteryManagerProxy.messages.in \ + WebConnection.messages.in \ WebContext.messages.in \ WebCookieManager.messages.in \ WebCookieManagerProxy.messages.in \ @@ -100,6 +102,7 @@ MESSAGE_RECEIVERS = \ LayerTreeCoordinator.messages.in \ WebInspector.messages.in \ WebPage.messages.in \ + WebPageGroupProxy.messages.in \ WebPageProxy.messages.in \ WebProcess.messages.in \ WebProcessConnection.messages.in \ diff --git a/Source/WebKit2/GNUmakefile.am b/Source/WebKit2/GNUmakefile.am index 52020862f..f956d0edd 100644 --- a/Source/WebKit2/GNUmakefile.am +++ b/Source/WebKit2/GNUmakefile.am @@ -55,7 +55,7 @@ libwebkit2gtk_@WEBKITGTK_API_MAJOR_VERSION@_@WEBKITGTK_API_MINOR_VERSION@_la_CPP -I$(srcdir)/Source/WebKit2/UIProcess/Launcher/gtk \ -I$(srcdir)/Source/WebKit2/UIProcess/Notifications \ -I$(srcdir)/Source/WebKit2/UIProcess/Plugins \ - -I$(srcdir)/Source/WebKit2/UIProcess/Plugins/gtk \ + -I$(srcdir)/Source/WebKit2/UIProcess/Plugins/unix \ -I$(srcdir)/Source/WebKit2/UIProcess/soup \ -I$(srcdir)/Source/WebKit2/WebProcess \ -I$(srcdir)/Source/WebKit2/WebProcess/ApplicationCache \ @@ -82,7 +82,7 @@ libwebkit2gtk_@WEBKITGTK_API_MAJOR_VERSION@_@WEBKITGTK_API_MINOR_VERSION@_la_CPP -I$(srcdir)/Source/WebKit2/WebProcess/soup \ -I$(srcdir)/Source/WebKit2/WebProcess/Plugins \ -I$(srcdir)/Source/WebKit2/WebProcess/Plugins/Netscape \ - -I$(srcdir)/Source/WebKit2/WebProcess/Plugins/Netscape/gtk \ + -I$(srcdir)/Source/WebKit2/WebProcess/Plugins/Netscape/unix \ -I$(srcdir)/Source/WebKit2/WebProcess/WebCoreSupport \ -I$(srcdir)/Source/WebKit2/WebProcess/WebCoreSupport/gtk \ -I$(srcdir)/Source/WebKit2/WebProcess/WebCoreSupport/soup \ @@ -110,6 +110,7 @@ libwebkit2gtk_@WEBKITGTK_API_MAJOR_VERSION@_@WEBKITGTK_API_MINOR_VERSION@_la_CPP $(LIBSOUP_CFLAGS) \ $(UNICODE_CFLAGS) \ $(XCOMPOSITE_CFLAGS) \ + $(XDAMAGE_CFLAGS) \ $(XT_CFLAGS) libwebkit2gtk_@WEBKITGTK_API_MAJOR_VERSION@_@WEBKITGTK_API_MINOR_VERSION@_la_CXXFLAGS = \ @@ -184,6 +185,7 @@ libwebkit2gtk_@WEBKITGTK_API_MAJOR_VERSION@_@WEBKITGTK_API_MINOR_VERSION@_la_LIB $(UNICODE_LIBS) \ $(XRENDER_LIBS) \ $(XCOMPOSITE_LIBS) \ + $(XDAMAGE_LIBS) \ $(XT_LIBS) \ $(ZLIB_LIBS) @@ -217,6 +219,7 @@ BUILT_SOURCES += $(GENSOURCES_WEBKIT2)/webkit2gtk/include/webkit2 vpath %.messages.in = \ $(WebKit2)/PluginProcess \ + $(WebKit2)/Shared \ $(WebKit2)/Shared/Plugins \ $(WebKit2)/UIProcess \ $(WebKit2)/UIProcess/ApplicationCache \ @@ -427,7 +430,7 @@ Programs_WebKitPluginProcess_CPPFLAGS = \ -I$(srcdir)/Source/WebKit2/Platform \ -I$(srcdir)/Source/WebKit2/Platform/CoreIPC/ \ -I$(srcdir)/Source/WebKit2/PluginProcess/ \ - -I$(srcdir)/Source/WebKit2/PluginProcess/gtk \ + -I$(srcdir)/Source/WebKit2/PluginProcess/unix \ -I$(srcdir)/Source/WebKit2/Shared \ -I$(srcdir)/Source/WebKit2/Shared/Plugins \ -I$(srcdir)/Source/WebKit2/Shared/Plugins/Netscape/ \ @@ -526,6 +529,7 @@ EXTRA_DIST += \ $(WebKit2)/UIProcess/API/gtk/webkit2marshal.list \ $(WebKit2)/Scripts/generate-forwarding-headers.pl \ $(shell ls $(WebKit2)/PluginProcess/*.in) \ + $(shell ls $(WebKit2)/Shared/*.in) \ $(shell ls $(WebKit2)/Shared/Plugins/*.in) \ $(shell ls $(WebKit2)/UIProcess/*.in) \ $(shell ls $(WebKit2)/UIProcess/Downloads/*.in) \ diff --git a/Source/WebKit2/GNUmakefile.list.am b/Source/WebKit2/GNUmakefile.list.am index 5015fb3e2..371f4f558 100644 --- a/Source/WebKit2/GNUmakefile.list.am +++ b/Source/WebKit2/GNUmakefile.list.am @@ -104,6 +104,7 @@ webkit2gtk_h_api += \ $(WebKit2)/UIProcess/API/gtk/WebKitDownload.h \ $(WebKit2)/UIProcess/API/gtk/WebKitEditingCommands.h \ $(WebKit2)/UIProcess/API/gtk/WebKitError.h \ + $(WebKit2)/UIProcess/API/gtk/WebKitFaviconDatabase.h \ $(WebKit2)/UIProcess/API/gtk/WebKitFileChooserRequest.h \ $(WebKit2)/UIProcess/API/gtk/WebKitFindController.h \ $(WebKit2)/UIProcess/API/gtk/WebKitFormSubmissionRequest.h \ @@ -164,6 +165,8 @@ webkit2_built_sources += \ DerivedSources/WebKit2/WebBatteryManagerProxyMessages.h \ DerivedSources/WebKit2/WebContextMessageReceiver.cpp \ DerivedSources/WebKit2/WebContextMessages.h \ + DerivedSources/WebKit2/WebConnectionMessageReceiver.cpp \ + DerivedSources/WebKit2/WebConnectionMessages.h \ DerivedSources/WebKit2/WebCookieManagerMessageReceiver.cpp \ DerivedSources/WebKit2/WebCookieManagerMessages.h \ DerivedSources/WebKit2/WebCookieManagerProxyMessageReceiver.cpp \ @@ -204,6 +207,8 @@ webkit2_built_sources += \ DerivedSources/WebKit2/WebNotificationManagerMessages.h \ DerivedSources/WebKit2/WebNotificationManagerProxyMessageReceiver.cpp \ DerivedSources/WebKit2/WebNotificationManagerProxyMessages.h \ + DerivedSources/WebKit2/WebPageGroupProxyMessageReceiver.cpp \ + DerivedSources/WebKit2/WebPageGroupProxyMessages.h \ DerivedSources/WebKit2/WebPageProxyMessageReceiver.cpp \ DerivedSources/WebKit2/WebPageProxyMessages.h \ DerivedSources/WebKit2/WebPageMessageReceiver.cpp \ @@ -253,6 +258,9 @@ webkit2_sources += \ Source/WebKit2/Platform/CoreIPC/DataReference.h \ Source/WebKit2/Platform/CoreIPC/HandleMessage.h \ Source/WebKit2/Platform/CoreIPC/MessageID.h \ + Source/WebKit2/Platform/CoreIPC/MessageReceiver.h \ + Source/WebKit2/Platform/CoreIPC/MessageReceiverMap.cpp \ + Source/WebKit2/Platform/CoreIPC/MessageReceiverMap.h \ Source/WebKit2/Platform/CoreIPC/MessageSender.h \ Source/WebKit2/Platform/CoreIPC/unix/AttachmentUnix.cpp \ Source/WebKit2/Platform/CoreIPC/unix/ConnectionUnix.cpp \ @@ -277,8 +285,8 @@ webkit2_sources += \ Source/WebKit2/PluginProcess/PluginProcessMain.h \ Source/WebKit2/PluginProcess/WebProcessConnection.cpp \ Source/WebKit2/PluginProcess/WebProcessConnection.h \ - Source/WebKit2/PluginProcess/gtk/PluginControllerProxyGtk.cpp \ - Source/WebKit2/PluginProcess/gtk/PluginProcessGtk.cpp \ + Source/WebKit2/PluginProcess/unix/PluginControllerProxyUnix.cpp \ + Source/WebKit2/PluginProcess/unix/PluginProcessUnix.cpp \ Source/WebKit2/Shared/DragControllerAction.h \ Source/WebKit2/Shared/FontInfo.h \ Source/WebKit2/Shared/HTTPCookieAcceptPolicy.h \ @@ -356,7 +364,6 @@ webkit2_sources += \ Source/WebKit2/Shared/ChildProcess.cpp \ Source/WebKit2/Shared/ChildProcess.h \ Source/WebKit2/Shared/CommandLine.h \ - Source/WebKit2/Shared/CoreIPCSupport/InjectedBundleMessageKinds.h \ Source/WebKit2/Shared/CoreIPCSupport/WebConnectionMessageKinds.h \ Source/WebKit2/Shared/CoreIPCSupport/WebContextMessageKinds.h \ Source/WebKit2/Shared/CoreIPCSupport/WebPageProxyMessageKinds.h \ @@ -643,6 +650,9 @@ webkit2_sources += \ Source/WebKit2/UIProcess/API/gtk/WebKitEditingCommands.h \ Source/WebKit2/UIProcess/API/gtk/WebKitError.h \ Source/WebKit2/UIProcess/API/gtk/WebKitError.cpp \ + Source/WebKit2/UIProcess/API/gtk/WebKitFaviconDatabase.h \ + Source/WebKit2/UIProcess/API/gtk/WebKitFaviconDatabase.cpp \ + Source/WebKit2/UIProcess/API/gtk/WebKitFaviconDatabasePrivate.h \ Source/WebKit2/UIProcess/API/gtk/WebKitFileChooserRequest.cpp \ Source/WebKit2/UIProcess/API/gtk/WebKitFileChooserRequest.h \ Source/WebKit2/UIProcess/API/gtk/WebKitFileChooserRequestPrivate.h \ @@ -802,8 +812,8 @@ webkit2_sources += \ Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.h \ Source/WebKit2/UIProcess/Plugins/WebPluginSiteDataManager.h \ Source/WebKit2/UIProcess/Plugins/WebPluginSiteDataManager.cpp \ - Source/WebKit2/UIProcess/Plugins/gtk/PluginProcessProxyGtk.cpp \ Source/WebKit2/UIProcess/Plugins/unix/PluginInfoStoreUnix.cpp \ + Source/WebKit2/UIProcess/Plugins/unix/PluginProcessProxyUnix.cpp \ Source/WebKit2/UIProcess/ProcessModel.h \ Source/WebKit2/UIProcess/ResponsivenessTimer.cpp \ Source/WebKit2/UIProcess/ResponsivenessTimer.h \ @@ -1062,7 +1072,7 @@ webkit2_sources += \ Source/WebKit2/WebProcess/Plugins/Netscape/NPRuntimeObjectMap.h \ Source/WebKit2/WebProcess/Plugins/Netscape/NPRuntimeUtilities.cpp \ Source/WebKit2/WebProcess/Plugins/Netscape/NPRuntimeUtilities.h \ - Source/WebKit2/WebProcess/Plugins/Netscape/gtk/PluginProxyGtk.cpp \ + Source/WebKit2/WebProcess/Plugins/Netscape/unix/PluginProxyUnix.cpp \ Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp \ Source/WebKit2/WebProcess/Plugins/PluginController.h \ Source/WebKit2/WebProcess/Plugins/Plugin.cpp \ @@ -1210,6 +1220,9 @@ webkit2_plugin_process_sources += \ Source/WebKit2/Platform/CoreIPC/DataReference.h \ Source/WebKit2/Platform/CoreIPC/HandleMessage.h \ Source/WebKit2/Platform/CoreIPC/MessageID.h \ + Source/WebKit2/Platform/CoreIPC/MessageReceiver.h \ + Source/WebKit2/Platform/CoreIPC/MessageReceiverMap.cpp \ + Source/WebKit2/Platform/CoreIPC/MessageReceiverMap.h \ Source/WebKit2/Platform/CoreIPC/MessageSender.h \ Source/WebKit2/Platform/CoreIPC/unix/AttachmentUnix.cpp \ Source/WebKit2/Platform/CoreIPC/unix/ConnectionUnix.cpp \ @@ -1232,10 +1245,10 @@ webkit2_plugin_process_sources += \ Source/WebKit2/PluginProcess/WebProcessConnection.h \ Source/WebKit2/Shared/Plugins/PluginProcessCreationParameters.cpp \ Source/WebKit2/Shared/Plugins/PluginProcessCreationParameters.h \ - Source/WebKit2/PluginProcess/gtk/PluginControllerProxyGtk.cpp \ - Source/WebKit2/PluginProcess/gtk/PluginProcessGtk.cpp \ - Source/WebKit2/PluginProcess/gtk/PluginProcessMainGtk.h \ - Source/WebKit2/PluginProcess/gtk/PluginProcessMainGtk.cpp \ + Source/WebKit2/PluginProcess/unix/PluginControllerProxyUnix.cpp \ + Source/WebKit2/PluginProcess/unix/PluginProcessMainUnix.h \ + Source/WebKit2/PluginProcess/unix/PluginProcessMainUnix.cpp \ + Source/WebKit2/PluginProcess/unix/PluginProcessUnix.cpp \ Source/WebKit2/Shared/ChildProcess.cpp \ Source/WebKit2/Shared/ChildProcess.h \ Source/WebKit2/Shared/ProcessExecutablePath.h \ @@ -1268,7 +1281,7 @@ webkit2_plugin_process_sources += \ Source/WebKit2/Shared/gtk/WebEventFactory.cpp \ Source/WebKit2/Shared/cairo/ShareableBitmapCairo.cpp \ Source/WebKit2/Shared/soup/WebCoreArgumentCodersSoup.cpp \ - Source/WebKit2/UIProcess/Plugins/gtk/PluginProcessProxyGtk.cpp \ + Source/WebKit2/UIProcess/Plugins/unix/PluginProcessProxyUnix.cpp \ Source/WebKit2/WebProcess/Plugins/Plugin.cpp \ Source/WebKit2/WebProcess/Plugins/Plugin.h \ Source/WebKit2/WebProcess/Plugins/Netscape/NPRuntimeUtilities.cpp \ @@ -1280,6 +1293,6 @@ webkit2_plugin_process_sources += \ Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePluginStream.cpp \ Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePluginStream.h \ Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp \ - Source/WebKit2/gtk/PluginMainGtk.cpp + Source/WebKit2/unix/PluginMainUnix.cpp endif # ENABLE_PLUGIN_PROCESS diff --git a/Source/WebKit2/NetworkProcess/Info.plist b/Source/WebKit2/NetworkProcess/Info.plist new file mode 100644 index 000000000..ca50b3cab --- /dev/null +++ b/Source/WebKit2/NetworkProcess/Info.plist @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>CFBundleExecutable</key> + <string>${EXECUTABLE_NAME}</string> + <key>CFBundleGetInfoString</key> + <string>${BUNDLE_VERSION}, Copyright 2003-2012 Apple Inc.</string> + <key>CFBundleIdentifier</key> + <string>com.apple.WebKit.${PRODUCT_NAME}</string> + <key>CFBundleInfoDictionaryVersion</key> + <string>6.0</string> + <key>CFBundleName</key> + <string>${PRODUCT_NAME}</string> + <key>CFBundlePackageType</key> + <string>APPL</string> + <key>CFBundleShortVersionString</key> + <string>${SHORT_VERSION_STRING}</string> + <key>CFBundleVersion</key> + <string>${BUNDLE_VERSION}</string> + <key>LSFileQuarantineEnabled</key> + <true/> + <key>LSMinimumSystemVersion</key> + <string>${MACOSX_DEPLOYMENT_TARGET}</string> + <key>LSUIElement</key> + <true/> + <key>NSPrincipalClass</key> + <string>NSApplication</string> +</dict> +</plist> diff --git a/Source/WebKit2/NetworkProcess/NetworkProcess.cpp b/Source/WebKit2/NetworkProcess/NetworkProcess.cpp new file mode 100644 index 000000000..b2289b07b --- /dev/null +++ b/Source/WebKit2/NetworkProcess/NetworkProcess.cpp @@ -0,0 +1,97 @@ +/* + * Copyright (C) 2012 Apple Inc. 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 "NetworkProcess.h" + +#if ENABLE(NETWORK_PROCESS) + +#include "ArgumentCoders.h" +#include "Attachment.h" +#include <WebCore/RunLoop.h> + +using namespace WebCore; + +namespace WebKit { + +NetworkProcess& NetworkProcess::shared() +{ + DEFINE_STATIC_LOCAL(NetworkProcess, networkProcess, ()); + return networkProcess; +} + +NetworkProcess::NetworkProcess() +{ +} + +NetworkProcess::~NetworkProcess() +{ +} + +void NetworkProcess::initialize(CoreIPC::Connection::Identifier serverIdentifier, WebCore::RunLoop* runLoop) +{ + ASSERT(!m_uiConnection); + + m_uiConnection = CoreIPC::Connection::createClientConnection(serverIdentifier, this, runLoop); + m_uiConnection->setDidCloseOnConnectionWorkQueueCallback(didCloseOnConnectionWorkQueue); + m_uiConnection->open(); +} + +bool NetworkProcess::shouldTerminate() +{ + return true; +} + +void NetworkProcess::didReceiveMessage(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::ArgumentDecoder* arguments) +{ + didReceiveNetworkProcessMessage(connection, messageID, arguments); +} + +void NetworkProcess::didClose(CoreIPC::Connection*) +{ + // Either the connection to the UIProcess or a connection to a WebProcess has gone away. + // In the future we'll do appropriate cleanup and decide whether or not we want to keep + // the NetworkProcess open. + // For now we'll always close it. + RunLoop::current()->stop(); +} + +void NetworkProcess::didReceiveInvalidMessage(CoreIPC::Connection*, CoreIPC::MessageID) +{ + RunLoop::current()->stop(); +} + +void NetworkProcess::syncMessageSendTimedOut(CoreIPC::Connection*) +{ +} + +void NetworkProcess::initializeNetworkProcess(const NetworkProcessCreationParameters& parameters) +{ + platformInitialize(parameters); +} + +} // namespace WebKit + +#endif // ENABLE(NETWORK_PROCESS) diff --git a/Source/WebKit2/NetworkProcess/NetworkProcess.h b/Source/WebKit2/NetworkProcess/NetworkProcess.h new file mode 100644 index 000000000..f72a8f9ab --- /dev/null +++ b/Source/WebKit2/NetworkProcess/NetworkProcess.h @@ -0,0 +1,76 @@ +/* + * Copyright (C) 2012 Apple Inc. 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. + */ + +#ifndef NetworkProcess_h +#define NetworkProcess_h + +#if ENABLE(NETWORK_PROCESS) + +#include "ChildProcess.h" +#include <wtf/Forward.h> + +namespace WebCore { + class RunLoop; +} + +namespace WebKit { + +struct NetworkProcessCreationParameters; + +class NetworkProcess : ChildProcess { + WTF_MAKE_NONCOPYABLE(NetworkProcess); +public: + static NetworkProcess& shared(); + + void initialize(CoreIPC::Connection::Identifier, WebCore::RunLoop*); + +private: + NetworkProcess(); + ~NetworkProcess(); + + void platformInitialize(const NetworkProcessCreationParameters&); + + // ChildProcess + virtual bool shouldTerminate(); + + // CoreIPC::Connection::Client + virtual void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); + virtual void didClose(CoreIPC::Connection*); + virtual void didReceiveInvalidMessage(CoreIPC::Connection*, CoreIPC::MessageID); + virtual void syncMessageSendTimedOut(CoreIPC::Connection*); + + // Message Handlers + void didReceiveNetworkProcessMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); + void initializeNetworkProcess(const NetworkProcessCreationParameters&); + + // The connection to the UI process. + RefPtr<CoreIPC::Connection> m_uiConnection; +}; + +} // namespace WebKit + +#endif // ENABLE(NETWORK_PROCESS) + +#endif // NetworkProcess_h diff --git a/Source/WebKit2/NetworkProcess/NetworkProcess.messages.in b/Source/WebKit2/NetworkProcess/NetworkProcess.messages.in new file mode 100644 index 000000000..5e46a8efb --- /dev/null +++ b/Source/WebKit2/NetworkProcess/NetworkProcess.messages.in @@ -0,0 +1,30 @@ +# Copyright (C) 2012 Apple Inc. 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. + +#if ENABLE(NETWORK_PROCESS) + +messages -> NetworkProcess { + # Initializes the network process. + InitializeNetworkProcess(WebKit::NetworkProcessCreationParameters processCreationParameters) +} + +#endif // ENABLE(NETWORK_PROCESS) diff --git a/Source/WebKit2/NetworkProcess/NetworkProcessMain.h b/Source/WebKit2/NetworkProcess/NetworkProcessMain.h new file mode 100644 index 000000000..ee55a37d6 --- /dev/null +++ b/Source/WebKit2/NetworkProcess/NetworkProcessMain.h @@ -0,0 +1,41 @@ +/* + * Copyright (C) 2012 Apple Inc. 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. + */ + +#ifndef NetworkProcessMain_h +#define NetworkProcessMain_h + +#if ENABLE(NETWORK_PROCESS) + +namespace WebKit { + +class CommandLine; + +int NetworkProcessMain(const CommandLine&); + +} // namespace WebKit + +#endif // ENABLE(NETWORK_PROCESS) + +#endif // NetworkProcessMain_h diff --git a/Source/WebKit2/NetworkProcess/mac/NetworkProcessMac.mm b/Source/WebKit2/NetworkProcess/mac/NetworkProcessMac.mm new file mode 100644 index 000000000..e635acb19 --- /dev/null +++ b/Source/WebKit2/NetworkProcess/mac/NetworkProcessMac.mm @@ -0,0 +1,50 @@ +/* + * Copyright (C) 2012 Apple Inc. 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. + */ + +#import "config.h" +#import "NetworkProcess.h" + +#if ENABLE(NETWORK_PROCESS) + +#import "NetworkProcessCreationParameters.h" +#import <WebCore/LocalizedStrings.h> +#import <WebKitSystemInterface.h> +#import <wtf/text/WTFString.h> + +using namespace WebCore; + +namespace WebKit { + +void NetworkProcess::platformInitialize(const NetworkProcessCreationParameters& parameters) +{ + NSString *applicationName = [NSString stringWithFormat:WEB_UI_STRING("%@ Networking", "visible name of the network process. The argument is the application name."), + (NSString *)parameters.parentProcessName]; + + WKSetVisibleApplicationName((CFStringRef)applicationName); +} + +} // namespace WebKit + +#endif // ENABLE(NETWORK_PROCESS) diff --git a/Source/WebKit2/NetworkProcess/mac/NetworkProcessMainMac.mm b/Source/WebKit2/NetworkProcess/mac/NetworkProcessMainMac.mm new file mode 100644 index 000000000..537126f66 --- /dev/null +++ b/Source/WebKit2/NetworkProcess/mac/NetworkProcessMainMac.mm @@ -0,0 +1,98 @@ +/* + * Copyright (C) 2012 Apple Inc. 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. + */ + +#import "config.h" +#import "NetworkProcessMain.h" + +#if ENABLE(NETWORK_PROCESS) + +#import "CommandLine.h" +#import "EnvironmentUtilities.h" +#import "NetworkProcess.h" +#import <WebCore/RunLoop.h> +#import <WebKitSystemInterface.h> +#import <mach/mach_error.h> +#import <runtime/InitializeThreading.h> +#import <servers/bootstrap.h> +#import <stdio.h> +#import <wtf/MainThread.h> +#import <wtf/RetainPtr.h> +#import <wtf/text/CString.h> +#import <wtf/text/WTFString.h> + +#define SHOW_CRASH_REPORTER 1 + +using namespace WebCore; + +namespace WebKit { + +// FIXME: There is much code here that is duplicated in WebProcessMainMac.mm, we should add a shared base class where +// we can put everything. + +int NetworkProcessMain(const CommandLine& commandLine) +{ + String serviceName = commandLine["servicename"]; + if (serviceName.isEmpty()) + return EXIT_FAILURE; + + // Get the server port. + mach_port_t serverPort; + kern_return_t kr = bootstrap_look_up(bootstrap_port, serviceName.utf8().data(), &serverPort); + if (kr) { + WTFLogAlways("bootstrap_look_up result: %s (%x)\n", mach_error_string(kr), kr); + return EXIT_FAILURE; + } + + String localization = commandLine["localization"]; + RetainPtr<CFStringRef> cfLocalization(AdoptCF, CFStringCreateWithCharacters(0, reinterpret_cast<const UniChar*>(localization.characters()), localization.length())); + if (cfLocalization) + WKSetDefaultLocalization(cfLocalization.get()); + +#if !SHOW_CRASH_REPORTER + // Installs signal handlers that exit on a crash so that CrashReporter does not show up. + signal(SIGILL, _exit); + signal(SIGFPE, _exit); + signal(SIGBUS, _exit); + signal(SIGSEGV, _exit); +#endif + + + JSC::initializeThreading(); + WTF::initializeMainThread(); + RunLoop::initializeMainRunLoop(); + + // Initialize the network process connection. + NetworkProcess::shared().initialize(CoreIPC::Connection::Identifier(serverPort), RunLoop::main()); + + [NSApplication sharedApplication]; + + RunLoop::run(); + + return 0; +} + +} // namespace WebKit + +#endif // ENABLE(NETWORK_PROCESS) diff --git a/Source/WebKit2/Platform/CoreIPC/ArgumentCoders.h b/Source/WebKit2/Platform/CoreIPC/ArgumentCoders.h index dd54dfeef..af163be6d 100644 --- a/Source/WebKit2/Platform/CoreIPC/ArgumentCoders.h +++ b/Source/WebKit2/Platform/CoreIPC/ArgumentCoders.h @@ -75,8 +75,8 @@ template<typename T, typename U> struct ArgumentCoder<std::pair<T, U> > { template<typename KeyType, typename ValueType> struct ArgumentCoder<WTF::KeyValuePair<KeyType, ValueType> > { static void encode(ArgumentEncoder* encoder, const WTF::KeyValuePair<KeyType, ValueType>& pair) { - encoder->encode(pair.first); - encoder->encode(pair.second); + encoder->encode(pair.key); + encoder->encode(pair.value); } static bool decode(ArgumentDecoder* decoder, WTF::KeyValuePair<KeyType, ValueType>& pair) @@ -89,8 +89,8 @@ template<typename KeyType, typename ValueType> struct ArgumentCoder<WTF::KeyValu if (!decoder->decode(value)) return false; - pair.first = key; - pair.second = value; + pair.key = key; + pair.value = value; return true; } }; diff --git a/Source/WebKit2/Platform/CoreIPC/Connection.cpp b/Source/WebKit2/Platform/CoreIPC/Connection.cpp index b19eb7507..02634874c 100644 --- a/Source/WebKit2/Platform/CoreIPC/Connection.cpp +++ b/Source/WebKit2/Platform/CoreIPC/Connection.cpp @@ -102,12 +102,12 @@ PassRefPtr<Connection::SyncMessageState> Connection::SyncMessageState::getOrCrea SyncMessageStateMap::AddResult result = syncMessageStateMap().add(runLoop, 0); if (!result.isNewEntry) { - ASSERT(result.iterator->second); - return result.iterator->second; + ASSERT(result.iterator->value); + return result.iterator->value; } RefPtr<SyncMessageState> syncMessageState = adoptRef(new SyncMessageState(runLoop)); - result.iterator->second = syncMessageState.get(); + result.iterator->value = syncMessageState.get(); return syncMessageState.release(); } @@ -203,7 +203,6 @@ Connection::Connection(Identifier identifier, bool isServer, Client* client, Run , m_inDispatchMessageCount(0) , m_inDispatchMessageMarkedDispatchWhenWaitingForSyncReplyCount(0) , m_didReceiveInvalidMessage(false) - , m_defaultSyncMessageTimeout(NoTimeout) , m_syncMessageState(SyncMessageState::getOrCreate(clientRunLoop)) , m_shouldWaitForSyncReplies(true) { @@ -284,13 +283,6 @@ void Connection::markCurrentlyDispatchedMessageAsInvalid() m_didReceiveInvalidMessage = true; } -void Connection::setDefaultSyncMessageTimeout(double defaultSyncMessageTimeout) -{ - ASSERT(defaultSyncMessageTimeout != DefaultTimeout); - - m_defaultSyncMessageTimeout = defaultSyncMessageTimeout; -} - PassOwnPtr<ArgumentEncoder> Connection::createSyncMessageArgumentEncoder(uint64_t destinationID, uint64_t& syncRequestID) { OwnPtr<ArgumentEncoder> argumentEncoder = ArgumentEncoder::create(destinationID); @@ -362,10 +354,10 @@ PassOwnPtr<ArgumentDecoder> Connection::waitForMessage(MessageID messageID, uint MutexLocker locker(m_waitForMessageMutex); HashMap<std::pair<unsigned, uint64_t>, ArgumentDecoder*>::iterator it = m_waitForMessageMap.find(messageAndDestination); - if (it->second) { + if (it->value) { // FIXME: m_waitForMessageMap should really hold OwnPtrs to // ArgumentDecoders, but HashMap doesn't currently support OwnPtrs. - OwnPtr<ArgumentDecoder> arguments = adoptPtr(it->second); + OwnPtr<ArgumentDecoder> arguments = adoptPtr(it->value); m_waitForMessageMap.remove(it); return arguments.release(); @@ -427,9 +419,6 @@ PassOwnPtr<ArgumentDecoder> Connection::sendSyncMessage(MessageID messageID, uin PassOwnPtr<ArgumentDecoder> Connection::waitForSyncReply(uint64_t syncRequestID, double timeout, unsigned syncSendFlags) { - if (timeout == DefaultTimeout) - timeout = m_defaultSyncMessageTimeout; - // Use a really long timeout. if (timeout == NoTimeout) timeout = 1e10; @@ -482,10 +471,6 @@ PassOwnPtr<ArgumentDecoder> Connection::waitForSyncReply(uint64_t syncRequestID, } - // We timed out. - if (m_client) - m_client->syncMessageSendTimedOut(this); - return nullptr; } @@ -539,8 +524,8 @@ void Connection::processIncomingMessage(MessageID messageID, PassOwnPtr<Argument HashMap<std::pair<unsigned, uint64_t>, ArgumentDecoder*>::iterator it = m_waitForMessageMap.find(std::make_pair(messageID.toInt(), incomingMessage.destinationID())); if (it != m_waitForMessageMap.end()) { - it->second = incomingMessage.releaseArguments().leakPtr(); - ASSERT(it->second); + it->value = incomingMessage.releaseArguments().leakPtr(); + ASSERT(it->value); m_waitForMessageCondition.signal(); return; @@ -668,6 +653,15 @@ void Connection::enqueueIncomingMessage(IncomingMessage& incomingMessage) m_clientRunLoop->dispatch(WTF::bind(&Connection::dispatchOneMessage, this)); } +void Connection::dispatchMessage(MessageID messageID, ArgumentDecoder* argumentDecoder) +{ + // Try the message receiver map first. + if (m_messageReceiverMap.dispatchMessage(this, messageID, argumentDecoder)) + return; + + m_client->didReceiveMessage(this, messageID, argumentDecoder); +} + void Connection::dispatchMessage(IncomingMessage& message) { OwnPtr<ArgumentDecoder> arguments = message.releaseArguments(); @@ -688,7 +682,7 @@ void Connection::dispatchMessage(IncomingMessage& message) if (message.messageID().isSync()) dispatchSyncMessage(message.messageID(), arguments.get()); else - m_client->didReceiveMessage(this, message.messageID(), arguments.get()); + dispatchMessage(message.messageID(), arguments.get()); m_didReceiveInvalidMessage |= arguments->isInvalid(); m_inDispatchMessageCount--; diff --git a/Source/WebKit2/Platform/CoreIPC/Connection.h b/Source/WebKit2/Platform/CoreIPC/Connection.h index 8850de0d3..652bcfe30 100644 --- a/Source/WebKit2/Platform/CoreIPC/Connection.h +++ b/Source/WebKit2/Platform/CoreIPC/Connection.h @@ -31,9 +31,9 @@ #include "ArgumentDecoder.h" #include "ArgumentEncoder.h" #include "Arguments.h" -#include "MessageID.h" +#include "MessageReceiver.h" +#include "MessageReceiverMap.h" #include "WorkQueue.h" -#include <wtf/HashMap.h> #include <wtf/PassRefPtr.h> #include <wtf/OwnPtr.h> #include <wtf/Threading.h> @@ -85,20 +85,10 @@ while (0) class Connection : public ThreadSafeRefCounted<Connection> { public: - class MessageReceiver { - public: - virtual void didReceiveMessage(Connection*, MessageID, ArgumentDecoder*) = 0; - virtual void didReceiveSyncMessage(Connection*, MessageID, ArgumentDecoder*, OwnPtr<ArgumentEncoder>&) { ASSERT_NOT_REACHED(); } - - protected: - virtual ~MessageReceiver() { } - }; - class Client : public MessageReceiver { public: virtual void didClose(Connection*) = 0; virtual void didReceiveInvalidMessage(Connection*, MessageID) = 0; - virtual void syncMessageSendTimedOut(Connection*) = 0; #if PLATFORM(WIN) virtual Vector<HWND> windowsToReceiveSentMessagesWhileWaitingForSyncReply() = 0; @@ -161,6 +151,8 @@ public: static PassRefPtr<Connection> createClientConnection(Identifier, Client*, WebCore::RunLoop* clientRunLoop); ~Connection(); + Client* client() const { return m_client; } + #if OS(DARWIN) void setShouldCloseConnectionOnMachExceptions(); #elif PLATFORM(QT) @@ -181,19 +173,21 @@ public: void addQueueClient(QueueClient*); void removeQueueClient(QueueClient*); + void addMessageReceiver(MessageClass messageClass, MessageReceiver* messageReceiver) + { + m_messageReceiverMap.addMessageReceiver(messageClass, messageReceiver); + } + bool open(); void invalidate(); void markCurrentlyDispatchedMessageAsInvalid(); - void setDefaultSyncMessageTimeout(double); - void postConnectionDidCloseOnConnectionWorkQueue(); - static const int DefaultTimeout = 0; static const int NoTimeout = -1; template<typename T> bool send(const T& message, uint64_t destinationID, unsigned messageSendFlags = 0); - template<typename T> bool sendSync(const T& message, const typename T::Reply& reply, uint64_t destinationID, double timeout = DefaultTimeout, unsigned syncSendFlags = 0); + template<typename T> bool sendSync(const T& message, const typename T::Reply& reply, uint64_t destinationID, double timeout = NoTimeout, unsigned syncSendFlags = 0); template<typename T> bool waitForAndDispatchImmediately(uint64_t destinationID, double timeout); PassOwnPtr<ArgumentEncoder> createSyncMessageArgumentEncoder(uint64_t destinationID, uint64_t& syncRequestID); @@ -279,8 +273,9 @@ private: // Called on the listener thread. void dispatchConnectionDidClose(); - void dispatchMessage(IncomingMessage&); void dispatchOneMessage(); + void dispatchMessage(IncomingMessage&); + void dispatchMessage(MessageID, ArgumentDecoder*); void dispatchSyncMessage(MessageID, ArgumentDecoder*); void didFailToSendSyncMessage(); @@ -305,12 +300,12 @@ private: unsigned m_inDispatchMessageMarkedDispatchWhenWaitingForSyncReplyCount; bool m_didReceiveInvalidMessage; - double m_defaultSyncMessageTimeout; - // Incoming messages. Mutex m_incomingMessagesLock; Deque<IncomingMessage> m_incomingMessages; + MessageReceiverMap m_messageReceiverMap; + // Outgoing messages. Mutex m_outgoingMessagesLock; Deque<OutgoingMessage> m_outgoingMessages; diff --git a/Source/WebKit2/Platform/CoreIPC/MessageID.h b/Source/WebKit2/Platform/CoreIPC/MessageID.h index 22d306b04..5c21336dd 100644 --- a/Source/WebKit2/Platform/CoreIPC/MessageID.h +++ b/Source/WebKit2/Platform/CoreIPC/MessageID.h @@ -29,7 +29,7 @@ namespace CoreIPC { enum MessageClass { - MessageClassReserved = 0, + MessageClassInvalid = 0, // Messages sent by Core IPC. MessageClassCoreIPC, @@ -37,7 +37,6 @@ enum MessageClass { // Messages sent by the UI process to the web process. MessageClassAuthenticationManager, MessageClassDrawingArea, - MessageClassInjectedBundle, MessageClassLayerTreeCoordinator, MessageClassWebApplicationCacheManager, MessageClassWebBatteryManagerProxy, @@ -52,6 +51,7 @@ enum MessageClass { MessageClassWebNetworkInfoManagerProxy, MessageClassWebNotificationManager, MessageClassWebPage, + MessageClassWebPageGroupProxy, MessageClassWebProcess, MessageClassWebResourceCacheManager, MessageClassEventDispatcher, @@ -65,6 +65,7 @@ enum MessageClass { MessageClassLayerTreeCoordinatorProxy, MessageClassWebApplicationCacheManagerProxy, MessageClassWebBatteryManager, + MessageClassWebConnection, MessageClassWebContext, MessageClassWebContextLegacy, MessageClassWebCookieManagerProxy, @@ -104,6 +105,9 @@ enum MessageClass { // NPObject messages sent by both the plug-in process and the web process. MessageClassNPObjectMessageReceiver, + + // Messages sent by the UI process to the network process. + MessageClassNetworkProcess, }; template<typename> struct MessageKindTraits { }; @@ -180,6 +184,11 @@ public: bool shouldDispatchMessageWhenWaitingForSyncReply() const { return getFlags() & DispatchMessageWhenWaitingForSyncReply; } bool isSync() const { return getFlags() & SyncMessage; } + MessageClass messageClass() const + { + return static_cast<MessageClass>(getClass()); + } + private: static inline unsigned stripMostSignificantBit(unsigned value) { diff --git a/Source/WebKit2/Platform/CoreIPC/MessageReceiver.h b/Source/WebKit2/Platform/CoreIPC/MessageReceiver.h new file mode 100644 index 000000000..f7b61ccdc --- /dev/null +++ b/Source/WebKit2/Platform/CoreIPC/MessageReceiver.h @@ -0,0 +1,52 @@ +/* + * Copyright (C) 2012 Apple Inc. 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. + */ + +#ifndef MessageReceiver_h +#define MessageReceiver_h + +#include "MessageID.h" +#include <wtf/Assertions.h> +#include <wtf/OwnPtr.h> + +namespace CoreIPC { + +class ArgumentDecoder; +class ArgumentEncoder; +class Connection; + +class MessageReceiver { +public: + virtual ~MessageReceiver() { } + + virtual void didReceiveMessage(Connection*, MessageID, ArgumentDecoder*) = 0; + virtual void didReceiveSyncMessage(Connection*, MessageID, ArgumentDecoder*, OwnPtr<ArgumentEncoder>&) + { + ASSERT_NOT_REACHED(); + } +}; + +} // namespace CoreIPC + +#endif // MessageReceiver_h diff --git a/Source/WebKit2/Platform/CoreIPC/MessageReceiverMap.cpp b/Source/WebKit2/Platform/CoreIPC/MessageReceiverMap.cpp new file mode 100644 index 000000000..e4c666e6b --- /dev/null +++ b/Source/WebKit2/Platform/CoreIPC/MessageReceiverMap.cpp @@ -0,0 +1,77 @@ +/* + * Copyright (C) 2012 Apple Inc. 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 "MessageReceiverMap.h" + +#include "MessageReceiver.h" + +namespace CoreIPC { + +MessageReceiverMap::MessageReceiverMap() +{ +} + +MessageReceiverMap::~MessageReceiverMap() +{ +} + +void MessageReceiverMap::addMessageReceiver(MessageClass messageClass, MessageReceiver* messageReceiver) +{ + ASSERT(!m_globalMessageReceivers.contains(messageClass)); + m_globalMessageReceivers.set(messageClass, messageReceiver); +} + +void MessageReceiverMap::invalidate() +{ + m_globalMessageReceivers.clear(); +} + +bool MessageReceiverMap::knowsHowToHandleMessage(MessageID messageID) const +{ + return m_globalMessageReceivers.contains(messageID.messageClass()); +} + +bool MessageReceiverMap::dispatchMessage(Connection* connection, MessageID messageID, ArgumentDecoder* argumentDecoder) +{ + if (MessageReceiver* messageReceiver = m_globalMessageReceivers.get(messageID.messageClass())) { + messageReceiver->didReceiveMessage(connection, messageID, argumentDecoder); + return true; + } + + return false; +} + +bool MessageReceiverMap::dispatchSyncMessage(Connection* connection, MessageID messageID, ArgumentDecoder* argumentDecoder, OwnPtr<ArgumentEncoder>& reply) +{ + if (MessageReceiver* messageReceiver = m_globalMessageReceivers.get(messageID.messageClass())) { + messageReceiver->didReceiveSyncMessage(connection, messageID, argumentDecoder, reply); + return true; + } + + return false; +} + +} // namespace CoreIPC diff --git a/Source/WebKit2/Platform/CoreIPC/MessageReceiverMap.h b/Source/WebKit2/Platform/CoreIPC/MessageReceiverMap.h new file mode 100644 index 000000000..b3fb2ee2d --- /dev/null +++ b/Source/WebKit2/Platform/CoreIPC/MessageReceiverMap.h @@ -0,0 +1,60 @@ +/* + * Copyright (C) 2012 Apple Inc. 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. + */ + +#ifndef MessageReceiverMap_h +#define MessageReceiverMap_h + +#include "MessageID.h" +#include <wtf/Forward.h> +#include <wtf/HashMap.h> + +namespace CoreIPC { + +class ArgumentEncoder; +class ArgumentDecoder; +class Connection; +class MessageReceiver; + +class MessageReceiverMap { +public: + MessageReceiverMap(); + ~MessageReceiverMap(); + + void addMessageReceiver(MessageClass, MessageReceiver*); + + void invalidate(); + bool knowsHowToHandleMessage(MessageID) const; + + bool dispatchMessage(Connection*, MessageID, ArgumentDecoder*); + bool dispatchSyncMessage(Connection*, MessageID, ArgumentDecoder*, OwnPtr<ArgumentEncoder>&); + +private: + // Message receivers that don't require a destination ID. + HashMap<unsigned, MessageReceiver*> m_globalMessageReceivers; +}; + +}; + +#endif // MessageReceiverMap_h diff --git a/Source/WebKit2/Platform/CoreIPC/mac/ConnectionMac.cpp b/Source/WebKit2/Platform/CoreIPC/mac/ConnectionMac.cpp index 3db1b83d7..72989dda0 100644 --- a/Source/WebKit2/Platform/CoreIPC/mac/ConnectionMac.cpp +++ b/Source/WebKit2/Platform/CoreIPC/mac/ConnectionMac.cpp @@ -111,7 +111,10 @@ bool Connection::open() m_isConnected = true; // Send the initialize message, which contains a send right for the server to use. - deprecatedSend(CoreIPCMessage::InitializeConnection, 0, MachPort(m_receivePort, MACH_MSG_TYPE_MAKE_SEND)); + OwnPtr<ArgumentEncoder> argumentEncoder = ArgumentEncoder::create(0); + argumentEncoder->encode(MachPort(m_receivePort, MACH_MSG_TYPE_MAKE_SEND)); + + sendMessage(MessageID(CoreIPCMessage::InitializeConnection), argumentEncoder.release()); // Set the dead name handler for our send port. initializeDeadNameSource(); @@ -127,7 +130,10 @@ bool Connection::open() if (m_exceptionPort) { m_connectionQueue.registerMachPortEventHandler(m_exceptionPort, WorkQueue::MachPortDataAvailable, bind(&Connection::exceptionSourceEventHandler, this)); - deprecatedSend(CoreIPCMessage::SetExceptionPort, 0, MachPort(m_exceptionPort, MACH_MSG_TYPE_MAKE_SEND)); + OwnPtr<ArgumentEncoder> argumentEncoder = ArgumentEncoder::create(0); + argumentEncoder->encode(MachPort(m_exceptionPort, MACH_MSG_TYPE_MAKE_SEND)); + + sendMessage(MessageID(CoreIPCMessage::SetExceptionPort), argumentEncoder.release()); } return true; diff --git a/Source/WebKit2/Platform/Logging.cpp b/Source/WebKit2/Platform/Logging.cpp index 17694c993..df98e724e 100644 --- a/Source/WebKit2/Platform/Logging.cpp +++ b/Source/WebKit2/Platform/Logging.cpp @@ -37,6 +37,7 @@ WTFLogChannel LogTextInput = { 0x00000004, "WebKit2LogLevel", WTFLogChannelOf WTFLogChannel LogView = { 0x00000008, "WebKit2LogLevel", WTFLogChannelOff }; WTFLogChannel LogIconDatabase = { 0x00000010, "WebKit2LogLevel", WTFLogChannelOff }; WTFLogChannel LogKeyHandling = { 0x00000020, "WebKit2LogLevel", WTFLogChannelOff }; +WTFLogChannel LogPlugins = { 0x00000040, "WebKit2LogLevel", WTFLogChannelOff }; #if !PLATFORM(MAC) && !PLATFORM(GTK) && !PLATFORM(QT) && !PLATFORM(EFL) void initializeLogChannel(WTFLogChannel* channel) @@ -69,6 +70,9 @@ WTFLogChannel* getChannelFromName(const String& channelName) if (equalIgnoringCase(channelName, String("KeyHandling"))) return &LogKeyHandling; + if (equalIgnoringCase(channelName, String("Plugins"))) + return &LogPlugins; + return 0; } #endif @@ -83,6 +87,7 @@ void initializeLogChannelsIfNecessary() initializeLogChannel(&LogContextMenu); initializeLogChannel(&LogIconDatabase); initializeLogChannel(&LogKeyHandling); + initializeLogChannel(&LogPlugins); initializeLogChannel(&LogSessionState); initializeLogChannel(&LogTextInput); initializeLogChannel(&LogView); diff --git a/Source/WebKit2/Platform/Logging.h b/Source/WebKit2/Platform/Logging.h index 173d604e9..603686f3d 100644 --- a/Source/WebKit2/Platform/Logging.h +++ b/Source/WebKit2/Platform/Logging.h @@ -40,6 +40,7 @@ namespace WebKit { extern WTFLogChannel LogContextMenu; extern WTFLogChannel LogIconDatabase; extern WTFLogChannel LogKeyHandling; +extern WTFLogChannel LogPlugins; extern WTFLogChannel LogSessionState; extern WTFLogChannel LogTextInput; extern WTFLogChannel LogView; diff --git a/Source/WebKit2/Platform/gtk/WorkQueueGtk.cpp b/Source/WebKit2/Platform/gtk/WorkQueueGtk.cpp index 1dfab83cc..6885d485b 100644 --- a/Source/WebKit2/Platform/gtk/WorkQueueGtk.cpp +++ b/Source/WebKit2/Platform/gtk/WorkQueueGtk.cpp @@ -166,7 +166,7 @@ void WorkQueue::registerEventSourceHandler(int fileDescriptor, int condition, co Vector<EventSource*> sources; EventSourceIterator it = m_eventSources.find(fileDescriptor); if (it != m_eventSources.end()) - sources = it->second; + sources = it->value; sources.append(eventSource); m_eventSources.set(fileDescriptor, sources); @@ -186,7 +186,7 @@ void WorkQueue::unregisterEventSourceHandler(int fileDescriptor) ASSERT(m_eventSources.contains(fileDescriptor)); if (it != m_eventSources.end()) { - Vector<EventSource*> sources = it->second; + Vector<EventSource*> sources = it->value; for (unsigned i = 0; i < sources.size(); i++) sources[i]->cancel(); diff --git a/Source/WebKit2/Platform/mac/WorkQueueMac.cpp b/Source/WebKit2/Platform/mac/WorkQueueMac.cpp index 9e57e150c..ded1d7ac3 100644 --- a/Source/WebKit2/Platform/mac/WorkQueueMac.cpp +++ b/Source/WebKit2/Platform/mac/WorkQueueMac.cpp @@ -30,30 +30,39 @@ #include <mach/mach_port.h> #include <wtf/PassOwnPtr.h> +struct WorkQueueAndFunction { + WorkQueueAndFunction(WorkQueue* workQueue, const Function<void()>& function) + : workQueue(workQueue) + , function(function) + { + } + + WorkQueue* workQueue; + Function<void()> function; +}; + void WorkQueue::executeFunction(void* context) { - WorkQueue* queue = static_cast<WorkQueue*>(dispatch_get_context(dispatch_get_current_queue())); - OwnPtr<Function<void()> > function = adoptPtr(static_cast<Function<void()>*>(context)); + OwnPtr<WorkQueueAndFunction> workQueueAndFunction = adoptPtr(static_cast<WorkQueueAndFunction*>(context)); { - MutexLocker locker(queue->m_isValidMutex); - if (!queue->m_isValid) + MutexLocker locker(workQueueAndFunction->workQueue->m_isValidMutex); + if (!workQueueAndFunction->workQueue->m_isValid) return; } - (*function)(); + (workQueueAndFunction->function)(); } void WorkQueue::dispatch(const Function<void()>& function) { - dispatch_async_f(m_dispatchQueue, new Function<void()>(function), executeFunction); + dispatch_async_f(m_dispatchQueue, new WorkQueueAndFunction(this, function), executeFunction); } void WorkQueue::dispatchAfterDelay(const Function<void()>& function, double delay) { dispatch_time_t delayTime = dispatch_time(DISPATCH_TIME_NOW, delay * NSEC_PER_SEC); - - dispatch_after_f(delayTime, m_dispatchQueue, new Function<void()>(function), executeFunction); + dispatch_after_f(delayTime, m_dispatchQueue, new WorkQueueAndFunction(this, function), executeFunction); } class WorkQueue::EventSource { @@ -155,7 +164,7 @@ void WorkQueue::unregisterMachPortEventHandler(mach_port_t machPort) ASSERT(m_eventSources.contains(machPort)); - EventSource* eventSource = it->second; + EventSource* eventSource = it->value; // Cancel and release the source. It will be deleted in its finalize handler. dispatch_source_cancel(eventSource->dispatchSource()); dispatch_release(eventSource->dispatchSource()); diff --git a/Source/WebKit2/Platform/qt/WorkQueueQt.cpp b/Source/WebKit2/Platform/qt/WorkQueueQt.cpp index aaa2be3d0..9b4f4dc96 100644 --- a/Source/WebKit2/Platform/qt/WorkQueueQt.cpp +++ b/Source/WebKit2/Platform/qt/WorkQueueQt.cpp @@ -90,7 +90,7 @@ QSocketNotifier* WorkQueue::registerSocketEventHandler(int socketDescriptor, QSo notifier->moveToThread(m_workThread); WorkQueue::WorkItemQt* itemQt = new WorkQueue::WorkItemQt(this, notifier, SIGNAL(activated(int)), function); itemQt->moveToThread(m_workThread); - notifier->setEnabled(true); + QMetaObject::invokeMethod(notifier, "setEnabled", Q_ARG(bool, true)); return notifier; } diff --git a/Source/WebKit2/PlatformEfl.cmake b/Source/WebKit2/PlatformEfl.cmake index d3932b6dc..a12f44ab2 100644 --- a/Source/WebKit2/PlatformEfl.cmake +++ b/Source/WebKit2/PlatformEfl.cmake @@ -7,6 +7,10 @@ LIST(APPEND WebKit2_SOURCES Platform/CoreIPC/unix/ConnectionUnix.cpp Platform/CoreIPC/unix/AttachmentUnix.cpp + PluginProcess/unix/PluginControllerProxyUnix.cpp + PluginProcess/unix/PluginProcessMainUnix.cpp + PluginProcess/unix/PluginProcessUnix.cpp + Shared/API/c/cairo/WKImageCairo.cpp Shared/API/c/gtk/WKGraphicsContextGtk.cpp @@ -28,6 +32,8 @@ LIST(APPEND WebKit2_SOURCES UIProcess/DefaultUndoController.cpp + Shared/Plugins/Netscape/x11/NetscapePluginModuleX11.cpp + UIProcess/API/C/efl/WKView.cpp UIProcess/API/cpp/efl/WKEinaSharedString.cpp @@ -44,15 +50,19 @@ LIST(APPEND WebKit2_SOURCES UIProcess/API/efl/ewk_back_forward_list_item.cpp UIProcess/API/efl/ewk_context.cpp UIProcess/API/efl/ewk_context_download_client.cpp + UIProcess/API/efl/ewk_context_history_client.cpp UIProcess/API/efl/ewk_context_request_manager_client.cpp UIProcess/API/efl/ewk_cookie_manager.cpp UIProcess/API/efl/ewk_download_job.cpp + UIProcess/API/efl/ewk_error.cpp UIProcess/API/efl/ewk_form_submission_request.cpp UIProcess/API/efl/ewk_intent.cpp UIProcess/API/efl/ewk_intent_service.cpp UIProcess/API/efl/ewk_main.cpp + UIProcess/API/efl/ewk_navigation_data.cpp UIProcess/API/efl/ewk_navigation_policy_decision.cpp UIProcess/API/efl/ewk_popup_menu_item.cpp + UIProcess/API/efl/ewk_resource.cpp UIProcess/API/efl/ewk_settings.cpp UIProcess/API/efl/ewk_url_request.cpp UIProcess/API/efl/ewk_url_response.cpp @@ -64,8 +74,6 @@ LIST(APPEND WebKit2_SOURCES UIProcess/API/efl/ewk_view_policy_client.cpp UIProcess/API/efl/ewk_view_resource_load_client.cpp UIProcess/API/efl/ewk_view_ui_client.cpp - UIProcess/API/efl/ewk_web_error.cpp - UIProcess/API/efl/ewk_web_resource.cpp UIProcess/cairo/BackingStoreCairo.cpp @@ -85,6 +93,7 @@ LIST(APPEND WebKit2_SOURCES UIProcess/Launcher/efl/ProcessLauncherEfl.cpp UIProcess/Plugins/unix/PluginInfoStoreUnix.cpp + UIProcess/Plugins/unix/PluginProcessProxyUnix.cpp WebProcess/Cookies/soup/WebCookieManagerSoup.cpp WebProcess/Cookies/soup/WebKitSoupCookieJarSqlite.cpp @@ -94,6 +103,10 @@ LIST(APPEND WebKit2_SOURCES WebProcess/InjectedBundle/efl/InjectedBundleEfl.cpp + WebProcess/Plugins/Netscape/unix/PluginProxyUnix.cpp + + WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp + WebProcess/WebCoreSupport/efl/WebContextMenuClientEfl.cpp WebProcess/WebCoreSupport/efl/WebEditorClientEfl.cpp WebProcess/WebCoreSupport/efl/WebErrorsEfl.cpp @@ -217,25 +230,49 @@ SET (EWebKit2_HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/UIProcess/API/efl/ewk_context.h" "${CMAKE_CURRENT_SOURCE_DIR}/UIProcess/API/efl/ewk_cookie_manager.h" "${CMAKE_CURRENT_SOURCE_DIR}/UIProcess/API/efl/ewk_download_job.h" + "${CMAKE_CURRENT_SOURCE_DIR}/UIProcess/API/efl/ewk_error.h" "${CMAKE_CURRENT_SOURCE_DIR}/UIProcess/API/efl/ewk_form_submission_request.h" "${CMAKE_CURRENT_SOURCE_DIR}/UIProcess/API/efl/ewk_intent.h" "${CMAKE_CURRENT_SOURCE_DIR}/UIProcess/API/efl/ewk_intent_service.h" "${CMAKE_CURRENT_SOURCE_DIR}/UIProcess/API/efl/ewk_main.h" + "${CMAKE_CURRENT_SOURCE_DIR}/UIProcess/API/efl/ewk_navigation_data.h" "${CMAKE_CURRENT_SOURCE_DIR}/UIProcess/API/efl/ewk_navigation_policy_decision.h" "${CMAKE_CURRENT_SOURCE_DIR}/UIProcess/API/efl/ewk_popup_menu_item.h" + "${CMAKE_CURRENT_SOURCE_DIR}/UIProcess/API/efl/ewk_resource.h" "${CMAKE_CURRENT_SOURCE_DIR}/UIProcess/API/efl/ewk_settings.h" "${CMAKE_CURRENT_SOURCE_DIR}/UIProcess/API/efl/ewk_touch.h" "${CMAKE_CURRENT_SOURCE_DIR}/UIProcess/API/efl/ewk_url_request.h" "${CMAKE_CURRENT_SOURCE_DIR}/UIProcess/API/efl/ewk_url_response.h" "${CMAKE_CURRENT_SOURCE_DIR}/UIProcess/API/efl/ewk_url_scheme_request.h" "${CMAKE_CURRENT_SOURCE_DIR}/UIProcess/API/efl/ewk_view.h" - "${CMAKE_CURRENT_SOURCE_DIR}/UIProcess/API/efl/ewk_web_error.h" - "${CMAKE_CURRENT_SOURCE_DIR}/UIProcess/API/efl/ewk_web_resource.h" ) INSTALL(FILES ${CMAKE_BINARY_DIR}/WebKit2/efl/ewebkit2.pc DESTINATION lib/pkgconfig) INSTALL(FILES ${EWebKit2_HEADERS} DESTINATION include/${WebKit2_LIBRARY_NAME}-${PROJECT_VERSION_MAJOR}) +IF (ENABLE_PLUGIN_PROCESS) + ADD_DEFINITIONS(-DENABLE_PLUGIN_PROCESS=1) + + SET (PluginProcess_EXECUTABLE_NAME PluginProcess) + LIST (APPEND PluginProcess_INCLUDE_DIRECTORIES + "${WEBKIT2_DIR}/PluginProcess/unix" + ) + + INCLUDE_DIRECTORIES(${PluginProcess_INCLUDE_DIRECTORIES}) + + LIST (APPEND PluginProcess_SOURCES + ${WEBKIT2_DIR}/unix/PluginMainUnix.cpp + ) + + SET(PluginProcess_LIBRARIES + ${WebKit2_LIBRARY_NAME} + ) + + ADD_EXECUTABLE(${PluginProcess_EXECUTABLE_NAME} ${PluginProcess_SOURCES}) + TARGET_LINK_LIBRARIES(${PluginProcess_EXECUTABLE_NAME} ${PluginProcess_LIBRARIES}) + INSTALL(TARGETS ${PluginProcess_EXECUTABLE_NAME} DESTINATION "${EXEC_INSTALL_DIR}") +ENDIF () # ENABLE_PLUGIN_PROCESS + INCLUDE_DIRECTORIES(${THIRDPARTY_DIR}/gtest/include) SET(EWK2UnitTests_LIBRARIES @@ -288,6 +325,7 @@ TARGET_LINK_LIBRARIES(ewk2UnitTestUtils ${EWK2UnitTests_LIBRARIES}) SET(EWK2UnitTests_BINARIES test_ewk2_back_forward_list test_ewk2_context + test_ewk2_context_history_callbacks test_ewk2_cookie_manager test_ewk2_download_job test_ewk2_eina_shared_string @@ -306,6 +344,7 @@ IF (ENABLE_API_TESTS) ENDFOREACH () ADD_LIBRARY(ewk2UnitTestInjectedBundleSample SHARED ${TEST_INJECTED_BUNDLE_DIR}/injected_bundle_sample.cpp) + TARGET_LINK_LIBRARIES(ewk2UnitTestInjectedBundleSample ${WebKit2_LIBRARY_NAME}) ENDIF () IF (ENABLE_INSPECTOR) diff --git a/Source/WebKit2/PluginProcess.pro b/Source/WebKit2/PluginProcess.pro index 8113afd20..82a8c2f17 100644 --- a/Source/WebKit2/PluginProcess.pro +++ b/Source/WebKit2/PluginProcess.pro @@ -6,7 +6,7 @@ TEMPLATE = app -QT += webkit +QT += webkitwidgets TARGET = QtWebPluginProcess DESTDIR = $${ROOT_BUILD_DIR}/bin diff --git a/Source/WebKit2/PluginProcess/PluginControllerProxy.cpp b/Source/WebKit2/PluginProcess/PluginControllerProxy.cpp index 31a5d61a6..cef3d40a4 100644 --- a/Source/WebKit2/PluginProcess/PluginControllerProxy.cpp +++ b/Source/WebKit2/PluginProcess/PluginControllerProxy.cpp @@ -521,6 +521,21 @@ void PluginControllerProxy::handleKeyboardEvent(const WebKeyboardEvent& keyboard handled = m_plugin->handleKeyboardEvent(keyboardEvent); } +void PluginControllerProxy::handleEditingCommand(const String& commandName, const String& argument, bool& handled) +{ + handled = m_plugin->handleEditingCommand(commandName, argument); +} + +void PluginControllerProxy::isEditingCommandEnabled(const String& commandName, bool& enabled) +{ + enabled = m_plugin->isEditingCommandEnabled(commandName); +} + +void PluginControllerProxy::handlesPageScaleFactor(bool& isHandled) +{ + isHandled = m_plugin->handlesPageScaleFactor(); +} + void PluginControllerProxy::paintEntirePlugin() { if (m_pluginSize.isEmpty()) diff --git a/Source/WebKit2/PluginProcess/PluginControllerProxy.h b/Source/WebKit2/PluginProcess/PluginControllerProxy.h index b4a40673e..83dd3fb74 100644 --- a/Source/WebKit2/PluginProcess/PluginControllerProxy.h +++ b/Source/WebKit2/PluginProcess/PluginControllerProxy.h @@ -137,6 +137,9 @@ private: void handleMouseEnterEvent(const WebMouseEvent&, bool& handled); void handleMouseLeaveEvent(const WebMouseEvent&, bool& handled); void handleKeyboardEvent(const WebKeyboardEvent&, bool& handled); + void handleEditingCommand(const String&, const String&, bool&); + void isEditingCommandEnabled(const String&, bool&); + void handlesPageScaleFactor(bool&); void paintEntirePlugin(); void snapshot(ShareableBitmap::Handle& backingStoreHandle); void setFocus(bool); diff --git a/Source/WebKit2/PluginProcess/PluginControllerProxy.messages.in b/Source/WebKit2/PluginProcess/PluginControllerProxy.messages.in index d7c2d02b2..0671a23c0 100644 --- a/Source/WebKit2/PluginProcess/PluginControllerProxy.messages.in +++ b/Source/WebKit2/PluginProcess/PluginControllerProxy.messages.in @@ -73,6 +73,15 @@ messages -> PluginControllerProxy { # Sent when a keyboard should be processed. HandleKeyboardEvent(WebKit::WebKeyboardEvent keyboardEvent) -> (bool handled) + + # Sent when an editing command should be processed. + HandleEditingCommand(WTF::String commandName, WTF::String argument) -> (bool handled); + + # Return whether or not a plugin wants to enable the given editing command. + IsEditingCommandEnabled(WTF::String commandName) -> (bool enabled); + + # Return whether or not a plugin wants to handle page scale factor itself. + HandlesPageScaleFactor() -> (bool enabled); # Sent when the plug-in focus changes. SetFocus(bool isFocused) diff --git a/Source/WebKit2/PluginProcess/PluginProcess.cpp b/Source/WebKit2/PluginProcess/PluginProcess.cpp index 1bffafe74..7125d7d86 100644 --- a/Source/WebKit2/PluginProcess/PluginProcess.cpp +++ b/Source/WebKit2/PluginProcess/PluginProcess.cpp @@ -150,10 +150,6 @@ void PluginProcess::didReceiveInvalidMessage(CoreIPC::Connection*, CoreIPC::Mess { } -void PluginProcess::syncMessageSendTimedOut(CoreIPC::Connection*) -{ -} - void PluginProcess::initializePluginProcess(const PluginProcessCreationParameters& parameters) { ASSERT(!m_pluginModule); diff --git a/Source/WebKit2/PluginProcess/PluginProcess.h b/Source/WebKit2/PluginProcess/PluginProcess.h index be34e9fce..645153cee 100644 --- a/Source/WebKit2/PluginProcess/PluginProcess.h +++ b/Source/WebKit2/PluginProcess/PluginProcess.h @@ -77,7 +77,6 @@ private: virtual void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); virtual void didClose(CoreIPC::Connection*); virtual void didReceiveInvalidMessage(CoreIPC::Connection*, CoreIPC::MessageID); - virtual void syncMessageSendTimedOut(CoreIPC::Connection*); // Message handlers. void didReceivePluginProcessMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); diff --git a/Source/WebKit2/PluginProcess/WebProcessConnection.cpp b/Source/WebKit2/PluginProcess/WebProcessConnection.cpp index 1d95df1ed..0507d613b 100644 --- a/Source/WebKit2/PluginProcess/WebProcessConnection.cpp +++ b/Source/WebKit2/PluginProcess/WebProcessConnection.cpp @@ -237,10 +237,6 @@ void WebProcessConnection::didReceiveInvalidMessage(CoreIPC::Connection*, CoreIP // FIXME: Implement. } -void WebProcessConnection::syncMessageSendTimedOut(CoreIPC::Connection*) -{ -} - void WebProcessConnection::createPluginInternal(const PluginCreationParameters& creationParameters, bool& result, bool& wantsWheelEvents, uint32_t& remoteLayerClientID) { OwnPtr<PluginControllerProxy> pluginControllerProxy = PluginControllerProxy::create(this, creationParameters); @@ -260,6 +256,8 @@ void WebProcessConnection::createPluginInternal(const PluginCreationParameters& wantsWheelEvents = pluginControllerProxyPtr->wantsWheelEvents(); #if PLATFORM(MAC) remoteLayerClientID = pluginControllerProxyPtr->remoteLayerClientID(); +#else + UNUSED_PARAM(remoteLayerClientID); #endif } diff --git a/Source/WebKit2/PluginProcess/WebProcessConnection.h b/Source/WebKit2/PluginProcess/WebProcessConnection.h index ce98e1036..8296b5470 100644 --- a/Source/WebKit2/PluginProcess/WebProcessConnection.h +++ b/Source/WebKit2/PluginProcess/WebProcessConnection.h @@ -66,7 +66,6 @@ private: virtual void didReceiveSyncMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*, OwnPtr<CoreIPC::ArgumentEncoder>&); virtual void didClose(CoreIPC::Connection*); virtual void didReceiveInvalidMessage(CoreIPC::Connection*, CoreIPC::MessageID); - virtual void syncMessageSendTimedOut(CoreIPC::Connection*); // Message handlers. void didReceiveWebProcessConnectionMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); diff --git a/Source/WebKit2/PluginProcess/mac/PluginProcessMac.mm b/Source/WebKit2/PluginProcess/mac/PluginProcessMac.mm index 6a313f26c..de7d5831f 100644 --- a/Source/WebKit2/PluginProcess/mac/PluginProcessMac.mm +++ b/Source/WebKit2/PluginProcess/mac/PluginProcessMac.mm @@ -189,11 +189,18 @@ static unsigned modalCount = 0; static void beginModal() { +#if COMPILER(CLANG) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" +#endif // Make sure to make ourselves the front process ProcessSerialNumber psn; GetCurrentProcess(&psn); SetFrontProcess(&psn); - +#if COMPILER(CLANG) +#pragma clang diagnostic pop +#endif + if (!modalCount++) setModal(true); } diff --git a/Source/WebKit2/PluginProcess/mac/PluginProcessMainMac.mm b/Source/WebKit2/PluginProcess/mac/PluginProcessMainMac.mm index 45b56b925..ffe1e2dd3 100644 --- a/Source/WebKit2/PluginProcess/mac/PluginProcessMainMac.mm +++ b/Source/WebKit2/PluginProcess/mac/PluginProcessMainMac.mm @@ -84,9 +84,10 @@ int PluginProcessMain(const CommandLine& commandLine) } String localization = commandLine["localization"]; - RetainPtr<CFStringRef> cfLocalization(AdoptCF, CFStringCreateWithCharacters(0, reinterpret_cast<const UniChar*>(localization.characters()), localization.length())); - if (cfLocalization) + if (!localization.isEmpty()) { + RetainPtr<CFStringRef> cfLocalization(AdoptCF, CFStringCreateWithCharacters(0, reinterpret_cast<const UniChar*>(localization.characters()), localization.length())); WKSetDefaultLocalization(cfLocalization.get()); + } #if defined(__i386__) { diff --git a/Source/WebKit2/PluginProcess/qt/PluginProcessMainQt.cpp b/Source/WebKit2/PluginProcess/qt/PluginProcessMainQt.cpp index 8cb6bcdf5..ac6f2c1bd 100644 --- a/Source/WebKit2/PluginProcess/qt/PluginProcessMainQt.cpp +++ b/Source/WebKit2/PluginProcess/qt/PluginProcessMainQt.cpp @@ -44,10 +44,10 @@ using namespace WebCore; namespace WebKit { -static void messageHandler(QtMsgType type, const char* message) +static void messageHandler(QtMsgType type, const QMessageLogContext&, const QString& message) { if (type == QtCriticalMsg) { - fprintf(stderr, "%s\n", message); + fprintf(stderr, "%s\n", qPrintable(message)); return; } @@ -71,7 +71,7 @@ Q_DECL_EXPORT int PluginProcessMain(int argc, char** argv) { QByteArray suppressOutput = qgetenv("QT_WEBKIT_SUPPRESS_WEB_PROCESS_OUTPUT"); if (!suppressOutput.isEmpty() && suppressOutput != "0") - qInstallMsgHandler(messageHandler); + qInstallMessageHandler(messageHandler); QGuiApplication app(argc, argv); diff --git a/Source/WebKit2/PluginProcess/gtk/PluginControllerProxyGtk.cpp b/Source/WebKit2/PluginProcess/unix/PluginControllerProxyUnix.cpp index cbcc1d730..cbcc1d730 100644 --- a/Source/WebKit2/PluginProcess/gtk/PluginControllerProxyGtk.cpp +++ b/Source/WebKit2/PluginProcess/unix/PluginControllerProxyUnix.cpp diff --git a/Source/WebKit2/PluginProcess/gtk/PluginProcessMainGtk.cpp b/Source/WebKit2/PluginProcess/unix/PluginProcessMainUnix.cpp index 870c01c27..4113d3dfa 100644 --- a/Source/WebKit2/PluginProcess/gtk/PluginProcessMainGtk.cpp +++ b/Source/WebKit2/PluginProcess/unix/PluginProcessMainUnix.cpp @@ -1,5 +1,7 @@ /* * Copyright (C) 2011 Igalia S.L. + * Copyright (C) 2011 Apple Inc. + * Copyright (C) 2012 Samsung Electronics * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -10,10 +12,10 @@ * 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'' + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 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 @@ -24,44 +26,65 @@ */ #include "config.h" -#include "PluginProcessMainGtk.h" +#include "PluginProcessMainUnix.h" +#include "Logging.h" #include "NetscapePlugin.h" #include "PluginProcess.h" +#include "ScriptController.h" #include <WebCore/RunLoop.h> +#if PLATFORM(GTK) #include <gdk/gdkx.h> #include <gtk/gtk.h> -#include <runtime/InitializeThreading.h> -#include <wtf/MainThread.h> +#elif PLATFORM(EFL) && HAVE_ECORE_X +#include <Ecore_X.h> +#endif using namespace WebCore; namespace WebKit { -static int webkitgtkXError(Display* xdisplay, XErrorEvent* error) +#ifdef XP_UNIX + +#if !LOG_DISABLED +static const char xErrorString[] = "The program '%s' received an X Window System error.\n" + "This probably reflects a bug in a browser plugin.\n" + "The error was '%s'.\n" + " (Details: serial %ld error_code %d request_code %d minor_code %d)\n"; +#endif /* !LOG_DISABLED */ + +static char* programName = 0; + +static int webkitXError(Display* xdisplay, XErrorEvent* error) { - gchar errorMessage[64]; + char errorMessage[64]; XGetErrorText(xdisplay, error->error_code, errorMessage, 63); - g_warning("The program '%s' received an X Window System error.\n" - "This probably reflects a bug in a browser plugin.\n" - "The error was '%s'.\n" - " (Details: serial %ld error_code %d request_code %d minor_code %d)\n", - g_get_prgname(), errorMessage, - error->serial, error->error_code, - error->request_code, error->minor_code); + + LOG(Plugins, xErrorString, + programName, errorMessage, + error->serial, error->error_code, + error->request_code, error->minor_code); + return 0; } +#endif -WK_EXPORT int PluginProcessMainGtk(int argc, char* argv[]) +WK_EXPORT int PluginProcessMainUnix(int argc, char* argv[]) { ASSERT(argc == 2 || argc == 3); bool scanPlugin = !strcmp(argv[1], "-scanPlugin"); ASSERT(argc == 2 || (argc == 3 && scanPlugin)); +#if PLATFORM(GTK) gtk_init(&argc, &argv); +#elif PLATFORM(EFL) +#ifdef HAVE_ECORE_X + if (!ecore_x_init(0)) +#endif + return 1; +#endif - JSC::initializeThreading(); - WTF::initializeMainThread(); + ScriptController::initializeThreading(); if (scanPlugin) { String pluginPath(argv[2]); @@ -75,7 +98,10 @@ WK_EXPORT int PluginProcessMainGtk(int argc, char* argv[]) // Plugins can produce X errors that are handled by the GDK X error handler, which // exits the process. Since we don't want to crash due to plugin bugs, we install a // custom error handler to show a warning when a X error happens without aborting. - XSetErrorHandler(webkitgtkXError); +#if defined(XP_UNIX) + programName = basename(argv[0]); + XSetErrorHandler(webkitXError); +#endif int socket = atoi(argv[1]); WebKit::PluginProcess::shared().initialize(socket, RunLoop::main()); @@ -85,5 +111,3 @@ WK_EXPORT int PluginProcessMainGtk(int argc, char* argv[]) } } // namespace WebKit - - diff --git a/Source/WebKit2/PluginProcess/gtk/PluginProcessMainGtk.h b/Source/WebKit2/PluginProcess/unix/PluginProcessMainUnix.h index 39cc6e659..540c596aa 100644 --- a/Source/WebKit2/PluginProcess/gtk/PluginProcessMainGtk.h +++ b/Source/WebKit2/PluginProcess/unix/PluginProcessMainUnix.h @@ -24,8 +24,8 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ -#ifndef PluginProcessMainGtk_h -#define PluginProcessMainGtk_h +#ifndef PluginProcessMainUnix_h +#define PluginProcessMainUnix_h #include <WebKit2/WKBase.h> @@ -33,7 +33,7 @@ namespace WebKit { #ifdef __cplusplus extern "C" { -WK_EXPORT int PluginProcessMainGtk(int argc, char* argv[]); +WK_EXPORT int PluginProcessMainUnix(int argc, char* argv[]); } // extern "C" #endif // __cplusplus diff --git a/Source/WebKit2/PluginProcess/gtk/PluginProcessGtk.cpp b/Source/WebKit2/PluginProcess/unix/PluginProcessUnix.cpp index ee78f9a7b..50daa02aa 100644 --- a/Source/WebKit2/PluginProcess/gtk/PluginProcessGtk.cpp +++ b/Source/WebKit2/PluginProcess/unix/PluginProcessUnix.cpp @@ -33,7 +33,7 @@ namespace WebKit { -void PluginProcess::platformInitialize(const PluginProcessCreationParameters& parameters) +void PluginProcess::platformInitialize(const PluginProcessCreationParameters&) { notImplemented(); } diff --git a/Source/WebKit2/Scripts/webkit2/messages.py b/Source/WebKit2/Scripts/webkit2/messages.py index bd9dc9a28..e15dc1b15 100644 --- a/Source/WebKit2/Scripts/webkit2/messages.py +++ b/Source/WebKit2/Scripts/webkit2/messages.py @@ -26,6 +26,7 @@ from webkit2 import parser DELAYED_ATTRIBUTE = 'Delayed' DISPATCH_ON_CONNECTION_QUEUE_ATTRIBUTE = 'DispatchOnConnectionQueue' +VARIADIC_ATTRIBUTE = 'Variadic' _license_header = """/* * Copyright (C) 2010 Apple Inc. All rights reserved. @@ -71,15 +72,6 @@ def messages_to_kind_enum(messages): result.append('};\n') return ''.join(result) - -def message_is_variadic(message): - variadic_types = frozenset([ - 'WebKit::InjectedBundleUserMessageEncoder', - 'WebKit::WebContextUserMessageEncoder', - ]) - - return len(message.parameters) and message.parameters[-1].type in variadic_types - def function_parameter_type(type): # Don't use references for built-in types. builtin_types = frozenset([ @@ -122,7 +114,7 @@ def reply_type(message): def decode_type(message): - if message_is_variadic(message): + if message.has_attribute(VARIADIC_ATTRIBUTE): return arguments_type(message.parameters[:-1], reply_parameter_type) return base_class(message) @@ -197,6 +189,7 @@ def struct_or_class(namespace, type): 'WebKit::DictionaryPopupInfo', 'WebKit::DrawingAreaInfo', 'WebKit::EditorState', + 'WebKit::NetworkProcessCreationParameters', 'WebKit::PlatformPopupMenuData', 'WebKit::PluginCreationParameters', 'WebKit::PluginProcessCreationParameters', @@ -313,7 +306,7 @@ def handler_function(receiver, message): def async_case_statement(receiver, message): dispatch_function_args = ['arguments', 'this', '&%s' % handler_function(receiver, message)] dispatch_function = 'handleMessage' - if message_is_variadic(message): + if message.has_attribute(VARIADIC_ATTRIBUTE): dispatch_function += 'Variadic' if message.has_attribute(DISPATCH_ON_CONNECTION_QUEUE_ATTRIBUTE): dispatch_function += 'OnConnectionQueue' @@ -333,7 +326,7 @@ def sync_case_statement(receiver, message): dispatch_function = 'handleMessage' if message.has_attribute(DELAYED_ATTRIBUTE): dispatch_function += 'Delayed' - if message_is_variadic(message): + if message.has_attribute(VARIADIC_ATTRIBUTE): dispatch_function += 'Variadic' result = [] diff --git a/Source/WebKit2/Shared/API/c/WKArray.cpp b/Source/WebKit2/Shared/API/c/WKArray.cpp index 6ca9af273..5bf35e3c3 100644 --- a/Source/WebKit2/Shared/API/c/WKArray.cpp +++ b/Source/WebKit2/Shared/API/c/WKArray.cpp @@ -42,6 +42,12 @@ WKArrayRef WKArrayCreate(WKTypeRef* values, size_t numberOfValues) return toAPI(array.release().leakRef()); } +WKArrayRef WKArrayCreateAdoptingValues(WKTypeRef* values, size_t numberOfValues) +{ + RefPtr<ImmutableArray> array = ImmutableArray::adopt(reinterpret_cast<APIObject**>(const_cast<void**>(values)), numberOfValues); + return toAPI(array.release().leakRef()); +} + WKTypeRef WKArrayGetItemAtIndex(WKArrayRef arrayRef, size_t index) { return toImpl(arrayRef)->at(index); diff --git a/Source/WebKit2/Shared/API/c/WKArray.h b/Source/WebKit2/Shared/API/c/WKArray.h index da4560a0a..25900f313 100644 --- a/Source/WebKit2/Shared/API/c/WKArray.h +++ b/Source/WebKit2/Shared/API/c/WKArray.h @@ -37,6 +37,7 @@ extern "C" { WK_EXPORT WKTypeID WKArrayGetTypeID(); WK_EXPORT WKArrayRef WKArrayCreate(WKTypeRef* values, size_t numberOfValues); +WK_EXPORT WKArrayRef WKArrayCreateAdoptingValues(WKTypeRef* values, size_t numberOfValues); WK_EXPORT WKTypeRef WKArrayGetItemAtIndex(WKArrayRef array, size_t index); WK_EXPORT size_t WKArrayGetSize(WKArrayRef array); diff --git a/Source/WebKit2/Shared/API/c/WKBase.h b/Source/WebKit2/Shared/API/c/WKBase.h index ab6ca84cd..1a2761024 100644 --- a/Source/WebKit2/Shared/API/c/WKBase.h +++ b/Source/WebKit2/Shared/API/c/WKBase.h @@ -79,6 +79,18 @@ typedef const struct OpaqueWKURLRequest* WKURLRequestRef; typedef const struct OpaqueWKURLResponse* WKURLResponseRef; typedef const struct OpaqueWKUserContentURLPattern* WKUserContentURLPatternRef; +enum WKUserContentInjectedFrames { + kWKInjectInAllFrames, + kWKInjectInTopFrameOnly +}; +typedef enum WKUserContentInjectedFrames WKUserContentInjectedFrames; + +enum WKUserScriptInjectionTime { + kWKInjectAtDocumentStart, + kWKInjectAtDocumentEnd +}; +typedef enum WKUserScriptInjectionTime WKUserScriptInjectionTime; + /* WebKit2 main API types */ typedef const struct OpaqueWKApplicationCacheManager* WKApplicationCacheManagerRef; diff --git a/Source/WebKit2/Shared/API/c/WKSharedAPICast.h b/Source/WebKit2/Shared/API/c/WKSharedAPICast.h index 94a77e176..86940ffed 100644 --- a/Source/WebKit2/Shared/API/c/WKSharedAPICast.h +++ b/Source/WebKit2/Shared/API/c/WKSharedAPICast.h @@ -48,6 +48,8 @@ #include <WebCore/FrameLoaderTypes.h> #include <WebCore/IntRect.h> #include <WebCore/LayoutMilestones.h> +#include <WebCore/UserContentTypes.h> +#include <WebCore/UserScriptTypes.h> #include <wtf/TypeTraits.h> namespace WebKit { @@ -811,6 +813,32 @@ inline SnapshotOptions toSnapshotOptions(WKSnapshotOptions wkSnapshotOptions) return snapshotOptions; } +inline WebCore::UserScriptInjectionTime toUserScriptInjectionTime(WKUserScriptInjectionTime wkInjectedTime) +{ + switch (wkInjectedTime) { + case kWKInjectAtDocumentStart: + return WebCore::InjectAtDocumentStart; + case kWKInjectAtDocumentEnd: + return WebCore::InjectAtDocumentEnd; + } + + ASSERT_NOT_REACHED(); + return WebCore::InjectAtDocumentStart; +} + +inline WebCore::UserContentInjectedFrames toUserContentInjectedFrames(WKUserContentInjectedFrames wkInjectedFrames) +{ + switch (wkInjectedFrames) { + case kWKInjectInAllFrames: + return WebCore::InjectInAllFrames; + case kWKInjectInTopFrameOnly: + return WebCore::InjectInTopFrameOnly; + } + + ASSERT_NOT_REACHED(); + return WebCore::InjectInAllFrames; +} + } // namespace WebKit #endif // WKSharedAPICast_h diff --git a/Source/WebKit2/Shared/API/c/WKURLResponse.cpp b/Source/WebKit2/Shared/API/c/WKURLResponse.cpp index 2d25f282a..875ad3df5 100644 --- a/Source/WebKit2/Shared/API/c/WKURLResponse.cpp +++ b/Source/WebKit2/Shared/API/c/WKURLResponse.cpp @@ -51,3 +51,13 @@ int32_t WKURLResponseHTTPStatusCode(WKURLResponseRef responseRef) { return toImpl(responseRef)->resourceResponse().httpStatusCode(); } + +WKStringRef WKURLResponseCopySuggestedFilename(WKURLResponseRef responseRef) +{ + return toCopiedAPI(toImpl(responseRef)->resourceResponse().suggestedFilename()); +} + +bool WKURLResponseIsAttachment(WKURLResponseRef responseRef) +{ + return toImpl(responseRef)->resourceResponse().isAttachment(); +} diff --git a/Source/WebKit2/Shared/API/c/WKURLResponse.h b/Source/WebKit2/Shared/API/c/WKURLResponse.h index d4c269340..08f91d4f3 100644 --- a/Source/WebKit2/Shared/API/c/WKURLResponse.h +++ b/Source/WebKit2/Shared/API/c/WKURLResponse.h @@ -40,6 +40,10 @@ WK_EXPORT WKStringRef WKURLResponseCopyMIMEType(WKURLResponseRef); WK_EXPORT int32_t WKURLResponseHTTPStatusCode(WKURLResponseRef); +WK_EXPORT WKStringRef WKURLResponseCopySuggestedFilename(WKURLResponseRef); + +WK_EXPORT bool WKURLResponseIsAttachment(WKURLResponseRef); + #ifdef __cplusplus } #endif diff --git a/Source/WebKit2/Shared/API/c/cf/WKURLCF.cpp b/Source/WebKit2/Shared/API/c/cf/WKURLCF.cpp index e1d4ee7bb..4e40bdf4e 100644 --- a/Source/WebKit2/Shared/API/c/cf/WKURLCF.cpp +++ b/Source/WebKit2/Shared/API/c/cf/WKURLCF.cpp @@ -38,6 +38,9 @@ using namespace WebKit; WKURLRef WKURLCreateWithCFURL(CFURLRef cfURL) { + if (!cfURL) + return 0; + String urlString(CFURLGetString(cfURL)); return toCopiedURLAPI(urlString); } diff --git a/Source/WebKit2/Shared/APIClientTraits.cpp b/Source/WebKit2/Shared/APIClientTraits.cpp index 76f13ad1f..eb7a51bfa 100644 --- a/Source/WebKit2/Shared/APIClientTraits.cpp +++ b/Source/WebKit2/Shared/APIClientTraits.cpp @@ -40,6 +40,7 @@ const size_t APIClientTraits<WKBundlePageLoaderClient>::interfaceSizesByVersion[ offsetof(WKBundlePageLoaderClient, didLayoutForFrame), offsetof(WKBundlePageLoaderClient, didFinishProgress), offsetof(WKBundlePageLoaderClient, didReceiveIntentForFrame), + offsetof(WKBundlePageLoaderClient, registerIntentServiceForFrame), sizeof(WKBundlePageLoaderClient) }; @@ -86,4 +87,9 @@ const size_t APIClientTraits<WKContextInjectedBundleClient>::interfaceSizesByVer sizeof(WKContextInjectedBundleClient) }; +const size_t APIClientTraits<WKIconDatabaseClient>::interfaceSizesByVersion[] = { + offsetof(WKIconDatabaseClient, iconDataReadyForPageURL), + sizeof(WKIconDatabaseClient) +}; + } // namespace WebKit diff --git a/Source/WebKit2/Shared/APIClientTraits.h b/Source/WebKit2/Shared/APIClientTraits.h index 9b7663d0a..4ad4fb1b2 100644 --- a/Source/WebKit2/Shared/APIClientTraits.h +++ b/Source/WebKit2/Shared/APIClientTraits.h @@ -29,6 +29,7 @@ #include "WKBundle.h" #include "WKBundlePage.h" #include "WKContext.h" +#include "WKIconDatabase.h" #include "WKPage.h" namespace WebKit { @@ -43,7 +44,7 @@ template<> struct APIClientTraits<WKBundleClient> { }; template<> struct APIClientTraits<WKBundlePageLoaderClient> { - static const size_t interfaceSizesByVersion[4]; + static const size_t interfaceSizesByVersion[5]; }; template<> struct APIClientTraits<WKBundlePageResourceLoadClient> { @@ -78,6 +79,10 @@ template<> struct APIClientTraits<WKContextInjectedBundleClient> { static const size_t interfaceSizesByVersion[2]; }; +template<> struct APIClientTraits<WKIconDatabaseClient> { + static const size_t interfaceSizesByVersion[2]; +}; + } // namespace WebKit #endif // APIClientTraits_h diff --git a/Source/WebKit2/Shared/ImmutableArray.cpp b/Source/WebKit2/Shared/ImmutableArray.cpp index 67b2a34c5..2d45ae9be 100644 --- a/Source/WebKit2/Shared/ImmutableArray.cpp +++ b/Source/WebKit2/Shared/ImmutableArray.cpp @@ -32,6 +32,13 @@ ImmutableArray::ImmutableArray() { } +ImmutableArray::ImmutableArray(AdoptTag, APIObject** entries, size_t size) + : m_entries(size) +{ + for (size_t i = 0; i < size; ++i) + m_entries[i] = adoptRef(entries[i]); +} + ImmutableArray::ImmutableArray(APIObject** entries, size_t size) : m_entries(size) { diff --git a/Source/WebKit2/Shared/ImmutableArray.h b/Source/WebKit2/Shared/ImmutableArray.h index e26e4aa5d..d2208cdc4 100644 --- a/Source/WebKit2/Shared/ImmutableArray.h +++ b/Source/WebKit2/Shared/ImmutableArray.h @@ -38,6 +38,7 @@ namespace WebKit { class ImmutableArray : public APIObject { public: static const Type APIType = TypeArray; + enum AdoptTag { Adopt }; static PassRefPtr<ImmutableArray> create() { @@ -47,6 +48,10 @@ public: { return adoptRef(new ImmutableArray(entries, size)); } + static PassRefPtr<ImmutableArray> adopt(APIObject** entries, size_t size) + { + return adoptRef(new ImmutableArray(Adopt, entries, size)); + } static PassRefPtr<ImmutableArray> adopt(Vector<RefPtr<APIObject> >& entries) { return adoptRef(new ImmutableArray(entries)); @@ -64,7 +69,8 @@ public: protected: ImmutableArray(); - ImmutableArray(APIObject** entries, size_t size); + ImmutableArray(AdoptTag, APIObject** entries, size_t); + ImmutableArray(APIObject** entries, size_t); ImmutableArray(Vector<RefPtr<APIObject> >& entries); virtual Type type() const { return APIType; } diff --git a/Source/WebKit2/Shared/Network/NetworkProcessCreationParameters.cpp b/Source/WebKit2/Shared/Network/NetworkProcessCreationParameters.cpp new file mode 100644 index 000000000..efbe3572d --- /dev/null +++ b/Source/WebKit2/Shared/Network/NetworkProcessCreationParameters.cpp @@ -0,0 +1,58 @@ +/* + * Copyright (C) 2012 Apple Inc. 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 "NetworkProcessCreationParameters.h" + +#if ENABLE(NETWORK_PROCESS) + +#include "ArgumentCoders.h" + +namespace WebKit { + +NetworkProcessCreationParameters::NetworkProcessCreationParameters() +{ +} + +void NetworkProcessCreationParameters::encode(CoreIPC::ArgumentEncoder* encoder) const +{ +#if PLATFORM(MAC) + encoder->encode(parentProcessName); +#endif +} + +bool NetworkProcessCreationParameters::decode(CoreIPC::ArgumentDecoder* decoder, NetworkProcessCreationParameters& result) +{ +#if PLATFORM(MAC) + if (!decoder->decode(result.parentProcessName)) + return false; +#endif + + return true; +} + +} // namespace WebKit + +#endif // ENABLE(NETWORK_PROCESS) diff --git a/Source/WebKit2/Shared/Network/NetworkProcessCreationParameters.h b/Source/WebKit2/Shared/Network/NetworkProcessCreationParameters.h new file mode 100644 index 000000000..4f59e2941 --- /dev/null +++ b/Source/WebKit2/Shared/Network/NetworkProcessCreationParameters.h @@ -0,0 +1,55 @@ +/* + * Copyright (C) 2012 Apple Inc. 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. + */ + +#ifndef NetworkProcessCreationParameters_h +#define NetworkProcessCreationParameters_h + +#if ENABLE(NETWORK_PROCESS) + +#include <wtf/text/WTFString.h> + +namespace CoreIPC { + class ArgumentDecoder; + class ArgumentEncoder; +} + +namespace WebKit { + +struct NetworkProcessCreationParameters { + NetworkProcessCreationParameters(); + + void encode(CoreIPC::ArgumentEncoder*) const; + static bool decode(CoreIPC::ArgumentDecoder*, NetworkProcessCreationParameters&); + +#if PLATFORM(MAC) + String parentProcessName; +#endif +}; + +} // namespace WebKit + +#endif // ENABLE(NETWORK_PROCESS) + +#endif // NetworkProcessCreationParameters_h diff --git a/Source/WebKit2/Shared/Plugins/NPRemoteObjectMap.cpp b/Source/WebKit2/Shared/Plugins/NPRemoteObjectMap.cpp index 7641af5e8..b5ec2d9da 100644 --- a/Source/WebKit2/Shared/Plugins/NPRemoteObjectMap.cpp +++ b/Source/WebKit2/Shared/Plugins/NPRemoteObjectMap.cpp @@ -200,7 +200,7 @@ void NPRemoteObjectMap::pluginDestroyed(Plugin* plugin) // Gather the receivers associated with this plug-in. for (HashMap<uint64_t, NPObjectMessageReceiver*>::const_iterator it = m_registeredNPObjects.begin(), end = m_registeredNPObjects.end(); it != end; ++it) { - NPObjectMessageReceiver* npObjectMessageReceiver = it->second; + NPObjectMessageReceiver* npObjectMessageReceiver = it->value; if (npObjectMessageReceiver->plugin() == plugin) messageReceivers.append(npObjectMessageReceiver); } diff --git a/Source/WebKit2/Shared/Plugins/Netscape/mac/NetscapePluginModuleMac.mm b/Source/WebKit2/Shared/Plugins/Netscape/mac/NetscapePluginModuleMac.mm index a4635e035..81b38e0ec 100644 --- a/Source/WebKit2/Shared/Plugins/Netscape/mac/NetscapePluginModuleMac.mm +++ b/Source/WebKit2/Shared/Plugins/Netscape/mac/NetscapePluginModuleMac.mm @@ -93,14 +93,11 @@ static bool getPluginArchitecture(CFBundleRef bundle, PluginModuleInfo& plugin) static RetainPtr<CFDictionaryRef> contentsOfPropertyListAtURL(CFURLRef propertyListURL) { - CFDataRef propertyListData; - CFURLCreateDataAndPropertiesFromResource(kCFAllocatorDefault, propertyListURL, &propertyListData, 0, 0, 0); + RetainPtr<NSData> propertyListData = adoptNS([[NSData alloc] initWithContentsOfURL:(NSURL *)propertyListURL]); if (!propertyListData) return 0; - RetainPtr<CFPropertyListRef> propertyList(AdoptCF, CFPropertyListCreateWithData(kCFAllocatorDefault, propertyListData, kCFPropertyListImmutable, 0, 0)); - CFRelease(propertyListData); - + RetainPtr<CFPropertyListRef> propertyList(AdoptCF, CFPropertyListCreateWithData(kCFAllocatorDefault, (CFDataRef)propertyListData.get(), kCFPropertyListImmutable, 0, 0)); if (!propertyList) return 0; diff --git a/Source/WebKit2/Shared/ShareableSurface.cpp b/Source/WebKit2/Shared/ShareableSurface.cpp index 43bd525b4..be093e0c0 100644 --- a/Source/WebKit2/Shared/ShareableSurface.cpp +++ b/Source/WebKit2/Shared/ShareableSurface.cpp @@ -22,6 +22,7 @@ #include "GraphicsContext.h" #include "WebCoreArgumentCoders.h" +#include <WebCore/GraphicsSurfaceToken.h> #if USE(TEXTURE_MAPPER) #include "TextureMapperGL.h" @@ -32,9 +33,6 @@ using namespace WebCore; namespace WebKit { ShareableSurface::Handle::Handle() -#if USE(GRAPHICS_SURFACE) - : m_graphicsSurfaceToken(0) -#endif { } @@ -44,7 +42,7 @@ void ShareableSurface::Handle::encode(CoreIPC::ArgumentEncoder* encoder) const encoder->encode(m_flags); #if USE(GRAPHICS_SURFACE) encoder->encode(m_graphicsSurfaceToken); - if (m_graphicsSurfaceToken) + if (m_graphicsSurfaceToken.isValid()) return; #endif encoder->encode(m_bitmapHandle); @@ -59,7 +57,7 @@ bool ShareableSurface::Handle::decode(CoreIPC::ArgumentDecoder* decoder, Handle& #if USE(GRAPHICS_SURFACE) if (!decoder->decode(handle.m_graphicsSurfaceToken)) return false; - if (handle.m_graphicsSurfaceToken) + if (handle.m_graphicsSurfaceToken.isValid()) return true; #endif if (!decoder->decode(handle.m_bitmapHandle)) @@ -151,7 +149,7 @@ ShareableSurface::~ShareableSurface() PassRefPtr<ShareableSurface> ShareableSurface::create(const Handle& handle) { #if USE(GRAPHICS_SURFACE) - if (handle.graphicsSurfaceToken()) { + if (handle.graphicsSurfaceToken().isValid()) { RefPtr<GraphicsSurface> surface = GraphicsSurface::create(handle.m_size, handle.m_flags, handle.m_graphicsSurfaceToken); if (surface) return adoptRef(new ShareableSurface(handle.m_size, handle.m_flags, PassRefPtr<GraphicsSurface>(surface))); @@ -171,8 +169,8 @@ bool ShareableSurface::createHandle(Handle& handle) handle.m_flags = m_flags; #if USE(GRAPHICS_SURFACE) - handle.m_graphicsSurfaceToken = m_graphicsSurface ? m_graphicsSurface->exportToken() : 0; - if (handle.m_graphicsSurfaceToken) + handle.m_graphicsSurfaceToken = m_graphicsSurface ? m_graphicsSurface->exportToken() : GraphicsSurfaceToken(); + if (handle.m_graphicsSurfaceToken.isValid()) return true; #endif if (!m_bitmap->createHandle(handle.m_bitmapHandle)) diff --git a/Source/WebKit2/Shared/ShareableSurface.h b/Source/WebKit2/Shared/ShareableSurface.h index b685b0777..598dc5911 100644 --- a/Source/WebKit2/Shared/ShareableSurface.h +++ b/Source/WebKit2/Shared/ShareableSurface.h @@ -55,14 +55,14 @@ public: static bool decode(CoreIPC::ArgumentDecoder*, Handle&); #if USE(GRAPHICS_SURFACE) - uint64_t graphicsSurfaceToken() const { return m_graphicsSurfaceToken; } + WebCore::GraphicsSurfaceToken graphicsSurfaceToken() const { return m_graphicsSurfaceToken; } #endif private: friend class ShareableSurface; mutable ShareableBitmap::Handle m_bitmapHandle; #if USE(GRAPHICS_SURFACE) - uint64_t m_graphicsSurfaceToken; + WebCore::GraphicsSurfaceToken m_graphicsSurfaceToken; #endif WebCore::IntSize m_size; ShareableBitmap::Flags m_flags; diff --git a/Source/WebKit2/Shared/UserMessageCoders.h b/Source/WebKit2/Shared/UserMessageCoders.h index ee4ab64ff..2ec5bb4d5 100644 --- a/Source/WebKit2/Shared/UserMessageCoders.h +++ b/Source/WebKit2/Shared/UserMessageCoders.h @@ -93,8 +93,8 @@ public: ImmutableDictionary::MapType::const_iterator it = map.begin(); ImmutableDictionary::MapType::const_iterator end = map.end(); for (; it != end; ++it) { - encoder->encode(it->first); - encoder->encode(Owner(it->second.get())); + encoder->encode(it->key); + encoder->encode(Owner(it->value.get())); } return true; } diff --git a/Source/WebKit2/Shared/WebConnection.cpp b/Source/WebKit2/Shared/WebConnection.cpp index 9530e2474..d941318db 100644 --- a/Source/WebKit2/Shared/WebConnection.cpp +++ b/Source/WebKit2/Shared/WebConnection.cpp @@ -26,8 +26,19 @@ #include "config.h" #include "WebConnection.h" +#include "ArgumentCoders.h" +#include "Connection.h" +#include "DataReference.h" +#include "WebConnectionMessages.h" +#include <wtf/text/WTFString.h> + namespace WebKit { +WebConnection::WebConnection(PassRefPtr<CoreIPC::Connection> connection) + : m_connection(connection) +{ +} + WebConnection::~WebConnection() { } @@ -37,9 +48,37 @@ void WebConnection::initializeConnectionClient(const WKConnectionClient* client) m_client.initialize(client); } -void WebConnection::forwardDidReceiveMessageToClient(const String& messageName, APIObject* messageBody) +void WebConnection::postMessage(const String& messageName, APIObject* messageBody) +{ + if (!m_connection) + return; + + OwnPtr<CoreIPC::ArgumentEncoder> messageData = CoreIPC::ArgumentEncoder::create(0); + messageData->encode(messageName); + encodeMessageBody(messageData.get(), messageBody); + + m_connection->send(Messages::WebConnection::HandleMessage(CoreIPC::DataReference(messageData->buffer(), messageData->bufferSize())), 0); +} + +void WebConnection::handleMessage(const CoreIPC::DataReference& messageData) +{ + CoreIPC::ArgumentDecoder messageDecoder(messageData.data(), messageData.size()); + + String messageName; + if (!messageDecoder.decode(messageName)) + return; + + RefPtr<APIObject> messageBody; + if (!decodeMessageBody(&messageDecoder, messageBody)) + return; + + m_client.didReceiveMessage(this, messageName, messageBody.get()); +} + +void WebConnection::invalidate() { - m_client.didReceiveMessage(this, messageName, messageBody); + m_connection->invalidate(); + m_connection = nullptr; } } // namespace WebKit diff --git a/Source/WebKit2/Shared/WebConnection.h b/Source/WebKit2/Shared/WebConnection.h index 216e37c55..3abd14d46 100644 --- a/Source/WebKit2/Shared/WebConnection.h +++ b/Source/WebKit2/Shared/WebConnection.h @@ -28,26 +28,42 @@ #include "APIObject.h" #include "WebConnectionClient.h" -#include <wtf/Forward.h> +#include <wtf/RefPtr.h> + +namespace CoreIPC { + class ArgumentDecoder; + class ArgumentEncoder; + class Connection; + class DataReference; + class MessageID; +} namespace WebKit { class WebConnection : public APIObject { public: static const Type APIType = TypeConnection; - virtual ~WebConnection(); - // Initialize the connection client. + CoreIPC::Connection* connection() { return m_connection.get(); } + void initializeConnectionClient(const WKConnectionClient*); + void postMessage(const String&, APIObject*); - virtual void postMessage(const String&, APIObject*) = 0; + void invalidate(); protected: + explicit WebConnection(PassRefPtr<CoreIPC::Connection>); + virtual Type type() const { return APIType; } + virtual void encodeMessageBody(CoreIPC::ArgumentEncoder*, APIObject*) = 0; + virtual bool decodeMessageBody(CoreIPC::ArgumentDecoder*, RefPtr<APIObject>&) = 0; - void forwardDidReceiveMessageToClient(const String&, APIObject*); + // Implemented in generated WebConnectionMessageReceiver.cpp + void didReceiveWebConnectionMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); + void handleMessage(const CoreIPC::DataReference& messageData); + RefPtr<CoreIPC::Connection> m_connection; WebConnectionClient m_client; }; diff --git a/Source/WebKit2/Shared/WebConnection.messages.in b/Source/WebKit2/Shared/WebConnection.messages.in new file mode 100644 index 000000000..6e17707e1 --- /dev/null +++ b/Source/WebKit2/Shared/WebConnection.messages.in @@ -0,0 +1,25 @@ +# Copyright (C) 2010 Apple Inc. 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. + +messages -> WebConnection { + HandleMessage(CoreIPC::DataReference messageData) +} diff --git a/Source/WebKit2/Shared/WebCoreArgumentCoders.cpp b/Source/WebKit2/Shared/WebCoreArgumentCoders.cpp index cbf624926..c25ea9511 100644 --- a/Source/WebKit2/Shared/WebCoreArgumentCoders.cpp +++ b/Source/WebKit2/Shared/WebCoreArgumentCoders.cpp @@ -41,7 +41,12 @@ #include <WebCore/KURL.h> #include <WebCore/PluginData.h> #include <WebCore/ProtectionSpace.h> +#include <WebCore/ResourceError.h> +#include <WebCore/ResourceRequest.h> +#include <WebCore/ResourceResponse.h> #include <WebCore/TextCheckerClient.h> +#include <WebCore/UserScript.h> +#include <WebCore/UserStyleSheet.h> #include <WebCore/ViewportArguments.h> #include <WebCore/WindowFeatures.h> #include <wtf/text/StringHash.h> @@ -55,6 +60,9 @@ #if ENABLE(CSS_FILTERS) #include <WebCore/FilterOperations.h> #endif +#if USE(GRAPHICS_SURFACE) +#include <WebCore/GraphicsSurface.h> +#endif #endif using namespace WebCore; @@ -384,6 +392,212 @@ bool ArgumentCoder<Cursor>::decode(ArgumentDecoder* decoder, Cursor& cursor) return true; } +void ArgumentCoder<ResourceRequest>::encode(ArgumentEncoder* encoder, const ResourceRequest& resourceRequest) +{ + if (kShouldSerializeWebCoreData) { + encoder->encode(resourceRequest.url().string()); + encoder->encode(resourceRequest.httpMethod()); + + const HTTPHeaderMap& headers = resourceRequest.httpHeaderFields(); + encoder->encode(headers); + + FormData* httpBody = resourceRequest.httpBody(); + encoder->encode(static_cast<bool>(httpBody)); + if (httpBody) + encoder->encode(httpBody->flattenToString()); + + encoder->encode(resourceRequest.firstPartyForCookies().string()); + } + + encodePlatformData(encoder, resourceRequest); +} + +bool ArgumentCoder<ResourceRequest>::decode(ArgumentDecoder* decoder, ResourceRequest& resourceRequest) +{ + if (kShouldSerializeWebCoreData) { + ResourceRequest request; + + String url; + if (!decoder->decode(url)) + return false; + request.setURL(KURL(KURL(), url)); + + String httpMethod; + if (!decoder->decode(httpMethod)) + return false; + request.setHTTPMethod(httpMethod); + + HTTPHeaderMap headers; + if (!decoder->decode(headers)) + return false; + request.addHTTPHeaderFields(headers); + + bool hasHTTPBody; + if (!decoder->decode(hasHTTPBody)) + return false; + if (hasHTTPBody) { + String httpBody; + if (!decoder->decode(httpBody)) + return false; + request.setHTTPBody(FormData::create(httpBody.utf8())); + } + + String firstPartyForCookies; + if (!decoder->decode(firstPartyForCookies)) + return false; + request.setFirstPartyForCookies(KURL(KURL(), firstPartyForCookies)); + + resourceRequest = request; + } + + return decodePlatformData(decoder, resourceRequest); +} + +void ArgumentCoder<ResourceResponse>::encode(ArgumentEncoder* encoder, const ResourceResponse& resourceResponse) +{ + if (kShouldSerializeWebCoreData) { + bool responseIsNull = resourceResponse.isNull(); + encoder->encode(responseIsNull); + if (responseIsNull) + return; + + encoder->encode(resourceResponse.url().string()); + encoder->encode(static_cast<int32_t>(resourceResponse.httpStatusCode())); + + const HTTPHeaderMap& headers = resourceResponse.httpHeaderFields(); + encoder->encode(headers); + + encoder->encode(resourceResponse.mimeType()); + encoder->encode(resourceResponse.textEncodingName()); + encoder->encode(static_cast<int64_t>(resourceResponse.expectedContentLength())); + encoder->encode(resourceResponse.httpStatusText()); + encoder->encode(resourceResponse.suggestedFilename()); + } + + encodePlatformData(encoder, resourceResponse); +} + +bool ArgumentCoder<ResourceResponse>::decode(ArgumentDecoder* decoder, ResourceResponse& resourceResponse) +{ + if (kShouldSerializeWebCoreData) { + bool responseIsNull; + if (!decoder->decode(responseIsNull)) + return false; + if (responseIsNull) { + resourceResponse = ResourceResponse(); + return true; + } + + ResourceResponse response; + + String url; + if (!decoder->decode(url)) + return false; + response.setURL(KURL(KURL(), url)); + + int32_t httpStatusCode; + if (!decoder->decode(httpStatusCode)) + return false; + response.setHTTPStatusCode(httpStatusCode); + + HTTPHeaderMap headers; + if (!decoder->decode(headers)) + return false; + for (HTTPHeaderMap::const_iterator it = headers.begin(), end = headers.end(); it != end; ++it) + response.setHTTPHeaderField(it->key, it->value); + + String mimeType; + if (!decoder->decode(mimeType)) + return false; + response.setMimeType(mimeType); + + String textEncodingName; + if (!decoder->decode(textEncodingName)) + return false; + response.setTextEncodingName(textEncodingName); + + int64_t contentLength; + if (!decoder->decode(contentLength)) + return false; + response.setExpectedContentLength(contentLength); + + String httpStatusText; + if (!decoder->decode(httpStatusText)) + return false; + response.setHTTPStatusText(httpStatusText); + + String suggestedFilename; + if (!decoder->decode(suggestedFilename)) + return false; + response.setSuggestedFilename(suggestedFilename); + + resourceResponse = response; + } + + return decodePlatformData(decoder, resourceResponse); +} + +void ArgumentCoder<ResourceError>::encode(ArgumentEncoder* encoder, const ResourceError& resourceError) +{ + if (kShouldSerializeWebCoreData) { + bool errorIsNull = resourceError.isNull(); + encoder->encode(errorIsNull); + if (errorIsNull) + return; + + encoder->encode(resourceError.domain()); + encoder->encode(resourceError.errorCode()); + encoder->encode(resourceError.failingURL()); + encoder->encode(resourceError.localizedDescription()); + encoder->encode(resourceError.isCancellation()); + encoder->encode(resourceError.isTimeout()); + } + + encodePlatformData(encoder, resourceError); +} + +bool ArgumentCoder<ResourceError>::decode(ArgumentDecoder* decoder, ResourceError& resourceError) +{ + if (kShouldSerializeWebCoreData) { + bool errorIsNull; + if (!decoder->decode(errorIsNull)) + return false; + if (errorIsNull) { + resourceError = ResourceError(); + return true; + } + + String domain; + if (!decoder->decode(domain)) + return false; + + int errorCode; + if (!decoder->decode(errorCode)) + return false; + + String failingURL; + if (!decoder->decode(failingURL)) + return false; + + String localizedDescription; + if (!decoder->decode(localizedDescription)) + return false; + + bool isCancellation; + if (!decoder->decode(isCancellation)) + return false; + + bool isTimeout; + if (!decoder->decode(isTimeout)) + return false; + + resourceError = ResourceError(domain, errorCode, failingURL, localizedDescription); + resourceError.setIsCancellation(isCancellation); + resourceError.setIsTimeout(isTimeout); + } + + return decodePlatformData(decoder, resourceError); +} void ArgumentCoder<WindowFeatures>::encode(ArgumentEncoder* encoder, const WindowFeatures& windowFeatures) { @@ -795,6 +1009,115 @@ bool ArgumentCoder<WebCore::FilterOperations>::decode(ArgumentDecoder* decoder, } #endif +#if USE(GRAPHICS_SURFACE) +void ArgumentCoder<WebCore::GraphicsSurfaceToken>::encode(ArgumentEncoder* encoder, const WebCore::GraphicsSurfaceToken& token) +{ +#if OS(DARWIN) + encoder->encodeUInt32(token.frontBufferHandle); + encoder->encodeUInt32(token.backBufferHandle); +#endif +#if OS(LINUX) + encoder->encodeUInt32(token.frontBufferHandle); +#endif +} + +bool ArgumentCoder<WebCore::GraphicsSurfaceToken>::decode(ArgumentDecoder* decoder, WebCore::GraphicsSurfaceToken& token) +{ +#if OS(DARWIN) + if (!decoder->decodeUInt32(token.frontBufferHandle)) + return false; + if (!decoder->decodeUInt32(token.backBufferHandle)) + return false; +#endif +#if OS(LINUX) + if (!decoder->decodeUInt32(token.frontBufferHandle)) + return false; +#endif + return true; +} + +#endif + #endif +void ArgumentCoder<WebCore::UserStyleSheet>::encode(ArgumentEncoder* encoder, const WebCore::UserStyleSheet& userStyleSheet) +{ + encoder->encode(userStyleSheet.source()); + encoder->encode(userStyleSheet.url()); + encoder->encode(userStyleSheet.whitelist()); + encoder->encode(userStyleSheet.blacklist()); + encoder->encodeEnum(userStyleSheet.injectedFrames()); + encoder->encodeEnum(userStyleSheet.level()); +} + +bool ArgumentCoder<WebCore::UserStyleSheet>::decode(ArgumentDecoder* decoder, WebCore::UserStyleSheet& userStyleSheet) +{ + String source; + if (!decoder->decode(source)) + return false; + + KURL url; + if (!decoder->decode(url)) + return false; + + Vector<String> whitelist; + if (!decoder->decode(whitelist)) + return false; + + Vector<String> blacklist; + if (!decoder->decode(blacklist)) + return false; + + WebCore::UserContentInjectedFrames injectedFrames; + if (!decoder->decodeEnum(injectedFrames)) + return false; + + WebCore::UserStyleLevel level; + if (!decoder->decodeEnum(level)) + return false; + + userStyleSheet = WebCore::UserStyleSheet(source, url, whitelist, blacklist, injectedFrames, level); + return true; +} + +void ArgumentCoder<WebCore::UserScript>::encode(ArgumentEncoder* encoder, const WebCore::UserScript& userScript) +{ + encoder->encode(userScript.source()); + encoder->encode(userScript.url()); + encoder->encode(userScript.whitelist()); + encoder->encode(userScript.blacklist()); + encoder->encodeEnum(userScript.injectionTime()); + encoder->encodeEnum(userScript.injectedFrames()); +} + +bool ArgumentCoder<WebCore::UserScript>::decode(ArgumentDecoder* decoder, WebCore::UserScript& userScript) +{ + String source; + if (!decoder->decode(source)) + return false; + + KURL url; + if (!decoder->decode(url)) + return false; + + Vector<String> whitelist; + if (!decoder->decode(whitelist)) + return false; + + Vector<String> blacklist; + if (!decoder->decode(blacklist)) + return false; + + WebCore::UserScriptInjectionTime injectionTime; + if (!decoder->decodeEnum(injectionTime)) + return false; + + WebCore::UserContentInjectedFrames injectedFrames; + if (!decoder->decodeEnum(injectedFrames)) + return false; + + userScript = WebCore::UserScript(source, url, whitelist, blacklist, injectionTime, injectedFrames); + return true; +} + } // namespace CoreIPC diff --git a/Source/WebKit2/Shared/WebCoreArgumentCoders.h b/Source/WebKit2/Shared/WebCoreArgumentCoders.h index b08f118f9..581058cab 100644 --- a/Source/WebKit2/Shared/WebCoreArgumentCoders.h +++ b/Source/WebKit2/Shared/WebCoreArgumentCoders.h @@ -49,6 +49,8 @@ namespace WebCore { class ResourceError; class ResourceRequest; class ResourceResponse; + class UserStyleSheet; + class UserScript; struct CompositionUnderline; struct DictationAlternative; struct DragSession; @@ -72,6 +74,10 @@ namespace WebCore { class FloatPoint3D; class TransformationMatrix; struct Length; + +#if USE(GRAPHICS_SURFACE) + struct GraphicsSurfaceToken; +#endif } #if ENABLE(CSS_FILTERS) @@ -159,17 +165,42 @@ template<> struct ArgumentCoder<WebCore::Cursor> { }; template<> struct ArgumentCoder<WebCore::ResourceRequest> { +#if PLATFORM(MAC) || PLATFORM(WIN) + static const bool kShouldSerializeWebCoreData = false; +#else + static const bool kShouldSerializeWebCoreData = true; +#endif + static void encode(ArgumentEncoder*, const WebCore::ResourceRequest&); static bool decode(ArgumentDecoder*, WebCore::ResourceRequest&); + static void encodePlatformData(ArgumentEncoder*, const WebCore::ResourceRequest&); + static bool decodePlatformData(ArgumentDecoder*, WebCore::ResourceRequest&); }; template<> struct ArgumentCoder<WebCore::ResourceResponse> { +#if PLATFORM(MAC) || PLATFORM(WIN) + static const bool kShouldSerializeWebCoreData = false; +#else + static const bool kShouldSerializeWebCoreData = true; +#endif + static void encode(ArgumentEncoder*, const WebCore::ResourceResponse&); static bool decode(ArgumentDecoder*, WebCore::ResourceResponse&); + static void encodePlatformData(ArgumentEncoder*, const WebCore::ResourceResponse&); + static bool decodePlatformData(ArgumentDecoder*, WebCore::ResourceResponse&); }; + template<> struct ArgumentCoder<WebCore::ResourceError> { +#if PLATFORM(MAC) + static const bool kShouldSerializeWebCoreData = false; +#else + static const bool kShouldSerializeWebCoreData = true; +#endif + static void encode(ArgumentEncoder*, const WebCore::ResourceError&); static bool decode(ArgumentDecoder*, WebCore::ResourceError&); + static void encodePlatformData(ArgumentEncoder*, const WebCore::ResourceError&); + static bool decodePlatformData(ArgumentDecoder*, WebCore::ResourceError&); }; template<> struct ArgumentCoder<WebCore::WindowFeatures> { @@ -251,8 +282,24 @@ template<> struct ArgumentCoder<WebCore::FilterOperations> { static bool decode(ArgumentDecoder*, WebCore::FilterOperations&); }; #endif + +#if USE(GRAPHICS_SURFACE) +template<> struct ArgumentCoder<WebCore::GraphicsSurfaceToken> { + static void encode(ArgumentEncoder*, const WebCore::GraphicsSurfaceToken&); + static bool decode(ArgumentDecoder*, WebCore::GraphicsSurfaceToken&); +}; +#endif #endif +template<> struct ArgumentCoder<WebCore::UserStyleSheet> { + static void encode(ArgumentEncoder*, const WebCore::UserStyleSheet&); + static bool decode(ArgumentDecoder*, WebCore::UserStyleSheet&); +}; + +template<> struct ArgumentCoder<WebCore::UserScript> { + static void encode(ArgumentEncoder*, const WebCore::UserScript&); + static bool decode(ArgumentDecoder*, WebCore::UserScript&); +}; } // namespace CoreIPC diff --git a/Source/WebKit2/Shared/WebGeolocationPosition.cpp b/Source/WebKit2/Shared/WebGeolocationPosition.cpp index 01fdfb890..c9e36fa37 100644 --- a/Source/WebKit2/Shared/WebGeolocationPosition.cpp +++ b/Source/WebKit2/Shared/WebGeolocationPosition.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011 Apple Inc. All rights reserved. + * Copyright (C) 2011, 2012 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -31,12 +31,20 @@ namespace WebKit { -WebGeolocationPosition::WebGeolocationPosition(double timestamp, double latitude, double longitude, double accuracy) +WebGeolocationPosition::WebGeolocationPosition(double timestamp, double latitude, double longitude, double accuracy, bool providesAltitude, double altitude, bool providesAltitudeAccuracy, double altitudeAccuracy, bool providesHeading, double heading, bool providesSpeed, double speed) { m_data.timestamp = timestamp; m_data.latitude = latitude; m_data.longitude = longitude; m_data.accuracy = accuracy; + m_data.canProvideAltitude = providesAltitude; + m_data.altitude = altitude; + m_data.canProvideAltitudeAccuracy = providesAltitudeAccuracy; + m_data.altitudeAccuracy = altitudeAccuracy; + m_data.canProvideHeading = providesHeading; + m_data.heading = heading; + m_data.canProvideSpeed = providesSpeed; + m_data.speed = speed; } WebGeolocationPosition::~WebGeolocationPosition() @@ -45,12 +53,15 @@ WebGeolocationPosition::~WebGeolocationPosition() void WebGeolocationPosition::Data::encode(CoreIPC::ArgumentEncoder* encoder) const { - encoder->encode(CoreIPC::In(timestamp, latitude, longitude, accuracy)); + encoder->encode(CoreIPC::In(timestamp, latitude, longitude, accuracy, canProvideAltitude, altitude, canProvideAltitudeAccuracy, altitudeAccuracy, canProvideHeading, heading)); + encoder->encode(CoreIPC::In(canProvideSpeed, speed)); } bool WebGeolocationPosition::Data::decode(CoreIPC::ArgumentDecoder* decoder, Data& data) { - return decoder->decode(CoreIPC::Out(data.timestamp, data.latitude, data.longitude, data.accuracy)); + if (!decoder->decode(CoreIPC::Out(data.timestamp, data.latitude, data.longitude, data.accuracy, data.canProvideAltitude, data.altitude, data.canProvideAltitudeAccuracy, data.altitudeAccuracy, data.canProvideHeading, data.heading))) + return false; + return decoder->decode(CoreIPC::Out(data.canProvideSpeed, data.speed)); } } // namespace WebKit diff --git a/Source/WebKit2/Shared/WebGeolocationPosition.h b/Source/WebKit2/Shared/WebGeolocationPosition.h index 6b268fbbe..a87bb062d 100644 --- a/Source/WebKit2/Shared/WebGeolocationPosition.h +++ b/Source/WebKit2/Shared/WebGeolocationPosition.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011 Apple Inc. All rights reserved. + * Copyright (C) 2011, 2012 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -45,11 +45,21 @@ public: double latitude; double longitude; double accuracy; + + double altitude; + double altitudeAccuracy; + double heading; + double speed; + + bool canProvideAltitude; + bool canProvideAltitudeAccuracy; + bool canProvideHeading; + bool canProvideSpeed; }; - static PassRefPtr<WebGeolocationPosition> create(double timestamp, double latitude, double longitude, double accuracy) + static PassRefPtr<WebGeolocationPosition> create(double timestamp, double latitude, double longitude, double accuracy, bool providesAltitude, double altitude, bool providesAltitudeAccuracy, double altitudeAccuracy, bool providesHeading, double heading, bool providesSpeed, double speed) { - return adoptRef(new WebGeolocationPosition(timestamp, latitude, longitude, accuracy)); + return adoptRef(new WebGeolocationPosition(timestamp, latitude, longitude, accuracy, providesAltitude, altitude, providesAltitudeAccuracy, altitudeAccuracy, providesHeading, heading, providesSpeed, speed)); } virtual ~WebGeolocationPosition(); @@ -59,10 +69,22 @@ public: double longitude() const { return m_data.longitude; } double accuracy() const { return m_data.accuracy; } + bool canProvideAltitude() const { return m_data.canProvideAltitude; } + double altitude() const { return m_data.altitude; } + + bool canProvideAltitudeAccuracy() const { return m_data.canProvideAltitudeAccuracy; } + double altitudeAccuracy() const { return m_data.altitudeAccuracy; } + + bool canProvideHeading() const { return m_data.canProvideHeading; } + double heading() const { return m_data.heading; } + + bool canProvideSpeed() const { return m_data.canProvideSpeed; } + double speed() const { return m_data.speed; } + const Data& data() const { return m_data; } private: - WebGeolocationPosition(double timestamp, double latitude, double longitude, double accuracy); + WebGeolocationPosition(double timestamp, double latitude, double longitude, double accuracy, bool providesAltitude, double altitude, bool providesAltitudeAccuracy, double altitudeAccuracy, bool providesHeading, double heading, bool providesSpeed, double speed); virtual Type type() const { return APIType; } diff --git a/Source/WebKit2/Shared/WebPageGroupData.cpp b/Source/WebKit2/Shared/WebPageGroupData.cpp index 107df1d15..c227d8596 100644 --- a/Source/WebKit2/Shared/WebPageGroupData.cpp +++ b/Source/WebKit2/Shared/WebPageGroupData.cpp @@ -26,19 +26,35 @@ #include "config.h" #include "WebPageGroupData.h" -#include "ArgumentCoders.h" -#include "Arguments.h" +#include "WebCoreArgumentCoders.h" namespace WebKit { void WebPageGroupData::encode(CoreIPC::ArgumentEncoder* encoder) const { - return encoder->encode(CoreIPC::In(identifer, pageGroupID, visibleToInjectedBundle, visibleToHistoryClient)); + encoder->encode(identifer); + encoder->encode(pageGroupID); + encoder->encode(visibleToInjectedBundle); + encoder->encode(visibleToHistoryClient); + encoder->encode(userStyleSheets); + encoder->encode(userScripts); } bool WebPageGroupData::decode(CoreIPC::ArgumentDecoder* decoder, WebPageGroupData& data) { - return decoder->decode(CoreIPC::Out(data.identifer, data.pageGroupID, data.visibleToInjectedBundle, data.visibleToHistoryClient)); + if (!decoder->decode(data.identifer)) + return false; + if (!decoder->decode(data.pageGroupID)) + return false; + if (!decoder->decode(data.visibleToInjectedBundle)) + return false; + if (!decoder->decode(data.visibleToHistoryClient)) + return false; + if (!decoder->decode(data.userStyleSheets)) + return false; + if (!decoder->decode(data.userScripts)) + return false; + return true; } } // namespace WebKit diff --git a/Source/WebKit2/Shared/WebPageGroupData.h b/Source/WebKit2/Shared/WebPageGroupData.h index 36f6fe19b..b9aa0f8f5 100644 --- a/Source/WebKit2/Shared/WebPageGroupData.h +++ b/Source/WebKit2/Shared/WebPageGroupData.h @@ -26,11 +26,14 @@ #ifndef WebPageGroupData_h #define WebPageGroupData_h +#include <WebCore/UserScript.h> +#include <WebCore/UserStyleSheet.h> +#include <wtf/Vector.h> #include <wtf/text/WTFString.h> namespace CoreIPC { - class ArgumentDecoder; - class ArgumentEncoder; +class ArgumentDecoder; +class ArgumentEncoder; } namespace WebKit { @@ -43,6 +46,9 @@ struct WebPageGroupData { uint64_t pageGroupID; bool visibleToInjectedBundle; bool visibleToHistoryClient; + + Vector<WebCore::UserStyleSheet> userStyleSheets; + Vector<WebCore::UserScript> userScripts; }; } // namespace WebKit diff --git a/Source/WebKit2/Shared/WebPreferencesStore.cpp b/Source/WebKit2/Shared/WebPreferencesStore.cpp index 746df10a4..4f49bb786 100644 --- a/Source/WebKit2/Shared/WebPreferencesStore.cpp +++ b/Source/WebKit2/Shared/WebPreferencesStore.cpp @@ -151,7 +151,7 @@ static typename MapType::MappedType valueForKey(const MapType& map, const typena { typename MapType::const_iterator it = map.find(key); if (it != map.end()) - return it->second; + return it->value; return defaultValueForKey<typename MapType::MappedType>(key); } @@ -187,7 +187,7 @@ bool WebPreferencesStore::getBoolValueForKey(const String& key) const // FIXME: Extend overriding to other key types used from TestRunner. BoolOverridesMap::const_iterator it = boolTestRunnerOverridesMap().find(key); if (it != boolTestRunnerOverridesMap().end()) - return it->second; + return it->value; return valueForKey(m_boolValues, key); } diff --git a/Source/WebKit2/Shared/WebPreferencesStore.h b/Source/WebKit2/Shared/WebPreferencesStore.h index dbaa4f203..185898334 100644 --- a/Source/WebKit2/Shared/WebPreferencesStore.h +++ b/Source/WebKit2/Shared/WebPreferencesStore.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010, 2011 Apple Inc. All rights reserved. + * Copyright (C) 2010, 2011, 2012 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -135,6 +135,9 @@ namespace WebKit { macro(StorageBlockingPolicy, storageBlockingPolicy, UInt32, uint32_t, 0) \ macro(ScrollAnimatorEnabled, scrollAnimatorEnabled, Bool, bool, DEFAULT_WEBKIT_SCROLL_ANIMATOR_ENABLED) \ macro(ScreenFontSubstitutionEnabled, screenFontSubstitutionEnabled, Bool, bool, DEFAULT_SCREEN_FONT_SUBSTITUTION_ENABLED) \ + macro(CookieEnabled, cookieEnabled, Bool, bool, true) \ + macro(PlugInSnapshottingEnabled, plugInSnapshottingEnabled, Bool, bool, false) \ + macro(PDFPluginEnabled, pdfPluginEnabled, Bool, bool, false) \ \ #define FOR_EACH_WEBKIT_DOUBLE_PREFERENCE(macro) \ diff --git a/Source/WebKit2/Shared/WebProcessCreationParameters.cpp b/Source/WebKit2/Shared/WebProcessCreationParameters.cpp index cc2cecc88..01234f76f 100644 --- a/Source/WebKit2/Shared/WebProcessCreationParameters.cpp +++ b/Source/WebKit2/Shared/WebProcessCreationParameters.cpp @@ -42,6 +42,7 @@ WebProcessCreationParameters::WebProcessCreationParameters() , nsURLCacheMemoryCapacity(0) , nsURLCacheDiskCapacity(0) , shouldForceScreenFontSubstitution(false) + , shouldEnableKerningAndLigaturesByDefault(false) #elif PLATFORM(WIN) , shouldPaintNativeControls(false) #endif @@ -65,15 +66,11 @@ void WebProcessCreationParameters::encode(CoreIPC::ArgumentEncoder* encoder) con encoder->encode(urlSchemesRegisteredAsNoAccess); encoder->encode(urlSchemesRegisteredAsDisplayIsolated); encoder->encode(urlSchemesRegisteredAsCORSEnabled); - encoder->encode(mimeTypesWithCustomRepresentation); encoder->encodeEnum(cacheModel); encoder->encode(shouldTrackVisitedLinks); encoder->encode(shouldAlwaysUseComplexTextCodePath); encoder->encode(shouldUseFontSmoothing); encoder->encode(iconDatabaseEnabled); -#if ENABLE(PLUGIN_PROCESS) - encoder->encode(disablePluginProcessMessageTimeout); -#endif encoder->encode(terminationTimeout); encoder->encode(languages); encoder->encode(textCheckerState); @@ -93,6 +90,7 @@ void WebProcessCreationParameters::encode(CoreIPC::ArgumentEncoder* encoder) con encoder->encode(uiProcessBundleResourcePath); encoder->encode(uiProcessBundleResourcePathExtensionHandle); encoder->encode(shouldForceScreenFontSubstitution); + encoder->encode(shouldEnableKerningAndLigaturesByDefault); #elif PLATFORM(WIN) encoder->encode(shouldPaintNativeControls); encoder->encode(cfURLCachePath); @@ -148,8 +146,6 @@ bool WebProcessCreationParameters::decode(CoreIPC::ArgumentDecoder* decoder, Web return false; if (!decoder->decode(parameters.urlSchemesRegisteredAsCORSEnabled)) return false; - if (!decoder->decode(parameters.mimeTypesWithCustomRepresentation)) - return false; if (!decoder->decodeEnum(parameters.cacheModel)) return false; if (!decoder->decode(parameters.shouldTrackVisitedLinks)) @@ -160,10 +156,6 @@ bool WebProcessCreationParameters::decode(CoreIPC::ArgumentDecoder* decoder, Web return false; if (!decoder->decode(parameters.iconDatabaseEnabled)) return false; -#if ENABLE(PLUGIN_PROCESS) - if (!decoder->decode(parameters.disablePluginProcessMessageTimeout)) - return false; -#endif if (!decoder->decode(parameters.terminationTimeout)) return false; if (!decoder->decode(parameters.languages)) @@ -200,6 +192,8 @@ bool WebProcessCreationParameters::decode(CoreIPC::ArgumentDecoder* decoder, Web return false; if (!decoder->decode(parameters.shouldForceScreenFontSubstitution)) return false; + if (!decoder->decode(parameters.shouldEnableKerningAndLigaturesByDefault)) + return false; #elif PLATFORM(WIN) if (!decoder->decode(parameters.shouldPaintNativeControls)) return false; diff --git a/Source/WebKit2/Shared/WebProcessCreationParameters.h b/Source/WebKit2/Shared/WebProcessCreationParameters.h index 67ab33070..f9548dfff 100644 --- a/Source/WebKit2/Shared/WebProcessCreationParameters.h +++ b/Source/WebKit2/Shared/WebProcessCreationParameters.h @@ -69,9 +69,6 @@ struct WebProcessCreationParameters { Vector<String> urlSchemesRegisteredAsDisplayIsolated; Vector<String> urlSchemesRegisteredAsCORSEnabled; - // MIME types for which the UI process will handle showing the data. - Vector<String> mimeTypesWithCustomRepresentation; - CacheModel cacheModel; bool shouldTrackVisitedLinks; @@ -80,10 +77,6 @@ struct WebProcessCreationParameters { bool iconDatabaseEnabled; -#if ENABLE(PLUGIN_PROCESS) - bool disablePluginProcessMessageTimeout; -#endif - double terminationTimeout; Vector<String> languages; @@ -116,6 +109,8 @@ struct WebProcessCreationParameters { SandboxExtension::Handle uiProcessBundleResourcePathExtensionHandle; bool shouldForceScreenFontSubstitution; + bool shouldEnableKerningAndLigaturesByDefault; + #elif PLATFORM(WIN) String cfURLCachePath; uint64_t cfURLCacheDiskCapacity; diff --git a/Source/WebKit2/Shared/WebRenderObject.cpp b/Source/WebKit2/Shared/WebRenderObject.cpp index 146230e9d..28f6391bb 100644 --- a/Source/WebKit2/Shared/WebRenderObject.cpp +++ b/Source/WebKit2/Shared/WebRenderObject.cpp @@ -75,7 +75,7 @@ WebRenderObject::WebRenderObject(RenderObject* renderer, bool shouldIncludeDesce } // FIXME: broken with transforms - m_absolutePosition = flooredIntPoint(renderer->localToAbsolute(FloatPoint())); + m_absolutePosition = flooredIntPoint(renderer->localToAbsolute()); if (renderer->isBox()) m_frameRect = toRenderBox(renderer)->pixelSnappedFrameRect(); diff --git a/Source/WebKit2/Shared/mac/PDFKitImports.h b/Source/WebKit2/Shared/mac/PDFKitImports.h index 44c375c6b..c9a1e0a25 100644 --- a/Source/WebKit2/Shared/mac/PDFKitImports.h +++ b/Source/WebKit2/Shared/mac/PDFKitImports.h @@ -33,6 +33,10 @@ Class classFromPDFKit(NSString *className); Class pdfAnnotationLinkClass(); Class pdfDocumentClass(); +#if ENABLE(PDFKIT_PLUGIN) +Class pdfLayerControllerClass(); +#endif + } #endif // PDFKitImports_h diff --git a/Source/WebKit2/Shared/mac/PDFKitImports.mm b/Source/WebKit2/Shared/mac/PDFKitImports.mm index 6234a8395..bccfbefda 100644 --- a/Source/WebKit2/Shared/mac/PDFKitImports.mm +++ b/Source/WebKit2/Shared/mac/PDFKitImports.mm @@ -54,5 +54,14 @@ Class pdfDocumentClass() ASSERT(pdfDocumentClass); return pdfDocumentClass; } + +#if ENABLE(PDFKIT_PLUGIN) +Class pdfLayerControllerClass() +{ + static Class pdfLayerControllerClass = classFromPDFKit(@"PDFLayerController"); + ASSERT(pdfLayerControllerClass); + return pdfLayerControllerClass; +} +#endif } diff --git a/Source/WebKit2/Shared/mac/WebCoreArgumentCodersMac.mm b/Source/WebKit2/Shared/mac/WebCoreArgumentCodersMac.mm index 196ab11c7..9f04ef95e 100644 --- a/Source/WebKit2/Shared/mac/WebCoreArgumentCodersMac.mm +++ b/Source/WebKit2/Shared/mac/WebCoreArgumentCodersMac.mm @@ -38,7 +38,7 @@ using namespace WebKit; namespace CoreIPC { -void ArgumentCoder<ResourceRequest>::encode(ArgumentEncoder* encoder, const ResourceRequest& resourceRequest) +void ArgumentCoder<ResourceRequest>::encodePlatformData(ArgumentEncoder* encoder, const ResourceRequest& resourceRequest) { bool requestIsPresent = resourceRequest.nsURLRequest(); encoder->encode(requestIsPresent); @@ -50,7 +50,7 @@ void ArgumentCoder<ResourceRequest>::encode(ArgumentEncoder* encoder, const Reso CoreIPC::encode(encoder, dictionary.get()); } -bool ArgumentCoder<ResourceRequest>::decode(ArgumentDecoder* decoder, ResourceRequest& resourceRequest) +bool ArgumentCoder<ResourceRequest>::decodePlatformData(ArgumentDecoder* decoder, ResourceRequest& resourceRequest) { bool requestIsPresent; if (!decoder->decode(requestIsPresent)) @@ -73,7 +73,7 @@ bool ArgumentCoder<ResourceRequest>::decode(ArgumentDecoder* decoder, ResourceRe return true; } -void ArgumentCoder<ResourceResponse>::encode(ArgumentEncoder* encoder, const ResourceResponse& resourceResponse) +void ArgumentCoder<ResourceResponse>::encodePlatformData(ArgumentEncoder* encoder, const ResourceResponse& resourceResponse) { bool responseIsPresent = resourceResponse.nsURLResponse(); encoder->encode(responseIsPresent); @@ -85,7 +85,7 @@ void ArgumentCoder<ResourceResponse>::encode(ArgumentEncoder* encoder, const Res CoreIPC::encode(encoder, dictionary.get()); } -bool ArgumentCoder<ResourceResponse>::decode(ArgumentDecoder* decoder, ResourceResponse& resourceResponse) +bool ArgumentCoder<ResourceResponse>::decodePlatformData(ArgumentDecoder* decoder, ResourceResponse& resourceResponse) { bool responseIsPresent; if (!decoder->decode(responseIsPresent)) @@ -113,7 +113,7 @@ static NSString* nsString(const String& string) return string.impl() ? [NSString stringWithCharacters:reinterpret_cast<const UniChar*>(string.characters()) length:string.length()] : @""; } -void ArgumentCoder<ResourceError>::encode(ArgumentEncoder* encoder, const ResourceError& resourceError) +void ArgumentCoder<ResourceError>::encodePlatformData(ArgumentEncoder* encoder, const ResourceError& resourceError) { bool errorIsNull = resourceError.isNull(); encoder->encode(errorIsNull); @@ -147,7 +147,7 @@ void ArgumentCoder<ResourceError>::encode(ArgumentEncoder* encoder, const Resour encoder->encode(PlatformCertificateInfo((CFArrayRef)peerCertificateChain)); } -bool ArgumentCoder<ResourceError>::decode(ArgumentDecoder* decoder, ResourceError& resourceError) +bool ArgumentCoder<ResourceError>::decodePlatformData(ArgumentDecoder* decoder, ResourceError& resourceError) { bool errorIsNull; if (!decoder->decode(errorIsNull)) @@ -183,7 +183,7 @@ bool ArgumentCoder<ResourceError>::decode(ArgumentDecoder* decoder, ResourceErro HashMap<String, String>::const_iterator it = stringUserInfoMap.begin(); HashMap<String, String>::const_iterator end = stringUserInfoMap.end(); for (; it != end; ++it) - [userInfo setObject:nsString(it->second) forKey:nsString(it->first)]; + [userInfo setObject:nsString(it->value) forKey:nsString(it->key)]; if (certificate.certificateChain()) [userInfo setObject:(NSArray *)certificate.certificateChain() forKey:@"NSErrorPeerCertificateChainKey"]; diff --git a/Source/WebKit2/Shared/qt/ArgumentCodersQt.cpp b/Source/WebKit2/Shared/qt/ArgumentCodersQt.cpp index c89bf44f1..a439caff1 100644 --- a/Source/WebKit2/Shared/qt/ArgumentCodersQt.cpp +++ b/Source/WebKit2/Shared/qt/ArgumentCodersQt.cpp @@ -86,8 +86,8 @@ bool ArgumentCoder<WebCore::DragData>::decode(ArgumentDecoder* decoder, DragData MIMEDataHashMap::iterator it = map.begin(); MIMEDataHashMap::iterator end = map.end(); for (; it != end; ++it) { - QByteArray bytes((char*)it->second.data(), it->second.size()); - mimeData->setData(it->first, bytes); + QByteArray bytes((char*)it->value.data(), it->value.size()); + mimeData->setData(it->key, bytes); } } diff --git a/Source/WebKit2/Shared/qt/ShareableBitmapQt.cpp b/Source/WebKit2/Shared/qt/ShareableBitmapQt.cpp index 88e4d3aec..874e1c381 100644 --- a/Source/WebKit2/Shared/qt/ShareableBitmapQt.cpp +++ b/Source/WebKit2/Shared/qt/ShareableBitmapQt.cpp @@ -53,8 +53,8 @@ void ShareableBitmap::releaseSharedMemoryData(void* typelessBitmap) PassRefPtr<Image> ShareableBitmap::createImage() { - QImage* image = new QImage(createQImage()); - return BitmapImage::create(image); + QPixmap* pixmap = new QPixmap(QPixmap::fromImage(createQImage())); + return BitmapImage::create(pixmap); } PassOwnPtr<GraphicsContext> ShareableBitmap::createGraphicsContext() @@ -82,8 +82,13 @@ void ShareableBitmap::paint(GraphicsContext& context, float scaleFactor, const I return; } - // See <https://bugs.webkit.org/show_bug.cgi?id=64663>. - notImplemented(); + QImage image = createQImage(); + QPainter* painter = context.platformContext(); + + painter->save(); + painter->scale(scaleFactor, scaleFactor); + painter->drawImage(dstPoint, image, QRect(srcRect)); + painter->restore(); } } diff --git a/Source/WebKit2/Shared/qt/WebCoreArgumentCodersQt.cpp b/Source/WebKit2/Shared/qt/WebCoreArgumentCodersQt.cpp index ad5574f8f..f8d643b98 100644 --- a/Source/WebKit2/Shared/qt/WebCoreArgumentCodersQt.cpp +++ b/Source/WebKit2/Shared/qt/WebCoreArgumentCodersQt.cpp @@ -34,100 +34,32 @@ using namespace WebCore; namespace CoreIPC { -void ArgumentCoder<ResourceRequest>::encode(ArgumentEncoder* encoder, const ResourceRequest& resourceRequest) +void ArgumentCoder<ResourceRequest>::encodePlatformData(ArgumentEncoder* encoder, const ResourceRequest& resourceRequest) { - encoder->encode(resourceRequest.url().string()); } -bool ArgumentCoder<ResourceRequest>::decode(ArgumentDecoder* decoder, ResourceRequest& resourceRequest) +bool ArgumentCoder<ResourceRequest>::decodePlatformData(ArgumentDecoder* decoder, ResourceRequest& resourceRequest) { - // FIXME: Add *more* coding implementation when we want to implement something that - // depends on this like the policy client. - - String url; - if (!decoder->decode(url)) - return false; - resourceRequest.setURL(KURL(KURL(), url)); return true; } -void ArgumentCoder<ResourceResponse>::encode(ArgumentEncoder* encoder, const ResourceResponse& resourceResponse) +void ArgumentCoder<ResourceResponse>::encodePlatformData(ArgumentEncoder* encoder, const ResourceResponse& resourceResponse) { - encoder->encode(resourceResponse.url().string()); - encoder->encode(resourceResponse.mimeType()); - encoder->encode(static_cast<int64_t>(resourceResponse.expectedContentLength())); - encoder->encode(resourceResponse.textEncodingName()); - encoder->encode(resourceResponse.suggestedFilename()); } -bool ArgumentCoder<ResourceResponse>::decode(ArgumentDecoder* decoder, ResourceResponse& resourceResponse) +bool ArgumentCoder<ResourceResponse>::decodePlatformData(ArgumentDecoder* decoder, ResourceResponse& resourceResponse) { - ResourceResponse response; - - String url; - if (!decoder->decode(url)) - return false; - response.setURL(KURL(WebCore::ParsedURLString, url)); - - String mimeType; - if (!decoder->decode(mimeType)) - return false; - response.setMimeType(mimeType); - - int64_t contentLength; - if (!decoder->decode(contentLength)) - return false; - response.setExpectedContentLength(contentLength); - - String textEncodingName; - if (!decoder->decode(textEncodingName)) - return false; - response.setTextEncodingName(textEncodingName); - - String suggestedFilename; - if (!decoder->decode(suggestedFilename)) - return false; - response.setSuggestedFilename(suggestedFilename); - - resourceResponse = response; return true; } -void ArgumentCoder<ResourceError>::encode(ArgumentEncoder* encoder, const ResourceError& resourceError) +void ArgumentCoder<ResourceError>::encodePlatformData(ArgumentEncoder* encoder, const ResourceError& resourceError) { - encoder->encode(resourceError.domain()); - encoder->encode(resourceError.errorCode()); - encoder->encode(resourceError.failingURL()); - encoder->encode(resourceError.localizedDescription()); - encoder->encode(resourceError.isCancellation()); } -bool ArgumentCoder<ResourceError>::decode(ArgumentDecoder* decoder, ResourceError& resourceError) +bool ArgumentCoder<ResourceError>::decodePlatformData(ArgumentDecoder* decoder, ResourceError& resourceError) { - String domain; - if (!decoder->decode(domain)) - return false; - - int errorCode; - if (!decoder->decode(errorCode)) - return false; - - String failingURL; - if (!decoder->decode(failingURL)) - return false; - - String localizedDescription; - if (!decoder->decode(localizedDescription)) - return false; - - bool isCancellation; - if (!decoder->decode(isCancellation)) - return false; - - resourceError = ResourceError(domain, errorCode, failingURL, localizedDescription); - resourceError.setIsCancellation(isCancellation); return true; } diff --git a/Source/WebKit2/Shared/qt/WebEventFactoryQt.h b/Source/WebKit2/Shared/qt/WebEventFactoryQt.h index f1c24fb00..e5e3a101b 100644 --- a/Source/WebKit2/Shared/qt/WebEventFactoryQt.h +++ b/Source/WebKit2/Shared/qt/WebEventFactoryQt.h @@ -38,6 +38,7 @@ class QTouchEvent; class QMouseEvent; class QWheelEvent; class QKeyEvent; +class QTransform; QT_END_NAMESPACE diff --git a/Source/WebKit2/Shared/soup/WebCoreArgumentCodersSoup.cpp b/Source/WebKit2/Shared/soup/WebCoreArgumentCodersSoup.cpp index dbe2c51cd..c47d7eba1 100644 --- a/Source/WebKit2/Shared/soup/WebCoreArgumentCodersSoup.cpp +++ b/Source/WebKit2/Shared/soup/WebCoreArgumentCodersSoup.cpp @@ -36,191 +36,42 @@ using namespace WebCore; namespace CoreIPC { -void ArgumentCoder<ResourceRequest>::encode(ArgumentEncoder* encoder, const ResourceRequest& resourceRequest) +void ArgumentCoder<ResourceRequest>::encodePlatformData(ArgumentEncoder* encoder, const ResourceRequest& resourceRequest) { - encoder->encode(resourceRequest.url().string()); - encoder->encode(resourceRequest.httpMethod()); - - const HTTPHeaderMap& headers = resourceRequest.httpHeaderFields(); - encoder->encode(headers); - - FormData* httpBody = resourceRequest.httpBody(); - encoder->encode(static_cast<bool>(httpBody)); - if (httpBody) - encoder->encode(httpBody->flattenToString()); - - encoder->encode(resourceRequest.firstPartyForCookies().string()); encoder->encode(static_cast<uint32_t>(resourceRequest.soupMessageFlags())); } -bool ArgumentCoder<ResourceRequest>::decode(ArgumentDecoder* decoder, ResourceRequest& resourceRequest) +bool ArgumentCoder<ResourceRequest>::decodePlatformData(ArgumentDecoder* decoder, ResourceRequest& resourceRequest) { - ResourceRequest request; - - String url; - if (!decoder->decode(url)) - return false; - request.setURL(KURL(KURL(), url)); - - String httpMethod; - if (!decoder->decode(httpMethod)) - return false; - request.setHTTPMethod(httpMethod); - - HTTPHeaderMap headers; - if (!decoder->decode(headers)) - return false; - request.addHTTPHeaderFields(headers); - - bool hasHTTPBody; - if (!decoder->decode(hasHTTPBody)) - return false; - if (hasHTTPBody) { - String httpBody; - if (!decoder->decode(httpBody)) - return false; - request.setHTTPBody(FormData::create(httpBody.utf8())); - } - - String firstPartyForCookies; - if (!decoder->decode(firstPartyForCookies)) - return false; - request.setFirstPartyForCookies(KURL(KURL(), firstPartyForCookies)); - uint32_t soupMessageFlags; if (!decoder->decode(soupMessageFlags)) return false; - request.setSoupMessageFlags(static_cast<SoupMessageFlags>(soupMessageFlags)); - - resourceRequest = request; + resourceRequest.setSoupMessageFlags(static_cast<SoupMessageFlags>(soupMessageFlags)); return true; } -void ArgumentCoder<ResourceResponse>::encode(ArgumentEncoder* encoder, const ResourceResponse& resourceResponse) +void ArgumentCoder<ResourceResponse>::encodePlatformData(ArgumentEncoder* encoder, const ResourceResponse& resourceResponse) { - bool responseIsNull = resourceResponse.isNull(); - encoder->encode(responseIsNull); - if (responseIsNull) - return; - - encoder->encode(resourceResponse.url().string()); - encoder->encode(static_cast<int32_t>(resourceResponse.httpStatusCode())); - - const HTTPHeaderMap& headers = resourceResponse.httpHeaderFields(); - encoder->encode(headers); - encoder->encode(static_cast<uint32_t>(resourceResponse.soupMessageFlags())); - encoder->encode(resourceResponse.mimeType()); - encoder->encode(resourceResponse.textEncodingName()); - encoder->encode(static_cast<int64_t>(resourceResponse.expectedContentLength())); - encoder->encode(resourceResponse.httpStatusText()); - encoder->encode(resourceResponse.suggestedFilename()); } -bool ArgumentCoder<ResourceResponse>::decode(ArgumentDecoder* decoder, ResourceResponse& resourceResponse) +bool ArgumentCoder<ResourceResponse>::decodePlatformData(ArgumentDecoder* decoder, ResourceResponse& resourceResponse) { - bool responseIsNull; - if (!decoder->decode(responseIsNull)) - return false; - if (responseIsNull) { - resourceResponse = ResourceResponse(); - return true; - } - - ResourceResponse response; - - String url; - if (!decoder->decode(url)) - return false; - response.setURL(KURL(KURL(), url)); - - int32_t httpStatusCode; - if (!decoder->decode(httpStatusCode)) - return false; - response.setHTTPStatusCode(httpStatusCode); - - HTTPHeaderMap headers; - if (!decoder->decode(headers)) - return false; - for (HTTPHeaderMap::const_iterator it = headers.begin(), end = headers.end(); it != end; ++it) - response.setHTTPHeaderField(it->first, it->second); - uint32_t soupMessageFlags; if (!decoder->decode(soupMessageFlags)) return false; - response.setSoupMessageFlags(static_cast<SoupMessageFlags>(soupMessageFlags)); - - String mimeType; - if (!decoder->decode(mimeType)) - return false; - response.setMimeType(mimeType); - - String textEncodingName; - if (!decoder->decode(textEncodingName)) - return false; - response.setTextEncodingName(textEncodingName); - - int64_t contentLength; - if (!decoder->decode(contentLength)) - return false; - response.setExpectedContentLength(contentLength); - - String httpStatusText; - if (!decoder->decode(httpStatusText)) - return false; - response.setHTTPStatusText(httpStatusText); - - String suggestedFilename; - if (!decoder->decode(suggestedFilename)) - return false; - response.setSuggestedFilename(suggestedFilename); - - resourceResponse = response; + resourceResponse.setSoupMessageFlags(static_cast<SoupMessageFlags>(soupMessageFlags)); return true; } -void ArgumentCoder<ResourceError>::encode(ArgumentEncoder* encoder, const ResourceError& resourceError) +void ArgumentCoder<ResourceError>::encodePlatformData(ArgumentEncoder* encoder, const ResourceError& resourceError) { - bool errorIsNull = resourceError.isNull(); - encoder->encode(errorIsNull); - if (errorIsNull) - return; - - encoder->encode(resourceError.domain()); - encoder->encode(resourceError.errorCode()); - encoder->encode(resourceError.failingURL()); - encoder->encode(resourceError.localizedDescription()); } -bool ArgumentCoder<ResourceError>::decode(ArgumentDecoder* decoder, ResourceError& resourceError) +bool ArgumentCoder<ResourceError>::decodePlatformData(ArgumentDecoder* decoder, ResourceError& resourceError) { - bool errorIsNull; - if (!decoder->decode(errorIsNull)) - return false; - if (errorIsNull) { - resourceError = ResourceError(); - return true; - } - - String domain; - if (!decoder->decode(domain)) - return false; - - int errorCode; - if (!decoder->decode(errorCode)) - return false; - - String failingURL; - if (!decoder->decode(failingURL)) - return false; - - String localizedDescription; - if (!decoder->decode(localizedDescription)) - return false; - - resourceError = ResourceError(domain, errorCode, failingURL, localizedDescription); return true; } diff --git a/Source/WebKit2/Shared/win/WebCoreArgumentCodersWin.cpp b/Source/WebKit2/Shared/win/WebCoreArgumentCodersWin.cpp index 0762275b0..a61409194 100644 --- a/Source/WebKit2/Shared/win/WebCoreArgumentCodersWin.cpp +++ b/Source/WebKit2/Shared/win/WebCoreArgumentCodersWin.cpp @@ -49,7 +49,7 @@ namespace CoreIPC { // FIXME: These coders should really go in a WebCoreArgumentCodersCFNetwork file. -void ArgumentCoder<ResourceRequest>::encode(ArgumentEncoder* encoder, const ResourceRequest& resourceRequest) +void ArgumentCoder<ResourceRequest>::encodePlatformData(ArgumentEncoder* encoder, const ResourceRequest& resourceRequest) { #if USE(CFNETWORK) bool requestIsPresent = resourceRequest.cfURLRequest(); @@ -63,7 +63,7 @@ void ArgumentCoder<ResourceRequest>::encode(ArgumentEncoder* encoder, const Reso #endif } -bool ArgumentCoder<ResourceRequest>::decode(ArgumentDecoder* decoder, ResourceRequest& resourceRequest) +bool ArgumentCoder<ResourceRequest>::decodePlatformData(ArgumentDecoder* decoder, ResourceRequest& resourceRequest) { #if USE(CFNETWORK) bool requestIsPresent; @@ -95,7 +95,7 @@ bool ArgumentCoder<ResourceRequest>::decode(ArgumentDecoder* decoder, ResourceRe } -void ArgumentCoder<ResourceResponse>::encode(ArgumentEncoder* encoder, const ResourceResponse& resourceResponse) +void ArgumentCoder<ResourceResponse>::encodePlatformData(ArgumentEncoder* encoder, const ResourceResponse& resourceResponse) { #if USE(CFNETWORK) bool responseIsPresent = resourceResponse.cfURLResponse(); @@ -109,7 +109,7 @@ void ArgumentCoder<ResourceResponse>::encode(ArgumentEncoder* encoder, const Res #endif } -bool ArgumentCoder<ResourceResponse>::decode(ArgumentDecoder* decoder, ResourceResponse& resourceResponse) +bool ArgumentCoder<ResourceResponse>::decodePlatformData(ArgumentDecoder* decoder, ResourceResponse& resourceResponse) { #if USE(CFNETWORK) bool responseIsPresent; @@ -137,50 +137,25 @@ bool ArgumentCoder<ResourceResponse>::decode(ArgumentDecoder* decoder, ResourceR } -void ArgumentCoder<ResourceError>::encode(ArgumentEncoder* encoder, const ResourceError& resourceError) +void ArgumentCoder<ResourceError>::encodePlatformData(ArgumentEncoder* encoder, const ResourceError& resourceError) { - encoder->encode(resourceError.domain()); - encoder->encode(resourceError.errorCode()); - encoder->encode(resourceError.failingURL()); - encoder->encode(resourceError.localizedDescription()); - #if USE(CFNETWORK) encoder->encode(PlatformCertificateInfo(resourceError.certificate())); #endif } -bool ArgumentCoder<ResourceError>::decode(ArgumentDecoder* decoder, ResourceError& resourceError) +bool ArgumentCoder<ResourceError>::decodePlatformData(ArgumentDecoder* decoder, ResourceError& resourceError) { - String domain; - if (!decoder->decode(domain)) - return false; - - int errorCode; - if (!decoder->decode(errorCode)) - return false; - - String failingURL; - if (!decoder->decode(failingURL)) - return false; - - String localizedDescription; - if (!decoder->decode(localizedDescription)) - return false; - #if USE(CFNETWORK) PlatformCertificateInfo certificate; if (!decoder->decode(certificate)) return false; const Vector<PCCERT_CONTEXT> certificateChain = certificate.certificateChain(); - if (!certificateChain.isEmpty()) { - ASSERT(certificateChain.size() == 1); - resourceError = ResourceError(domain, errorCode, failingURL, localizedDescription, copyCertificateToData(certificateChain.first()).get()); - return true; - } + if (!certificateChain.isEmpty()) + resourceError.setCertificate(copyCertificateToData(certificateChain.first()).get()); #endif - resourceError = ResourceError(domain, errorCode, failingURL, localizedDescription); return true; } diff --git a/Source/WebKit2/Target.pri b/Source/WebKit2/Target.pri index 15fa0b18a..4f3930753 100644 --- a/Source/WebKit2/Target.pri +++ b/Source/WebKit2/Target.pri @@ -26,6 +26,8 @@ HEADERS += \ Platform/CoreIPC/DataReference.h \ Platform/CoreIPC/HandleMessage.h \ Platform/CoreIPC/MessageID.h \ + Platform/CoreIPC/MessageReceiver.h \ + Platform/CoreIPC/MessageReceiverMap.h \ Platform/CoreIPC/MessageSender.h \ Platform/Logging.h \ Platform/Module.h \ @@ -382,6 +384,7 @@ SOURCES += \ Platform/CoreIPC/Attachment.cpp \ Platform/CoreIPC/Connection.cpp \ Platform/CoreIPC/DataReference.cpp \ + Platform/CoreIPC/MessageReceiverMap.cpp \ Platform/Logging.cpp \ Platform/Module.cpp \ Platform/WorkQueue.cpp \ diff --git a/Source/WebKit2/UIProcess/API/C/WKContext.cpp b/Source/WebKit2/UIProcess/API/C/WKContext.cpp index 28a70821b..a41a762d1 100644 --- a/Source/WebKit2/UIProcess/API/C/WKContext.cpp +++ b/Source/WebKit2/UIProcess/API/C/WKContext.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010, 2011 Apple Inc. All rights reserved. + * Copyright (C) 2010, 2011, 2012 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -300,6 +300,12 @@ void WKContextSetJavaScriptGarbageCollectorTimerEnabled(WKContextRef contextRef, { toImpl(contextRef)->setJavaScriptGarbageCollectorTimerEnabled(enable); } + +void WKContextSetUsesNetworkProcess(WKContextRef contextRef, bool usesNetworkProcess) +{ + toImpl(contextRef)->setUsesNetworkProcess(usesNetworkProcess); +} + // Deprecated functions. void _WKContextSetAdditionalPluginsDirectory(WKContextRef context, WKStringRef pluginsDirectory) { diff --git a/Source/WebKit2/UIProcess/API/C/WKContextPrivate.h b/Source/WebKit2/UIProcess/API/C/WKContextPrivate.h index 49aec7f53..8aa9c0b0c 100644 --- a/Source/WebKit2/UIProcess/API/C/WKContextPrivate.h +++ b/Source/WebKit2/UIProcess/API/C/WKContextPrivate.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Apple Inc. All rights reserved. + * Copyright (C) 2010, 2012 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -70,6 +70,10 @@ WK_EXPORT void WKContextSetHTTPPipeliningEnabled(WKContextRef context, bool enab WK_EXPORT void WKContextWarmInitialProcess(WKContextRef context); +// FIXME: This function is temporary and useful during the development of the NetworkProcess feature. +// At some point it should be removed. +WK_EXPORT void WKContextSetUsesNetworkProcess(WKContextRef context, bool usesNetworkProcess); + #ifdef __cplusplus } #endif diff --git a/Source/WebKit2/UIProcess/API/C/WKGeolocationPosition.cpp b/Source/WebKit2/UIProcess/API/C/WKGeolocationPosition.cpp index 99195c79c..5d94f3e86 100644 --- a/Source/WebKit2/UIProcess/API/C/WKGeolocationPosition.cpp +++ b/Source/WebKit2/UIProcess/API/C/WKGeolocationPosition.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011 Apple Inc. All rights reserved. + * Copyright (C) 2011, 2012 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -38,6 +38,11 @@ WKTypeID WKGeolocationPositionGetTypeID() WKGeolocationPositionRef WKGeolocationPositionCreate(double timestamp, double latitude, double longitude, double accuracy) { - RefPtr<WebGeolocationPosition> position = WebGeolocationPosition::create(timestamp, latitude, longitude, accuracy); + return WKGeolocationPositionCreate_b(timestamp, latitude, longitude, accuracy, false, 0., false, 0., false, 0., false, 0.); +} + +WKGeolocationPositionRef WKGeolocationPositionCreate_b(double timestamp, double latitude, double longitude, double accuracy, bool providesAltitude, double altitude, bool providesAltitudeAccuracy, double altitudeAccuracy, bool providesHeading, double heading, bool providesSpeed, double speed) +{ + RefPtr<WebGeolocationPosition> position = WebGeolocationPosition::create(timestamp, latitude, longitude, accuracy, providesAltitude, altitude, providesAltitudeAccuracy, altitudeAccuracy, providesHeading, heading, providesSpeed, speed); return toAPI(position.release().leakRef()); } diff --git a/Source/WebKit2/UIProcess/API/C/WKGeolocationPosition.h b/Source/WebKit2/UIProcess/API/C/WKGeolocationPosition.h index 85183fd60..4727e9763 100644 --- a/Source/WebKit2/UIProcess/API/C/WKGeolocationPosition.h +++ b/Source/WebKit2/UIProcess/API/C/WKGeolocationPosition.h @@ -35,6 +35,7 @@ extern "C" { WK_EXPORT WKTypeID WKGeolocationPositionGetTypeID(); WK_EXPORT WKGeolocationPositionRef WKGeolocationPositionCreate(double timestamp, double latitude, double longitude, double accuracy); +WK_EXPORT WKGeolocationPositionRef WKGeolocationPositionCreate_b(double timestamp, double latitude, double longitude, double accuracy, bool providesAltitude, double altitude, bool providesAltitudeAccuracy, double altitudeAccuracy, bool providesHeading, double heading, bool providesSpeed, double speed); #ifdef __cplusplus } diff --git a/Source/WebKit2/UIProcess/API/C/WKIconDatabase.h b/Source/WebKit2/UIProcess/API/C/WKIconDatabase.h index 45ceec765..eec4ab3af 100644 --- a/Source/WebKit2/UIProcess/API/C/WKIconDatabase.h +++ b/Source/WebKit2/UIProcess/API/C/WKIconDatabase.h @@ -35,16 +35,22 @@ extern "C" { // IconDatabase Client. typedef void (*WKIconDatabaseDidChangeIconForPageURLCallback)(WKIconDatabaseRef iconDatabase, WKURLRef pageURL, const void* clientInfo); typedef void (*WKIconDatabaseDidRemoveAllIconsCallback)(WKIconDatabaseRef iconDatabase, const void* clientInfo); +typedef void (*WKIconDatabaseIconDataReadyForPageURLCallback)(WKIconDatabaseRef iconDatabase, WKURLRef pageURL, const void* clientInfo); struct WKIconDatabaseClient { int version; const void * clientInfo; + + // Version 0 WKIconDatabaseDidChangeIconForPageURLCallback didChangeIconForPageURL; WKIconDatabaseDidRemoveAllIconsCallback didRemoveAllIcons; + + // Version 1 + WKIconDatabaseIconDataReadyForPageURLCallback iconDataReadyForPageURL; }; typedef struct WKIconDatabaseClient WKIconDatabaseClient; -enum { kWKIconDatabaseClientCurrentVersion = 0 }; +enum { kWKIconDatabaseClientCurrentVersion = 1 }; WK_EXPORT WKTypeID WKIconDatabaseGetTypeID(); diff --git a/Source/WebKit2/UIProcess/API/C/WKPage.cpp b/Source/WebKit2/UIProcess/API/C/WKPage.cpp index 94fda474a..52e1cebf8 100644 --- a/Source/WebKit2/UIProcess/API/C/WKPage.cpp +++ b/Source/WebKit2/UIProcess/API/C/WKPage.cpp @@ -365,6 +365,16 @@ bool WKPageIsPinnedToRightSide(WKPageRef pageRef) return toImpl(pageRef)->isPinnedToRightSide(); } +bool WKPageIsPinnedToTopSide(WKPageRef pageRef) +{ + return toImpl(pageRef)->isPinnedToTopSide(); +} + +bool WKPageIsPinnedToBottomSide(WKPageRef pageRef) +{ + return toImpl(pageRef)->isPinnedToBottomSide(); +} + void WKPageSetPaginationMode(WKPageRef pageRef, WKPaginationMode paginationMode) { Pagination::Mode mode; @@ -738,3 +748,7 @@ void WKPagePostMessageToInjectedBundle(WKPageRef pageRef, WKStringRef messageNam toImpl(pageRef)->postMessageToInjectedBundle(toImpl(messageNameRef)->string(), toImpl(messageBodyRef)); } +WKArrayRef WKPageCopyRelatedPages(WKPageRef pageRef) +{ + return toAPI(toImpl(pageRef)->relatedPages().leakRef()); +} diff --git a/Source/WebKit2/UIProcess/API/C/WKPage.h b/Source/WebKit2/UIProcess/API/C/WKPage.h index 62db9174c..9dfd52e3c 100644 --- a/Source/WebKit2/UIProcess/API/C/WKPage.h +++ b/Source/WebKit2/UIProcess/API/C/WKPage.h @@ -439,6 +439,8 @@ WK_EXPORT bool WKPageAreScrollbarAnimationsSuppressed(WKPageRef page); WK_EXPORT bool WKPageIsPinnedToLeftSide(WKPageRef page); WK_EXPORT bool WKPageIsPinnedToRightSide(WKPageRef page); +WK_EXPORT bool WKPageIsPinnedToTopSide(WKPageRef page); +WK_EXPORT bool WKPageIsPinnedToBottomSide(WKPageRef page); WK_EXPORT bool WKPageCanDelete(WKPageRef page); WK_EXPORT bool WKPageHasSelectedRange(WKPageRef page); diff --git a/Source/WebKit2/UIProcess/API/C/WKPageGroup.cpp b/Source/WebKit2/UIProcess/API/C/WKPageGroup.cpp index 8a4d86a05..5559d0180 100644 --- a/Source/WebKit2/UIProcess/API/C/WKPageGroup.cpp +++ b/Source/WebKit2/UIProcess/API/C/WKPageGroup.cpp @@ -57,3 +57,13 @@ WKPreferencesRef WKPageGroupGetPreferences(WKPageGroupRef pageGroupRef) { return toAPI(toImpl(pageGroupRef)->preferences()); } + +void WKPageGroupAddUserStyleSheet(WKPageGroupRef pageGroupRef, WKStringRef sourceRef, WKURLRef baseURL, WKArrayRef whitelist, WKArrayRef blacklist, WKUserContentInjectedFrames injectedFrames) +{ + toImpl(pageGroupRef)->addUserStyleSheet(toWTFString(sourceRef), toWTFString(baseURL), toImpl(whitelist), toImpl(blacklist), toUserContentInjectedFrames(injectedFrames), WebCore::UserStyleUserLevel); +} + +void WKPageGroupRemoveAllUserStyleSheets(WKPageGroupRef pageGroupRef) +{ + toImpl(pageGroupRef)->removeAllUserStyleSheets(); +} diff --git a/Source/WebKit2/UIProcess/API/C/WKPageGroup.h b/Source/WebKit2/UIProcess/API/C/WKPageGroup.h index 705df083e..1280241c8 100644 --- a/Source/WebKit2/UIProcess/API/C/WKPageGroup.h +++ b/Source/WebKit2/UIProcess/API/C/WKPageGroup.h @@ -40,6 +40,9 @@ WK_EXPORT WKStringRef WKPageGroupCopyIdentifier(WKPageGroupRef pageGroup); WK_EXPORT void WKPageGroupSetPreferences(WKPageGroupRef pageGroup, WKPreferencesRef preferences); WK_EXPORT WKPreferencesRef WKPageGroupGetPreferences(WKPageGroupRef pageGroup); + +WK_EXPORT void WKPageGroupAddUserStyleSheet(WKPageGroupRef pageGroup, WKStringRef source, WKURLRef baseURL, WKArrayRef whitelist, WKArrayRef blacklist, WKUserContentInjectedFrames); +WK_EXPORT void WKPageGroupRemoveAllUserStyleSheets(WKPageGroupRef pageGroup); #ifdef __cplusplus } diff --git a/Source/WebKit2/UIProcess/API/C/WKPagePrivate.h b/Source/WebKit2/UIProcess/API/C/WKPagePrivate.h index 4a13ae7a2..3a9de69af 100644 --- a/Source/WebKit2/UIProcess/API/C/WKPagePrivate.h +++ b/Source/WebKit2/UIProcess/API/C/WKPagePrivate.h @@ -94,6 +94,8 @@ WK_EXPORT void WKPageSetShouldSendEventsSynchronously(WKPageRef page, bool sync) WK_EXPORT void WKPageSetMediaVolume(WKPageRef page, float volume); +WK_EXPORT WKArrayRef WKPageCopyRelatedPages(WKPageRef page); + #ifdef __cplusplus } #endif diff --git a/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp b/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp index 657b1b730..532d82caf 100644 --- a/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp +++ b/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Apple Inc. All rights reserved. + * Copyright (C) 2010, 2012 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -298,6 +298,16 @@ bool WKPreferencesGetScreenFontSubstitutionEnabled(WKPreferencesRef preferencesR return toImpl(preferencesRef)->screenFontSubstitutionEnabled(); } +void WKPreferencesSetCookieEnabled(WKPreferencesRef preferencesRef, bool enabled) +{ + toImpl(preferencesRef)->setCookieEnabled(enabled); +} + +bool WKPreferencesGetCookieEnabled(WKPreferencesRef preferencesRef) +{ + return toImpl(preferencesRef)->cookieEnabled(); +} + void WKPreferencesSetEditableLinkBehavior(WKPreferencesRef preferencesRef, WKEditableLinkBehavior wkBehavior) { toImpl(preferencesRef)->setEditableLinkBehavior(toEditableLinkBehavior(wkBehavior)); @@ -913,3 +923,23 @@ bool WKPreferencesGetScrollingPerformanceLoggingEnabled(WKPreferencesRef prefere { return toImpl(preferencesRef)->scrollingPerformanceLoggingEnabled(); } + +void WKPreferencesSetPlugInSnapshottingEnabled(WKPreferencesRef preferencesRef, bool enabled) +{ + toImpl(preferencesRef)->setPlugInSnapshottingEnabled(enabled); +} + +bool WKPreferencesGetPlugInSnapshottingEnabled(WKPreferencesRef preferencesRef) +{ + return toImpl(preferencesRef)->plugInSnapshottingEnabled(); +} + +void WKPreferencesSetPDFPluginEnabled(WKPreferencesRef preferencesRef, bool enabled) +{ + toImpl(preferencesRef)->setPDFPluginEnabled(enabled); +} + +bool WKPreferencesGetPDFPluginEnabled(WKPreferencesRef preferencesRef) +{ + return toImpl(preferencesRef)->pdfPluginEnabled(); +} diff --git a/Source/WebKit2/UIProcess/API/C/WKPreferences.h b/Source/WebKit2/UIProcess/API/C/WKPreferences.h index c0fde67fd..d91b82d83 100644 --- a/Source/WebKit2/UIProcess/API/C/WKPreferences.h +++ b/Source/WebKit2/UIProcess/API/C/WKPreferences.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Apple Inc. All rights reserved. + * Copyright (C) 2010, 2012 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -216,6 +216,10 @@ WK_EXPORT bool WKPreferencesGetShouldRespectImageOrientation(WKPreferencesRef pr WK_EXPORT void WKPreferencesSetStorageBlockingPolicy(WKPreferencesRef preferencesRef, WKStorageBlockingPolicy policy); WK_EXPORT WKStorageBlockingPolicy WKPreferencesGetStorageBlockingPolicy(WKPreferencesRef preferencesRef); +// Defaults to false +WK_EXPORT void WKPreferencesSetPlugInSnapshottingEnabled(WKPreferencesRef preferencesRef, bool enabled); +WK_EXPORT bool WKPreferencesGetPlugInSnapshottingEnabled(WKPreferencesRef preferencesRef); + #ifdef __cplusplus } #endif diff --git a/Source/WebKit2/UIProcess/API/C/WKPreferencesPrivate.h b/Source/WebKit2/UIProcess/API/C/WKPreferencesPrivate.h index 11311704d..af5f73b34 100644 --- a/Source/WebKit2/UIProcess/API/C/WKPreferencesPrivate.h +++ b/Source/WebKit2/UIProcess/API/C/WKPreferencesPrivate.h @@ -219,6 +219,14 @@ WK_EXPORT bool WKPreferencesGetScrollingPerformanceLoggingEnabled(WKPreferencesR WK_EXPORT void WKPreferencesSetScreenFontSubstitutionEnabled(WKPreferencesRef preferences, bool enabled); WK_EXPORT bool WKPreferencesGetScreenFontSubstitutionEnabled(WKPreferencesRef preferences); +// Defaults to true +WK_EXPORT void WKPreferencesSetCookieEnabled(WKPreferencesRef preferences, bool enabled); +WK_EXPORT bool WKPreferencesGetCookieEnabled(WKPreferencesRef preferences); + +// Defaults to false +WK_EXPORT void WKPreferencesSetPDFPluginEnabled(WKPreferencesRef preferences, bool enabled); +WK_EXPORT bool WKPreferencesGetPDFPluginEnabled(WKPreferencesRef preferences); + WK_EXPORT void WKPreferencesResetTestRunnerOverrides(WKPreferencesRef preferencesRef); #ifdef __cplusplus diff --git a/Source/WebKit2/UIProcess/API/C/soup/WKSoupRequestManager.h b/Source/WebKit2/UIProcess/API/C/soup/WKSoupRequestManager.h index 1c9c001f2..4dba13908 100644 --- a/Source/WebKit2/UIProcess/API/C/soup/WKSoupRequestManager.h +++ b/Source/WebKit2/UIProcess/API/C/soup/WKSoupRequestManager.h @@ -33,7 +33,7 @@ extern "C" { #endif -typedef void (*WKSoupRequestManagerDidReceiveURIRequestCallback)(WKSoupRequestManagerRef soupRequestManagerRef, WKURLRef urlRef, uint64_t requestID, const void* clientInfo); +typedef void (*WKSoupRequestManagerDidReceiveURIRequestCallback)(WKSoupRequestManagerRef soupRequestManagerRef, WKURLRef urlRef, WKPageRef pageRef, uint64_t requestID, const void* clientInfo); typedef void (*WKSoupRequestManagerDidFailToLoadURIRequestCallback)(WKSoupRequestManagerRef soupRequestManagerRef, uint64_t requestID, const void* clientInfo); struct WKSoupRequestManagerClient { diff --git a/Source/WebKit2/UIProcess/API/efl/BatteryProvider.cpp b/Source/WebKit2/UIProcess/API/efl/BatteryProvider.cpp index 83cc37119..810711597 100644 --- a/Source/WebKit2/UIProcess/API/efl/BatteryProvider.cpp +++ b/Source/WebKit2/UIProcess/API/efl/BatteryProvider.cpp @@ -31,6 +31,7 @@ #include "WKAPICast.h" #include "WKBatteryManager.h" #include "WKBatteryStatus.h" +#include "WKContext.h" using namespace WebCore; using namespace WebKit; @@ -53,17 +54,25 @@ static void stopUpdatingCallback(WKBatteryManagerRef, const void* clientInfo) BatteryProvider::~BatteryProvider() { m_provider.stopUpdating(); + + WKBatteryManagerRef wkBatteryManager = WKContextGetBatteryManager(m_wkContext.get()); + ASSERT(wkBatteryManager); + + WKBatteryManagerSetProvider(wkBatteryManager, 0); } -PassRefPtr<BatteryProvider> BatteryProvider::create(WKBatteryManagerRef wkBatteryManager) +PassRefPtr<BatteryProvider> BatteryProvider::create(WKContextRef wkContext) { - return adoptRef(new BatteryProvider(wkBatteryManager)); + return adoptRef(new BatteryProvider(wkContext)); } -BatteryProvider::BatteryProvider(WKBatteryManagerRef wkBatteryManager) - : m_wkBatteryManager(wkBatteryManager) +BatteryProvider::BatteryProvider(WKContextRef wkContext) + : m_wkContext(wkContext) , m_provider(this) { + ASSERT(m_wkContext); + + WKBatteryManagerRef wkBatteryManager = WKContextGetBatteryManager(m_wkContext.get()); ASSERT(wkBatteryManager); WKBatteryProvider wkBatteryProvider = { @@ -72,7 +81,7 @@ BatteryProvider::BatteryProvider(WKBatteryManagerRef wkBatteryManager) startUpdatingCallback, stopUpdatingCallback }; - WKBatteryManagerSetProvider(m_wkBatteryManager.get(), &wkBatteryProvider); + WKBatteryManagerSetProvider(wkBatteryManager, &wkBatteryProvider); } void BatteryProvider::startUpdating() @@ -87,8 +96,11 @@ void BatteryProvider::stopUpdating() void BatteryProvider::didChangeBatteryStatus(const AtomicString& eventType, PassRefPtr<BatteryStatus> status) { + WKBatteryManagerRef wkBatteryManager = WKContextGetBatteryManager(m_wkContext.get()); + ASSERT(wkBatteryManager); + WKRetainPtr<WKBatteryStatusRef> wkBatteryStatus(AdoptWK, WKBatteryStatusCreate(status->charging(), status->chargingTime(), status->dischargingTime(), status->level())); - WKBatteryManagerProviderDidChangeBatteryStatus(m_wkBatteryManager.get(), toAPI(eventType.impl()), wkBatteryStatus.get()); + WKBatteryManagerProviderDidChangeBatteryStatus(wkBatteryManager, toAPI(eventType.impl()), wkBatteryStatus.get()); } #endif // ENABLE(BATTERY_STATUS) diff --git a/Source/WebKit2/UIProcess/API/efl/BatteryProvider.h b/Source/WebKit2/UIProcess/API/efl/BatteryProvider.h index e9e4cf5f0..c54414e68 100644 --- a/Source/WebKit2/UIProcess/API/efl/BatteryProvider.h +++ b/Source/WebKit2/UIProcess/API/efl/BatteryProvider.h @@ -38,18 +38,18 @@ class BatteryProvider : public RefCounted<BatteryProvider>, public WebCore::BatteryProviderEflClient { public: virtual ~BatteryProvider(); - static PassRefPtr<BatteryProvider> create(WKBatteryManagerRef); + static PassRefPtr<BatteryProvider> create(WKContextRef); void startUpdating(); void stopUpdating(); private: - BatteryProvider(WKBatteryManagerRef); + BatteryProvider(WKContextRef); // BatteryProviderEflClient interface. virtual void didChangeBatteryStatus(const AtomicString& eventType, PassRefPtr<WebCore::BatteryStatus>); - WKRetainPtr<WKBatteryManagerRef> m_wkBatteryManager; + WKRetainPtr<WKContextRef> m_wkContext; WebCore::BatteryProviderEfl m_provider; }; diff --git a/Source/WebKit2/UIProcess/API/efl/EWebKit2.h b/Source/WebKit2/UIProcess/API/efl/EWebKit2.h index 13efab13a..00dd811a4 100644 --- a/Source/WebKit2/UIProcess/API/efl/EWebKit2.h +++ b/Source/WebKit2/UIProcess/API/efl/EWebKit2.h @@ -33,19 +33,20 @@ #include "ewk_context.h" #include "ewk_cookie_manager.h" #include "ewk_download_job.h" +#include "ewk_error.h" #include "ewk_form_submission_request.h" #include "ewk_intent.h" #include "ewk_intent_service.h" #include "ewk_main.h" +#include "ewk_navigation_data.h" #include "ewk_navigation_policy_decision.h" #include "ewk_popup_menu_item.h" +#include "ewk_resource.h" #include "ewk_settings.h" #include "ewk_touch.h" #include "ewk_url_request.h" #include "ewk_url_response.h" #include "ewk_url_scheme_request.h" #include "ewk_view.h" -#include "ewk_web_error.h" -#include "ewk_web_resource.h" #endif // EWebKit2_h diff --git a/Source/WebKit2/UIProcess/API/efl/EflViewportHandler.cpp b/Source/WebKit2/UIProcess/API/efl/EflViewportHandler.cpp index eb3d007fe..05be4cadf 100644 --- a/Source/WebKit2/UIProcess/API/efl/EflViewportHandler.cpp +++ b/Source/WebKit2/UIProcess/API/efl/EflViewportHandler.cpp @@ -53,6 +53,11 @@ DrawingAreaProxy* EflViewportHandler::drawingArea() const return ewk_view_page_get(m_viewWidget)->drawingArea(); } +void EflViewportHandler::setRendererActive(bool active) +{ + drawingArea()->layerTreeCoordinatorProxy()->layerTreeRenderer()->setActive(active); +} + void EflViewportHandler::display(const IntRect& rect) { WebCore::TransformationMatrix matrix; diff --git a/Source/WebKit2/UIProcess/API/efl/EflViewportHandler.h b/Source/WebKit2/UIProcess/API/efl/EflViewportHandler.h index a23f4e147..f4d0e66de 100644 --- a/Source/WebKit2/UIProcess/API/efl/EflViewportHandler.h +++ b/Source/WebKit2/UIProcess/API/efl/EflViewportHandler.h @@ -48,7 +48,7 @@ public: void updateViewportSize(const WebCore::IntSize& viewportSize); void setVisibleContentsRect(const WebCore::IntPoint&, float, const WebCore::FloatPoint&); void didChangeContentsSize(const WebCore::IntSize& size); - + void setRendererActive(bool); private: explicit EflViewportHandler(Evas_Object*); diff --git a/Source/WebKit2/UIProcess/API/efl/NetworkInfoProvider.cpp b/Source/WebKit2/UIProcess/API/efl/NetworkInfoProvider.cpp index 54a6921da..1431c83a7 100644 --- a/Source/WebKit2/UIProcess/API/efl/NetworkInfoProvider.cpp +++ b/Source/WebKit2/UIProcess/API/efl/NetworkInfoProvider.cpp @@ -28,6 +28,7 @@ #if ENABLE(NETWORK_INFO) +#include "WKContext.h" #include "WKNetworkInfoManager.h" #include <NotImplemented.h> @@ -56,15 +57,18 @@ static bool isMeteredCallback(WKNetworkInfoManagerRef, const void* clientInfo) return toNetworkInfoProvider(clientInfo)->metered(); } -PassRefPtr<NetworkInfoProvider> NetworkInfoProvider::create(WKNetworkInfoManagerRef wkManager) +PassRefPtr<NetworkInfoProvider> NetworkInfoProvider::create(WKContextRef wkContext) { - return adoptRef(new NetworkInfoProvider(wkManager)); + return adoptRef(new NetworkInfoProvider(wkContext)); } -NetworkInfoProvider::NetworkInfoProvider(WKNetworkInfoManagerRef wkManager) - : m_wkNetworkInfoManager(wkManager) +NetworkInfoProvider::NetworkInfoProvider(WKContextRef wkContext) + : m_wkContext(wkContext) { - ASSERT(wkManager); + ASSERT(wkContext); + + WKNetworkInfoManagerRef wkNetworkInfoManager = WKContextGetNetworkInfoManager(m_wkContext.get()); + ASSERT(wkNetworkInfoManager); WKNetworkInfoProvider wkNetworkInfoProvider = { kWKNetworkInfoProviderCurrentVersion, @@ -74,11 +78,15 @@ NetworkInfoProvider::NetworkInfoProvider(WKNetworkInfoManagerRef wkManager) getBandwidthCallback, isMeteredCallback }; - WKNetworkInfoManagerSetProvider(m_wkNetworkInfoManager.get(), &wkNetworkInfoProvider); + WKNetworkInfoManagerSetProvider(wkNetworkInfoManager, &wkNetworkInfoProvider); } NetworkInfoProvider::~NetworkInfoProvider() { + WKNetworkInfoManagerRef wkNetworkInfoManager = WKContextGetNetworkInfoManager(m_wkContext.get()); + ASSERT(wkNetworkInfoManager); + + WKNetworkInfoManagerSetProvider(wkNetworkInfoManager, 0); } double NetworkInfoProvider::bandwidth() const diff --git a/Source/WebKit2/UIProcess/API/efl/NetworkInfoProvider.h b/Source/WebKit2/UIProcess/API/efl/NetworkInfoProvider.h index b9f86e6e5..0a5d60e4f 100644 --- a/Source/WebKit2/UIProcess/API/efl/NetworkInfoProvider.h +++ b/Source/WebKit2/UIProcess/API/efl/NetworkInfoProvider.h @@ -37,7 +37,7 @@ class NetworkInfoProvider : public RefCounted<NetworkInfoProvider>, public WebCore::NetworkInfoClient { public: virtual ~NetworkInfoProvider(); - static PassRefPtr<NetworkInfoProvider> create(WKNetworkInfoManagerRef); + static PassRefPtr<NetworkInfoProvider> create(WKContextRef); // NetworkInfoClient interface. virtual double bandwidth() const; @@ -47,9 +47,9 @@ public: virtual void stopUpdating(); private: - NetworkInfoProvider(WKNetworkInfoManagerRef); + NetworkInfoProvider(WKContextRef); - WKRetainPtr<WKNetworkInfoManagerRef> m_wkNetworkInfoManager; + WKRetainPtr<WKContextRef> m_wkContext; WebCore::NetworkInfoProviderEfl m_provider; }; diff --git a/Source/WebKit2/UIProcess/API/efl/PageClientImpl.cpp b/Source/WebKit2/UIProcess/API/efl/PageClientImpl.cpp index ef2ce603f..3bf194f57 100644 --- a/Source/WebKit2/UIProcess/API/efl/PageClientImpl.cpp +++ b/Source/WebKit2/UIProcess/API/efl/PageClientImpl.cpp @@ -94,8 +94,7 @@ bool PageClientImpl::isViewFocused() bool PageClientImpl::isViewVisible() { - notImplemented(); - return true; + return evas_object_visible_get(m_viewWidget); } bool PageClientImpl::isViewInWindow() diff --git a/Source/WebKit2/UIProcess/API/efl/VibrationProvider.cpp b/Source/WebKit2/UIProcess/API/efl/VibrationProvider.cpp index 29fb6a4fc..13d4de6d6 100644 --- a/Source/WebKit2/UIProcess/API/efl/VibrationProvider.cpp +++ b/Source/WebKit2/UIProcess/API/efl/VibrationProvider.cpp @@ -29,6 +29,7 @@ #if ENABLE(VIBRATION) #include "WKAPICast.h" +#include "WKContext.h" #include "WKVibration.h" #include <Evas.h> @@ -65,15 +66,18 @@ static void cancelVibrationCallback(WKVibrationRef, const void* clientInfo) toVibrationProvider(clientInfo)->cancelVibration(); } -PassRefPtr<VibrationProvider> VibrationProvider::create(WKVibrationRef wkVibrationRef) +PassRefPtr<VibrationProvider> VibrationProvider::create(WKContextRef wkContext) { - return adoptRef(new VibrationProvider(wkVibrationRef)); + return adoptRef(new VibrationProvider(wkContext)); } -VibrationProvider::VibrationProvider(WKVibrationRef wkVibrationRef) - : m_wkVibrationRef(wkVibrationRef) +VibrationProvider::VibrationProvider(WKContextRef wkContext) + : m_wkContext(wkContext) { - ASSERT(wkVibrationRef); + ASSERT(m_wkContext.get()); + + WKVibrationRef wkVibration = WKContextGetVibration(m_wkContext.get()); + ASSERT(wkVibration); WKVibrationProvider wkVibrationProvider = { kWKVibrationProviderCurrentVersion, @@ -81,11 +85,15 @@ VibrationProvider::VibrationProvider(WKVibrationRef wkVibrationRef) vibrateCallback, cancelVibrationCallback }; - WKVibrationSetProvider(m_wkVibrationRef.get(), &wkVibrationProvider); + WKVibrationSetProvider(wkVibration, &wkVibrationProvider); } VibrationProvider::~VibrationProvider() { + WKVibrationRef wkVibration = WKContextGetVibration(m_wkContext.get()); + ASSERT(wkVibration); + + WKVibrationSetProvider(wkVibration, 0); } void VibrationProvider::vibrate(uint64_t vibrationTime) diff --git a/Source/WebKit2/UIProcess/API/efl/VibrationProvider.h b/Source/WebKit2/UIProcess/API/efl/VibrationProvider.h index c2643b638..6b2db4eec 100644 --- a/Source/WebKit2/UIProcess/API/efl/VibrationProvider.h +++ b/Source/WebKit2/UIProcess/API/efl/VibrationProvider.h @@ -37,7 +37,7 @@ typedef struct _Ewk_Vibration_Client Ewk_Vibration_Client; class VibrationProvider : public RefCounted<VibrationProvider> { public: - static PassRefPtr<VibrationProvider> create(WKVibrationRef); + static PassRefPtr<VibrationProvider> create(WKContextRef); virtual ~VibrationProvider(); void vibrate(uint64_t vibrationTime); @@ -45,9 +45,9 @@ public: void setVibrationClientCallbacks(Ewk_Vibration_Client_Vibrate_Cb, Ewk_Vibration_Client_Vibration_Cancel_Cb, void*); private: - explicit VibrationProvider(WKVibrationRef); + explicit VibrationProvider(WKContextRef); - WKRetainPtr<WKVibrationRef> m_wkVibrationRef; + WKRetainPtr<WKContextRef> m_wkContext; OwnPtr<Ewk_Vibration_Client> m_vibrationClient; }; diff --git a/Source/WebKit2/UIProcess/API/efl/ewk_back_forward_list.cpp b/Source/WebKit2/UIProcess/API/efl/ewk_back_forward_list.cpp index be866fa0a..94d0300c1 100644 --- a/Source/WebKit2/UIProcess/API/efl/ewk_back_forward_list.cpp +++ b/Source/WebKit2/UIProcess/API/efl/ewk_back_forward_list.cpp @@ -54,7 +54,7 @@ struct _Ewk_Back_Forward_List { ItemsMap::iterator it = wrapperCache.begin(); ItemsMap::iterator end = wrapperCache.end(); for (; it != end; ++it) - ewk_back_forward_list_item_unref(it->second); + ewk_back_forward_list_item_unref(it->value); } }; diff --git a/Source/WebKit2/UIProcess/API/efl/ewk_back_forward_list_item.cpp b/Source/WebKit2/UIProcess/API/efl/ewk_back_forward_list_item.cpp index 5679773a0..704545a0b 100644 --- a/Source/WebKit2/UIProcess/API/efl/ewk_back_forward_list_item.cpp +++ b/Source/WebKit2/UIProcess/API/efl/ewk_back_forward_list_item.cpp @@ -39,9 +39,9 @@ using namespace WebKit; struct _Ewk_Back_Forward_List_Item { unsigned int __ref; /**< the reference count of the object */ WKRetainPtr<WKBackForwardListItemRef> wkItem; - mutable WKEinaSharedString uri; + mutable WKEinaSharedString url; mutable WKEinaSharedString title; - mutable WKEinaSharedString originalUri; + mutable WKEinaSharedString originalURL; _Ewk_Back_Forward_List_Item(WKBackForwardListItemRef itemRef) : __ref(1) @@ -83,13 +83,13 @@ void ewk_back_forward_list_item_unref(Ewk_Back_Forward_List_Item* item) delete item; } -const char* ewk_back_forward_list_item_uri_get(const Ewk_Back_Forward_List_Item* item) +const char* ewk_back_forward_list_item_url_get(const Ewk_Back_Forward_List_Item* item) { EWK_BACK_FORWARD_LIST_ITEM_WK_GET_OR_RETURN(item, wkItem, 0); - item->uri = WKEinaSharedString(AdoptWK, WKBackForwardListItemCopyURL(wkItem)); + item->url = WKEinaSharedString(AdoptWK, WKBackForwardListItemCopyURL(wkItem)); - return item->uri; + return item->url; } const char* ewk_back_forward_list_item_title_get(const Ewk_Back_Forward_List_Item* item) @@ -101,13 +101,13 @@ const char* ewk_back_forward_list_item_title_get(const Ewk_Back_Forward_List_Ite return item->title; } -const char* ewk_back_forward_list_item_original_uri_get(const Ewk_Back_Forward_List_Item* item) +const char* ewk_back_forward_list_item_original_url_get(const Ewk_Back_Forward_List_Item* item) { EWK_BACK_FORWARD_LIST_ITEM_WK_GET_OR_RETURN(item, wkItem, 0); - item->originalUri = WKEinaSharedString(AdoptWK, WKBackForwardListItemCopyOriginalURL(wkItem)); + item->originalURL = WKEinaSharedString(AdoptWK, WKBackForwardListItemCopyOriginalURL(wkItem)); - return item->originalUri; + return item->originalURL; } Ewk_Back_Forward_List_Item* ewk_back_forward_list_item_new(WKBackForwardListItemRef backForwardListItemData) diff --git a/Source/WebKit2/UIProcess/API/efl/ewk_back_forward_list_item.h b/Source/WebKit2/UIProcess/API/efl/ewk_back_forward_list_item.h index a1227dfc0..3c544f3ef 100644 --- a/Source/WebKit2/UIProcess/API/efl/ewk_back_forward_list_item.h +++ b/Source/WebKit2/UIProcess/API/efl/ewk_back_forward_list_item.h @@ -59,21 +59,21 @@ EAPI Ewk_Back_Forward_List_Item *ewk_back_forward_list_item_ref(Ewk_Back_Forward EAPI void ewk_back_forward_list_item_unref(Ewk_Back_Forward_List_Item *item); /** - * Returns URI of the item. + * Returns URL of the item. * - * The returned URI may differ from the original URI (For example if the page was redirected). + * The returned URL may differ from the original URL (For example if the page was redirected). * - * @see ewk_back_forward_list_item_original_uri_get() + * @see ewk_back_forward_list_item_original_url_get() * * @param item the back-forward list item instance * - * @return the URI of the @a item or @c NULL in case of error. This pointer is + * @return the URL of the @a item or @c NULL in case of error. This pointer is * guaranteed to be eina_stringshare, so whenever possible * save yourself some cpu cycles and use * eina_stringshare_ref() instead of eina_stringshare_add() or * strdup() */ -EAPI const char *ewk_back_forward_list_item_uri_get(const Ewk_Back_Forward_List_Item *item); +EAPI const char *ewk_back_forward_list_item_url_get(const Ewk_Back_Forward_List_Item *item); /** * Returns title of the item. @@ -89,19 +89,19 @@ EAPI const char *ewk_back_forward_list_item_uri_get(const Ewk_Back_Forward_List_ EAPI const char *ewk_back_forward_list_item_title_get(const Ewk_Back_Forward_List_Item *item); /** - * Returns original URI of the item. + * Returns original URL of the item. * - * @see ewk_back_forward_list_item_uri_get() + * @see ewk_back_forward_list_item_url_get() * * @param item the back-forward list item instance * - * @return the original URI of the @a item or @c NULL in case of error. This pointer is + * @return the original URL of the @a item or @c NULL in case of error. This pointer is * guaranteed to be eina_stringshare, so whenever possible * save yourself some cpu cycles and use * eina_stringshare_ref() instead of eina_stringshare_add() or * strdup() */ -EAPI const char *ewk_back_forward_list_item_original_uri_get(const Ewk_Back_Forward_List_Item *item); +EAPI const char *ewk_back_forward_list_item_original_url_get(const Ewk_Back_Forward_List_Item *item); #ifdef __cplusplus } diff --git a/Source/WebKit2/UIProcess/API/efl/ewk_context.cpp b/Source/WebKit2/UIProcess/API/efl/ewk_context.cpp index b34ff77df..02eddb42d 100644 --- a/Source/WebKit2/UIProcess/API/efl/ewk_context.cpp +++ b/Source/WebKit2/UIProcess/API/efl/ewk_context.cpp @@ -22,6 +22,7 @@ #include "ewk_context.h" #include "BatteryProvider.h" +#include "NetworkInfoProvider.h" #include "VibrationProvider.h" #include "WKAPICast.h" #include "WKContextSoup.h" @@ -30,6 +31,7 @@ #include "WKString.h" #include "WebContext.h" #include "ewk_context_download_client_private.h" +#include "ewk_context_history_client_private.h" #include "ewk_context_private.h" #include "ewk_context_request_manager_client_private.h" #include "ewk_cookie_manager_private.h" @@ -67,6 +69,9 @@ struct _Ewk_Context { #if ENABLE(BATTERY_STATUS) RefPtr<BatteryProvider> batteryProvider; #endif +#if ENABLE(NETWORK_INFO) + RefPtr<NetworkInfoProvider> networkInfoProvider; +#endif #if ENABLE(VIBRATION) RefPtr<VibrationProvider> vibrationProvider; #endif @@ -75,20 +80,25 @@ struct _Ewk_Context { WKRetainPtr<WKSoupRequestManagerRef> requestManager; URLSchemeHandlerMap urlSchemeHandlers; + Ewk_Context_History_Client historyClient; + _Ewk_Context(WKRetainPtr<WKContextRef> contextRef) : __ref(1) , context(contextRef) , cookieManager(0) , requestManager(WKContextGetSoupRequestManager(contextRef.get())) + , historyClient() { #if ENABLE(BATTERY_STATUS) - WKBatteryManagerRef wkBatteryManager = WKContextGetBatteryManager(contextRef.get()); - batteryProvider = BatteryProvider::create(wkBatteryManager); + batteryProvider = BatteryProvider::create(context.get()); +#endif + +#if ENABLE(NETWORK_INFO) + networkInfoProvider = NetworkInfoProvider::create(context.get()); #endif #if ENABLE(VIBRATION) - WKVibrationRef wkVibrationRef = WKContextGetVibration(contextRef.get()); - vibrationProvider = VibrationProvider::create(wkVibrationRef); + vibrationProvider = VibrationProvider::create(context.get()); #endif #if ENABLE(MEMORY_SAMPLER) @@ -103,6 +113,7 @@ struct _Ewk_Context { #endif ewk_context_request_manager_client_attach(this); ewk_context_download_client_attach(this); + ewk_context_history_client_attach(this); } ~_Ewk_Context() @@ -113,7 +124,7 @@ struct _Ewk_Context { HashMap<uint64_t, Ewk_Download_Job*>::iterator it = downloadJobs.begin(); HashMap<uint64_t, Ewk_Download_Job*>::iterator end = downloadJobs.end(); for ( ; it != end; ++it) - ewk_download_job_unref(it->second); + ewk_download_job_unref(it->value); } }; @@ -255,7 +266,7 @@ Ewk_Context* ewk_context_new_with_injected_bundle_path(const char* path) return new Ewk_Context(adoptWK(WKContextCreateWithInjectedBundlePath(pathRef.get()))); } -Eina_Bool ewk_context_uri_scheme_register(Ewk_Context* ewkContext, const char* scheme, Ewk_Url_Scheme_Request_Cb callback, void* userData) +Eina_Bool ewk_context_url_scheme_register(Ewk_Context* ewkContext, const char* scheme, Ewk_Url_Scheme_Request_Cb callback, void* userData) { EINA_SAFETY_ON_NULL_RETURN_VAL(ewkContext, false); EINA_SAFETY_ON_NULL_RETURN_VAL(scheme, false); @@ -276,3 +287,31 @@ void ewk_context_vibration_client_callbacks_set(Ewk_Context* ewkContext, Ewk_Vib ewkContext->vibrationProvider->setVibrationClientCallbacks(vibrate, cancel, data); #endif } + +void ewk_context_history_callbacks_set(Ewk_Context* ewkContext, Ewk_History_Navigation_Cb navigate, Ewk_History_Client_Redirection_Cb clientRedirect, Ewk_History_Server_Redirection_Cb serverRedirect, Ewk_History_Title_Update_Cb titleUpdate, Ewk_History_Populate_Visited_Links_Cb populateVisitedLinks, void* data) +{ + EINA_SAFETY_ON_NULL_RETURN(ewkContext); + + ewkContext->historyClient.navigate_func = navigate; + ewkContext->historyClient.client_redirect_func = clientRedirect; + ewkContext->historyClient.server_redirect_func = serverRedirect; + ewkContext->historyClient.title_update_func = titleUpdate; + ewkContext->historyClient.populate_visited_links_func = populateVisitedLinks; + ewkContext->historyClient.user_data = data; +} + +const Ewk_Context_History_Client* ewk_context_history_client_get(const Ewk_Context* ewkContext) +{ + EINA_SAFETY_ON_NULL_RETURN_VAL(ewkContext, 0); + + return &ewkContext->historyClient; +} + +void ewk_context_visited_link_add(Ewk_Context* ewkContext, const char* visitedURL) +{ + EINA_SAFETY_ON_NULL_RETURN(ewkContext); + EINA_SAFETY_ON_NULL_RETURN(visitedURL); + + WKRetainPtr<WKStringRef> wkVisitedURL(AdoptWK, WKStringCreateWithUTF8CString(visitedURL)); + WKContextAddVisitedLink(ewkContext->context.get(), wkVisitedURL.get()); +} diff --git a/Source/WebKit2/UIProcess/API/efl/ewk_context.h b/Source/WebKit2/UIProcess/API/efl/ewk_context.h index e6e9e0c7b..3f46d460e 100644 --- a/Source/WebKit2/UIProcess/API/efl/ewk_context.h +++ b/Source/WebKit2/UIProcess/API/efl/ewk_context.h @@ -38,6 +38,7 @@ #define ewk_context_h #include "ewk_cookie_manager.h" +#include "ewk_navigation_data.h" #include "ewk_url_scheme_request.h" #include <Evas.h> @@ -50,7 +51,7 @@ typedef struct _Ewk_Context Ewk_Context; /** * @typedef Ewk_Url_Scheme_Request_Cb Ewk_Url_Scheme_Request_Cb - * @brief Callback type for use with ewk_context_uri_scheme_register(). + * @brief Callback type for use with ewk_context_url_scheme_register(). */ typedef void (*Ewk_Url_Scheme_Request_Cb) (Ewk_Url_Scheme_Request *request, void *user_data); @@ -69,6 +70,38 @@ typedef void (*Ewk_Vibration_Client_Vibrate_Cb)(uint64_t vibration_time, void *u typedef void (*Ewk_Vibration_Client_Vibration_Cancel_Cb)(void *user_data); /** + * @typedef Ewk_History_Navigation_Cb Ewk_History_Navigation_Cb + * @brief Type definition for a function that will be called back when @a view did navigation (loaded new URL). + */ +typedef void (*Ewk_History_Navigation_Cb)(const Evas_Object *view, Ewk_Navigation_Data *navigation_data, void *user_data); + +/** + * @typedef Ewk_History_Client_Redirection_Cb Ewk_History_Client_Redirection_Cb + * @brief Type definition for a function that will be called back when @a view performed a client redirect. + */ +typedef void (*Ewk_History_Client_Redirection_Cb)(const Evas_Object *view, const char *source_url, const char *destination_url, void *user_data); + +/** + * @typedef Ewk_History_Server_Redirection_Cb Ewk_History_Server_Redirection_Cb + * @brief Type definition for a function that will be called back when @a view performed a server redirect. + */ +typedef void (*Ewk_History_Server_Redirection_Cb)(const Evas_Object *view, const char *source_url, const char *destination_url, void *user_data); + +/** + * @typedef Ewk_History_Title_Update_Cb Ewk_History_Title_Update_Cb + * @brief Type definition for a function that will be called back when history title is updated. + */ +typedef void (*Ewk_History_Title_Update_Cb)(const Evas_Object *view, const char *title, const char *url, void *user_data); + +/** + * @typedef Ewk_Context_History_Client_Visited_Links_Populate_Cb Ewk_Context_History_Client_Visited_Links_Populate_Cb + * @brief Type definition for a function that will be called back when client is asked to provide visited links from a client-managed storage. + * + * @see ewk_context_visited_link_add + */ +typedef void (*Ewk_History_Populate_Visited_Links_Cb)(void *user_data); + +/** * Increases the reference count of the given object. * * @param context context object to increase the reference count @@ -147,7 +180,7 @@ EAPI Ewk_Cookie_Manager *ewk_context_cookie_manager_get(const Ewk_Context *conte * @param user_data data to pass to callback function * * @code - * static void about_uri_scheme_request_cb(Ewk_Url_Scheme_Request *request, void *user_data) + * static void about_url_scheme_request_cb(Ewk_Url_Scheme_Request *request, void *user_data) * { * const char *path; * char *contents_data = NULL; @@ -172,7 +205,7 @@ EAPI Ewk_Cookie_Manager *ewk_context_cookie_manager_get(const Ewk_Context *conte * } * @endcode */ -EAPI Eina_Bool ewk_context_uri_scheme_register(Ewk_Context *context, const char *scheme, Ewk_Url_Scheme_Request_Cb callback, void *user_data); +EAPI Eina_Bool ewk_context_url_scheme_register(Ewk_Context *context, const char *scheme, Ewk_Url_Scheme_Request_Cb callback, void *user_data); /** * Sets vibration client callbacks to handle the tactile feedback in the form of @@ -190,6 +223,41 @@ EAPI Eina_Bool ewk_context_uri_scheme_register(Ewk_Context *context, const char */ EAPI void ewk_context_vibration_client_callbacks_set(Ewk_Context *context, Ewk_Vibration_Client_Vibrate_Cb vibrate, Ewk_Vibration_Client_Vibration_Cancel_Cb cancel, void *data); +/** + * Sets history callbacks for the given @a context. + * + * To stop listening for history events, you may call this function with @c + * NULL for the callbacks. + * + * @param context context object to set history callbacks + * @param navigate_func The function to call when @c ewk_view did navigation (may be @c NULL). + * @param client_redirect_func The function to call when @c ewk_view performed a client redirect (may be @c NULL). + * @param server_redirect_func The function to call when @c ewk_view performed a server redirect (may be @c NULL). + * @param title_update_func The function to call when history title is updated (may be @c NULL). + * @param populate_visited_links_func The function is called when client is asked to provide visited links from a + * client-managed storage (may be @c NULL). + * @param data User data (may be @c NULL). + */ +EAPI void ewk_context_history_callbacks_set(Ewk_Context *context, + Ewk_History_Navigation_Cb navigate_func, + Ewk_History_Client_Redirection_Cb client_redirect_func, + Ewk_History_Server_Redirection_Cb server_redirect_func, + Ewk_History_Title_Update_Cb title_update_func, + Ewk_History_Populate_Visited_Links_Cb populate_visited_links_func, + void *data); + +/** + * Registers the given @a visited_url as visited link in @a context visited link cache. + * + * This function shall be invoked as a response to @c populateVisitedLinks callback of the history cient. + * + * @param context context object to add visited link data + * @param visited_url visited url + * + * @see Ewk_Context_History_Client + */ +EAPI void ewk_context_visited_link_add(Ewk_Context *context, const char *visited_url); + #ifdef __cplusplus } #endif diff --git a/Source/WebKit2/UIProcess/API/efl/ewk_context_download_client.cpp b/Source/WebKit2/UIProcess/API/efl/ewk_context_download_client.cpp index 9d924bff2..2bbb7ef0f 100644 --- a/Source/WebKit2/UIProcess/API/efl/ewk_context_download_client.cpp +++ b/Source/WebKit2/UIProcess/API/efl/ewk_context_download_client.cpp @@ -33,11 +33,10 @@ #include "ewk_context_private.h" #include "ewk_download_job.h" #include "ewk_download_job_private.h" +#include "ewk_error_private.h" #include "ewk_url_response.h" #include "ewk_url_response_private.h" #include "ewk_view_private.h" -#include "ewk_web_error.h" -#include "ewk_web_error_private.h" #include <string.h> #include <wtf/text/CString.h> @@ -59,7 +58,7 @@ static WKStringRef decideDestinationWithSuggestedFilename(WKContextRef, WKDownlo // and the suggested file name. ewk_view_download_job_requested(ewk_download_job_view_get(download), download); - // DownloadSoup expects the destination to be a URI. + // DownloadSoup expects the destination to be a URL. String destination = String("file://") + String::fromUTF8(ewk_download_job_destination_get(download)); return WKStringCreateWithUTF8CString(destination.utf8().data()); @@ -95,10 +94,10 @@ static void didFail(WKContextRef, WKDownloadRef wkDownload, WKErrorRef error, co Ewk_Download_Job* download = ewk_context_download_job_get(toEwkContext(clientInfo), downloadId); ASSERT(download); - Ewk_Web_Error* ewkError = ewk_web_error_new(error); + Ewk_Error* ewkError = ewk_error_new(error); ewk_download_job_state_set(download, EWK_DOWNLOAD_JOB_STATE_FAILED); ewk_view_download_job_failed(ewk_download_job_view_get(download), download, ewkError); - ewk_web_error_free(ewkError); + ewk_error_free(ewkError); ewk_context_download_job_remove(toEwkContext(clientInfo), downloadId); } diff --git a/Source/WebKit2/UIProcess/API/efl/ewk_context_history_client.cpp b/Source/WebKit2/UIProcess/API/efl/ewk_context_history_client.cpp new file mode 100644 index 000000000..fd1b83aae --- /dev/null +++ b/Source/WebKit2/UIProcess/API/efl/ewk_context_history_client.cpp @@ -0,0 +1,130 @@ +/* + * 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 "ewk_context.h" + +#include "DownloadProxy.h" +#include "WKAPICast.h" +#include "WKContext.h" +#include "WKEinaSharedString.h" +#include "WKString.h" +#include "ewk_context_history_client_private.h" +#include "ewk_context_private.h" +#include "ewk_navigation_data.h" +#include "ewk_navigation_data_private.h" +#include "ewk_url_response.h" +#include "ewk_url_response_private.h" +#include "ewk_view_private.h" + +using namespace WebKit; + +static inline const Ewk_Context_History_Client* getEwkHistoryDelegate(const void* clientInfo) +{ + ASSERT(clientInfo); + return ewk_context_history_client_get(static_cast<const Ewk_Context*>(clientInfo)); +} + +static void didNavigateWithNavigationData(WKContextRef, WKPageRef page, WKNavigationDataRef navigationData, WKFrameRef, const void* clientInfo) +{ + const Ewk_Context_History_Client* historyDelegate = getEwkHistoryDelegate(clientInfo); + ASSERT(historyDelegate); + + if (!historyDelegate->navigate_func) + return; + + RefPtr<Ewk_Navigation_Data> navigationDataEwk = adoptRef(ewk_navigation_data_new(navigationData)); + historyDelegate->navigate_func(ewk_view_from_page_get(toImpl(page)), navigationDataEwk.get(), historyDelegate->user_data); +} + +static void didPerformClientRedirect(WKContextRef, WKPageRef page, WKURLRef sourceURL, WKURLRef destinationURL, WKFrameRef, const void* clientInfo) +{ + const Ewk_Context_History_Client* historyDelegate = getEwkHistoryDelegate(clientInfo); + ASSERT(historyDelegate); + + if (!historyDelegate->client_redirect_func) + return; + + WKEinaSharedString sourceURLString(sourceURL); + WKEinaSharedString destinationURLString(destinationURL); + + historyDelegate->client_redirect_func(ewk_view_from_page_get(toImpl(page)), sourceURLString, destinationURLString, historyDelegate->user_data); +} + +static void didPerformServerRedirect(WKContextRef, WKPageRef page, WKURLRef sourceURL, WKURLRef destinationURL, WKFrameRef, const void* clientInfo) +{ + const Ewk_Context_History_Client* historyDelegate = getEwkHistoryDelegate(clientInfo); + ASSERT(historyDelegate); + + if (!historyDelegate->server_redirect_func) + return; + + WKEinaSharedString sourceURLString(sourceURL); + WKEinaSharedString destinationURLString(destinationURL); + + historyDelegate->server_redirect_func(ewk_view_from_page_get(toImpl(page)), sourceURLString, destinationURLString, historyDelegate->user_data); +} + +static void didUpdateHistoryTitle(WKContextRef, WKPageRef page, WKStringRef title, WKURLRef URL, WKFrameRef, const void* clientInfo) +{ + const Ewk_Context_History_Client* historyDelegate = getEwkHistoryDelegate(clientInfo); + ASSERT(historyDelegate); + + if (!historyDelegate->title_update_func) + return; + + WKEinaSharedString titleString(title); + WKEinaSharedString stringURL(URL); + + historyDelegate->title_update_func(ewk_view_from_page_get(toImpl(page)), titleString, stringURL, historyDelegate->user_data); +} + +static void populateVisitedLinks(WKContextRef, const void* clientInfo) +{ + const Ewk_Context_History_Client* historyDelegate = getEwkHistoryDelegate(clientInfo); + ASSERT(historyDelegate); + + if (!historyDelegate->populate_visited_links_func) + return; + + historyDelegate->populate_visited_links_func(historyDelegate->user_data); +} + +void ewk_context_history_client_attach(Ewk_Context* ewkContext) +{ + WKContextHistoryClient wkHistoryClient; + memset(&wkHistoryClient, 0, sizeof(WKContextHistoryClient)); + + wkHistoryClient.version = kWKContextHistoryClientCurrentVersion; + wkHistoryClient.clientInfo = ewkContext; + + wkHistoryClient.didNavigateWithNavigationData = didNavigateWithNavigationData; + wkHistoryClient.didPerformClientRedirect = didPerformClientRedirect; + wkHistoryClient.didPerformServerRedirect = didPerformServerRedirect; + wkHistoryClient.didUpdateHistoryTitle = didUpdateHistoryTitle; + wkHistoryClient.populateVisitedLinks = populateVisitedLinks; + + WKContextSetHistoryClient(ewk_context_WKContext_get(ewkContext), &wkHistoryClient); +} diff --git a/Source/WebKit2/UIProcess/API/efl/ewk_context_history_client_private.h b/Source/WebKit2/UIProcess/API/efl/ewk_context_history_client_private.h new file mode 100644 index 000000000..d9518ced9 --- /dev/null +++ b/Source/WebKit2/UIProcess/API/efl/ewk_context_history_client_private.h @@ -0,0 +1,44 @@ +/* + * 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. + */ + +#ifndef ewk_context_history_client_private_h +#define ewk_context_history_client_private_h + +#include "ewk_context.h" + +struct _Ewk_Context_History_Client { + void* user_data; + Ewk_History_Navigation_Cb navigate_func; + Ewk_History_Client_Redirection_Cb client_redirect_func; + Ewk_History_Server_Redirection_Cb server_redirect_func; + Ewk_History_Title_Update_Cb title_update_func; + Ewk_History_Populate_Visited_Links_Cb populate_visited_links_func; +}; + +typedef struct _Ewk_Context_History_Client Ewk_Context_History_Client; + +void ewk_context_history_client_attach(Ewk_Context*); + +#endif // ewk_context_history_client_private_h diff --git a/Source/WebKit2/UIProcess/API/efl/ewk_context_private.h b/Source/WebKit2/UIProcess/API/efl/ewk_context_private.h index d1b695e0c..f2c322a61 100644 --- a/Source/WebKit2/UIProcess/API/efl/ewk_context_private.h +++ b/Source/WebKit2/UIProcess/API/efl/ewk_context_private.h @@ -25,6 +25,7 @@ typedef struct _Ewk_Context Ewk_Context; typedef struct _Ewk_Download_Job Ewk_Download_Job; typedef struct _Ewk_Url_Scheme_Request Ewk_Url_Scheme_Request; +typedef struct _Ewk_Context_History_Client Ewk_Context_History_Client; WKContextRef ewk_context_WKContext_get(const Ewk_Context*); Ewk_Context* ewk_context_new_from_WKContext(WKContextRef); @@ -35,4 +36,6 @@ void ewk_context_download_job_add(Ewk_Context*, Ewk_Download_Job*); Ewk_Download_Job* ewk_context_download_job_get(const Ewk_Context*, uint64_t downloadId); void ewk_context_download_job_remove(Ewk_Context*, uint64_t downloadId); +const Ewk_Context_History_Client* ewk_context_history_client_get(const Ewk_Context*); + #endif // ewk_context_private_h diff --git a/Source/WebKit2/UIProcess/API/efl/ewk_context_request_manager_client.cpp b/Source/WebKit2/UIProcess/API/efl/ewk_context_request_manager_client.cpp index b22bd36ff..5a7707229 100644 --- a/Source/WebKit2/UIProcess/API/efl/ewk_context_request_manager_client.cpp +++ b/Source/WebKit2/UIProcess/API/efl/ewk_context_request_manager_client.cpp @@ -37,7 +37,7 @@ static inline Ewk_Context* toEwkContext(const void* clientInfo) return static_cast<Ewk_Context*>(const_cast<void*>(clientInfo)); } -static void didReceiveURIRequest(WKSoupRequestManagerRef soupRequestManagerRef, WKURLRef urlRef, uint64_t requestID, const void* clientInfo) +static void didReceiveURIRequest(WKSoupRequestManagerRef soupRequestManagerRef, WKURLRef urlRef, WKPageRef, uint64_t requestID, const void* clientInfo) { Ewk_Url_Scheme_Request* schemeRequest = ewk_url_scheme_request_new(soupRequestManagerRef, urlRef, requestID); ewk_context_url_scheme_request_received(toEwkContext(clientInfo), schemeRequest); diff --git a/Source/WebKit2/UIProcess/API/efl/ewk_cookie_manager.cpp b/Source/WebKit2/UIProcess/API/efl/ewk_cookie_manager.cpp index 45dd75e63..a52047336 100644 --- a/Source/WebKit2/UIProcess/API/efl/ewk_cookie_manager.cpp +++ b/Source/WebKit2/UIProcess/API/efl/ewk_cookie_manager.cpp @@ -33,8 +33,8 @@ #include "WKRetainPtr.h" #include "WKString.h" #include "WebCookieManagerProxy.h" +#include "ewk_error_private.h" #include "ewk_private.h" -#include "ewk_web_error_private.h" #include <wtf/text/CString.h> #include <wtf/text/WTFString.h> @@ -142,12 +142,12 @@ struct Get_Policy_Async_Data { static void getAcceptPolicyCallback(WKHTTPCookieAcceptPolicy policy, WKErrorRef wkError, void* data) { Get_Policy_Async_Data* callbackData = static_cast<Get_Policy_Async_Data*>(data); - Ewk_Web_Error* ewkError = wkError ? ewk_web_error_new(wkError) : 0; + Ewk_Error* ewkError = wkError ? ewk_error_new(wkError) : 0; callbackData->callback(static_cast<Ewk_Cookie_Accept_Policy>(policy), ewkError, callbackData->userData); if (ewkError) - ewk_web_error_free(ewkError); + ewk_error_free(ewkError); delete callbackData; } @@ -172,7 +172,7 @@ static void getHostnamesWithCookiesCallback(WKArrayRef wkHostnames, WKErrorRef w { Eina_List* hostnames = 0; Get_Hostnames_Async_Data* callbackData = static_cast<Get_Hostnames_Async_Data*>(context); - Ewk_Web_Error* ewkError = wkError ? ewk_web_error_new(wkError) : 0; + Ewk_Error* ewkError = wkError ? ewk_error_new(wkError) : 0; const size_t hostnameCount = WKArrayGetSize(wkHostnames); for (size_t i = 0; i < hostnameCount; ++i) { @@ -189,7 +189,7 @@ static void getHostnamesWithCookiesCallback(WKArrayRef wkHostnames, WKErrorRef w EINA_LIST_FREE(hostnames, item) eina_stringshare_del(static_cast<Eina_Stringshare*>(item)); if (ewkError) - ewk_web_error_free(ewkError); + ewk_error_free(ewkError); delete callbackData; } diff --git a/Source/WebKit2/UIProcess/API/efl/ewk_cookie_manager.h b/Source/WebKit2/UIProcess/API/efl/ewk_cookie_manager.h index e37780864..c31b90018 100644 --- a/Source/WebKit2/UIProcess/API/efl/ewk_cookie_manager.h +++ b/Source/WebKit2/UIProcess/API/efl/ewk_cookie_manager.h @@ -31,7 +31,7 @@ #ifndef ewk_cookie_manager_h #define ewk_cookie_manager_h -#include "ewk_web_error.h" +#include "ewk_error.h" #include <Eina.h> #ifdef __cplusplus @@ -77,7 +77,7 @@ typedef enum _Ewk_Cookie_Persistent_Storage Ewk_Cookie_Persistent_Storage; * @typedef Ewk_Cookie_Manager_Async_Policy_Get_Cb Ewk_Cookie_Manager_Async_Policy_Get_Cb * @brief Callback type for use with ewk_cookie_manager_async_accept_policy_get */ -typedef void (*Ewk_Cookie_Manager_Async_Policy_Get_Cb)(Ewk_Cookie_Accept_Policy policy, Ewk_Web_Error *error, void *event_info); +typedef void (*Ewk_Cookie_Manager_Async_Policy_Get_Cb)(Ewk_Cookie_Accept_Policy policy, Ewk_Error *error, void *event_info); /** * @typedef Ewk_Cookie_Manager_Async_Hostnames_Get_Cb Ewk_Cookie_Manager_Async_Hostnames_Get_Cb @@ -87,7 +87,7 @@ typedef void (*Ewk_Cookie_Manager_Async_Policy_Get_Cb)(Ewk_Cookie_Accept_Policy * save yourself some cpu cycles and use eina_stringshare_ref() instead of eina_stringshare_add() * or strdup(). */ -typedef void (*Ewk_Cookie_Manager_Async_Hostnames_Get_Cb)(Eina_List* hostnames, Ewk_Web_Error *error, void *event_info); +typedef void (*Ewk_Cookie_Manager_Async_Hostnames_Get_Cb)(Eina_List *hostnames, Ewk_Error *error, void *event_info); /** * @typedef Ewk_Cookie_Manager_Changes_Watch_Cb Ewk_Cookie_Manager_Changes_Watch_Cb diff --git a/Source/WebKit2/UIProcess/API/efl/ewk_download_job.cpp b/Source/WebKit2/UIProcess/API/efl/ewk_download_job.cpp index 61297920b..15a95b05f 100644 --- a/Source/WebKit2/UIProcess/API/efl/ewk_download_job.cpp +++ b/Source/WebKit2/UIProcess/API/efl/ewk_download_job.cpp @@ -46,7 +46,7 @@ struct _Ewk_Download_Job { DownloadProxy* downloadProxy; Evas_Object* view; Ewk_Download_Job_State state; - Ewk_Url_Request* request; + RefPtr<Ewk_Url_Request> request; Ewk_Url_Response* response; double startTime; double endTime; @@ -59,7 +59,6 @@ struct _Ewk_Download_Job { , downloadProxy(download) , view(ewkView) , state(EWK_DOWNLOAD_JOB_STATE_NOT_STARTED) - , request(0) , response(0) , startTime(-1) , endTime(-1) @@ -69,8 +68,6 @@ struct _Ewk_Download_Job { ~_Ewk_Download_Job() { ASSERT(!__ref); - if (request) - ewk_url_request_unref(request); if (response) ewk_url_response_unref(response); } @@ -133,10 +130,10 @@ Ewk_Url_Request* ewk_download_job_request_get(const Ewk_Download_Job* download) if (!download->request) { EINA_SAFETY_ON_NULL_RETURN_VAL(download->downloadProxy, 0); WKRetainPtr<WKURLRequestRef> wkURLRequest(AdoptWK, toAPI(WebURLRequest::create(download->downloadProxy->request()).leakRef())); - const_cast<Ewk_Download_Job*>(download)->request = ewk_url_request_new(wkURLRequest.get()); + const_cast<Ewk_Download_Job*>(download)->request = adoptRef(ewk_url_request_new(wkURLRequest.get())); } - return download->request; + return download->request.get(); } Ewk_Url_Response* ewk_download_job_response_get(const Ewk_Download_Job* download) diff --git a/Source/WebKit2/UIProcess/API/efl/ewk_download_job.h b/Source/WebKit2/UIProcess/API/efl/ewk_download_job.h index fdcc10e98..388276c9c 100644 --- a/Source/WebKit2/UIProcess/API/efl/ewk_download_job.h +++ b/Source/WebKit2/UIProcess/API/efl/ewk_download_job.h @@ -112,7 +112,7 @@ EAPI Ewk_Url_Request *ewk_download_job_request_get(const Ewk_Download_Job *downl EAPI Ewk_Url_Response *ewk_download_job_response_get(const Ewk_Download_Job *download); /** - * Query the URI to which the downloaded file will be written. + * Query the URL to which the downloaded file will be written. * * @param download a #Ewk_Download_Job to query. * diff --git a/Source/WebKit2/UIProcess/API/efl/ewk_download_job_private.h b/Source/WebKit2/UIProcess/API/efl/ewk_download_job_private.h index d043494c3..81b544bfe 100644 --- a/Source/WebKit2/UIProcess/API/efl/ewk_download_job_private.h +++ b/Source/WebKit2/UIProcess/API/efl/ewk_download_job_private.h @@ -31,7 +31,7 @@ typedef struct _Ewk_Download_Job Ewk_Download_Job; typedef struct _Ewk_Url_Response Ewk_Url_Response; -typedef struct _Ewk_Web_Error Ewk_Web_Error; +typedef struct _Ewk_Error Ewk_Error; namespace WebKit { class DownloadProxy; diff --git a/Source/WebKit2/UIProcess/API/efl/ewk_web_error.cpp b/Source/WebKit2/UIProcess/API/efl/ewk_error.cpp index 70380bdd2..a7d576d0a 100644 --- a/Source/WebKit2/UIProcess/API/efl/ewk_web_error.cpp +++ b/Source/WebKit2/UIProcess/API/efl/ewk_error.cpp @@ -24,13 +24,13 @@ */ #include "config.h" -#include "ewk_web_error.h" +#include "ewk_error.h" #include "ErrorsEfl.h" #include "WKEinaSharedString.h" #include "WKString.h" #include "WKURL.h" -#include "ewk_web_error_private.h" +#include "ewk_error_private.h" #include <WKAPICast.h> #include <WKError.h> #include <WKRetainPtr.h> @@ -39,24 +39,24 @@ using namespace WebCore; using namespace WebKit; -struct _Ewk_Web_Error { +struct _Ewk_Error { WKRetainPtr<WKErrorRef> wkError; WKEinaSharedString url; WKEinaSharedString description; - _Ewk_Web_Error(WKErrorRef errorRef) + _Ewk_Error(WKErrorRef errorRef) : wkError(errorRef) , url(AdoptWK, WKErrorCopyFailingURL(errorRef)) , description(AdoptWK, WKErrorCopyLocalizedDescription(errorRef)) { } - ~_Ewk_Web_Error() + ~_Ewk_Error() { } }; -#define EWK_WEB_ERROR_WK_GET_OR_RETURN(error, wkError_, ...) \ +#define EWK_ERROR_WK_GET_OR_RETURN(error, wkError_, ...) \ if (!(error)) { \ EINA_LOG_CRIT("error is NULL."); \ return __VA_ARGS__; \ @@ -67,64 +67,68 @@ struct _Ewk_Web_Error { } \ WKErrorRef wkError_ = (error)->wkError.get() -void ewk_web_error_free(Ewk_Web_Error* error) +/** + * @internal + * Frees the given object. + */ +void ewk_error_free(Ewk_Error* error) { EINA_SAFETY_ON_NULL_RETURN(error); delete error; } -Ewk_Web_Error_Type ewk_web_error_type_get(const Ewk_Web_Error* error) +Ewk_Error_Type ewk_error_type_get(const Ewk_Error* error) { - EWK_WEB_ERROR_WK_GET_OR_RETURN(error, wkError, EWK_WEB_ERROR_TYPE_NONE); + EWK_ERROR_WK_GET_OR_RETURN(error, wkError, EWK_ERROR_TYPE_NONE); WKRetainPtr<WKStringRef> wkDomain(AdoptWK, WKErrorCopyDomain(wkError)); WTF::String errorDomain = toWTFString(wkDomain.get()); if (errorDomain == errorDomainNetwork) - return EWK_WEB_ERROR_TYPE_NETWORK; + return EWK_ERROR_TYPE_NETWORK; if (errorDomain == errorDomainPolicy) - return EWK_WEB_ERROR_TYPE_POLICY; + return EWK_ERROR_TYPE_POLICY; if (errorDomain == errorDomainPlugin) - return EWK_WEB_ERROR_TYPE_PLUGIN; + return EWK_ERROR_TYPE_PLUGIN; if (errorDomain == errorDomainDownload) - return EWK_WEB_ERROR_TYPE_DOWNLOAD; + return EWK_ERROR_TYPE_DOWNLOAD; if (errorDomain == errorDomainPrint) - return EWK_WEB_ERROR_TYPE_PRINT; - return EWK_WEB_ERROR_TYPE_INTERNAL; + return EWK_ERROR_TYPE_PRINT; + return EWK_ERROR_TYPE_INTERNAL; } -const char* ewk_web_error_url_get(const Ewk_Web_Error* error) +const char* ewk_error_url_get(const Ewk_Error* error) { EINA_SAFETY_ON_NULL_RETURN_VAL(error, 0); return error->url; } -int ewk_web_error_code_get(const Ewk_Web_Error* error) +int ewk_error_code_get(const Ewk_Error* error) { - EWK_WEB_ERROR_WK_GET_OR_RETURN(error, wkError, 0); + EWK_ERROR_WK_GET_OR_RETURN(error, wkError, 0); return WKErrorGetErrorCode(wkError); } -const char* ewk_web_error_description_get(const Ewk_Web_Error* error) +const char* ewk_error_description_get(const Ewk_Error* error) { EINA_SAFETY_ON_NULL_RETURN_VAL(error, 0); return error->description; } -Eina_Bool ewk_web_error_cancellation_get(const Ewk_Web_Error* error) +Eina_Bool ewk_error_cancellation_get(const Ewk_Error* error) { - EWK_WEB_ERROR_WK_GET_OR_RETURN(error, wkError, false); + EWK_ERROR_WK_GET_OR_RETURN(error, wkError, false); return toImpl(wkError)->platformError().isCancellation(); } -Ewk_Web_Error* ewk_web_error_new(WKErrorRef error) +Ewk_Error* ewk_error_new(WKErrorRef error) { EINA_SAFETY_ON_NULL_RETURN_VAL(error, 0); - return new Ewk_Web_Error(error); + return new Ewk_Error(error); } diff --git a/Source/WebKit2/UIProcess/API/efl/ewk_web_error.h b/Source/WebKit2/UIProcess/API/efl/ewk_error.h index 4ba0c7acd..01214d121 100644 --- a/Source/WebKit2/UIProcess/API/efl/ewk_web_error.h +++ b/Source/WebKit2/UIProcess/API/efl/ewk_error.h @@ -24,12 +24,12 @@ */ /** - * @file ewk_web_error.h + * @file ewk_error.h * @brief Describes the Web Error API. */ -#ifndef ewk_web_error_h -#define ewk_web_error_h +#ifndef ewk_error_h +#define ewk_error_h #include <Eina.h> @@ -37,26 +37,19 @@ extern "C" { #endif -/** Creates a type name for @a Ewk_Web_Error. */ -typedef struct _Ewk_Web_Error Ewk_Web_Error; +/** Creates a type name for @a Ewk_Error. */ +typedef struct _Ewk_Error Ewk_Error; -/// Creates a type name for Ewk_Web_Error_Type. +/// Creates a type name for Ewk_Error_Type. typedef enum { - EWK_WEB_ERROR_TYPE_NONE, - EWK_WEB_ERROR_TYPE_INTERNAL, - EWK_WEB_ERROR_TYPE_NETWORK, - EWK_WEB_ERROR_TYPE_POLICY, - EWK_WEB_ERROR_TYPE_PLUGIN, - EWK_WEB_ERROR_TYPE_DOWNLOAD, - EWK_WEB_ERROR_TYPE_PRINT -} Ewk_Web_Error_Type; - -/** - * Frees the given object. - * - * @param error the error object to free - */ -EAPI void ewk_web_error_free(Ewk_Web_Error *error); + EWK_ERROR_TYPE_NONE, + EWK_ERROR_TYPE_INTERNAL, + EWK_ERROR_TYPE_NETWORK, + EWK_ERROR_TYPE_POLICY, + EWK_ERROR_TYPE_PLUGIN, + EWK_ERROR_TYPE_DOWNLOAD, + EWK_ERROR_TYPE_PRINT +} Ewk_Error_Type; /** * Query type for this error. @@ -69,7 +62,7 @@ EAPI void ewk_web_error_free(Ewk_Web_Error *error); * eina_stringshare_ref() instead of eina_stringshare_add() or * strdup(). */ -EAPI Ewk_Web_Error_Type ewk_web_error_type_get(const Ewk_Web_Error *error); +EAPI Ewk_Error_Type ewk_error_type_get(const Ewk_Error *error); /** * Query failing URL for this error. @@ -84,7 +77,7 @@ EAPI Ewk_Web_Error_Type ewk_web_error_type_get(const Ewk_Web_Error *error); * eina_stringshare_ref() instead of eina_stringshare_add() or * strdup(). */ -EAPI const char *ewk_web_error_url_get(const Ewk_Web_Error *error); +EAPI const char *ewk_error_url_get(const Ewk_Error *error); /** * Query HTTP error code. @@ -93,7 +86,7 @@ EAPI const char *ewk_web_error_url_get(const Ewk_Web_Error *error); * * @return the HTTP error code. */ -EAPI int ewk_web_error_code_get(const Ewk_Web_Error *error); +EAPI int ewk_error_code_get(const Ewk_Error *error); /** * Query description for this error. @@ -106,7 +99,7 @@ EAPI int ewk_web_error_code_get(const Ewk_Web_Error *error); * eina_stringshare_ref() instead of eina_stringshare_add() or * strdup(). */ -EAPI const char *ewk_web_error_description_get(const Ewk_Web_Error *error); +EAPI const char *ewk_error_description_get(const Ewk_Error *error); /** * Query if error should be treated as a cancellation. @@ -115,10 +108,10 @@ EAPI const char *ewk_web_error_description_get(const Ewk_Web_Error *error); * * @return @c EINA_TRUE if this error should be treated as a cancellation, @c EINA_FALSE otherwise */ -EAPI Eina_Bool ewk_web_error_cancellation_get(const Ewk_Web_Error *error); +EAPI Eina_Bool ewk_error_cancellation_get(const Ewk_Error *error); #ifdef __cplusplus } #endif -#endif // ewk_web_error_h +#endif // ewk_error_h diff --git a/Source/WebKit2/UIProcess/API/efl/ewk_web_error_private.h b/Source/WebKit2/UIProcess/API/efl/ewk_error_private.h index c9a31e50a..2f01988c2 100644 --- a/Source/WebKit2/UIProcess/API/efl/ewk_web_error_private.h +++ b/Source/WebKit2/UIProcess/API/efl/ewk_error_private.h @@ -23,13 +23,14 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ -#ifndef ewk_web_error_private_h -#define ewk_web_error_private_h +#ifndef ewk_error_private_h +#define ewk_error_private_h #include <WKError.h> -typedef struct _Ewk_Web_Error Ewk_Web_Error; +typedef struct _Ewk_Error Ewk_Error; -Ewk_Web_Error* ewk_web_error_new(WKErrorRef error); +Ewk_Error* ewk_error_new(WKErrorRef error); +void ewk_error_free(Ewk_Error* error); -#endif // ewk_web_error_private_h +#endif // ewk_error_private_h diff --git a/Source/WebKit2/UIProcess/API/efl/ewk_main.cpp b/Source/WebKit2/UIProcess/API/efl/ewk_main.cpp index fcc9faf1a..17e2b1eea 100644 --- a/Source/WebKit2/UIProcess/API/efl/ewk_main.cpp +++ b/Source/WebKit2/UIProcess/API/efl/ewk_main.cpp @@ -31,6 +31,10 @@ #include <glib-object.h> #include <glib.h> +#ifdef HAVE_ECORE_X +#include <Ecore_X.h> +#endif + static int _ewkInitCount = 0; /** @@ -68,6 +72,13 @@ int ewk_init(void) goto error_ecore_evas; } +#ifdef HAVE_ECORE_X + if (!ecore_x_init(0)) { + CRITICAL("could not init ecore_x."); + goto error_ecore_x; + } +#endif + g_type_init(); if (!ecore_main_loop_glib_integrate()) { @@ -77,6 +88,10 @@ int ewk_init(void) return ++_ewkInitCount; +#ifdef HAVE_ECORE_X +error_ecore_x: + ecore_evas_shutdown(); +#endif error_ecore_evas: ecore_shutdown(); error_ecore: @@ -95,6 +110,9 @@ int ewk_shutdown(void) if (--_ewkInitCount) return _ewkInitCount; +#ifdef HAVE_ECORE_X + ecore_x_shutdown(); +#endif ecore_evas_shutdown(); ecore_shutdown(); evas_shutdown(); diff --git a/Source/WebKit2/UIProcess/API/efl/ewk_navigation_data.cpp b/Source/WebKit2/UIProcess/API/efl/ewk_navigation_data.cpp new file mode 100644 index 000000000..27a51f083 --- /dev/null +++ b/Source/WebKit2/UIProcess/API/efl/ewk_navigation_data.cpp @@ -0,0 +1,76 @@ +/* + * 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 "ewk_navigation_data.h" + +#include "ewk_navigation_data_private.h" + +using namespace WebKit; + +Ewk_Navigation_Data* ewk_navigation_data_ref(Ewk_Navigation_Data* data) +{ + EINA_SAFETY_ON_NULL_RETURN_VAL(data, 0); + + data->ref(); + + return data; +} + +void ewk_navigation_data_unref(Ewk_Navigation_Data* data) +{ + EINA_SAFETY_ON_NULL_RETURN(data); + + data->deref(); +} + +const char* ewk_navigation_data_title_get(const Ewk_Navigation_Data* data) +{ + EINA_SAFETY_ON_NULL_RETURN_VAL(data, 0); + + return data->title; +} + +Ewk_Url_Request* ewk_navigation_data_original_request_get(const Ewk_Navigation_Data* data) +{ + EINA_SAFETY_ON_NULL_RETURN_VAL(data, 0); + + return data->request.get(); +} + +const char* ewk_navigation_data_url_get(const Ewk_Navigation_Data* data) +{ + EINA_SAFETY_ON_NULL_RETURN_VAL(data, 0); + + return data->url; +} + +Ewk_Navigation_Data* ewk_navigation_data_new(WKNavigationDataRef dataRef) +{ + ASSERT(dataRef); + EINA_SAFETY_ON_NULL_RETURN_VAL(dataRef, 0); + + return new Ewk_Navigation_Data(dataRef); +} diff --git a/Source/WebKit2/UIProcess/API/efl/ewk_navigation_data.h b/Source/WebKit2/UIProcess/API/efl/ewk_navigation_data.h new file mode 100644 index 000000000..1a1e60732 --- /dev/null +++ b/Source/WebKit2/UIProcess/API/efl/ewk_navigation_data.h @@ -0,0 +1,105 @@ +/* + * 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. + */ + +/** + * @file ewk_navigation_data.h + * @brief Describes the Ewk navigation data API. + */ + +#ifndef ewk_navigation_data_h +#define ewk_navigation_data_h + +#include "ewk_url_request.h" +#include <Eina.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/** Creates a type name for _Ewk_Navigation_Data */ +typedef struct _Ewk_Navigation_Data Ewk_Navigation_Data; + +/** + * Increases the reference count of the given object. + * + * @param data the navigation data object to increase the reference count + * + * @return a pointer to the object on success, @c NULL otherwise. + */ +EAPI Ewk_Navigation_Data *ewk_navigation_data_ref(Ewk_Navigation_Data *data); + +/** + * Decreases the reference count of the given object, possibly freeing it. + * + * When the reference count reaches 0, the object is freed. + * + * @param data the navigation data object to decrease the reference count + */ +EAPI void ewk_navigation_data_unref(Ewk_Navigation_Data *data); + +/** + * Returns title for this navigation data. + * + * The title of the navigated page. + * + * @param data navigation data object to query + * + * @return the title or @c NULL in case of error. This pointer is + * guaranteed to be eina_stringshare, so whenever possible + * save yourself some cpu cycles and use + * eina_stringshare_ref() instead of eina_stringshare_add() or + * strdup(). + */ +EAPI const char *ewk_navigation_data_title_get(const Ewk_Navigation_Data *data); + +/** + * Returns the original request for this navigation data. + * + * @param data navigation data object to query + * + * @return The URL request pointer or @c NULL in case of error. + */ +EAPI Ewk_Url_Request *ewk_navigation_data_original_request_get(const Ewk_Navigation_Data *data); + +/** + * Returns URL for this navigation data. + * + * The URL of the navigated page. + * + * @param data navigation data object to query + * + * @return the URL of the @a data or @c NULL in case of error. This pointer is + * guaranteed to be eina_stringshare, so whenever possible + * save yourself some cpu cycles and use + * eina_stringshare_ref() instead of eina_stringshare_add() or + * strdup() + */ +EAPI const char *ewk_navigation_data_url_get(const Ewk_Navigation_Data *data); + +#ifdef __cplusplus +} +#endif + +#endif // ewk_navigation_data_h diff --git a/Source/WebKit2/UIProcess/API/efl/ewk_navigation_data_private.h b/Source/WebKit2/UIProcess/API/efl/ewk_navigation_data_private.h new file mode 100644 index 000000000..6e42dc629 --- /dev/null +++ b/Source/WebKit2/UIProcess/API/efl/ewk_navigation_data_private.h @@ -0,0 +1,58 @@ +/* + * 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. + */ + +#ifndef ewk_navigation_data_private_h +#define ewk_navigation_data_private_h + +#include "WKAPICast.h" +#include "WKEinaSharedString.h" +#include "WKNavigationData.h" +#include "WKRetainPtr.h" +#include "ewk_private.h" +#include "ewk_url_request_private.h" + +/** + * \struct _Ewk_Navigation_Data + * @brief Contains the navigation data details. + */ +struct _Ewk_Navigation_Data : public RefCounted<_Ewk_Navigation_Data> { + WKEinaSharedString title; + WKEinaSharedString url; + RefPtr<Ewk_Url_Request> request; + + _Ewk_Navigation_Data(WKNavigationDataRef dataRef) + : title(AdoptWK, WKNavigationDataCopyTitle(dataRef)) + , url(AdoptWK, WKNavigationDataCopyURL(dataRef)) + { + WKRetainPtr<WKURLRequestRef> requestWK(AdoptWK, WKNavigationDataCopyOriginalRequest(dataRef)); + request = adoptRef(ewk_url_request_new(requestWK.get())); + } +}; + +typedef struct _Ewk_Navigation_Data Ewk_Navigation_Data; + +Ewk_Navigation_Data* ewk_navigation_data_new(WKNavigationDataRef dataRef); + +#endif // ewk_navigation_data_private_h diff --git a/Source/WebKit2/UIProcess/API/efl/ewk_navigation_policy_decision.cpp b/Source/WebKit2/UIProcess/API/efl/ewk_navigation_policy_decision.cpp index d46805faa..6ebbebb5c 100644 --- a/Source/WebKit2/UIProcess/API/efl/ewk_navigation_policy_decision.cpp +++ b/Source/WebKit2/UIProcess/API/efl/ewk_navigation_policy_decision.cpp @@ -47,10 +47,10 @@ struct _Ewk_Navigation_Policy_Decision { Ewk_Navigation_Type navigationType; Event_Mouse_Button mouseButton; Event_Modifier_Keys modifiers; - Ewk_Url_Request* request; + RefPtr<Ewk_Url_Request> request; WKEinaSharedString frameName; - _Ewk_Navigation_Policy_Decision(WKFramePolicyListenerRef _listener, Ewk_Navigation_Type _navigationType, Event_Mouse_Button _mouseButton, Event_Modifier_Keys _modifiers, Ewk_Url_Request* _request, const char* _frameName) + _Ewk_Navigation_Policy_Decision(WKFramePolicyListenerRef _listener, Ewk_Navigation_Type _navigationType, Event_Mouse_Button _mouseButton, Event_Modifier_Keys _modifiers, PassRefPtr<Ewk_Url_Request> _request, const char* _frameName) : __ref(1) , listener(_listener) , actedUponByClient(false) @@ -68,8 +68,6 @@ struct _Ewk_Navigation_Policy_Decision { // This is the default choice for all policy decisions in WebPageProxy.cpp. if (!actedUponByClient) WKFramePolicyListenerUse(listener.get()); - - ewk_url_request_unref(request); } }; @@ -124,7 +122,7 @@ Ewk_Url_Request* ewk_navigation_policy_request_get(const Ewk_Navigation_Policy_D { EINA_SAFETY_ON_NULL_RETURN_VAL(decision, 0); - return decision->request; + return decision->request.get(); } void ewk_navigation_policy_decision_accept(Ewk_Navigation_Policy_Decision* decision) @@ -177,6 +175,6 @@ Ewk_Navigation_Policy_Decision* ewk_navigation_policy_decision_new(WKFrameNaviga static_cast<Ewk_Navigation_Type>(navigationType), static_cast<Event_Mouse_Button>(mouseButton), static_cast<Event_Modifier_Keys>(modifiers), - ewk_url_request_new(request), + adoptRef(ewk_url_request_new(request)), frameName); } diff --git a/Source/WebKit2/UIProcess/API/efl/ewk_web_resource.cpp b/Source/WebKit2/UIProcess/API/efl/ewk_resource.cpp index 89879eead..aaa7e98e7 100644 --- a/Source/WebKit2/UIProcess/API/efl/ewk_web_resource.cpp +++ b/Source/WebKit2/UIProcess/API/efl/ewk_resource.cpp @@ -24,30 +24,30 @@ */ #include "config.h" -#include "ewk_web_resource.h" +#include "ewk_resource.h" #include "WKEinaSharedString.h" -#include "ewk_web_resource_private.h" +#include "ewk_resource_private.h" #include <wtf/text/CString.h> -struct _Ewk_Web_Resource { - unsigned int __ref; /**< the reference count of the object */ +struct _Ewk_Resource { + unsigned __ref; /**< the reference count of the object */ WKEinaSharedString url; bool isMainResource; - _Ewk_Web_Resource(const char* url, bool isMainResource) + _Ewk_Resource(const char* url, bool isMainResource) : __ref(1) , url(url) , isMainResource(isMainResource) { } - ~_Ewk_Web_Resource() + ~_Ewk_Resource() { ASSERT(!__ref); } }; -Ewk_Web_Resource* ewk_web_resource_ref(Ewk_Web_Resource* resource) +Ewk_Resource* ewk_resource_ref(Ewk_Resource* resource) { EINA_SAFETY_ON_NULL_RETURN_VAL(resource, 0); @@ -56,7 +56,7 @@ Ewk_Web_Resource* ewk_web_resource_ref(Ewk_Web_Resource* resource) return resource; } -void ewk_web_resource_unref(Ewk_Web_Resource* resource) +void ewk_resource_unref(Ewk_Resource* resource) { EINA_SAFETY_ON_NULL_RETURN(resource); @@ -66,7 +66,7 @@ void ewk_web_resource_unref(Ewk_Web_Resource* resource) delete resource; } -const char* ewk_web_resource_url_get(const Ewk_Web_Resource* resource) +const char* ewk_resource_url_get(const Ewk_Resource* resource) { EINA_SAFETY_ON_NULL_RETURN_VAL(resource, 0); @@ -75,16 +75,16 @@ const char* ewk_web_resource_url_get(const Ewk_Web_Resource* resource) /** * @internal - * Constructs a Ewk_Web_Resource. + * Constructs a Ewk_Resource. */ -Ewk_Web_Resource* ewk_web_resource_new(const char* url, bool isMainResource) +Ewk_Resource* ewk_resource_new(const char* url, bool isMainResource) { EINA_SAFETY_ON_NULL_RETURN_VAL(url, 0); - return new Ewk_Web_Resource(url, isMainResource); + return new Ewk_Resource(url, isMainResource); } -Eina_Bool ewk_web_resource_main_resource_get(const Ewk_Web_Resource* resource) +Eina_Bool ewk_resource_main_resource_get(const Ewk_Resource* resource) { EINA_SAFETY_ON_NULL_RETURN_VAL(resource, false); diff --git a/Source/WebKit2/UIProcess/API/efl/ewk_web_resource.h b/Source/WebKit2/UIProcess/API/efl/ewk_resource.h index dc2cf087d..a2f4786b8 100644 --- a/Source/WebKit2/UIProcess/API/efl/ewk_web_resource.h +++ b/Source/WebKit2/UIProcess/API/efl/ewk_resource.h @@ -24,12 +24,12 @@ */ /** - * @file ewk_web_resource.h + * @file ewk_resource.h * @brief Describes the Web Resource API. */ -#ifndef ewk_web_resource_h -#define ewk_web_resource_h +#ifndef ewk_resource_h +#define ewk_resource_h #include <Eina.h> @@ -37,8 +37,8 @@ extern "C" { #endif -/** Creates a type name for @a Ewk_Web_Resource. */ -typedef struct _Ewk_Web_Resource Ewk_Web_Resource; +/** Creates a type name for @a Ewk_Resource. */ +typedef struct _Ewk_Resource Ewk_Resource; /** * Increases the reference count of the given object. @@ -47,7 +47,7 @@ typedef struct _Ewk_Web_Resource Ewk_Web_Resource; * * @return a pointer to the object on success, @c NULL otherwise. */ -EAPI Ewk_Web_Resource *ewk_web_resource_ref(Ewk_Web_Resource *resource); +EAPI Ewk_Resource *ewk_resource_ref(Ewk_Resource *resource); /** * Decreases the reference count of the given object, possibly freeing it. @@ -56,7 +56,7 @@ EAPI Ewk_Web_Resource *ewk_web_resource_ref(Ewk_Web_Resource *resource); * * @param resource the resource object to decrease the reference count */ -EAPI void ewk_web_resource_unref(Ewk_Web_Resource *resource); +EAPI void ewk_resource_unref(Ewk_Resource *resource); /** * Query URL for this resource. @@ -69,7 +69,7 @@ EAPI void ewk_web_resource_unref(Ewk_Web_Resource *resource); * eina_stringshare_ref() instead of eina_stringshare_add() or * strdup(). */ -EAPI const char *ewk_web_resource_url_get(const Ewk_Web_Resource *resource); +EAPI const char *ewk_resource_url_get(const Ewk_Resource *resource); /** * Query if this is the main resource. @@ -78,10 +78,10 @@ EAPI const char *ewk_web_resource_url_get(const Ewk_Web_Resource *resource); * * @return @c EINA_TRUE if this is the main resource, @c EINA_FALSE otherwise */ -EAPI Eina_Bool ewk_web_resource_main_resource_get(const Ewk_Web_Resource *resource); +EAPI Eina_Bool ewk_resource_main_resource_get(const Ewk_Resource *resource); #ifdef __cplusplus } #endif -#endif // ewk_web_resource_h +#endif // ewk_resource_h diff --git a/Source/WebKit2/UIProcess/API/efl/ewk_web_resource_private.h b/Source/WebKit2/UIProcess/API/efl/ewk_resource_private.h index 5b44fe19f..4fd4cfd62 100644 --- a/Source/WebKit2/UIProcess/API/efl/ewk_web_resource_private.h +++ b/Source/WebKit2/UIProcess/API/efl/ewk_resource_private.h @@ -23,11 +23,11 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ -#ifndef ewk_web_resource_private_h -#define ewk_web_resource_private_h +#ifndef ewk_resource_private_h +#define ewk_resource_private_h -typedef struct _Ewk_Web_Resource Ewk_Web_Resource; +typedef struct _Ewk_Resource Ewk_Resource; -Ewk_Web_Resource* ewk_web_resource_new(const char* uri, bool isMainResource); +Ewk_Resource* ewk_resource_new(const char* url, bool isMainResource); -#endif // ewk_web_resource_private_h +#endif // ewk_resource_private_h diff --git a/Source/WebKit2/UIProcess/API/efl/ewk_settings.cpp b/Source/WebKit2/UIProcess/API/efl/ewk_settings.cpp index a1f51b8bc..a9f6b0932 100644 --- a/Source/WebKit2/UIProcess/API/efl/ewk_settings.cpp +++ b/Source/WebKit2/UIProcess/API/efl/ewk_settings.cpp @@ -28,6 +28,7 @@ #include "ewk_settings_private.h" #include <WebKit2/WKPreferences.h> +#include <WebKit2/WKPreferencesPrivate.h> using namespace WebKit; @@ -99,3 +100,51 @@ Eina_Bool ewk_settings_developer_extras_enabled_get(const Ewk_Settings* settings return WKPreferencesGetDeveloperExtrasEnabled(settings->preferences.get()); } + +Eina_Bool ewk_settings_file_access_from_file_urls_allowed_set(Ewk_Settings* settings, Eina_Bool enable) +{ + EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false); + + WKPreferencesSetFileAccessFromFileURLsAllowed(settings->preferences.get(), enable); + + return true; +} + +Eina_Bool ewk_settings_file_access_from_file_urls_allowed_get(const Ewk_Settings* settings) +{ + EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false); + + return WKPreferencesGetFileAccessFromFileURLsAllowed(settings->preferences.get()); +} + +Eina_Bool ewk_settings_frame_flattening_enabled_set(Ewk_Settings* settings, Eina_Bool enable) +{ + EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false); + + WKPreferencesSetFrameFlatteningEnabled(settings->preferences.get(), enable); + + return true; +} + +Eina_Bool ewk_settings_frame_flattening_enabled_get(const Ewk_Settings* settings) +{ + EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false); + + return WKPreferencesGetFrameFlatteningEnabled(settings->preferences.get()); +} + +Eina_Bool ewk_settings_dns_prefetching_enabled_set(Ewk_Settings* settings, Eina_Bool enable) +{ + EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false); + + WKPreferencesSetDNSPrefetchingEnabled(settings->preferences.get(), enable); + + return true; +} + +Eina_Bool ewk_settings_dns_prefetching_enabled_get(const Ewk_Settings* settings) +{ + EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false); + + return WKPreferencesGetDNSPrefetchingEnabled(settings->preferences.get()); +} diff --git a/Source/WebKit2/UIProcess/API/efl/ewk_settings.h b/Source/WebKit2/UIProcess/API/efl/ewk_settings.h index 1d8b213d0..8b17d1cbc 100644 --- a/Source/WebKit2/UIProcess/API/efl/ewk_settings.h +++ b/Source/WebKit2/UIProcess/API/efl/ewk_settings.h @@ -71,16 +71,18 @@ EAPI Eina_Bool ewk_settings_fullscreen_enabled_get(const Ewk_Settings *settings) /** * Enables/disables the javascript executing. * + * By default, JavaScript execution is enabled. + * * @param settings settings object to set javascript executing * @param enable @c EINA_TRUE to enable javascript executing - * @c EINA_FALSE to disable + * @c EINA_FALSE to disable * * @return @c EINA_TRUE on success or @c EINA_FALSE on failure */ EAPI Eina_Bool ewk_settings_javascript_enabled_set(Ewk_Settings *settings, Eina_Bool enable); /** - * Returns the javascript can be executable or not. + * Returns whether JavaScript execution is enabled. * * @param settings settings object to query if the javascript can be executed * @@ -92,20 +94,22 @@ EAPI Eina_Bool ewk_settings_javascript_enabled_get(const Ewk_Settings *settings) /** * Enables/disables auto loading of the images. * + * By default, auto loading of the images is enabled. + * * @param settings settings object to set auto loading of the images - * @param automatic @c EINA_TRUE to enable auto loading of the images, - * @c EINA_FALSE to disable + * @param automatic @c EINA_TRUE to enable auto loading of the images + * @c EINA_FALSE to disable * * @return @c EINA_TRUE on success or @c EINA_FALSE on failure */ EAPI Eina_Bool ewk_settings_loads_images_automatically_set(Ewk_Settings *settings, Eina_Bool automatic); /** - * Returns the images can be loaded automatically or not. + * Returns whether the images can be loaded automatically or not. * * @param settings settings object to get auto loading of the images * - * @return @c EINA_TRUE if the images are loaded automatically, + * @return @c EINA_TRUE if the images are loaded automatically * @c EINA_FALSE if not or on failure */ EAPI Eina_Bool ewk_settings_loads_images_automatically_get(const Ewk_Settings *settings); @@ -116,7 +120,8 @@ EAPI Eina_Bool ewk_settings_loads_images_automatically_get(const Ewk_Settings *s * By default, the developer extensions are disabled. * * @param settings settings object to set developer extensions - * @param enable @c EINA_TRUE to enable developer extensions, @c EINA_FALSE to disable + * @param enable @c EINA_TRUE to enable developer extensions + * @c EINA_FALSE to disable * * @return @c EINA_TRUE on success or @EINA_FALSE on failure */ @@ -134,6 +139,86 @@ EAPI Eina_Bool ewk_settings_developer_extras_enabled_set(Ewk_Settings *settings, */ EAPI Eina_Bool ewk_settings_developer_extras_enabled_get(const Ewk_Settings *settings); +/** + * Allow / Disallow file access from file:// URLs. + * + * By default, file access from file:// URLs is not allowed. + * + * @param settings settings object to set file access permission + * @param enable @c EINA_TRUE to enable file access permission + * @c EINA_FALSE to disable + * + * @return @c EINA_TRUE on success or @EINA_FALSE on failure + */ +EAPI Eina_Bool ewk_settings_file_access_from_file_urls_allowed_set(Ewk_Settings *settings, Eina_Bool enable); + +/** + * Queries if file access from file:// URLs is allowed. + * + * By default, file access from file:// URLs is not allowed. + * + * @param settings settings object to query file access permission + * + * @return @c EINA_TRUE if file access from file:// URLs is allowed + * @c EINA_FALSE if not or on failure + */ +EAPI Eina_Bool ewk_settings_file_access_from_file_urls_allowed_get(const Ewk_Settings *settings); + +/** + * Enables/disables frame flattening. + * + * By default, the frame flattening is disabled. + * + * @param settings settings object to set the frame flattening + * @param enable @c EINA_TRUE to enable the frame flattening + * @c EINA_FALSE to disable + * + * @return @c EINA_TRUE on success or @c EINA_FALSE on failure + * + * @see ewk_settings_enable_frame_flattening_get() + */ +EAPI Eina_Bool ewk_settings_frame_flattening_enabled_set(Ewk_Settings *settings, Eina_Bool enable); + +/** + * Returns whether the frame flattening is enabled. + * + * The frame flattening is a feature which expands sub frames until all the frames become + * one scrollable page. + * + * @param settings settings object to get the frame flattening. + * + * @return @c EINA_TRUE if the frame flattening is enabled + * @c EINA_FALSE if not or on failure + */ +EAPI Eina_Bool ewk_settings_frame_flattening_enabled_get(const Ewk_Settings *settings); + +/** + * Enables/disables DNS prefetching. + * + * By default, DNS prefetching is disabled. + * + * @param settings settings object to set DNS prefetching + * @param enable @c EINA_TRUE to enable DNS prefetching or + * @c EINA_FALSE to disable + * + * @return @c EINA_TRUE on success or @c EINA_FALSE on failure + * + * @see ewk_settings_DNS_prefetching_enabled_get() + */ +EAPI Eina_Bool ewk_settings_dns_prefetching_enabled_set(Ewk_Settings *settings, Eina_Bool enable); + +/** + * Returns whether DNS prefetching is enabled or not. + * + * DNS prefetching is an attempt to resolve domain names before a user tries to follow a link. + * + * @param settings settings object to get DNS prefetching + * + * @return @c EINA_TRUE if DNS prefetching is enabled + * @c EINA_FALSE if not or on failure + */ +EAPI Eina_Bool ewk_settings_dns_prefetching_enabled_get(const Ewk_Settings *settings); + #ifdef __cplusplus } #endif diff --git a/Source/WebKit2/UIProcess/API/efl/ewk_url_request.cpp b/Source/WebKit2/UIProcess/API/efl/ewk_url_request.cpp index 9e7c80c40..b1c94ad61 100644 --- a/Source/WebKit2/UIProcess/API/efl/ewk_url_request.cpp +++ b/Source/WebKit2/UIProcess/API/efl/ewk_url_request.cpp @@ -26,44 +26,14 @@ #include "config.h" #include "ewk_url_request.h" -#include "WKAPICast.h" -#include "WKEinaSharedString.h" -#include "WKURL.h" -#include "WKURLRequest.h" -#include "WebURLRequest.h" #include "ewk_url_request_private.h" -#include <wtf/text/CString.h> using namespace WebKit; -/** - * \struct _Ewk_Url_Request - * @brief Contains the URL request data. - */ -struct _Ewk_Url_Request { - unsigned int __ref; /**< the reference count of the object */ - - WKEinaSharedString url; - WKEinaSharedString first_party; - WKEinaSharedString http_method; - - _Ewk_Url_Request(WKURLRequestRef requestRef) - : __ref(1) - , url(AdoptWK, WKURLRequestCopyURL(requestRef)) - , first_party(AdoptWK, WKURLRequestCopyFirstPartyForCookies(requestRef)) - , http_method(AdoptWK, WKURLRequestCopyHTTPMethod(requestRef)) - { } - - ~_Ewk_Url_Request() - { - ASSERT(!__ref); - } -}; - Ewk_Url_Request* ewk_url_request_ref(Ewk_Url_Request* request) { EINA_SAFETY_ON_NULL_RETURN_VAL(request, 0); - ++request->__ref; + request->ref(); return request; } @@ -72,10 +42,7 @@ void ewk_url_request_unref(Ewk_Url_Request* request) { EINA_SAFETY_ON_NULL_RETURN(request); - if (--request->__ref) - return; - - delete request; + request->deref(); } const char* ewk_url_request_url_get(const Ewk_Url_Request* request) @@ -89,14 +56,14 @@ const char* ewk_request_cookies_first_party_get(const Ewk_Url_Request* request) { EINA_SAFETY_ON_NULL_RETURN_VAL(request, 0); - return request->first_party; + return request->firstParty; } const char* ewk_url_request_http_method_get(const Ewk_Url_Request* request) { EINA_SAFETY_ON_NULL_RETURN_VAL(request, 0); - return request->http_method; + return request->httpMethod; } /** diff --git a/Source/WebKit2/UIProcess/API/efl/ewk_url_request_private.h b/Source/WebKit2/UIProcess/API/efl/ewk_url_request_private.h index 548b6e91e..acbc984e2 100644 --- a/Source/WebKit2/UIProcess/API/efl/ewk_url_request_private.h +++ b/Source/WebKit2/UIProcess/API/efl/ewk_url_request_private.h @@ -26,6 +26,29 @@ #ifndef ewk_url_request_private_h #define ewk_url_request_private_h +#include "WKEinaSharedString.h" +#include "WKURL.h" +#include "WKURLRequest.h" +#include "WebURLRequest.h" + +/** + * \struct _Ewk_Url_Request + * @brief Contains the URL request data. + */ +struct _Ewk_Url_Request : public RefCounted<_Ewk_Url_Request> { + WKEinaSharedString url; + WKEinaSharedString firstParty; + WKEinaSharedString httpMethod; + + _Ewk_Url_Request(WKURLRequestRef requestRef) + : url(AdoptWK, WKURLRequestCopyURL(requestRef)) + , firstParty(AdoptWK, WKURLRequestCopyFirstPartyForCookies(requestRef)) + , httpMethod(AdoptWK, WKURLRequestCopyHTTPMethod(requestRef)) + { } +}; + +typedef struct _Ewk_Url_Request Ewk_Url_Request; + Ewk_Url_Request* ewk_url_request_new(WKURLRequestRef); #endif // ewk_url_request_private_h diff --git a/Source/WebKit2/UIProcess/API/efl/ewk_view.cpp b/Source/WebKit2/UIProcess/API/efl/ewk_view.cpp index 10a68c404..07a942264 100644 --- a/Source/WebKit2/UIProcess/API/efl/ewk_view.cpp +++ b/Source/WebKit2/UIProcess/API/efl/ewk_view.cpp @@ -44,6 +44,7 @@ #include "ewk_popup_menu_item.h" #include "ewk_popup_menu_item_private.h" #include "ewk_private.h" +#include "ewk_resource.h" #include "ewk_settings_private.h" #include "ewk_view_find_client_private.h" #include "ewk_view_form_client_private.h" @@ -52,7 +53,6 @@ #include "ewk_view_private.h" #include "ewk_view_resource_load_client_private.h" #include "ewk_view_ui_client_private.h" -#include "ewk_web_resource.h" #include <Ecore_Evas.h> #include <Edje.h> #include <WebCore/Cursor.h> @@ -64,6 +64,10 @@ #include "WebFullScreenManagerProxy.h" #endif +#if ENABLE(INSPECTOR) +#include "WebInspectorProxy.h" +#endif + #if USE(ACCELERATED_COMPOSITING) #include <Evas_GL.h> #endif @@ -79,9 +83,33 @@ static const char EWK_VIEW_TYPE_STR[] = "EWK2_View"; static const int defaultCursorSize = 16; -typedef HashMap<uint64_t, Ewk_Web_Resource*> LoadingResourcesMap; +typedef HashMap<uint64_t, Ewk_Resource*> LoadingResourcesMap; static void _ewk_view_priv_loading_resources_clear(LoadingResourcesMap& loadingResourcesMap); +typedef HashMap<const WebPageProxy*, const Evas_Object*> PageViewMap; + +static inline PageViewMap& pageViewMap() +{ + DEFINE_STATIC_LOCAL(PageViewMap, map, ()); + return map; +} + +static inline void addToPageViewMap(const Evas_Object* ewkView) +{ + ASSERT(ewkView); + ASSERT(ewk_view_page_get(ewkView)); + PageViewMap::AddResult result = pageViewMap().add(ewk_view_page_get(ewkView), ewkView); + ASSERT_UNUSED(result, result.isNewEntry); +} + +static inline void removeFromPageViewMap(const Evas_Object* ewkView) +{ + ASSERT(ewkView); + ASSERT(ewk_view_page_get(ewkView)); + ASSERT(pageViewMap().contains(ewk_view_page_get(ewkView))); + pageViewMap().remove(ewk_view_page_get(ewkView)); +} + struct _Ewk_View_Private_Data { OwnPtr<PageClientImpl> pageClient; #if USE(COORDINATED_GRAPHICS) @@ -89,7 +117,7 @@ struct _Ewk_View_Private_Data { #endif RefPtr<WebPageProxy> pageProxy; - WKEinaSharedString uri; + WKEinaSharedString url; WKEinaSharedString title; WKEinaSharedString theme; WKEinaSharedString customEncoding; @@ -101,6 +129,9 @@ struct _Ewk_View_Private_Data { bool areMouseEventsEnabled; WKColorPickerResultListenerRef colorPickerResultListener; Ewk_Context* context; +#if ENABLE(TOUCH_EVENTS) + bool areTouchEventsEnabled; +#endif WebPopupMenuProxyEfl* popupMenuProxy; Eina_List* popupMenuItems; @@ -121,6 +152,9 @@ struct _Ewk_View_Private_Data { , areMouseEventsEnabled(false) , colorPickerResultListener(0) , context(0) +#if ENABLE(TOUCH_EVENTS) + , areTouchEventsEnabled(false) +#endif , popupMenuProxy(0) , popupMenuItems(0) #ifdef HAVE_ECORE_X @@ -356,6 +390,65 @@ static void _ewk_view_on_key_up(void* data, Evas*, Evas_Object*, void* eventInfo smartData->api->key_up(smartData, upEvent); } +static void _ewk_view_on_show(void* data, Evas*, Evas_Object*, void* /*eventInfo*/) +{ + Ewk_View_Smart_Data* smartData = static_cast<Ewk_View_Smart_Data*>(data); + EWK_VIEW_PRIV_GET_OR_RETURN(smartData, priv); + priv->pageProxy->viewStateDidChange(WebPageProxy::ViewIsVisible); +} + +static void _ewk_view_on_hide(void* data, Evas*, Evas_Object*, void* /*eventInfo*/) +{ + Ewk_View_Smart_Data* smartData = static_cast<Ewk_View_Smart_Data*>(data); + EWK_VIEW_PRIV_GET_OR_RETURN(smartData, priv); + + // This call may look wrong, but we really need to pass ViewIsVisible here. + // viewStateDidChange() itself is responsible for actually setting the visibility to Visible or Hidden + // depending on what WebPageProxy::isViewVisible() returns, this simply triggers the process. + priv->pageProxy->viewStateDidChange(WebPageProxy::ViewIsVisible); +} + +#if ENABLE(TOUCH_EVENTS) +static inline void _ewk_view_feed_touch_event_using_touch_point_list_of_evas(Evas_Object* ewkView, Ewk_Touch_Event_Type type) +{ + EWK_VIEW_SD_GET_OR_RETURN(ewkView, smartData); + + unsigned count = evas_touch_point_list_count(smartData->base.evas); + if (!count) + return; + + Eina_List* points = 0; + for (unsigned i = 0; i < count; ++i) { + Ewk_Touch_Point* point = new Ewk_Touch_Point; + point->id = evas_touch_point_list_nth_id_get(smartData->base.evas, i); + evas_touch_point_list_nth_xy_get(smartData->base.evas, i, &point->x, &point->y); + point->state = evas_touch_point_list_nth_state_get(smartData->base.evas, i); + points = eina_list_append(points, point); + } + + ewk_view_feed_touch_event(ewkView, type, points, evas_key_modifier_get(smartData->base.evas)); + + void* data; + EINA_LIST_FREE(points, data) + delete static_cast<Ewk_Touch_Point*>(data); +} + +static void _ewk_view_on_touch_down(void* /* data */, Evas* /* canvas */, Evas_Object* ewkView, void* /* eventInfo */) +{ + _ewk_view_feed_touch_event_using_touch_point_list_of_evas(ewkView, EWK_TOUCH_START); +} + +static void _ewk_view_on_touch_up(void* /* data */, Evas* /* canvas */, Evas_Object* ewkView, void* /* eventInfo */) +{ + _ewk_view_feed_touch_event_using_touch_point_list_of_evas(ewkView, EWK_TOUCH_END); +} + +static void _ewk_view_on_touch_move(void* /* data */, Evas* /* canvas */, Evas_Object* ewkView, void* /* eventInfo */) +{ + _ewk_view_feed_touch_event_using_touch_point_list_of_evas(ewkView, EWK_TOUCH_MOVE); +} +#endif + static Evas_Smart_Class g_parentSmartClass = EVAS_SMART_CLASS_INIT_NULL; static Ewk_View_Private_Data* _ewk_view_priv_new(Ewk_View_Smart_Data* smartData) @@ -379,7 +472,7 @@ static void _ewk_view_priv_loading_resources_clear(LoadingResourcesMap& loadingR LoadingResourcesMap::iterator it = loadingResourcesMap.begin(); LoadingResourcesMap::iterator end = loadingResourcesMap.end(); for ( ; it != end; ++it) - ewk_web_resource_unref(it->second); + ewk_resource_unref(it->value); loadingResourcesMap.clear(); } @@ -434,11 +527,14 @@ static void _ewk_view_smart_add(Evas_Object* ewkView) CONNECT(EVAS_CALLBACK_MOUSE_WHEEL, _ewk_view_on_mouse_wheel); CONNECT(EVAS_CALLBACK_KEY_DOWN, _ewk_view_on_key_down); CONNECT(EVAS_CALLBACK_KEY_UP, _ewk_view_on_key_up); + CONNECT(EVAS_CALLBACK_SHOW, _ewk_view_on_show); + CONNECT(EVAS_CALLBACK_HIDE, _ewk_view_on_hide); #undef CONNECT } static void _ewk_view_smart_del(Evas_Object* ewkView) { + removeFromPageViewMap(ewkView); EWK_VIEW_SD_GET(ewkView, smartData); if (smartData && smartData->priv) _ewk_view_priv_del(smartData->priv); @@ -530,6 +626,7 @@ bool ewk_view_accelerated_compositing_mode_enter(const Evas_Object* ewkView) return false; } + priv->viewportHandler->setRendererActive(true); return true; } @@ -708,6 +805,9 @@ static void _ewk_view_initialize(Evas_Object* ewkView, Ewk_Context* context, WKP priv->pageProxy = toImpl(ewk_context_WKContext_get(context))->createWebPage(priv->pageClient.get(), toImpl(pageGroupRef)); else priv->pageProxy = toImpl(ewk_context_WKContext_get(context))->createWebPage(priv->pageClient.get(), WebPageGroup::create().get()); + + addToPageViewMap(ewkView); + #if USE(COORDINATED_GRAPHICS) priv->pageProxy->pageGroup()->preferences()->setAcceleratedCompositingEnabled(true); priv->pageProxy->pageGroup()->preferences()->setForceCompositingMode(true); @@ -812,11 +912,11 @@ Ewk_Context* ewk_view_context_get(const Evas_Object* ewkView) /** * @internal - * The uri of view was changed by the frame loader. + * The url of view was changed by the frame loader. * - * Emits signal: "uri,changed" with pointer to new uri string. + * Emits signal: "url,changed" with pointer to new url string. */ -void ewk_view_uri_update(Evas_Object* ewkView) +void ewk_view_url_update(Evas_Object* ewkView) { EWK_VIEW_SD_GET_OR_RETURN(ewkView, smartData); EWK_VIEW_PRIV_GET_OR_RETURN(smartData, priv); @@ -825,32 +925,32 @@ void ewk_view_uri_update(Evas_Object* ewkView) if (activeURL.isEmpty()) return; - if (priv->uri == activeURL.utf8().data()) + if (priv->url == activeURL.utf8().data()) return; - priv->uri = activeURL.utf8().data(); - const char* callbackArgument = static_cast<const char*>(priv->uri); - evas_object_smart_callback_call(ewkView, "uri,changed", const_cast<char*>(callbackArgument)); + priv->url = activeURL.utf8().data(); + const char* callbackArgument = static_cast<const char*>(priv->url); + evas_object_smart_callback_call(ewkView, "url,changed", const_cast<char*>(callbackArgument)); } -Eina_Bool ewk_view_uri_set(Evas_Object* ewkView, const char* uri) +Eina_Bool ewk_view_url_set(Evas_Object* ewkView, const char* url) { EWK_VIEW_SD_GET_OR_RETURN(ewkView, smartData, false); EWK_VIEW_PRIV_GET_OR_RETURN(smartData, priv, false); - EINA_SAFETY_ON_NULL_RETURN_VAL(uri, false); + EINA_SAFETY_ON_NULL_RETURN_VAL(url, false); - priv->pageProxy->loadURL(uri); - ewk_view_uri_update(ewkView); + priv->pageProxy->loadURL(url); + ewk_view_url_update(ewkView); return true; } -const char* ewk_view_uri_get(const Evas_Object* ewkView) +const char* ewk_view_url_get(const Evas_Object* ewkView) { EWK_VIEW_SD_GET_OR_RETURN(ewkView, smartData, 0); EWK_VIEW_PRIV_GET_OR_RETURN(smartData, priv, 0); - return priv->uri; + return priv->url; } Eina_Bool ewk_view_reload(Evas_Object* ewkView) @@ -859,7 +959,7 @@ Eina_Bool ewk_view_reload(Evas_Object* ewkView) EWK_VIEW_PRIV_GET_OR_RETURN(smartData, priv, false); priv->pageProxy->reload(/*reloadFromOrigin*/ false); - ewk_view_uri_update(ewkView); + ewk_view_url_update(ewkView); return true; } @@ -870,7 +970,7 @@ Eina_Bool ewk_view_reload_bypass_cache(Evas_Object* ewkView) EWK_VIEW_PRIV_GET_OR_RETURN(smartData, priv, false); priv->pageProxy->reload(/*reloadFromOrigin*/ true); - ewk_view_uri_update(ewkView); + ewk_view_url_update(ewkView); return true; } @@ -899,15 +999,15 @@ Ewk_Settings* ewk_view_settings_get(const Evas_Object* ewkView) * * Emits signal: "resource,request,new" with pointer to resource request. */ -void ewk_view_resource_load_initiated(Evas_Object* ewkView, uint64_t resourceIdentifier, Ewk_Web_Resource* resource, Ewk_Url_Request* request) +void ewk_view_resource_load_initiated(Evas_Object* ewkView, uint64_t resourceIdentifier, Ewk_Resource* resource, Ewk_Url_Request* request) { EWK_VIEW_SD_GET_OR_RETURN(ewkView, smartData); EWK_VIEW_PRIV_GET_OR_RETURN(smartData, priv); - Ewk_Web_Resource_Request resourceRequest = {resource, request, 0}; + Ewk_Resource_Request resourceRequest = {resource, request, 0}; // Keep the resource internally to reuse it later. - priv->loadingResourcesMap.add(resourceIdentifier, ewk_web_resource_ref(resource)); + priv->loadingResourcesMap.add(resourceIdentifier, ewk_resource_ref(resource)); evas_object_smart_callback_call(ewkView, "resource,request,new", &resourceRequest); } @@ -926,8 +1026,8 @@ void ewk_view_resource_load_response(Evas_Object* ewkView, uint64_t resourceIden if (!priv->loadingResourcesMap.contains(resourceIdentifier)) return; - Ewk_Web_Resource* resource = priv->loadingResourcesMap.get(resourceIdentifier); - Ewk_Web_Resource_Load_Response resourceLoadResponse = {resource, response}; + Ewk_Resource* resource = priv->loadingResourcesMap.get(resourceIdentifier); + Ewk_Resource_Load_Response resourceLoadResponse = {resource, response}; evas_object_smart_callback_call(ewkView, "resource,request,response", &resourceLoadResponse); } @@ -937,7 +1037,7 @@ void ewk_view_resource_load_response(Evas_Object* ewkView, uint64_t resourceIden * * Emits signal: "resource,request,finished" with pointer to the resource load error. */ -void ewk_view_resource_load_failed(Evas_Object* ewkView, uint64_t resourceIdentifier, Ewk_Web_Error* error) +void ewk_view_resource_load_failed(Evas_Object* ewkView, uint64_t resourceIdentifier, Ewk_Error* error) { EWK_VIEW_SD_GET_OR_RETURN(ewkView, smartData); EWK_VIEW_PRIV_GET_OR_RETURN(smartData, priv); @@ -945,8 +1045,8 @@ void ewk_view_resource_load_failed(Evas_Object* ewkView, uint64_t resourceIdenti if (!priv->loadingResourcesMap.contains(resourceIdentifier)) return; - Ewk_Web_Resource* resource = priv->loadingResourcesMap.get(resourceIdentifier); - Ewk_Web_Resource_Load_Error resourceLoadError = {resource, error}; + Ewk_Resource* resource = priv->loadingResourcesMap.get(resourceIdentifier); + Ewk_Resource_Load_Error resourceLoadError = {resource, error}; evas_object_smart_callback_call(ewkView, "resource,request,failed", &resourceLoadError); } @@ -964,10 +1064,10 @@ void ewk_view_resource_load_finished(Evas_Object* ewkView, uint64_t resourceIden if (!priv->loadingResourcesMap.contains(resourceIdentifier)) return; - Ewk_Web_Resource* resource = priv->loadingResourcesMap.take(resourceIdentifier); + Ewk_Resource* resource = priv->loadingResourcesMap.take(resourceIdentifier); evas_object_smart_callback_call(ewkView, "resource,request,finished", resource); - ewk_web_resource_unref(resource); + ewk_resource_unref(resource); } /** @@ -984,8 +1084,8 @@ void ewk_view_resource_request_sent(Evas_Object* ewkView, uint64_t resourceIdent if (!priv->loadingResourcesMap.contains(resourceIdentifier)) return; - Ewk_Web_Resource* resource = priv->loadingResourcesMap.get(resourceIdentifier); - Ewk_Web_Resource_Request resourceRequest = {resource, request, redirectResponse}; + Ewk_Resource* resource = priv->loadingResourcesMap.get(resourceIdentifier); + Ewk_Resource_Request resourceRequest = {resource, request, redirectResponse}; evas_object_smart_callback_call(ewkView, "resource,request,sent", &resourceRequest); } @@ -1207,6 +1307,22 @@ void ewk_view_full_screen_exit(Evas_Object* ewkView) } #endif +#if ENABLE(SQL_DATABASE) +/** + * @internal + * Calls exceeded_database_quota callback or falls back to default behavior returns default database quota. + */ +unsigned long long ewk_view_database_quota_exceeded(Evas_Object* ewkView, const char* databaseName, const char* displayName, unsigned long long currentQuota, unsigned long long currentOriginUsage, unsigned long long currentDatabaseUsage, unsigned long long expectedUsage) +{ + EWK_VIEW_SD_GET_OR_RETURN(ewkView, smartData, 0); + + static const unsigned long long defaultQuota = 5 * 1024 * 1204; // 5 MB + if (smartData->api->exceeded_database_quota) + return smartData->api->exceeded_database_quota(smartData, databaseName, displayName, currentQuota, currentOriginUsage, currentDatabaseUsage, expectedUsage); + + return defaultQuota; +} +#endif /** * @internal @@ -1236,7 +1352,7 @@ void ewk_view_download_job_requested(Evas_Object* ewkView, Ewk_Download_Job* dow * * Emits signal: "download,failed" with pointer to a Ewk_Download_Job_Error. */ -void ewk_view_download_job_failed(Evas_Object* ewkView, Ewk_Download_Job* download, Ewk_Web_Error* error) +void ewk_view_download_job_failed(Evas_Object* ewkView, Ewk_Download_Job* download, Ewk_Error* error) { Ewk_Download_Job_Error downloadError = { download, error }; evas_object_smart_callback_call(ewkView, "download,failed", &downloadError); @@ -1347,11 +1463,11 @@ void ewk_view_form_submission_request_new(Evas_Object* ewkView, Ewk_Form_Submiss * @internal * Reports load failed with error information. * - * Emits signal: "load,error" with pointer to Ewk_Web_Error. + * Emits signal: "load,error" with pointer to Ewk_Error. */ -void ewk_view_load_error(Evas_Object* ewkView, const Ewk_Web_Error* error) +void ewk_view_load_error(Evas_Object* ewkView, const Ewk_Error* error) { - evas_object_smart_callback_call(ewkView, "load,error", const_cast<Ewk_Web_Error*>(error)); + evas_object_smart_callback_call(ewkView, "load,error", const_cast<Ewk_Error*>(error)); } /** @@ -1362,7 +1478,7 @@ void ewk_view_load_error(Evas_Object* ewkView, const Ewk_Web_Error* error) */ void ewk_view_load_finished(Evas_Object* ewkView) { - ewk_view_uri_update(ewkView); + ewk_view_url_update(ewkView); evas_object_smart_callback_call(ewkView, "load,finished", 0); } @@ -1370,11 +1486,11 @@ void ewk_view_load_finished(Evas_Object* ewkView) * @internal * Reports view provisional load failed with error information. * - * Emits signal: "load,provisional,failed" with pointer to Ewk_Web_Error. + * Emits signal: "load,provisional,failed" with pointer to Ewk_Error. */ -void ewk_view_load_provisional_failed(Evas_Object* ewkView, const Ewk_Web_Error* error) +void ewk_view_load_provisional_failed(Evas_Object* ewkView, const Ewk_Error* error) { - evas_object_smart_callback_call(ewkView, "load,provisional,failed", const_cast<Ewk_Web_Error*>(error)); + evas_object_smart_callback_call(ewkView, "load,provisional,failed", const_cast<Ewk_Error*>(error)); } /** @@ -1385,7 +1501,7 @@ void ewk_view_load_provisional_failed(Evas_Object* ewkView, const Ewk_Web_Error* */ void ewk_view_load_provisional_redirect(Evas_Object* ewkView) { - ewk_view_uri_update(ewkView); + ewk_view_url_update(ewkView); evas_object_smart_callback_call(ewkView, "load,provisional,redirect", 0); } @@ -1404,12 +1520,23 @@ void ewk_view_load_provisional_started(Evas_Object* ewkView) // the loadingResources HashMap to start clean. _ewk_view_priv_loading_resources_clear(priv->loadingResourcesMap); - ewk_view_uri_update(ewkView); + ewk_view_url_update(ewkView); evas_object_smart_callback_call(ewkView, "load,provisional,started", 0); } /** * @internal + * Reports that the view's back / forward list has changed. + * + * Emits signal: "back,forward,list,changed". + */ +void ewk_view_back_forward_list_changed(Evas_Object* ewkView) +{ + evas_object_smart_callback_call(ewkView, "back,forward,list,changed", 0); +} + +/** + * @internal * Reports that a navigation policy decision should be taken. * * Emits signal: "policy,decision,navigation". @@ -1440,7 +1567,7 @@ Eina_Bool ewk_view_html_string_load(Evas_Object* ewkView, const char* html, cons priv->pageProxy->loadAlternateHTMLString(String::fromUTF8(html), baseUrl ? String::fromUTF8(baseUrl) : "", String::fromUTF8(unreachableUrl)); else priv->pageProxy->loadHTMLString(String::fromUTF8(html), baseUrl ? String::fromUTF8(baseUrl) : ""); - ewk_view_uri_update(ewkView); + ewk_view_url_update(ewkView); return true; } @@ -1458,6 +1585,13 @@ void ewk_view_intent_service_register(Evas_Object* ewkView, const Ewk_Intent_Ser } #endif // ENABLE(WEB_INTENTS_TAG) +const Evas_Object* ewk_view_from_page_get(const WebKit::WebPageProxy* page) +{ + EINA_SAFETY_ON_NULL_RETURN_VAL(page, 0); + + return pageViewMap().get(page); +} + WebPageProxy* ewk_view_page_get(const Evas_Object* ewkView) { EWK_VIEW_SD_GET_OR_RETURN(ewkView, smartData, 0); @@ -1517,14 +1651,13 @@ COMPILE_ASSERT_MATCHING_ENUM(EWK_FIND_OPTIONS_SHOW_OVERLAY, kWKFindOptionsShowOv COMPILE_ASSERT_MATCHING_ENUM(EWK_FIND_OPTIONS_SHOW_FIND_INDICATOR, kWKFindOptionsShowFindIndicator); COMPILE_ASSERT_MATCHING_ENUM(EWK_FIND_OPTIONS_SHOW_HIGHLIGHT, kWKFindOptionsShowHighlight); -Eina_Bool ewk_view_text_find(Evas_Object* ewkView, const char* text, Ewk_Find_Options options, unsigned int maxMatchCount) +Eina_Bool ewk_view_text_find(Evas_Object* ewkView, const char* text, Ewk_Find_Options options, unsigned maxMatchCount) { EWK_VIEW_SD_GET_OR_RETURN(ewkView, smartData, false); EWK_VIEW_PRIV_GET_OR_RETURN(smartData, priv, false); EINA_SAFETY_ON_NULL_RETURN_VAL(text, false); - WKRetainPtr<WKStringRef> findText(AdoptWK, WKStringCreateWithUTF8CString(text)); - WKPageFindString(toAPI(priv->pageProxy.get()), findText.get(), static_cast<WKFindOptions>(options), maxMatchCount); + priv->pageProxy->findString(String::fromUTF8(text), static_cast<WebKit::FindOptions>(options), maxMatchCount); return true; } @@ -1534,7 +1667,18 @@ Eina_Bool ewk_view_text_find_highlight_clear(Evas_Object* ewkView) EWK_VIEW_SD_GET_OR_RETURN(ewkView, smartData, false); EWK_VIEW_PRIV_GET_OR_RETURN(smartData, priv, false); - WKPageHideFindUI(toAPI(priv->pageProxy.get())); + priv->pageProxy->hideFindUI(); + + return true; +} + +Eina_Bool ewk_view_text_matches_count(Evas_Object* ewkView, const char* text, Ewk_Find_Options options, unsigned maxMatchCount) +{ + EWK_VIEW_SD_GET_OR_RETURN(ewkView, smartData, false); + EWK_VIEW_PRIV_GET_OR_RETURN(smartData, priv, false); + EINA_SAFETY_ON_NULL_RETURN_VAL(text, false); + + priv->pageProxy->countStringMatches(String::fromUTF8(text), static_cast<WebKit::FindOptions>(options), maxMatchCount); return true; } @@ -1778,3 +1922,85 @@ Eina_Bool ewk_view_feed_touch_event(Evas_Object* ewkView, Ewk_Touch_Event_Type t return false; #endif } + +Eina_Bool ewk_view_touch_events_enabled_set(Evas_Object* ewkView, Eina_Bool enabled) +{ +#if ENABLE(TOUCH_EVENTS) + EWK_VIEW_SD_GET_OR_RETURN(ewkView, smartData, false); + EWK_VIEW_PRIV_GET_OR_RETURN(smartData, priv, false); + + enabled = !!enabled; + if (priv->areTouchEventsEnabled == enabled) + return true; + + priv->areTouchEventsEnabled = enabled; + if (enabled) { + // FIXME: We have to connect touch callbacks with mouse and multi events + // because the Evas creates mouse events for first touch and multi events + // for second and third touches. Below codes should be fixed when the Evas + // supports the touch events. + // See https://bugs.webkit.org/show_bug.cgi?id=97785 for details. + evas_object_event_callback_add(ewkView, EVAS_CALLBACK_MOUSE_DOWN, _ewk_view_on_touch_down, smartData); + evas_object_event_callback_add(ewkView, EVAS_CALLBACK_MOUSE_UP, _ewk_view_on_touch_up, smartData); + evas_object_event_callback_add(ewkView, EVAS_CALLBACK_MOUSE_MOVE, _ewk_view_on_touch_move, smartData); + evas_object_event_callback_add(ewkView, EVAS_CALLBACK_MULTI_DOWN, _ewk_view_on_touch_down, smartData); + evas_object_event_callback_add(ewkView, EVAS_CALLBACK_MULTI_UP, _ewk_view_on_touch_up, smartData); + evas_object_event_callback_add(ewkView, EVAS_CALLBACK_MULTI_MOVE, _ewk_view_on_touch_move, smartData); + } else { + evas_object_event_callback_del(ewkView, EVAS_CALLBACK_MOUSE_DOWN, _ewk_view_on_touch_down); + evas_object_event_callback_del(ewkView, EVAS_CALLBACK_MOUSE_UP, _ewk_view_on_touch_up); + evas_object_event_callback_del(ewkView, EVAS_CALLBACK_MOUSE_MOVE, _ewk_view_on_touch_move); + evas_object_event_callback_del(ewkView, EVAS_CALLBACK_MULTI_DOWN, _ewk_view_on_touch_down); + evas_object_event_callback_del(ewkView, EVAS_CALLBACK_MULTI_UP, _ewk_view_on_touch_up); + evas_object_event_callback_del(ewkView, EVAS_CALLBACK_MULTI_MOVE, _ewk_view_on_touch_move); + } + + return true; +#else + return false; +#endif +} + +Eina_Bool ewk_view_touch_events_enabled_get(const Evas_Object* ewkView) +{ +#if ENABLE(TOUCH_EVENTS) + EWK_VIEW_SD_GET_OR_RETURN(ewkView, smartData, false); + EWK_VIEW_PRIV_GET_OR_RETURN(smartData, priv, false); + + return priv->areTouchEventsEnabled; +#else + return false; +#endif +} + +Eina_Bool ewk_view_inspector_show(Evas_Object* ewkView) +{ +#if ENABLE(INSPECTOR) + EWK_VIEW_SD_GET_OR_RETURN(ewkView, smartData, false); + EWK_VIEW_PRIV_GET_OR_RETURN(smartData, priv, false); + + WebInspectorProxy* inspector = priv->pageProxy->inspector(); + if (inspector) + inspector->show(); + + return true; +#else + return false; +#endif +} + +Eina_Bool ewk_view_inspector_close(Evas_Object* ewkView) +{ +#if ENABLE(INSPECTOR) + EWK_VIEW_SD_GET_OR_RETURN(ewkView, smartData, false); + EWK_VIEW_PRIV_GET_OR_RETURN(smartData, priv, false); + + WebInspectorProxy* inspector = priv->pageProxy->inspector(); + if (inspector) + inspector->close(); + + return true; +#else + return false; +#endif +} diff --git a/Source/WebKit2/UIProcess/API/efl/ewk_view.h b/Source/WebKit2/UIProcess/API/efl/ewk_view.h index 13f138c87..e9cbe4e1f 100644 --- a/Source/WebKit2/UIProcess/API/efl/ewk_view.h +++ b/Source/WebKit2/UIProcess/API/efl/ewk_view.h @@ -26,6 +26,7 @@ * * The following signals (see evas_object_smart_callback_add()) are emitted: * + * - "back,forward,list,changed", void: reports that the view's back / forward list had changed. * - "close,window", void: window is closed. * - "create,window", Evas_Object**: a new window is created. * - "download,cancelled", Ewk_Download_Job*: reports that a download was effectively cancelled. @@ -44,10 +45,10 @@ * ewk_form_submission_request_submit() will be called automatically. * - "intent,request,new", Ewk_Intent*: reports new Web intent request. * - "intent,service,register", Ewk_Intent_Service*: reports new Web intent service registration. - * - "load,error", const Ewk_Web_Error*: reports main frame load failed. + * - "load,error", const Ewk_Error*: reports main frame load failed. * - "load,finished", void: reports load finished. * - "load,progress", double*: load progress has changed (value from 0.0 to 1.0). - * - "load,provisional,failed", const Ewk_Web_Error*: view provisional load failed. + * - "load,provisional,failed", const Ewk_Error*: view provisional load failed. * - "load,provisional,redirect", void: view received redirect for provisional load. * - "load,provisional,started", void: view started provisional load. * - "policy,decision,navigation", Ewk_Navigation_Policy_Decision*: a navigation policy decision should be taken. @@ -56,14 +57,14 @@ * - "policy,decision,new,window", Ewk_Navigation_Policy_Decision*: a new window policy decision should be taken. * To make a policy decision asynchronously, simply increment the reference count of the * #Ewk_Navigation_Policy_Decision object using ewk_navigation_policy_decision_ref(). - * - "resource,request,failed", const Ewk_Web_Resource_Load_Error*: a resource failed loading. - * - "resource,request,finished", const Ewk_Web_Resource*: a resource finished loading. - * - "resource,request,new", const Ewk_Web_Resource_Request*: a resource request was initiated. - * - "resource,request,response", Ewk_Web_Resource_Load_Response*: a response to a resource request was received. - * - "resource,request,sent", const Ewk_Web_Resource_Request*: a resource request was sent. + * - "resource,request,failed", const Ewk_Resource_Load_Error*: a resource failed loading. + * - "resource,request,finished", const Ewk_Resource*: a resource finished loading. + * - "resource,request,new", const Ewk_Resource_Request*: a resource request was initiated. + * - "resource,request,response", Ewk_Resource_Load_Response*: a response to a resource request was received. + * - "resource,request,sent", const Ewk_Resource_Request*: a resource request was sent. * - "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. + * - "url,changed", const char*: url 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. */ @@ -73,13 +74,13 @@ #include "ewk_back_forward_list.h" #include "ewk_context.h" #include "ewk_download_job.h" +#include "ewk_error.h" #include "ewk_intent.h" +#include "ewk_resource.h" #include "ewk_settings.h" #include "ewk_touch.h" #include "ewk_url_request.h" #include "ewk_url_response.h" -#include "ewk_web_error.h" -#include "ewk_web_resource.h" #include <Evas.h> #ifdef __cplusplus @@ -127,13 +128,17 @@ struct _Ewk_View_Smart_Class { // - Shows and hides color picker. Eina_Bool (*input_picker_color_request)(Ewk_View_Smart_Data *sd, int r, int g, int b, int a); Eina_Bool (*input_picker_color_dismiss)(Ewk_View_Smart_Data *sd); + + // storage: + // - Web database. + unsigned long long (*exceeded_database_quota)(Ewk_View_Smart_Data *sd, const char *databaseName, const char *displayName, unsigned long long currentQuota, unsigned long long currentOriginUsage, unsigned long long currentDatabaseUsage, unsigned long long expectedUsage); }; /** * The version you have to put into the version field * in the @a Ewk_View_Smart_Class structure. */ -#define EWK_VIEW_SMART_CLASS_VERSION 5UL +#define EWK_VIEW_SMART_CLASS_VERSION 6UL /** * Initializer for whole Ewk_View_Smart_Class structure. @@ -145,7 +150,7 @@ struct _Ewk_View_Smart_Class { * @see EWK_VIEW_SMART_CLASS_INIT_VERSION * @see EWK_VIEW_SMART_CLASS_INIT_NAME_VERSION */ -#define EWK_VIEW_SMART_CLASS_INIT(smart_class_init) {smart_class_init, EWK_VIEW_SMART_CLASS_VERSION, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} +#define EWK_VIEW_SMART_CLASS_INIT(smart_class_init) {smart_class_init, EWK_VIEW_SMART_CLASS_VERSION, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} /** * Initializer to zero a whole Ewk_View_Smart_Class structure. @@ -197,40 +202,40 @@ struct _Ewk_View_Smart_Data { } changed; }; -/// Creates a type name for _Ewk_Web_Resource_Request. -typedef struct _Ewk_Web_Resource_Request Ewk_Web_Resource_Request; +/// Creates a type name for _Ewk_Resource_Request. +typedef struct _Ewk_Resource_Request Ewk_Resource_Request; /** * @brief Structure containing details about a resource request. */ -struct _Ewk_Web_Resource_Request { - Ewk_Web_Resource *resource; /**< resource being requested */ +struct _Ewk_Resource_Request { + Ewk_Resource *resource; /**< resource being requested */ Ewk_Url_Request *request; /**< URL request for the resource */ Ewk_Url_Response *redirect_response; /**< Possible redirect response for the resource or @c NULL */ }; -/// Creates a type name for _Ewk_Web_Resource_Load_Response. -typedef struct _Ewk_Web_Resource_Load_Response Ewk_Web_Resource_Load_Response; +/// Creates a type name for _Ewk_Resource_Load_Response. +typedef struct _Ewk_Resource_Load_Response Ewk_Resource_Load_Response; /** * @brief Structure containing details about a response to a resource request. */ -struct _Ewk_Web_Resource_Load_Response { - Ewk_Web_Resource *resource; /**< resource requested */ - Ewk_Url_Response *response; /**< resource load response */ +struct _Ewk_Resource_Load_Response { + Ewk_Resource *resource; /**< resource requested */ + Ewk_Url_Response *response; /**< resource load response */ }; -/// Creates a type name for _Ewk_Web_Resource_Load_Error. -typedef struct _Ewk_Web_Resource_Load_Error Ewk_Web_Resource_Load_Error; +/// Creates a type name for _Ewk_Resource_Load_Error. +typedef struct _Ewk_Resource_Load_Error Ewk_Resource_Load_Error; /** * @brief Structure containing details about a resource load error. * * Details given about a resource load failure. */ -struct _Ewk_Web_Resource_Load_Error { - Ewk_Web_Resource *resource; /**< resource that failed loading */ - Ewk_Web_Error *error; /**< load error */ +struct _Ewk_Resource_Load_Error { + Ewk_Resource *resource; /**< resource that failed loading */ + Ewk_Error *error; /**< load error */ }; /// Creates a type name for _Ewk_Download_Job_Error. @@ -241,7 +246,7 @@ typedef struct _Ewk_Download_Job_Error Ewk_Download_Job_Error; */ struct _Ewk_Download_Job_Error { Ewk_Download_Job *download_job; /**< download that failed */ - Ewk_Web_Error *error; /**< download error */ + Ewk_Error *error; /**< download error */ }; /** @@ -329,27 +334,27 @@ EAPI Evas_Object *ewk_view_add_with_context(Evas *e, Ewk_Context *context); EAPI Ewk_Context *ewk_view_context_get(const Evas_Object *o); /** - * Asks the object to load the given URI. + * Asks the object to load the given URL. * - * @param o view object to load @a URI - * @param uri uniform resource identifier to load + * @param o view object to load @a URL + * @param url uniform resource identifier to load * * @return @c EINA_TRUE is returned if @a o is valid, irrespective of load, * or @c EINA_FALSE on failure */ -EAPI Eina_Bool ewk_view_uri_set(Evas_Object *o, const char *uri); +EAPI Eina_Bool ewk_view_url_set(Evas_Object *o, const char *url); /** - * Returns the current URI string of view object. + * Returns the current URL string of view object. * * It returns an internal string and should not * be modified. The string is guaranteed to be stringshared. * - * @param o view object to get current URI + * @param o view object to get current URL * - * @return current URI on success or @c NULL on failure + * @return current URL on success or @c NULL on failure */ -EAPI const char *ewk_view_uri_get(const Evas_Object *o); +EAPI const char *ewk_view_url_get(const Evas_Object *o); /** * Asks the main frame to reload the current document. @@ -613,27 +618,50 @@ EAPI const char *ewk_view_setting_encoding_custom_get(const Evas_Object *o); EAPI Eina_Bool ewk_view_setting_encoding_custom_set(Evas_Object *o, const char *encoding); /** -* Searches the given string in the document. -* -* @param o view object to find text -* @param text text to find -* @param options options to find -* @param max count to find, unlimited if 0 -* -* @return @c EINA_TRUE on success, @c EINA_FALSE on errors -*/ -EAPI Eina_Bool ewk_view_text_find(Evas_Object *o, const char *text, Ewk_Find_Options options, unsigned int max_match_count); + * Searches and hightlights the given string in the document. + * + * @param o view object to find text + * @param text text to find + * @param options options to find + * @param max_match_count maximum match count to find, unlimited if 0 + * + * @return @c EINA_TRUE on success, @c EINA_FALSE on errors + */ +EAPI Eina_Bool ewk_view_text_find(Evas_Object *o, const char *text, Ewk_Find_Options options, unsigned max_match_count); /** -* Clears the highlight of searched text. -* -* @param o view object to find text -* -* @return @c EINA_TRUE on success, @c EINA_FALSE on errors -*/ + * Clears the highlight of searched text. + * + * @param o view object to find text + * + * @return @c EINA_TRUE on success, @c EINA_FALSE on errors + */ EAPI Eina_Bool ewk_view_text_find_highlight_clear(Evas_Object *o); /** + * Counts the given string in the document. + * + * This does not highlight the matched string and just count the matched string. + * + * As the search is carried out through the whole document, + * only the following EWK_FIND_OPTIONS are valid. + * - EWK_FIND_OPTIONS_NONE + * - EWK_FIND_OPTIONS_CASE_INSENSITIVE + * - EWK_FIND_OPTIONS_AT_WORD_START + * - EWK_FIND_OPTIONS_TREAT_MEDIAL_CAPITAL_AS_WORD_START + * + * The "text,found" callback will be called with the number of matched string. + * + * @param o view object to find text + * @param text text to find + * @param options options to find + * @param max_match_count maximum match count to find, unlimited if 0 + * + * @return @c EINA_TRUE on success, @c EINA_FALSE on errors + */ +EAPI Eina_Bool ewk_view_text_matches_count(Evas_Object *o, const char *text, Ewk_Find_Options options, unsigned max_match_count); + +/** * Selects index of current popup menu. * * @param o view object contains popup menu. @@ -708,6 +736,48 @@ EAPI Eina_Bool ewk_view_color_picker_color_set(Evas_Object *o, int r, int g, int */ EAPI Eina_Bool ewk_view_feed_touch_event(Evas_Object *o, Ewk_Touch_Event_Type type, const Eina_List *points, const Evas_Modifier *modifiers); +/** + * Sets whether the ewk_view supports the touch events or not. + * + * The ewk_view will support the touch events if @c EINA_TRUE or not support the + * touch events otherwise. The default value is @c EINA_FALSE. + * + * @param o view object to enable/disable the touch events + * @param enabled a state to set + * + * @return @c EINA_TRUE on success or @c EINA_FALSE on failure + */ +EAPI Eina_Bool ewk_view_touch_events_enabled_set(Evas_Object *o, Eina_Bool enabled); + +/** + * Queries if the ewk_view supports the touch events. + * + * @param o view object to query if the touch events are enabled + * + * @return @c EINA_TRUE if the touch events are enabled or @c EINA_FALSE otherwise + */ +EAPI Eina_Bool ewk_view_touch_events_enabled_get(const Evas_Object *o); + +/** + * Show the inspector to debug a web page. + * + * @param o The view to show the inspector. + * + * @return @c EINA_TRUE on success or @c EINA_FALSE on failure + * + * @see ewk_settings_developer_extras_enabled_set() + */ +EAPI Eina_Bool ewk_view_inspector_show(Evas_Object *o); + +/** + * Close the inspector + * + * @param o The view to close the inspector. + * + * @return @c EINA_TRUE on success or @c EINA_FALSE on failure + */ +EAPI Eina_Bool ewk_view_inspector_close(Evas_Object *o); + #ifdef __cplusplus } #endif diff --git a/Source/WebKit2/UIProcess/API/efl/ewk_view_find_client.cpp b/Source/WebKit2/UIProcess/API/efl/ewk_view_find_client.cpp index 637e7aec2..1edc3cbfd 100644 --- a/Source/WebKit2/UIProcess/API/efl/ewk_view_find_client.cpp +++ b/Source/WebKit2/UIProcess/API/efl/ewk_view_find_client.cpp @@ -34,9 +34,19 @@ static inline Evas_Object* toEwkView(const void* clientInfo) return static_cast<Evas_Object*>(const_cast<void*>(clientInfo)); } -static void didFindString(WKPageRef, WKStringRef /*string*/, unsigned matchCount, const void* clientInfo) +static void didFindString(WKPageRef, WKStringRef, unsigned matchCount, const void* clientInfo) { - ewk_view_text_found(toEwkView(clientInfo), static_cast<unsigned int>(matchCount)); + ewk_view_text_found(toEwkView(clientInfo), matchCount); +} + +static void didFailToFindString(WKPageRef, WKStringRef, const void* clientInfo) +{ + ewk_view_text_found(toEwkView(clientInfo), 0); +} + +static void didCountStringMatches(WKPageRef, WKStringRef, unsigned matchCount, const void* clientInfo) +{ + ewk_view_text_found(toEwkView(clientInfo), matchCount); } void ewk_view_find_client_attach(WKPageRef pageRef, Evas_Object* ewkView) @@ -46,5 +56,7 @@ void ewk_view_find_client_attach(WKPageRef pageRef, Evas_Object* ewkView) findClient.version = kWKPageFindClientCurrentVersion; findClient.clientInfo = ewkView; findClient.didFindString = didFindString; + findClient.didFailToFindString = didFailToFindString; + findClient.didCountStringMatches = didCountStringMatches; WKPageSetPageFindClient(pageRef, &findClient); } diff --git a/Source/WebKit2/UIProcess/API/efl/ewk_view_loader_client.cpp b/Source/WebKit2/UIProcess/API/efl/ewk_view_loader_client.cpp index 997ca35a8..a3afdb4ba 100644 --- a/Source/WebKit2/UIProcess/API/efl/ewk_view_loader_client.cpp +++ b/Source/WebKit2/UIProcess/API/efl/ewk_view_loader_client.cpp @@ -28,14 +28,13 @@ #include "WKFrame.h" #include "ewk_back_forward_list_private.h" +#include "ewk_error_private.h" #include "ewk_intent.h" #include "ewk_intent_private.h" #include "ewk_intent_service.h" #include "ewk_intent_service_private.h" #include "ewk_view_loader_client_private.h" #include "ewk_view_private.h" -#include "ewk_web_error.h" -#include "ewk_web_error_private.h" #include <wtf/text/CString.h> using namespace WebKit; @@ -90,10 +89,10 @@ static void didFailLoadWithErrorForFrame(WKPageRef, WKFrameRef frame, WKErrorRef return; Evas_Object* ewkView = static_cast<Evas_Object*>(const_cast<void*>(clientInfo)); - Ewk_Web_Error* ewkError = ewk_web_error_new(error); + Ewk_Error* ewkError = ewk_error_new(error); ewk_view_load_error(ewkView, ewkError); ewk_view_load_finished(ewkView); - ewk_web_error_free(ewkError); + ewk_error_free(ewkError); } static void didStartProvisionalLoadForFrame(WKPageRef, WKFrameRef frame, WKTypeRef /*userData*/, const void* clientInfo) @@ -120,9 +119,9 @@ static void didFailProvisionalLoadWithErrorForFrame(WKPageRef, WKFrameRef frame, return; Evas_Object* ewkView = static_cast<Evas_Object*>(const_cast<void*>(clientInfo)); - Ewk_Web_Error* ewkError = ewk_web_error_new(error); + Ewk_Error* ewkError = ewk_error_new(error); ewk_view_load_provisional_failed(ewkView, ewkError); - ewk_web_error_free(ewkError); + ewk_error_free(ewkError); } static void didChangeBackForwardList(WKPageRef, WKBackForwardListItemRef addedItem, WKArrayRef removedItems, const void* clientInfo) @@ -131,6 +130,7 @@ static void didChangeBackForwardList(WKPageRef, WKBackForwardListItemRef addedIt ASSERT(ewkView); ewk_back_forward_list_changed(ewk_view_back_forward_list_get(ewkView), addedItem, removedItems); + ewk_view_back_forward_list_changed(ewkView); } static void didSameDocumentNavigationForFrame(WKPageRef, WKFrameRef frame, WKSameDocumentNavigationType, WKTypeRef, const void* clientInfo) @@ -139,7 +139,7 @@ static void didSameDocumentNavigationForFrame(WKPageRef, WKFrameRef frame, WKSam return; Evas_Object* ewkView = static_cast<Evas_Object*>(const_cast<void*>(clientInfo)); - ewk_view_uri_update(ewkView); + ewk_view_url_update(ewkView); } void ewk_view_loader_client_attach(WKPageRef pageRef, Evas_Object* ewkView) diff --git a/Source/WebKit2/UIProcess/API/efl/ewk_view_private.h b/Source/WebKit2/UIProcess/API/efl/ewk_view_private.h index 4cba22d36..8ec91c13c 100644 --- a/Source/WebKit2/UIProcess/API/efl/ewk_view_private.h +++ b/Source/WebKit2/UIProcess/API/efl/ewk_view_private.h @@ -43,8 +43,8 @@ typedef struct _Ewk_Download_Job Ewk_Download_Job; typedef struct _Ewk_Form_Submission_Request Ewk_Form_Submission_Request; typedef struct _Ewk_Url_Request Ewk_Url_Request; typedef struct _Ewk_Url_Response Ewk_Url_Response; -typedef struct _Ewk_Web_Error Ewk_Web_Error; -typedef struct _Ewk_Web_Resource Ewk_Web_Resource; +typedef struct _Ewk_Error Ewk_Error; +typedef struct _Ewk_Resource Ewk_Resource; typedef struct _Ewk_Navigation_Policy_Decision Ewk_Navigation_Policy_Decision; #if ENABLE(WEB_INTENTS) typedef struct _Ewk_Intent Ewk_Intent; @@ -56,7 +56,7 @@ typedef struct _Ewk_Intent_Service Ewk_Intent_Service; void ewk_view_cursor_set(Evas_Object* ewkView, const WebCore::Cursor& cursor); void ewk_view_display(Evas_Object* ewkView, const WebCore::IntRect& rect); void ewk_view_download_job_cancelled(Evas_Object* ewkView, Ewk_Download_Job*); -void ewk_view_download_job_failed(Evas_Object* ewkView, Ewk_Download_Job*, Ewk_Web_Error*); +void ewk_view_download_job_failed(Evas_Object* ewkView, Ewk_Download_Job*, Ewk_Error*); void ewk_view_download_job_finished(Evas_Object* ewkView, Ewk_Download_Job*); void ewk_view_download_job_requested(Evas_Object* ewkView, Ewk_Download_Job*); void ewk_view_form_submission_request_new(Evas_Object* ewkView, Ewk_Form_Submission_Request*); @@ -65,10 +65,10 @@ void ewk_view_full_screen_enter(Evas_Object* ewkView); void ewk_view_full_screen_exit(Evas_Object* ewkView); #endif void ewk_view_image_data_set(Evas_Object* ewkView, void* imageData, const WebCore::IntSize& size); -void ewk_view_load_error(Evas_Object* ewkView, const Ewk_Web_Error* error); +void ewk_view_load_error(Evas_Object* ewkView, const Ewk_Error* error); void ewk_view_load_finished(Evas_Object* ewkView); void ewk_view_load_progress_changed(Evas_Object* ewkView, double progress); -void ewk_view_load_provisional_failed(Evas_Object* ewkView, const Ewk_Web_Error* error); +void ewk_view_load_provisional_failed(Evas_Object* ewkView, const Ewk_Error* error); void ewk_view_load_provisional_redirect(Evas_Object* ewkView); void ewk_view_load_provisional_started(Evas_Object* ewkView); void ewk_view_navigation_policy_decision(Evas_Object* ewkView, Ewk_Navigation_Policy_Decision* decision); @@ -76,14 +76,15 @@ void ewk_view_new_window_policy_decision(Evas_Object* ewkView, Ewk_Navigation_Po void ewk_view_page_close(Evas_Object* ewkView); WKPageRef ewk_view_page_create(Evas_Object* ewkView); void ewk_view_title_changed(Evas_Object* ewkView, const char* title); -void ewk_view_resource_load_failed(Evas_Object* ewkView, uint64_t resourceIdentifier, Ewk_Web_Error* error); +void ewk_view_resource_load_failed(Evas_Object* ewkView, uint64_t resourceIdentifier, Ewk_Error* error); void ewk_view_resource_load_finished(Evas_Object* ewkView, uint64_t resourceIdentifier); -void ewk_view_resource_load_initiated(Evas_Object* ewkView, uint64_t resourceIdentifier, Ewk_Web_Resource* resource, Ewk_Url_Request* request); +void ewk_view_resource_load_initiated(Evas_Object* ewkView, uint64_t resourceIdentifier, Ewk_Resource* resource, Ewk_Url_Request* request); void ewk_view_resource_load_response(Evas_Object* ewkView, uint64_t resourceIdentifier, Ewk_Url_Response* response); void ewk_view_resource_request_sent(Evas_Object* ewkView, uint64_t resourceIdentifier, Ewk_Url_Request* request, Ewk_Url_Response* redirectResponse); void ewk_view_text_found(Evas_Object* ewkView, unsigned int matchCount); -void ewk_view_uri_update(Evas_Object* ewkView); +void ewk_view_url_update(Evas_Object* ewkView); void ewk_view_contents_size_changed(const Evas_Object* ewkView, const WebCore::IntSize&); +void ewk_view_back_forward_list_changed(Evas_Object* ewkView); Evas_Object* ewk_view_base_add(Evas* canvas, WKContextRef, WKPageGroupRef); @@ -94,6 +95,7 @@ void ewk_view_intent_request_new(Evas_Object* ewkView, const Ewk_Intent* ewkInte void ewk_view_intent_service_register(Evas_Object* ewkView, const Ewk_Intent_Service* ewkIntentService); #endif +const Evas_Object* ewk_view_from_page_get(const WebKit::WebPageProxy*); WebKit::WebPageProxy* ewk_view_page_get(const Evas_Object* ewkView); WebCore::IntSize ewk_view_size_get(const Evas_Object* ewkView); @@ -114,4 +116,8 @@ void ewk_view_color_picker_request(Evas_Object* ewkView, int r, int g, int b, in void ewk_view_color_picker_dismiss(Evas_Object* ewkView); #endif +#if ENABLE(SQL_DATABASE) +unsigned long long ewk_view_database_quota_exceeded(Evas_Object* ewkView, const char* databaseName, const char* displayName, unsigned long long currentQuota, unsigned long long currentOriginUsage, unsigned long long currentDatabaseUsage, unsigned long long expectedUsage); +#endif + #endif // ewk_view_private_h diff --git a/Source/WebKit2/UIProcess/API/efl/ewk_view_resource_load_client.cpp b/Source/WebKit2/UIProcess/API/efl/ewk_view_resource_load_client.cpp index 113e178b9..469e18278 100644 --- a/Source/WebKit2/UIProcess/API/efl/ewk_view_resource_load_client.cpp +++ b/Source/WebKit2/UIProcess/API/efl/ewk_view_resource_load_client.cpp @@ -32,16 +32,15 @@ #include "WKURL.h" #include "WKURLRequest.h" #include "WKURLResponse.h" +#include "ewk_error_private.h" +#include "ewk_resource.h" +#include "ewk_resource_private.h" #include "ewk_url_request.h" #include "ewk_url_request_private.h" #include "ewk_url_response.h" #include "ewk_url_response_private.h" #include "ewk_view_private.h" #include "ewk_view_resource_load_client_private.h" -#include "ewk_web_error.h" -#include "ewk_web_error_private.h" -#include "ewk_web_resource.h" -#include "ewk_web_resource_private.h" #include <wtf/text/CString.h> using namespace WebCore; @@ -57,19 +56,17 @@ static void didInitiateLoadForResource(WKPageRef, WKFrameRef wkFrame, uint64_t r bool isMainResource = (WKFrameIsMainFrame(wkFrame) && pageIsProvisionallyLoading); WKRetainPtr<WKURLRef> wkUrl(AdoptWK, WKURLRequestCopyURL(wkRequest)); - Ewk_Web_Resource* resource = ewk_web_resource_new(toImpl(wkUrl.get())->string().utf8().data(), isMainResource); - Ewk_Url_Request* request = ewk_url_request_new(wkRequest); - ewk_view_resource_load_initiated(toEwkView(clientInfo), resourceIdentifier, resource, request); - ewk_web_resource_unref(resource); - ewk_url_request_unref(request); + Ewk_Resource* resource = ewk_resource_new(toImpl(wkUrl.get())->string().utf8().data(), isMainResource); + RefPtr<Ewk_Url_Request> request = adoptRef(ewk_url_request_new(wkRequest)); + ewk_view_resource_load_initiated(toEwkView(clientInfo), resourceIdentifier, resource, request.get()); + ewk_resource_unref(resource); } static void didSendRequestForResource(WKPageRef, WKFrameRef, uint64_t resourceIdentifier, WKURLRequestRef wkRequest, WKURLResponseRef wkRedirectResponse, const void* clientInfo) { - Ewk_Url_Request* request = ewk_url_request_new(wkRequest); + RefPtr<Ewk_Url_Request> request = adoptRef(ewk_url_request_new(wkRequest)); Ewk_Url_Response* redirectResponse = wkRedirectResponse ? ewk_url_response_new(toImpl(wkRedirectResponse)->resourceResponse()) : 0; - ewk_view_resource_request_sent(toEwkView(clientInfo), resourceIdentifier, request, redirectResponse); - ewk_url_request_unref(request); + ewk_view_resource_request_sent(toEwkView(clientInfo), resourceIdentifier, request.get(), redirectResponse); if (redirectResponse) ewk_url_response_unref(redirectResponse); } @@ -88,10 +85,10 @@ static void didFinishLoadForResource(WKPageRef, WKFrameRef, uint64_t resourceIde static void didFailLoadForResource(WKPageRef, WKFrameRef, uint64_t resourceIdentifier, WKErrorRef wkError, const void* clientInfo) { - Ewk_Web_Error* ewkError = ewk_web_error_new(wkError); + Ewk_Error* ewkError = ewk_error_new(wkError); ewk_view_resource_load_failed(toEwkView(clientInfo), resourceIdentifier, ewkError); ewk_view_resource_load_finished(toEwkView(clientInfo), resourceIdentifier); - ewk_web_error_free(ewkError); + ewk_error_free(ewkError); } void ewk_view_resource_load_client_attach(WKPageRef pageRef, Evas_Object* ewkView) diff --git a/Source/WebKit2/UIProcess/API/efl/ewk_view_ui_client.cpp b/Source/WebKit2/UIProcess/API/efl/ewk_view_ui_client.cpp index 6bbf8956c..0f7bd9277 100644 --- a/Source/WebKit2/UIProcess/API/efl/ewk_view_ui_client.cpp +++ b/Source/WebKit2/UIProcess/API/efl/ewk_view_ui_client.cpp @@ -28,6 +28,7 @@ #include "WKString.h" #include "ewk_view_private.h" #include "ewk_view_ui_client_private.h" +#include <Ecore_Evas.h> static inline Evas_Object* toEwkView(const void* clientInfo) { @@ -73,6 +74,45 @@ static void hideColorPicker(WKPageRef, const void* clientInfo) } #endif +#if ENABLE(SQL_DATABASE) +static unsigned long long exceededDatabaseQuota(WKPageRef, WKFrameRef, WKSecurityOriginRef, WKStringRef databaseName, WKStringRef displayName, unsigned long long currentQuota, unsigned long long currentOriginUsage, unsigned long long currentDatabaseUsage, unsigned long long expectedUsage, const void* clientInfo) +{ + return ewk_view_database_quota_exceeded(toEwkView(clientInfo), WKEinaSharedString(databaseName), WKEinaSharedString(displayName), currentQuota, currentOriginUsage, currentDatabaseUsage, expectedUsage); +} +#endif + +static void focus(WKPageRef, const void* clientInfo) +{ + evas_object_focus_set(toEwkView(clientInfo), true); +} + +static void unfocus(WKPageRef, const void* clientInfo) +{ + evas_object_focus_set(toEwkView(clientInfo), false); +} + +static void takeFocus(WKPageRef, WKFocusDirection, const void* clientInfo) +{ + // FIXME: this is only a partial implementation. + evas_object_focus_set(toEwkView(clientInfo), false); +} + +static WKRect getWindowFrame(WKPageRef, const void* clientInfo) +{ + int x, y, width, height; + + Ecore_Evas* ee = ecore_evas_ecore_evas_get(evas_object_evas_get(toEwkView(clientInfo))); + ecore_evas_request_geometry_get(ee, &x, &y, &width, &height); + + return WKRectMake(x, y, width, height); +} + +static void setWindowFrame(WKPageRef, WKRect frame, const void* clientInfo) +{ + Ecore_Evas* ee = ecore_evas_ecore_evas_get(evas_object_evas_get(toEwkView(clientInfo))); + ecore_evas_move_resize(ee, frame.origin.x, frame.origin.y, frame.size.width, frame.size.height); +} + void ewk_view_ui_client_attach(WKPageRef pageRef, Evas_Object* ewkView) { WKPageUIClient uiClient; @@ -84,6 +124,14 @@ void ewk_view_ui_client_attach(WKPageRef pageRef, Evas_Object* ewkView) uiClient.runJavaScriptAlert = runJavaScriptAlert; uiClient.runJavaScriptConfirm = runJavaScriptConfirm; uiClient.runJavaScriptPrompt = runJavaScriptPrompt; + uiClient.takeFocus = takeFocus; + uiClient.focus = focus; + uiClient.unfocus = unfocus; + uiClient.getWindowFrame = getWindowFrame; + uiClient.setWindowFrame = setWindowFrame; +#if ENABLE(SQL_DATABASE) + uiClient.exceededDatabaseQuota = exceededDatabaseQuota; +#endif #if ENABLE(INPUT_TYPE_COLOR) uiClient.showColorPicker = showColorPicker; diff --git a/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp b/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp index 1691f0d7c..e02f011ca 100644 --- a/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp +++ b/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp @@ -50,10 +50,7 @@ void EWK2UnitTestBase::SetUp() unsigned int width = environment->defaultWidth(); unsigned int height = environment->defaultHeight(); - if (environment->useX11Window()) - m_ecoreEvas = ecore_evas_new(0, 0, 0, width, height, 0); - else - m_ecoreEvas = ecore_evas_buffer_new(width, height); + m_ecoreEvas = ecore_evas_new(0, 0, 0, width, height, 0); ecore_evas_show(m_ecoreEvas); Evas* evas = ecore_evas_get(m_ecoreEvas); @@ -74,17 +71,17 @@ void EWK2UnitTestBase::TearDown() ewk_shutdown(); } -void EWK2UnitTestBase::loadUrlSync(const char* url) +bool EWK2UnitTestBase::loadUrlSync(const char* url, double timeoutSeconds) { - ewk_view_uri_set(m_webView, url); - waitUntilLoadFinished(); + ewk_view_url_set(m_webView, url); + return waitUntilLoadFinished(timeoutSeconds); } class CallbackDataTimer { public: - CallbackDataTimer(double timeoutSeconds, Ecore_Task_Cb callback) + explicit CallbackDataTimer(double timeoutSeconds) : m_done(false) - , m_timer(timeoutSeconds >= 0 ? ecore_timer_add(timeoutSeconds, callback, this) : 0) + , m_timer(timeoutSeconds >= 0 ? ecore_timer_add(timeoutSeconds, reinterpret_cast<Ecore_Task_Cb>(timeOutCallback), this) : 0) , m_didTimeOut(false) { } @@ -108,6 +105,19 @@ public: bool didTimeOut() const { return m_didTimeOut; } +protected: + bool m_done; + Ecore_Timer* m_timer; + bool m_didTimeOut; + +private: + static bool timeOutCallback(void* userData) + { + CallbackDataTimer* data = static_cast<CallbackDataTimer*>(userData); + data->setTimedOut(); + return ECORE_CALLBACK_CANCEL; + } + void setTimedOut() { m_done = true; @@ -115,17 +125,13 @@ public: m_didTimeOut = true; } -protected: - bool m_done; - Ecore_Timer* m_timer; - bool m_didTimeOut; }; template <class T> class CallbackDataExpectedValue : public CallbackDataTimer { public: - CallbackDataExpectedValue(const T& expectedValue, double timeoutSeconds, Ecore_Task_Cb callback) - : CallbackDataTimer(timeoutSeconds, callback) + CallbackDataExpectedValue(const T& expectedValue, double timeoutSeconds) + : CallbackDataTimer(timeoutSeconds) , m_expectedValue(expectedValue) { } @@ -145,17 +151,9 @@ static void onLoadFinished(void* userData, Evas_Object* webView, void* eventInfo data->setDone(); } -static bool timeOutWhileWaitingUntilLoadFinished(void* userData) -{ - CallbackDataTimer* data = static_cast<CallbackDataTimer*>(userData); - data->setTimedOut(); - - return ECORE_CALLBACK_CANCEL; -} - bool EWK2UnitTestBase::waitUntilLoadFinished(double timeoutSeconds) { - CallbackDataTimer data(timeoutSeconds, reinterpret_cast<Ecore_Task_Cb>(timeOutWhileWaitingUntilLoadFinished)); + CallbackDataTimer data(timeoutSeconds); evas_object_smart_callback_add(m_webView, "load,finished", onLoadFinished, &data); @@ -177,17 +175,9 @@ static void onTitleChanged(void* userData, Evas_Object* webView, void*) data->setDone(); } -static bool timeOutWhileWaitingUntilTitleChangedTo(void* userData) -{ - CallbackDataExpectedValue<CString>* data = static_cast<CallbackDataExpectedValue<CString>*>(userData); - data->setTimedOut(); - - return ECORE_CALLBACK_CANCEL; -} - bool EWK2UnitTestBase::waitUntilTitleChangedTo(const char* expectedTitle, double timeoutSeconds) { - CallbackDataExpectedValue<CString> data(expectedTitle, timeoutSeconds, reinterpret_cast<Ecore_Task_Cb>(timeOutWhileWaitingUntilTitleChangedTo)); + CallbackDataExpectedValue<CString> data(expectedTitle, timeoutSeconds); evas_object_smart_callback_add(m_webView, "title,changed", onTitleChanged, &data); @@ -199,34 +189,26 @@ bool EWK2UnitTestBase::waitUntilTitleChangedTo(const char* expectedTitle, double return !data.didTimeOut(); } -static void onURIChanged(void* userData, Evas_Object* webView, void*) +static void onURLChanged(void* userData, Evas_Object* webView, void*) { CallbackDataExpectedValue<CString>* data = static_cast<CallbackDataExpectedValue<CString>*>(userData); - if (strcmp(ewk_view_uri_get(webView), data->expectedValue().data())) + if (strcmp(ewk_view_url_get(webView), data->expectedValue().data())) return; data->setDone(); } -static bool timeOutWhileWaitingUntilURIChangedTo(void* userData) -{ - CallbackDataExpectedValue<CString>* data = static_cast<CallbackDataExpectedValue<CString>*>(userData); - data->setTimedOut(); - - return ECORE_CALLBACK_CANCEL; -} - -bool EWK2UnitTestBase::waitUntilURIChangedTo(const char* expectedURI, double timeoutSeconds) +bool EWK2UnitTestBase::waitUntilURLChangedTo(const char* expectedURL, double timeoutSeconds) { - CallbackDataExpectedValue<CString> data(expectedURI, timeoutSeconds, reinterpret_cast<Ecore_Task_Cb>(timeOutWhileWaitingUntilURIChangedTo)); + CallbackDataExpectedValue<CString> data(expectedURL, timeoutSeconds); - evas_object_smart_callback_add(m_webView, "uri,changed", onURIChanged, &data); + evas_object_smart_callback_add(m_webView, "url,changed", onURLChanged, &data); while (!data.isDone()) ecore_main_loop_iterate(); - evas_object_smart_callback_del(m_webView, "uri,changed", onURIChanged); + evas_object_smart_callback_del(m_webView, "url,changed", onURLChanged); return !data.didTimeOut(); } @@ -239,4 +221,38 @@ void EWK2UnitTestBase::mouseClick(int x, int y) evas_event_feed_mouse_up(evas, /* Left */ 1, EVAS_BUTTON_NONE, 0, 0); } +void EWK2UnitTestBase::mouseDown(int x, int y) +{ + Evas* evas = evas_object_evas_get(m_webView); + evas_event_feed_mouse_move(evas, x, y, 0, 0); + evas_event_feed_mouse_down(evas, /* Left */ 1, EVAS_BUTTON_NONE, 0, 0); +} + +void EWK2UnitTestBase::mouseUp(int x, int y) +{ + Evas* evas = evas_object_evas_get(m_webView); + evas_event_feed_mouse_move(evas, x, y, 0, 0); + evas_event_feed_mouse_up(evas, /* Left */ 1, EVAS_BUTTON_NONE, 0, 0); +} + +void EWK2UnitTestBase::mouseMove(int x, int y) +{ + evas_event_feed_mouse_move(evas_object_evas_get(m_webView), x, y, 0, 0); +} + +void EWK2UnitTestBase::multiDown(int id, int x, int y) +{ + evas_event_feed_multi_down(evas_object_evas_get(m_webView), id, x, y, 0, 0, 0, 0, 0, 0, 0, EVAS_BUTTON_NONE, 0, 0); +} + +void EWK2UnitTestBase::multiUp(int id, int x, int y) +{ + evas_event_feed_multi_up(evas_object_evas_get(m_webView), id, x, y, 0, 0, 0, 0, 0, 0, 0, EVAS_BUTTON_NONE, 0, 0); +} + +void EWK2UnitTestBase::multiMove(int id, int x, int y) +{ + evas_event_feed_multi_move(evas_object_evas_get(m_webView), id, x, y, 0, 0, 0, 0, 0, 0, 0, 0, 0); +} + } // namespace EWK2UnitTest diff --git a/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h b/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h index e1146b198..2ebb95093 100644 --- a/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h +++ b/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h @@ -40,14 +40,20 @@ protected: virtual void SetUp(); virtual void TearDown(); - void loadUrlSync(const char* url); - static const double defaultTimeoutSeconds = 10.0; + + bool loadUrlSync(const char* url, double timeoutSeconds = defaultTimeoutSeconds); bool waitUntilLoadFinished(double timeoutSeconds = defaultTimeoutSeconds); bool waitUntilTitleChangedTo(const char* expectedTitle, double timeoutSeconds = defaultTimeoutSeconds); - bool waitUntilURIChangedTo(const char* expectedURI, double timeoutSeconds = defaultTimeoutSeconds); + bool waitUntilURLChangedTo(const char* expectedURL, double timeoutSeconds = defaultTimeoutSeconds); void mouseClick(int x, int y); + void mouseDown(int x, int y); + void mouseUp(int x, int y); + void mouseMove(int x, int y); + void multiDown(int id, int x, int y); + void multiUp(int id, int x, int y); + void multiMove(int id, int x, int y); private: Evas_Object* m_webView; diff --git a/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestEnvironment.cpp b/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestEnvironment.cpp index 0b7977f54..f9e0f7b73 100644 --- a/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestEnvironment.cpp +++ b/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestEnvironment.cpp @@ -26,10 +26,9 @@ namespace EWK2UnitTest { -EWK2UnitTestEnvironment::EWK2UnitTestEnvironment(bool useX11Window) +EWK2UnitTestEnvironment::EWK2UnitTestEnvironment() : m_defaultWidth(800) , m_defaultHeight(600) - , m_useX11Window(useX11Window) { } diff --git a/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestEnvironment.h b/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestEnvironment.h index 4255b01b4..8b401b56a 100644 --- a/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestEnvironment.h +++ b/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestEnvironment.h @@ -27,9 +27,8 @@ namespace EWK2UnitTest { class EWK2UnitTestEnvironment : public ::testing::Environment { public: - EWK2UnitTestEnvironment(bool useX11Window); + EWK2UnitTestEnvironment(); - bool useX11Window() const { return m_useX11Window; } const char* defaultTestPageUrl() const; const char* defaultTheme() const; const char* injectedBundleSample() const; @@ -42,8 +41,6 @@ public: private: unsigned int m_defaultWidth; unsigned int m_defaultHeight; - - bool m_useX11Window; }; } // namespace EWK2UnitTest diff --git a/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestMain.cpp b/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestMain.cpp index 06e9c069a..778d261e8 100644 --- a/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestMain.cpp +++ b/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestMain.cpp @@ -26,27 +26,11 @@ using namespace EWK2UnitTest; EWK2UnitTestEnvironment* environment = 0; -static bool parseArguments(int argc, char** argv) -{ - int useX11Window = 0; - - static const option options[] = { - {"useX11Window", no_argument, &useX11Window, 1}, - {0, 0, 0, 0} - }; - - while (getopt_long(argc, argv, "", options, 0) != -1) { } - - return useX11Window; -} - int main(int argc, char** argv) { - bool useX11Window = parseArguments(argc, argv); - ::testing::InitGoogleTest(&argc, argv); - environment = new EWK2UnitTestEnvironment(useX11Window); + environment = new EWK2UnitTestEnvironment(); testing::AddGlobalTestEnvironment(environment); return RUN_ALL_TESTS(); diff --git a/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestServer.cpp b/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestServer.cpp index 52e6af46e..4ef4cf76f 100644 --- a/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestServer.cpp +++ b/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestServer.cpp @@ -27,14 +27,14 @@ EWK2UnitTestServer::EWK2UnitTestServer() soup_address_resolve_sync(address, 0); m_soupServer = soup_server_new(SOUP_SERVER_INTERFACE, address, static_cast<char*>(0)); - m_baseURI = soup_uri_new("http://127.0.0.1/"); - soup_uri_set_port(m_baseURI, soup_server_get_port(m_soupServer)); + m_baseURL = soup_uri_new("http://127.0.0.1/"); + soup_uri_set_port(m_baseURL, soup_server_get_port(m_soupServer)); g_object_unref(address); } EWK2UnitTestServer::~EWK2UnitTestServer() { - soup_uri_free(m_baseURI); + soup_uri_free(m_baseURL); g_object_unref(m_soupServer); } @@ -44,13 +44,13 @@ void EWK2UnitTestServer::run(SoupServerCallback serverCallback) soup_server_add_handler(m_soupServer, 0, serverCallback, 0, 0); } -CString EWK2UnitTestServer::getURIForPath(const char* path) const +CString EWK2UnitTestServer::getURLForPath(const char* path) const { - SoupURI* soupURI = soup_uri_new_with_base(m_baseURI, path); - char* uri = soup_uri_to_string(soupURI, false); - CString uriString = uri; - free(uri); - soup_uri_free(soupURI); + SoupURI* soupURL = soup_uri_new_with_base(m_baseURL, path); + char* url = soup_uri_to_string(soupURL, false); + CString urlString = url; + free(url); + soup_uri_free(soupURL); - return uriString; + return urlString; } diff --git a/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestServer.h b/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestServer.h index 3eb146f06..b967ce409 100644 --- a/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestServer.h +++ b/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestServer.h @@ -29,14 +29,12 @@ public: EWK2UnitTestServer(); virtual ~EWK2UnitTestServer(); - SoupURI* baseURI() const { return m_baseURI; } - - CString getURIForPath(const char* path) const; + CString getURLForPath(const char* path) const; void run(SoupServerCallback); private: SoupServer* m_soupServer; - SoupURI* m_baseURI; + SoupURI* m_baseURL; }; #endif // EWK2UnitTestServer_h diff --git a/Source/WebKit2/UIProcess/API/efl/tests/resources/frame_flattening_test.html b/Source/WebKit2/UIProcess/API/efl/tests/resources/frame_flattening_test.html new file mode 100644 index 000000000..6367992bb --- /dev/null +++ b/Source/WebKit2/UIProcess/API/efl/tests/resources/frame_flattening_test.html @@ -0,0 +1,4 @@ +<!doctype html> +<body onload="document.title=document.getElementById('test').offsetWidth;"> +<iframe id="test" src="./frame_flattening_test_subframe.html" width="200" frameborder="0"></iframe> +</body> diff --git a/Source/WebKit2/UIProcess/API/efl/tests/resources/frame_flattening_test_subframe.html b/Source/WebKit2/UIProcess/API/efl/tests/resources/frame_flattening_test_subframe.html new file mode 100644 index 000000000..56ef7c9bd --- /dev/null +++ b/Source/WebKit2/UIProcess/API/efl/tests/resources/frame_flattening_test_subframe.html @@ -0,0 +1,11 @@ +<!doctype html> +<head> +<style> +body { +width:600px; +margin:0px; +padding:0px; +} +</style> +</head> +<body></body> diff --git a/Source/WebKit2/UIProcess/API/efl/tests/resources/local_file_access.html b/Source/WebKit2/UIProcess/API/efl/tests/resources/local_file_access.html new file mode 100644 index 000000000..a71fbf976 --- /dev/null +++ b/Source/WebKit2/UIProcess/API/efl/tests/resources/local_file_access.html @@ -0,0 +1,31 @@ +<html> +<head> +<script> +function checkFrameLoaded() +{ + var myframe = document.getElementById('myframe'); + var testWindow = myframe.contentWindow; + var state = null; + try { + var state = testWindow.document.readyState; + if (state == "complete") { + document.title = "Frame loaded"; + return; + } + } catch(e) {} + document.title = "Frame NOT loaded"; +} + +function loadFrame() +{ + var myframe = document.getElementById('myframe'); + myframe.src = "default_test_page.html"; + + setTimeout("checkFrameLoaded()", 300); +} +</script> +</head> +<body onload="loadFrame()"> +<iframe id="myframe"></iframe> +</body> +</html> diff --git a/Source/WebKit2/UIProcess/API/efl/tests/resources/redirect_uri_to_default.html b/Source/WebKit2/UIProcess/API/efl/tests/resources/redirect_url_to_default.html index 846fd1113..846fd1113 100644 --- a/Source/WebKit2/UIProcess/API/efl/tests/resources/redirect_uri_to_default.html +++ b/Source/WebKit2/UIProcess/API/efl/tests/resources/redirect_url_to_default.html diff --git a/Source/WebKit2/UIProcess/API/efl/tests/resources/window_move_resize.html b/Source/WebKit2/UIProcess/API/efl/tests/resources/window_move_resize.html new file mode 100644 index 000000000..693ac2ef2 --- /dev/null +++ b/Source/WebKit2/UIProcess/API/efl/tests/resources/window_move_resize.html @@ -0,0 +1,15 @@ +<html> +<head> +<title>Window move and resize test</title> +<script> +function test() +{ + window.resizeTo(200, 100); + window.moveTo(150, 200); + document.title = "Moved and resized"; +} +</script> +</head> +<body onload="test()"> +</body> +</html> diff --git a/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_back_forward_list.cpp b/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_back_forward_list.cpp index 9542b76f0..80d7755ec 100644 --- a/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_back_forward_list.cpp +++ b/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_back_forward_list.cpp @@ -61,19 +61,19 @@ static void serverCallbackNavigation(SoupServer* server, SoupMessage* message, c soup_message_body_complete(message->response_body); } -static inline void checkItem(Ewk_Back_Forward_List_Item* item, const char* title, const char* uri, const char* originalURI) +static inline void checkItem(Ewk_Back_Forward_List_Item* item, const char* title, const char* url, const char* originalURL) { ASSERT_TRUE(item); - EXPECT_STREQ(uri, ewk_back_forward_list_item_uri_get(item)); + EXPECT_STREQ(url, ewk_back_forward_list_item_url_get(item)); EXPECT_STREQ(title, ewk_back_forward_list_item_title_get(item)); - EXPECT_STREQ(originalURI, ewk_back_forward_list_item_original_uri_get(item)); + EXPECT_STREQ(originalURL, ewk_back_forward_list_item_original_url_get(item)); } static inline WKEinaSharedString urlFromTitle(EWK2UnitTestServer* httpServer, const char* title) { Eina_Strbuf* path = eina_strbuf_new(); eina_strbuf_append_printf(path, "/%s", title); - WKEinaSharedString res = httpServer->getURIForPath(eina_strbuf_string_get(path)).data(); + WKEinaSharedString res = httpServer->getURLForPath(eina_strbuf_string_get(path)).data(); eina_strbuf_free(path); return res; @@ -89,7 +89,7 @@ static inline void freeEinaList(Eina_List* list) TEST_F(EWK2UnitTestBase, ewk_back_forward_list_current_item_get) { const char* url = environment->defaultTestPageUrl(); - loadUrlSync(url); + ASSERT_TRUE(loadUrlSync(url)); Ewk_Back_Forward_List* backForwardList = ewk_view_back_forward_list_get(webView()); ASSERT_TRUE(backForwardList); @@ -106,11 +106,11 @@ TEST_F(EWK2UnitTestBase, ewk_back_forward_list_previous_item_get) httpServer->run(serverCallbackNavigation); WKEinaSharedString url1 = urlFromTitle(httpServer.get(), title1); - loadUrlSync(url1); - ASSERT_STREQ(ewk_view_title_get(webView()), title1); + ASSERT_TRUE(loadUrlSync(url1)); + ASSERT_STREQ(title1, ewk_view_title_get(webView())); - loadUrlSync(urlFromTitle(httpServer.get(), title2)); - ASSERT_STREQ(ewk_view_title_get(webView()), title2); + ASSERT_TRUE(loadUrlSync(urlFromTitle(httpServer.get(), title2))); + ASSERT_STREQ(title2, ewk_view_title_get(webView())); Ewk_Back_Forward_List* backForwardList = ewk_view_back_forward_list_get(webView()); ASSERT_TRUE(backForwardList); @@ -127,12 +127,12 @@ TEST_F(EWK2UnitTestBase, ewk_back_forward_list_next_item_get) OwnPtr<EWK2UnitTestServer> httpServer = adoptPtr(new EWK2UnitTestServer); httpServer->run(serverCallbackNavigation); - loadUrlSync(urlFromTitle(httpServer.get(), title1)); - ASSERT_STREQ(ewk_view_title_get(webView()), title1); + ASSERT_TRUE(loadUrlSync(urlFromTitle(httpServer.get(), title1))); + ASSERT_STREQ(title1, ewk_view_title_get(webView())); WKEinaSharedString url2 = urlFromTitle(httpServer.get(), title2); - loadUrlSync(url2); - ASSERT_STREQ(ewk_view_title_get(webView()), title2); + ASSERT_TRUE(loadUrlSync(url2)); + ASSERT_STREQ(title2, ewk_view_title_get(webView())); // Go back to Page1. ewk_view_back(webView()); @@ -154,11 +154,11 @@ TEST_F(EWK2UnitTestBase, ewk_back_forward_list_item_at_index_get) httpServer->run(serverCallbackNavigation); WKEinaSharedString url1 = urlFromTitle(httpServer.get(), title1); - loadUrlSync(url1); - ASSERT_STREQ(ewk_view_title_get(webView()), title1); + ASSERT_TRUE(loadUrlSync(url1)); + ASSERT_STREQ(title1, ewk_view_title_get(webView())); - loadUrlSync(urlFromTitle(httpServer.get(), title2)); - ASSERT_STREQ(ewk_view_title_get(webView()), title2); + ASSERT_TRUE(loadUrlSync(urlFromTitle(httpServer.get(), title2))); + ASSERT_STREQ(title2, ewk_view_title_get(webView())); Ewk_Back_Forward_List* backForwardList = ewk_view_back_forward_list_get(webView()); ASSERT_TRUE(backForwardList); @@ -178,16 +178,16 @@ TEST_F(EWK2UnitTestBase, ewk_back_forward_list_count) OwnPtr<EWK2UnitTestServer> httpServer = adoptPtr(new EWK2UnitTestServer); httpServer->run(serverCallbackNavigation); - loadUrlSync(urlFromTitle(httpServer.get(), title1)); - ASSERT_STREQ(ewk_view_title_get(webView()), title1); + ASSERT_TRUE(loadUrlSync(urlFromTitle(httpServer.get(), title1))); + ASSERT_STREQ(title1, ewk_view_title_get(webView())); - loadUrlSync(urlFromTitle(httpServer.get(), title2)); - ASSERT_STREQ(ewk_view_title_get(webView()), title2); + ASSERT_TRUE(loadUrlSync(urlFromTitle(httpServer.get(), title2))); + ASSERT_STREQ(title2, ewk_view_title_get(webView())); Ewk_Back_Forward_List* backForwardList = ewk_view_back_forward_list_get(webView()); ASSERT_TRUE(backForwardList); - EXPECT_EQ(ewk_back_forward_list_count(backForwardList), 2); + EXPECT_EQ(2, ewk_back_forward_list_count(backForwardList)); } TEST_F(EWK2UnitTestBase, ewk_back_forward_list_n_back_items_copy) @@ -196,22 +196,22 @@ TEST_F(EWK2UnitTestBase, ewk_back_forward_list_n_back_items_copy) httpServer->run(serverCallbackNavigation); WKEinaSharedString url1 = urlFromTitle(httpServer.get(), title1); - loadUrlSync(url1); - ASSERT_STREQ(ewk_view_title_get(webView()), title1); + ASSERT_TRUE(loadUrlSync(url1)); + ASSERT_STREQ(title1, ewk_view_title_get(webView())); WKEinaSharedString url2 = urlFromTitle(httpServer.get(), title2); - loadUrlSync(url2); - ASSERT_STREQ(ewk_view_title_get(webView()), title2); + ASSERT_TRUE(loadUrlSync(url2)); + ASSERT_STREQ(title2, ewk_view_title_get(webView())); - loadUrlSync(urlFromTitle(httpServer.get(), title3)); - ASSERT_STREQ(ewk_view_title_get(webView()), title3); + ASSERT_TRUE(loadUrlSync(urlFromTitle(httpServer.get(), title3))); + ASSERT_STREQ(title3, ewk_view_title_get(webView())); Ewk_Back_Forward_List* backForwardList = ewk_view_back_forward_list_get(webView()); ASSERT_TRUE(backForwardList); Eina_List* backList = ewk_back_forward_list_n_back_items_copy(backForwardList, 1); ASSERT_TRUE(backList); - ASSERT_EQ(eina_list_count(backList), 1); + ASSERT_EQ(1, eina_list_count(backList)); checkItem(static_cast<Ewk_Back_Forward_List_Item*>(eina_list_nth(backList, 0)), title2, url2, url2); freeEinaList(backList); @@ -221,7 +221,7 @@ TEST_F(EWK2UnitTestBase, ewk_back_forward_list_n_back_items_copy) backList = ewk_back_forward_list_n_back_items_copy(backForwardList, -1); ASSERT_TRUE(backList); - ASSERT_EQ(eina_list_count(backList), 2); + ASSERT_EQ(2, eina_list_count(backList)); checkItem(static_cast<Ewk_Back_Forward_List_Item*>(eina_list_nth(backList, 0)), title1, url1, url1); checkItem(static_cast<Ewk_Back_Forward_List_Item*>(eina_list_nth(backList, 1)), title2, url2, url2); freeEinaList(backList); @@ -232,16 +232,16 @@ TEST_F(EWK2UnitTestBase, ewk_back_forward_list_n_forward_items_copy) OwnPtr<EWK2UnitTestServer> httpServer = adoptPtr(new EWK2UnitTestServer); httpServer->run(serverCallbackNavigation); - loadUrlSync(urlFromTitle(httpServer.get(), title1)); - ASSERT_STREQ(ewk_view_title_get(webView()), title1); + ASSERT_TRUE(loadUrlSync(urlFromTitle(httpServer.get(), title1))); + ASSERT_STREQ(title1, ewk_view_title_get(webView())); WKEinaSharedString url2 = urlFromTitle(httpServer.get(), title2); - loadUrlSync(url2); - ASSERT_STREQ(ewk_view_title_get(webView()), title2); + ASSERT_TRUE(loadUrlSync(url2)); + ASSERT_STREQ(title2, ewk_view_title_get(webView())); WKEinaSharedString url3 = urlFromTitle(httpServer.get(), title3); - loadUrlSync(url3); - ASSERT_STREQ(ewk_view_title_get(webView()), title3); + ASSERT_TRUE(loadUrlSync(url3)); + ASSERT_STREQ(title3, ewk_view_title_get(webView())); // Go back to Page1. ewk_view_back(webView()); @@ -254,7 +254,7 @@ TEST_F(EWK2UnitTestBase, ewk_back_forward_list_n_forward_items_copy) Eina_List* forwardList = ewk_back_forward_list_n_forward_items_copy(backForwardList, 1); ASSERT_TRUE(forwardList); - ASSERT_EQ(eina_list_count(forwardList), 1); + ASSERT_EQ(1, eina_list_count(forwardList)); checkItem(static_cast<Ewk_Back_Forward_List_Item*>(eina_list_nth(forwardList, 0)), title2, url2, url2); freeEinaList(forwardList); @@ -264,7 +264,7 @@ TEST_F(EWK2UnitTestBase, ewk_back_forward_list_n_forward_items_copy) forwardList = ewk_back_forward_list_n_forward_items_copy(backForwardList, -1); ASSERT_TRUE(forwardList); - ASSERT_EQ(eina_list_count(forwardList), 2); + ASSERT_EQ(2, eina_list_count(forwardList)); checkItem(static_cast<Ewk_Back_Forward_List_Item*>(eina_list_nth(forwardList, 0)), title2, url2, url2); checkItem(static_cast<Ewk_Back_Forward_List_Item*>(eina_list_nth(forwardList, 1)), title3, url3, url3); freeEinaList(forwardList); diff --git a/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_context.cpp b/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_context.cpp index 82ded55da..dff485348 100644 --- a/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_context.cpp +++ b/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_context.cpp @@ -56,19 +56,19 @@ TEST_F(EWK2UnitTestBase, ewk_context_cookie_manager_get) static void schemeRequestCallback(Ewk_Url_Scheme_Request* request, void* userData) { const char* scheme = ewk_url_scheme_request_scheme_get(request); - ASSERT_STREQ(scheme, "fooscheme"); + ASSERT_STREQ("fooscheme", scheme); const char* url = ewk_url_scheme_request_url_get(request); - ASSERT_STREQ(url, "fooscheme:MyPath"); + ASSERT_STREQ("fooscheme:MyPath", url); const char* path = ewk_url_scheme_request_path_get(request); - ASSERT_STREQ(path, "MyPath"); + ASSERT_STREQ("MyPath", path); ASSERT_TRUE(ewk_url_scheme_request_finish(request, htmlReply, strlen(htmlReply), "text/html")); } -TEST_F(EWK2UnitTestBase, ewk_context_uri_scheme_register) +TEST_F(EWK2UnitTestBase, ewk_context_url_scheme_register) { - ewk_context_uri_scheme_register(ewk_view_context_get(webView()), "fooscheme", schemeRequestCallback, 0); - loadUrlSync("fooscheme:MyPath"); - ASSERT_STREQ(ewk_view_title_get(webView()), "Foo"); + ewk_context_url_scheme_register(ewk_view_context_get(webView()), "fooscheme", schemeRequestCallback, 0); + ASSERT_TRUE(loadUrlSync("fooscheme:MyPath")); + ASSERT_STREQ("Foo", ewk_view_title_get(webView())); } struct VibrationCbData { @@ -128,7 +128,7 @@ TEST_F(EWK2UnitTestBase, ewk_context_vibration_client_callbacks_set) // This case the pattern will cause the device to vibrate for 200 ms, be still for 100 ms, and then vibrate for 5000 ms. loadVibrationHTMLString(webView(), "[200, 100, 5000]", true, &data); - ASSERT_EQ(data.vibrateCalledCount, 2); + ASSERT_EQ(2, data.vibrateCalledCount); ASSERT_TRUE(data.didReceiveVibrateCallback); // Cancel outstanding vibration pattern. @@ -141,13 +141,13 @@ TEST_F(EWK2UnitTestBase, ewk_context_vibration_client_callbacks_set) // Make sure we don't receive vibration event. loadVibrationHTMLString(webView(), "[5000]", false, &data); ASSERT_TRUE(waitUntilTitleChangedTo("Loaded")); - ASSERT_STREQ(ewk_view_title_get(webView()), "Loaded"); + ASSERT_STREQ("Loaded", ewk_view_title_get(webView())); ASSERT_FALSE(data.didReceiveVibrateCallback); // Make sure we don't receive cancel vibration event. loadVibrationHTMLString(webView(), "0", false, &data); ASSERT_TRUE(waitUntilTitleChangedTo("Loaded")); - ASSERT_STREQ(ewk_view_title_get(webView()), "Loaded"); + ASSERT_STREQ("Loaded", ewk_view_title_get(webView())); ASSERT_FALSE(data.didReceiveCancelVibrationCallback); } diff --git a/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_context_history_callbacks.cpp b/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_context_history_callbacks.cpp new file mode 100644 index 000000000..f60a16c2f --- /dev/null +++ b/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_context_history_callbacks.cpp @@ -0,0 +1,183 @@ +/* + * 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 "UnitTestUtils/EWK2UnitTestServer.h" +#include <EWebKit2.h> +#include <Ecore.h> +#include <gtest/gtest.h> + +using namespace EWK2UnitTest; + +extern EWK2UnitTestEnvironment* environment; + +static const char defaultTitle[] = "Default Testing Web Page"; + +static const char toBeRedirectedPath[] = "/some_page_to_be_redirected"; +static const char redirectionTargetPath[] = "/redirection_target"; + +static EWK2UnitTestServer* httpServer() +{ + static EWK2UnitTestServer* server = 0; + + if (!server) + server = new EWK2UnitTestServer; + + return server; +} + +#define DECLARE_INVOKE_FLAG(functionName) \ + static bool functionName##Invoked = false; + +#define WAS_INVOKED(functionName) \ + if (functionName##Invoked) \ + return; \ + functionName##Invoked = true + +#define CHECK_WAS_INVOKED(functionName) \ + ASSERT_TRUE(functionName##Invoked) + +DECLARE_INVOKE_FLAG(navigateWithNavigationData) +DECLARE_INVOKE_FLAG(performClientRedirect) +DECLARE_INVOKE_FLAG(performServerRedirect) +DECLARE_INVOKE_FLAG(updateHistoryTitle) +DECLARE_INVOKE_FLAG(populateVisitedLinks) + +static void navigateWithNavigationData(const Evas_Object* view, Ewk_Navigation_Data* navigationData, void* userData) +{ + WAS_INVOKED(navigateWithNavigationData); + + EWK2UnitTestBase* unitTest = static_cast<EWK2UnitTestBase*>(userData); + ASSERT_TRUE(unitTest); + ASSERT_EQ(unitTest->webView(), view); + // FIXME: WebFrameLoaderClient sends empty title. + // ASSERT_STREQ(defaultTitle, ewk_navigation_data_title_get(navigationData)); + ASSERT_STREQ(environment->defaultTestPageUrl(), ewk_navigation_data_url_get(navigationData)); + + Ewk_Url_Request* request = ewk_navigation_data_original_request_get(navigationData); + ASSERT_STREQ("GET", ewk_url_request_http_method_get(request)); + ASSERT_STREQ(environment->defaultTestPageUrl(), ewk_url_request_url_get(request)); + ASSERT_EQ(0, ewk_request_cookies_first_party_get(request)); +} + +static void performClientRedirect(const Evas_Object* view, const char* sourceUrl, const char* destinationUrl, void* userData) +{ + WAS_INVOKED(performClientRedirect); + + EWK2UnitTestBase* unitTest = static_cast<EWK2UnitTestBase*>(userData); + ASSERT_TRUE(unitTest); + ASSERT_EQ(unitTest->webView(), view); + ASSERT_STREQ(environment->urlForResource("redirect_url_to_default.html").data(), sourceUrl); + ASSERT_STREQ(environment->defaultTestPageUrl(), destinationUrl); +} + +static void performServerRedirect(const Evas_Object* view, const char* sourceUrl, const char* destinationUrl, void* userData) +{ + WAS_INVOKED(performServerRedirect); + + EWK2UnitTestBase* unitTest = static_cast<EWK2UnitTestBase*>(userData); + ASSERT_TRUE(unitTest); + ASSERT_EQ(unitTest->webView(), view); + ASSERT_STREQ(httpServer()->getURLForPath(toBeRedirectedPath).data(), sourceUrl); + ASSERT_STREQ(httpServer()->getURLForPath(redirectionTargetPath).data(), destinationUrl); +} + +static void updateHistoryTitle(const Evas_Object* view, const char* title, const char* url, void* userData) +{ + WAS_INVOKED(updateHistoryTitle); + + EWK2UnitTestBase* unitTest = static_cast<EWK2UnitTestBase*>(userData); + ASSERT_TRUE(unitTest); + ASSERT_EQ(unitTest->webView(), view); + ASSERT_STREQ(defaultTitle, title); + ASSERT_STREQ(environment->defaultTestPageUrl(), url); +} + +static void populateVisitedLinks(void* userData) +{ + WAS_INVOKED(populateVisitedLinks); + + EWK2UnitTestBase* unitTest = static_cast<EWK2UnitTestBase*>(userData); + ASSERT_TRUE(unitTest); +} + +static void onLoadFinishedForRedirection(void* userData, Evas_Object*, void*) +{ + int* countLoadFinished = static_cast<int*>(userData); + --(*countLoadFinished); +} + +static void serverCallbackRedirection(SoupServer*, SoupMessage* message, const char* path, GHashTable*, SoupClientContext*, gpointer) +{ + if (message->method != SOUP_METHOD_GET) { + soup_message_set_status(message, SOUP_STATUS_NOT_IMPLEMENTED); + return; + } + + if (strcmp(path, redirectionTargetPath)) { // Redirect if 'path' is not equal to 'redirectionTargetPath'. + soup_message_set_status(message, SOUP_STATUS_TEMPORARY_REDIRECT); + soup_message_headers_append(message->response_headers, "Location", httpServer()->getURLForPath(redirectionTargetPath).data()); + return; + } + + soup_message_set_status(message, SOUP_STATUS_OK); + Eina_Strbuf* body = eina_strbuf_new(); + eina_strbuf_append_printf(body, "<html><title>Redirection Target</title></html>"); + const size_t bodyLength = eina_strbuf_length_get(body); + soup_message_body_append(message->response_body, SOUP_MEMORY_TAKE, eina_strbuf_string_steal(body), bodyLength); + eina_strbuf_free(body); + + soup_message_body_complete(message->response_body); +} + +TEST_F(EWK2UnitTestBase, ewk_context_history_callbacks_set) +{ + ewk_context_history_callbacks_set(ewk_view_context_get(webView()), navigateWithNavigationData, performClientRedirect, performServerRedirect, updateHistoryTitle, populateVisitedLinks, this); + + // Test navigation. + ASSERT_TRUE(loadUrlSync(environment->defaultTestPageUrl())); + CHECK_WAS_INVOKED(navigateWithNavigationData); + CHECK_WAS_INVOKED(updateHistoryTitle); + CHECK_WAS_INVOKED(populateVisitedLinks); + + // Test client redirect. + int countLoadFinished = 2; + evas_object_smart_callback_add(webView(), "load,finished", onLoadFinishedForRedirection, &countLoadFinished); + ewk_view_url_set(webView(), environment->urlForResource("redirect_url_to_default.html").data()); + while (countLoadFinished) + ecore_main_loop_iterate(); + evas_object_smart_callback_del(webView(), "load,finished", onLoadFinishedForRedirection); + CHECK_WAS_INVOKED(performClientRedirect); + + // Test server redirect. + httpServer()->run(serverCallbackRedirection); + + ASSERT_TRUE(loadUrlSync(httpServer()->getURLForPath(toBeRedirectedPath).data())); + CHECK_WAS_INVOKED(performServerRedirect); +} + diff --git a/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_cookie_manager.cpp b/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_cookie_manager.cpp index 4353ced79..598b15519 100644 --- a/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_cookie_manager.cpp +++ b/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_cookie_manager.cpp @@ -65,7 +65,7 @@ static void serverCallback(SoupServer* server, SoupMessage* message, const char* soup_message_body_complete(message->response_body); } -static void getAcceptPolicyCallback(Ewk_Cookie_Accept_Policy policy, Ewk_Web_Error* error, void* event_info) +static void getAcceptPolicyCallback(Ewk_Cookie_Accept_Policy policy, Ewk_Error* error, void* event_info) { ASSERT_FALSE(error); Ewk_Cookie_Accept_Policy* ret = static_cast<Ewk_Cookie_Accept_Policy*>(event_info); @@ -81,7 +81,7 @@ static Ewk_Cookie_Accept_Policy getAcceptPolicy(Ewk_Cookie_Manager* manager) return policy; } -static void getHostnamesWithCookiesCallback(Eina_List* hostnames, Ewk_Web_Error* error, void* event_info) +static void getHostnamesWithCookiesCallback(Eina_List* hostnames, Ewk_Error* error, void* event_info) { ASSERT_FALSE(error); @@ -116,6 +116,11 @@ static int countHostnamesWithCookies(Ewk_Cookie_Manager* manager) return count; } +static int compareHostNames(const void* hostName1, const void* hostName2) +{ + return strcmp(static_cast<const char*>(hostName1), static_cast<const char*>(hostName2)); +} + TEST_F(EWK2UnitTestBase, ewk_cookie_manager_accept_policy) { OwnPtr<EWK2UnitTestServer> httpServer = adoptPtr(new EWK2UnitTestServer); @@ -125,32 +130,33 @@ TEST_F(EWK2UnitTestBase, ewk_cookie_manager_accept_policy) ASSERT_TRUE(cookieManager); // Default policy is EWK_COOKIE_ACCEPT_POLICY_NO_THIRD_PARTY. - ASSERT_EQ(getAcceptPolicy(cookieManager), EWK_COOKIE_ACCEPT_POLICY_NO_THIRD_PARTY); - loadUrlSync(httpServer->getURIForPath("/index.html").data()); + ASSERT_EQ(EWK_COOKIE_ACCEPT_POLICY_NO_THIRD_PARTY, getAcceptPolicy(cookieManager)); + ASSERT_TRUE(loadUrlSync(httpServer->getURLForPath("/index.html").data())); Eina_List* hostnames = getHostnamesWithCookies(cookieManager); - ASSERT_EQ(eina_list_count(hostnames), 1); - ASSERT_STREQ(static_cast<char*>(eina_list_nth(hostnames, 0)), FIRST_PARTY_DOMAIN); + ASSERT_EQ(1, eina_list_count(hostnames)); + ASSERT_STREQ(FIRST_PARTY_DOMAIN, static_cast<char*>(eina_list_nth(hostnames, 0))); freeHostNames(hostnames); ewk_cookie_manager_cookies_clear(cookieManager); // Change policy to EWK_COOKIE_ACCEPT_POLICY_ALWAYS ewk_cookie_manager_accept_policy_set(cookieManager, EWK_COOKIE_ACCEPT_POLICY_ALWAYS); - ASSERT_EQ(getAcceptPolicy(cookieManager), EWK_COOKIE_ACCEPT_POLICY_ALWAYS); - loadUrlSync(httpServer->getURIForPath("/index.html").data()); + ASSERT_EQ(EWK_COOKIE_ACCEPT_POLICY_ALWAYS, getAcceptPolicy(cookieManager)); + ASSERT_TRUE(loadUrlSync(httpServer->getURLForPath("/index.html").data())); hostnames = getHostnamesWithCookies(cookieManager); - ASSERT_EQ(eina_list_count(hostnames), 2); - ASSERT_STREQ(static_cast<char*>(eina_list_nth(hostnames, 0)), FIRST_PARTY_DOMAIN); - ASSERT_STREQ(static_cast<char*>(eina_list_nth(hostnames, 1)), THIRD_PARTY_DOMAIN); + ASSERT_EQ(2, eina_list_count(hostnames)); + hostnames = eina_list_sort(hostnames, eina_list_count(hostnames), compareHostNames); + ASSERT_STREQ(FIRST_PARTY_DOMAIN, static_cast<char*>(eina_list_nth(hostnames, 0))); + ASSERT_STREQ(THIRD_PARTY_DOMAIN, static_cast<char*>(eina_list_nth(hostnames, 1))); freeHostNames(hostnames); ewk_cookie_manager_cookies_clear(cookieManager); // Change policy to EWK_COOKIE_ACCEPT_POLICY_NEVER ewk_cookie_manager_accept_policy_set(cookieManager, EWK_COOKIE_ACCEPT_POLICY_NEVER); - ASSERT_EQ(getAcceptPolicy(cookieManager), EWK_COOKIE_ACCEPT_POLICY_NEVER); - loadUrlSync(httpServer->getURIForPath("/index.html").data()); - ASSERT_EQ(countHostnamesWithCookies(cookieManager), 0); + ASSERT_EQ(EWK_COOKIE_ACCEPT_POLICY_NEVER, getAcceptPolicy(cookieManager)); + ASSERT_TRUE(loadUrlSync(httpServer->getURLForPath("/index.html").data())); + ASSERT_EQ(0, countHostnamesWithCookies(cookieManager)); } void onCookiesChanged(void *eventInfo) @@ -168,14 +174,14 @@ TEST_F(EWK2UnitTestBase, ewk_cookie_manager_changes_watch) ASSERT_TRUE(cookieManager); ewk_cookie_manager_accept_policy_set(cookieManager, EWK_COOKIE_ACCEPT_POLICY_ALWAYS); - ASSERT_EQ(getAcceptPolicy(cookieManager), EWK_COOKIE_ACCEPT_POLICY_ALWAYS); + ASSERT_EQ(EWK_COOKIE_ACCEPT_POLICY_ALWAYS, getAcceptPolicy(cookieManager)); // Watch for changes bool cookiesChanged = false; ewk_cookie_manager_changes_watch(cookieManager, onCookiesChanged, &cookiesChanged); // Check for cookie changes notifications - loadUrlSync(httpServer->getURIForPath("/index.html").data()); + ASSERT_TRUE(loadUrlSync(httpServer->getURLForPath("/index.html").data())); while (!cookiesChanged) ecore_main_loop_iterate(); @@ -190,8 +196,8 @@ TEST_F(EWK2UnitTestBase, ewk_cookie_manager_changes_watch) // Stop watching for notifications ewk_cookie_manager_changes_watch(cookieManager, 0, 0); cookiesChanged = false; - loadUrlSync(httpServer->getURIForPath("/index.html").data()); - ASSERT_EQ(countHostnamesWithCookies(cookieManager), 2); + ASSERT_TRUE(loadUrlSync(httpServer->getURLForPath("/index.html").data())); + ASSERT_EQ(2, countHostnamesWithCookies(cookieManager)); ASSERT_FALSE(cookiesChanged); // Watch again for notifications @@ -204,15 +210,15 @@ TEST_F(EWK2UnitTestBase, ewk_cookie_manager_changes_watch) ASSERT_TRUE(mktemp(textStorage2)); ewk_cookie_manager_persistent_storage_set(cookieManager, textStorage1, EWK_COOKIE_PERSISTENT_STORAGE_TEXT); - loadUrlSync(httpServer->getURIForPath("/index.html").data()); - ASSERT_EQ(countHostnamesWithCookies(cookieManager), 2); + ASSERT_TRUE(loadUrlSync(httpServer->getURLForPath("/index.html").data())); + ASSERT_EQ(2, countHostnamesWithCookies(cookieManager)); cookiesChanged = false; ewk_cookie_manager_persistent_storage_set(cookieManager, textStorage2, EWK_COOKIE_PERSISTENT_STORAGE_TEXT); - ASSERT_EQ(countHostnamesWithCookies(cookieManager), 0); + ASSERT_EQ(0, countHostnamesWithCookies(cookieManager)); ewk_cookie_manager_persistent_storage_set(cookieManager, textStorage1, EWK_COOKIE_PERSISTENT_STORAGE_TEXT); - ASSERT_EQ(countHostnamesWithCookies(cookieManager), 2); + ASSERT_EQ(2, countHostnamesWithCookies(cookieManager)); ASSERT_FALSE(cookiesChanged); @@ -231,31 +237,31 @@ TEST_F(EWK2UnitTestBase, ewk_cookie_manager_cookies_delete) ASSERT_TRUE(cookieManager); ewk_cookie_manager_accept_policy_set(cookieManager, EWK_COOKIE_ACCEPT_POLICY_ALWAYS); - ASSERT_EQ(getAcceptPolicy(cookieManager), EWK_COOKIE_ACCEPT_POLICY_ALWAYS); + ASSERT_EQ(EWK_COOKIE_ACCEPT_POLICY_ALWAYS, getAcceptPolicy(cookieManager)); - loadUrlSync(httpServer->getURIForPath("/index.html").data()); + ASSERT_TRUE(loadUrlSync(httpServer->getURLForPath("/index.html").data())); Eina_List* hostnames = getHostnamesWithCookies(cookieManager); - ASSERT_EQ(eina_list_count(hostnames), 2); + ASSERT_EQ(2, eina_list_count(hostnames)); freeHostNames(hostnames); // Delete first party cookie ewk_cookie_manager_hostname_cookies_clear(cookieManager, FIRST_PARTY_DOMAIN); hostnames = getHostnamesWithCookies(cookieManager); - ASSERT_EQ(eina_list_count(hostnames), 1); - ASSERT_STREQ(static_cast<char*>(eina_list_nth(hostnames, 0)), THIRD_PARTY_DOMAIN); + ASSERT_EQ(1, eina_list_count(hostnames)); + ASSERT_STREQ(THIRD_PARTY_DOMAIN, static_cast<char*>(eina_list_nth(hostnames, 0))); freeHostNames(hostnames); // Delete third party cookie ewk_cookie_manager_hostname_cookies_clear(cookieManager, THIRD_PARTY_DOMAIN); - ASSERT_EQ(countHostnamesWithCookies(cookieManager), 0); + ASSERT_EQ(0, countHostnamesWithCookies(cookieManager)); // Get all cookies again - loadUrlSync(httpServer->getURIForPath("/index.html").data()); - ASSERT_EQ(countHostnamesWithCookies(cookieManager), 2); + ASSERT_TRUE(loadUrlSync(httpServer->getURLForPath("/index.html").data())); + ASSERT_EQ(2, countHostnamesWithCookies(cookieManager)); // Clear all cookies ewk_cookie_manager_cookies_clear(cookieManager); - ASSERT_EQ(countHostnamesWithCookies(cookieManager), 0); + ASSERT_EQ(0, countHostnamesWithCookies(cookieManager)); } TEST_F(EWK2UnitTestBase, DISABLED_ewk_cookie_manager_permanent_storage) @@ -273,33 +279,33 @@ TEST_F(EWK2UnitTestBase, DISABLED_ewk_cookie_manager_permanent_storage) ASSERT_TRUE(cookieManager); ewk_cookie_manager_accept_policy_set(cookieManager, EWK_COOKIE_ACCEPT_POLICY_ALWAYS); - ASSERT_EQ(getAcceptPolicy(cookieManager), EWK_COOKIE_ACCEPT_POLICY_ALWAYS); + ASSERT_EQ(EWK_COOKIE_ACCEPT_POLICY_ALWAYS, getAcceptPolicy(cookieManager)); // Text storage using a new file. ewk_cookie_manager_persistent_storage_set(cookieManager, textStorage, EWK_COOKIE_PERSISTENT_STORAGE_TEXT); - ASSERT_EQ(countHostnamesWithCookies(cookieManager), 0); + ASSERT_EQ(0, countHostnamesWithCookies(cookieManager)); - loadUrlSync(httpServer->getURIForPath("/index.html").data()); - ASSERT_EQ(countHostnamesWithCookies(cookieManager), 2); + ASSERT_TRUE(loadUrlSync(httpServer->getURLForPath("/index.html").data())); + ASSERT_EQ(2, countHostnamesWithCookies(cookieManager)); // SQLite storage using a new file. ewk_cookie_manager_persistent_storage_set(cookieManager, sqliteStorage, EWK_COOKIE_PERSISTENT_STORAGE_SQLITE); - ASSERT_EQ(countHostnamesWithCookies(cookieManager), 0); + ASSERT_EQ(0, countHostnamesWithCookies(cookieManager)); - loadUrlSync(httpServer->getURIForPath("/index.html").data()); - ASSERT_EQ(countHostnamesWithCookies(cookieManager), 2); + ASSERT_TRUE(loadUrlSync(httpServer->getURLForPath("/index.html").data())); + ASSERT_EQ(2, countHostnamesWithCookies(cookieManager)); // Text storage using an existing file. ewk_cookie_manager_persistent_storage_set(cookieManager, textStorage, EWK_COOKIE_PERSISTENT_STORAGE_TEXT); - ASSERT_EQ(countHostnamesWithCookies(cookieManager), 2); + ASSERT_EQ(2, countHostnamesWithCookies(cookieManager)); ewk_cookie_manager_cookies_clear(cookieManager); - ASSERT_EQ(countHostnamesWithCookies(cookieManager), 0); + ASSERT_EQ(0, countHostnamesWithCookies(cookieManager)); // SQLite storage with an existing file. ewk_cookie_manager_persistent_storage_set(cookieManager, sqliteStorage, EWK_COOKIE_PERSISTENT_STORAGE_SQLITE); - ASSERT_EQ(countHostnamesWithCookies(cookieManager), 2); + ASSERT_EQ(2, countHostnamesWithCookies(cookieManager)); ewk_cookie_manager_cookies_clear(cookieManager); - ASSERT_EQ(countHostnamesWithCookies(cookieManager), 0); + ASSERT_EQ(0, countHostnamesWithCookies(cookieManager)); // Final clean up. unlink(textStorage); diff --git a/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_download_job.cpp b/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_download_job.cpp index 22c97aad8..1494926e2 100644 --- a/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_download_job.cpp +++ b/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_download_job.cpp @@ -102,23 +102,23 @@ static void on_download_requested(void* userData, Evas_Object* webview, void* ev { DownloadTestData* testData = static_cast<DownloadTestData*>(userData); Ewk_Download_Job* download = static_cast<Ewk_Download_Job*>(eventInfo); - ASSERT_EQ(ewk_download_job_state_get(download), EWK_DOWNLOAD_JOB_STATE_NOT_STARTED); - ASSERT_EQ(ewk_download_job_estimated_progress_get(download), 0); - ASSERT_EQ(ewk_download_job_elapsed_time_get(download), 0); + ASSERT_EQ(EWK_DOWNLOAD_JOB_STATE_NOT_STARTED, ewk_download_job_state_get(download)); + ASSERT_EQ(0, ewk_download_job_estimated_progress_get(download)); + ASSERT_EQ(0, ewk_download_job_elapsed_time_get(download)); Ewk_Url_Request* request = ewk_download_job_request_get(download); ASSERT_TRUE(request); - EXPECT_STREQ(ewk_url_request_url_get(request), testData->fileUrl); + EXPECT_STREQ(testData->fileUrl, ewk_url_request_url_get(request)); Ewk_Url_Response* response = ewk_download_job_response_get(download); ASSERT_TRUE(response); - EXPECT_STREQ(ewk_url_response_mime_type_get(response), "application/pdf"); + EXPECT_STREQ("application/pdf", ewk_url_response_mime_type_get(response)); - EXPECT_STREQ(ewk_download_job_suggested_filename_get(download), serverSuggestedFilename); + EXPECT_STREQ(serverSuggestedFilename, ewk_download_job_suggested_filename_get(download)); ASSERT_FALSE(fileExists(testData->destinationPath)); ewk_download_job_destination_set(download, testData->destinationPath); - EXPECT_STREQ(ewk_download_job_destination_get(download), testData->destinationPath); + EXPECT_STREQ(testData->destinationPath, ewk_download_job_destination_get(download)); } static void on_download_cancelled(void* userData, Evas_Object* webview, void* eventInfo) @@ -131,7 +131,7 @@ static void on_download_cancelled(void* userData, Evas_Object* webview, void* ev static void on_download_failed(void* userData, Evas_Object* webview, void* eventInfo) { Ewk_Download_Job_Error* downloadError = static_cast<Ewk_Download_Job_Error*>(eventInfo); - fprintf(stderr, "Download error: %s\n", ewk_web_error_description_get(downloadError->error)); + fprintf(stderr, "Download error: %s\n", ewk_error_description_get(downloadError->error)); ecore_main_loop_quit(); FAIL(); } @@ -141,8 +141,8 @@ static void on_download_finished(void* userData, Evas_Object* webview, void* eve DownloadTestData* testData = static_cast<DownloadTestData*>(userData); Ewk_Download_Job* download = static_cast<Ewk_Download_Job*>(eventInfo); - ASSERT_EQ(ewk_download_job_estimated_progress_get(download), 1); - ASSERT_EQ(ewk_download_job_state_get(download), EWK_DOWNLOAD_JOB_STATE_FINISHED); + ASSERT_EQ(1, ewk_download_job_estimated_progress_get(download)); + ASSERT_EQ(EWK_DOWNLOAD_JOB_STATE_FINISHED, ewk_download_job_state_get(download)); ASSERT_GT(ewk_download_job_elapsed_time_get(download), 0); ASSERT_TRUE(fileExists(testData->destinationPath)); @@ -159,7 +159,7 @@ TEST_F(EWK2UnitTestBase, ewk_download) char destinationPath[] = "/tmp/pdf-file.XXXXXX"; ASSERT_TRUE(mktemp(destinationPath)); - CString fileUrl = httpServer->getURIForPath(testFilePath); + CString fileUrl = httpServer->getURLForPath(testFilePath); DownloadTestData userData = { fileUrl.data(), destinationPath }; ASSERT_FALSE(fileExists(destinationPath)); @@ -170,7 +170,7 @@ TEST_F(EWK2UnitTestBase, ewk_download) evas_object_smart_callback_add(webView(), "download,finished", on_download_finished, &userData); // Download test pdf - ewk_view_uri_set(webView(), fileUrl.data()); + ewk_view_url_set(webView(), fileUrl.data()); ecore_main_loop_begin(); // Clean up diff --git a/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_intents.cpp b/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_intents.cpp index be8b0ffa8..4b46cd883 100644 --- a/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_intents.cpp +++ b/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_intents.cpp @@ -43,18 +43,18 @@ static void onIntentServiceRegistration(void* userData, Evas_Object*, void* even Ewk_Intent_Service* service = static_cast<Ewk_Intent_Service*>(eventInfo); ASSERT_TRUE(service); - EXPECT_STREQ(ewk_intent_service_action_get(service), "action"); - EXPECT_STREQ(ewk_intent_service_type_get(service), "type"); - EXPECT_STREQ(ewk_intent_service_title_get(service), "Title"); - EXPECT_STREQ(ewk_intent_service_href_get(service), "http://example.com/service"); - EXPECT_STREQ(ewk_intent_service_disposition_get(service), "inline"); + EXPECT_STREQ("action", ewk_intent_service_action_get(service)); + EXPECT_STREQ("type", ewk_intent_service_type_get(service)); + EXPECT_STREQ("Title", ewk_intent_service_title_get(service)); + EXPECT_STREQ("http://example.com/service", ewk_intent_service_href_get(service)); + EXPECT_STREQ("inline", ewk_intent_service_disposition_get(service)); } TEST_F(EWK2UnitTestBase, ewk_intent_service_registration) { bool intentRegistered = false; evas_object_smart_callback_add(webView(), "intent,service,register", onIntentServiceRegistration, &intentRegistered); - loadUrlSync(environment->urlForResource("intent-service.html").data()); + ASSERT_TRUE(loadUrlSync(environment->urlForResource("intent-service.html").data())); evas_object_smart_callback_del(webView(), "intent,service,register", onIntentServiceRegistration); ASSERT_TRUE(intentRegistered); } @@ -76,22 +76,22 @@ static void onIntentReceived(void* userData, Evas_Object*, void* eventInfo) if (*intentReceivedCount == 1) { // First intent. - EXPECT_STREQ(ewk_intent_action_get(intent), "action1"); - EXPECT_STREQ(ewk_intent_type_get(intent), "mime/type1"); - EXPECT_STREQ(ewk_intent_service_get(intent), "http://service1.com/"); - EXPECT_STREQ(ewk_intent_extra_get(intent, "key1"), "value1"); - EXPECT_STREQ(ewk_intent_extra_get(intent, "key2"), "value2"); + EXPECT_STREQ("action1", ewk_intent_action_get(intent)); + EXPECT_STREQ("mime/type1", ewk_intent_type_get(intent)); + EXPECT_STREQ("http://service1.com/", ewk_intent_service_get(intent)); + EXPECT_STREQ("value1", ewk_intent_extra_get(intent, "key1")); + EXPECT_STREQ("value2", ewk_intent_extra_get(intent, "key2")); } else { // Second intent. - EXPECT_STREQ(ewk_intent_action_get(intent), "action2"); - EXPECT_STREQ(ewk_intent_type_get(intent), "mime/type2"); + EXPECT_STREQ("action2", ewk_intent_action_get(intent)); + EXPECT_STREQ("mime/type2", ewk_intent_type_get(intent)); Eina_List* suggestions = ewk_intent_suggestions_get(intent); ASSERT_TRUE(suggestions); - ASSERT_EQ(eina_list_count(suggestions), 2); + ASSERT_EQ(2, eina_list_count(suggestions)); // We need to sort the suggestions since Intent is using a HashSet internally. suggestions = eina_list_sort(suggestions, 2, stringSortCb); - EXPECT_STREQ(static_cast<const char*>(eina_list_nth(suggestions, 0)), "http://service1.com/"); - EXPECT_STREQ(static_cast<const char*>(eina_list_nth(suggestions, 1)), "http://service2.com/"); + EXPECT_STREQ("http://service1.com/", static_cast<const char*>(eina_list_nth(suggestions, 0))); + EXPECT_STREQ("http://service2.com/", static_cast<const char*>(eina_list_nth(suggestions, 1))); void* listData = 0; EINA_LIST_FREE(suggestions, listData) @@ -103,18 +103,18 @@ TEST_F(EWK2UnitTestBase, ewk_intent_request) { unsigned intentReceivedCount = 0; evas_object_smart_callback_add(webView(), "intent,request,new", onIntentReceived, &intentReceivedCount); - loadUrlSync(environment->urlForResource("intent-request.html").data()); + ASSERT_TRUE(loadUrlSync(environment->urlForResource("intent-request.html").data())); // A user gesture is required for the intent to start. mouseClick(5, 5); while (intentReceivedCount != 1) ecore_main_loop_iterate(); - ASSERT_EQ(intentReceivedCount, 1); + ASSERT_EQ(1, intentReceivedCount); // Generate a second intent request. mouseClick(5, 5); while (intentReceivedCount != 2) ecore_main_loop_iterate(); - ASSERT_EQ(intentReceivedCount, 2); + ASSERT_EQ(2, intentReceivedCount); evas_object_smart_callback_del(webView(), "intent,request,new", onIntentReceived); } 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 index fb6e57269..939d20c6d 100644 --- 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 @@ -65,14 +65,14 @@ 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); + ASSERT_EQ(0, evas_object_ref_get(object.get())); { 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); + ASSERT_EQ(1, evas_object_ref_get(object.get())); + ASSERT_EQ(1, evas_object_ref_get(aRef.get())); { RefPtr<Evas_Object> bRef = object; @@ -81,51 +81,51 @@ TEST_F(EWK2UnitTestBase, reffing) ASSERT_TRUE(aRef); ASSERT_TRUE(bRef); - ASSERT_EQ(evas_object_ref_get(object.get()), 2); - ASSERT_EQ(evas_object_ref_get(aRef.get()), 2); + ASSERT_EQ(2, evas_object_ref_get(object.get())); + ASSERT_EQ(2, evas_object_ref_get(aRef.get())); 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); + ASSERT_EQ(3, evas_object_ref_get(object.get())); + ASSERT_EQ(3, evas_object_ref_get(aRef.get())); + ASSERT_EQ(3, evas_object_ref_get(bRef.get())); + ASSERT_EQ(3, evas_object_ref_get(cRef.get())); 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(2, evas_object_ref_get(object.get())); + ASSERT_EQ(2, evas_object_ref_get(aRef.get())); + ASSERT_EQ(2, evas_object_ref_get(cRef.get())); } - ASSERT_EQ(evas_object_ref_get(object.get()), 1); - ASSERT_EQ(evas_object_ref_get(aRef.get()), 1); + ASSERT_EQ(1, evas_object_ref_get(object.get())); + ASSERT_EQ(1, evas_object_ref_get(aRef.get())); } - ASSERT_EQ(evas_object_ref_get(object.get()), 0); + ASSERT_EQ(0, evas_object_ref_get(object.get())); } 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); + ASSERT_EQ(0, evas_object_ref_get(object.get())); 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); + ASSERT_EQ(1, evas_object_ref_get(object.get())); + ASSERT_EQ(1, evas_object_ref_get(aRef.get())); object = nullptr; - ASSERT_EQ(evas_object_ref_get(object.get()), 0); - ASSERT_EQ(evas_object_ref_get(aRef.get()), 0); + ASSERT_EQ(0, evas_object_ref_get(object.get())); + ASSERT_EQ(0, evas_object_ref_get(aRef.get())); object = aRef; - ASSERT_EQ(evas_object_ref_get(object.get()), 1); - ASSERT_EQ(evas_object_ref_get(aRef.get()), 1); + ASSERT_EQ(1, evas_object_ref_get(object.get())); + ASSERT_EQ(1, evas_object_ref_get(aRef.get())); object = 0; - ASSERT_EQ(evas_object_ref_get(object.get()), 0); - ASSERT_EQ(evas_object_ref_get(aRef.get()), 0); + ASSERT_EQ(0, evas_object_ref_get(object.get())); + ASSERT_EQ(0, evas_object_ref_get(aRef.get())); aRef.clear(); ASSERT_FALSE(aRef); diff --git a/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_settings.cpp b/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_settings.cpp index 9889bbae7..32f981788 100644 --- a/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_settings.cpp +++ b/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_settings.cpp @@ -26,11 +26,14 @@ #include "config.h" #include "UnitTestUtils/EWK2UnitTestBase.h" +#include "UnitTestUtils/EWK2UnitTestEnvironment.h" #include <EWebKit2.h> #include <Eina.h> using namespace EWK2UnitTest; +extern EWK2UnitTestEnvironment* environment; + TEST_F(EWK2UnitTestBase, ewk_settings_fullscreen_enabled) { Ewk_Settings* settings = ewk_view_settings_get(webView()); @@ -95,3 +98,62 @@ TEST_F(EWK2UnitTestBase, ewk_settings_developer_extras_enabled) ASSERT_TRUE(ewk_settings_developer_extras_enabled_set(settings, EINA_FALSE)); ASSERT_FALSE(ewk_settings_developer_extras_enabled_get(settings)); } + +TEST_F(EWK2UnitTestBase, ewk_settings_file_access_from_file_urls_allowed) +{ + CString testURL = environment->urlForResource("local_file_access.html"); + Ewk_Settings* settings = ewk_view_settings_get(webView()); + + ASSERT_FALSE(ewk_settings_file_access_from_file_urls_allowed_get(settings)); + + ASSERT_TRUE(ewk_settings_file_access_from_file_urls_allowed_set(settings, true)); + ASSERT_TRUE(ewk_settings_file_access_from_file_urls_allowed_get(settings)); + + // Check that file access from file:// URLs is allowed. + ewk_view_url_set(webView(), testURL.data()); + ASSERT_TRUE(waitUntilTitleChangedTo("Frame loaded")); + + ASSERT_TRUE(ewk_settings_file_access_from_file_urls_allowed_set(settings, false)); + ASSERT_FALSE(ewk_settings_file_access_from_file_urls_allowed_get(settings)); + + // Check that file access from file:// URLs is NOT allowed. + ewk_view_url_set(webView(), testURL.data()); + ASSERT_TRUE(waitUntilTitleChangedTo("Frame NOT loaded")); +} + +TEST_F(EWK2UnitTestBase, ewk_settings_frame_flattening_enabled_set) +{ + Ewk_Settings* settings = ewk_view_settings_get(webView()); + ASSERT_TRUE(settings); + + // The frame flattening is disabled by default. + ASSERT_FALSE(ewk_settings_frame_flattening_enabled_get(settings)); + ewk_view_url_set(webView(), environment->urlForResource("frame_flattening_test.html").data()); + waitUntilTitleChangedTo("200"); // width of iframe tag. + ASSERT_STREQ("200", ewk_view_title_get(webView())); + + ASSERT_TRUE(ewk_settings_frame_flattening_enabled_set(settings, true)); + ASSERT_TRUE(ewk_settings_frame_flattening_enabled_get(settings)); + ewk_view_url_set(webView(), environment->urlForResource("frame_flattening_test.html").data()); + waitUntilTitleChangedTo("600"); // width of frame_flattening_test_subframe.html + ASSERT_STREQ("600", ewk_view_title_get(webView())); + + ASSERT_TRUE(ewk_settings_frame_flattening_enabled_set(settings, false)); + ASSERT_FALSE(ewk_settings_frame_flattening_enabled_get(settings)); + ewk_view_url_set(webView(), environment->urlForResource("frame_flattening_test.html").data()); + waitUntilTitleChangedTo("200"); // width of iframe tag. + ASSERT_STREQ("200", ewk_view_title_get(webView())); +} + +TEST_F(EWK2UnitTestBase, ewk_settings_dns_prefetching_enabled) +{ + Ewk_Settings* settings = ewk_view_settings_get(webView()); + + // DNS prefeching is disabled by default. + ASSERT_FALSE(ewk_settings_dns_prefetching_enabled_get(settings)); + ASSERT_TRUE(ewk_settings_dns_prefetching_enabled_set(settings, true)); + ASSERT_TRUE(ewk_settings_dns_prefetching_enabled_get(settings)); + + ASSERT_TRUE(ewk_settings_dns_prefetching_enabled_set(settings, false)); + ASSERT_FALSE(ewk_settings_dns_prefetching_enabled_get(settings)); +} diff --git a/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp b/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp index 73f3ac749..0ab0c912e 100644 --- a/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp +++ b/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp @@ -44,42 +44,42 @@ static void onLoadFinishedForRedirection(void* userData, Evas_Object*, void*) (*countLoadFinished)--; } -TEST_F(EWK2UnitTestBase, ewk_view_uri_get) +TEST_F(EWK2UnitTestBase, ewk_view_url_get) { - loadUrlSync(environment->defaultTestPageUrl()); - EXPECT_STREQ(ewk_view_uri_get(webView()), environment->defaultTestPageUrl()); + ASSERT_TRUE(loadUrlSync(environment->defaultTestPageUrl())); + EXPECT_STREQ(environment->defaultTestPageUrl(), ewk_view_url_get(webView())); int countLoadFinished = 2; evas_object_smart_callback_add(webView(), "load,finished", onLoadFinishedForRedirection, &countLoadFinished); - ewk_view_uri_set(webView(), environment->urlForResource("redirect_uri_to_default.html").data()); + ewk_view_url_set(webView(), environment->urlForResource("redirect_url_to_default.html").data()); while (countLoadFinished) ecore_main_loop_iterate(); evas_object_smart_callback_del(webView(), "load,finished", onLoadFinishedForRedirection); - EXPECT_STREQ(ewk_view_uri_get(webView()), environment->defaultTestPageUrl()); + EXPECT_STREQ(environment->defaultTestPageUrl(), ewk_view_url_get(webView())); } TEST_F(EWK2UnitTestBase, ewk_view_device_pixel_ratio) { - loadUrlSync(environment->defaultTestPageUrl()); + ASSERT_TRUE(loadUrlSync(environment->defaultTestPageUrl())); // Default pixel ratio is 1.0 - ASSERT_FLOAT_EQ(ewk_view_device_pixel_ratio_get(webView()), 1); + ASSERT_FLOAT_EQ(1, ewk_view_device_pixel_ratio_get(webView())); ASSERT_TRUE(ewk_view_device_pixel_ratio_set(webView(), 1.2)); - ASSERT_FLOAT_EQ(ewk_view_device_pixel_ratio_get(webView()), 1.2); + ASSERT_FLOAT_EQ(1.2, ewk_view_device_pixel_ratio_get(webView())); ASSERT_TRUE(ewk_view_device_pixel_ratio_set(webView(), 1)); - ASSERT_FLOAT_EQ(ewk_view_device_pixel_ratio_get(webView()), 1); + ASSERT_FLOAT_EQ(1, ewk_view_device_pixel_ratio_get(webView())); } TEST_F(EWK2UnitTestBase, ewk_view_html_string_load) { ewk_view_html_string_load(webView(), "<html><head><title>Foo</title></head><body>Bar</body></html>", 0, 0); ASSERT_TRUE(waitUntilTitleChangedTo("Foo")); - ASSERT_STREQ(ewk_view_title_get(webView()), "Foo"); + ASSERT_STREQ("Foo", ewk_view_title_get(webView())); ewk_view_html_string_load(webView(), "<html><head><title>Bar</title></head><body>Foo</body></html>", 0, 0); ASSERT_TRUE(waitUntilTitleChangedTo("Bar")); - ASSERT_STREQ(ewk_view_title_get(webView()), "Bar"); + ASSERT_STREQ("Bar", ewk_view_title_get(webView())); } static void serverCallbackNavigation(SoupServer* server, SoupMessage* message, const char* path, GHashTable*, SoupClientContext*, gpointer) @@ -106,28 +106,28 @@ TEST_F(EWK2UnitTestBase, ewk_view_navigation) httpServer->run(serverCallbackNavigation); // Visit Page1 - loadUrlSync(httpServer->getURIForPath("/Page1").data()); - ASSERT_STREQ(ewk_view_title_get(webView()), "Page1"); + ASSERT_TRUE(loadUrlSync(httpServer->getURLForPath("/Page1").data())); + ASSERT_STREQ("Page1", ewk_view_title_get(webView())); ASSERT_FALSE(ewk_view_back_possible(webView())); ASSERT_FALSE(ewk_view_forward_possible(webView())); // Visit Page2 - loadUrlSync(httpServer->getURIForPath("/Page2").data()); - ASSERT_STREQ(ewk_view_title_get(webView()), "Page2"); + ASSERT_TRUE(loadUrlSync(httpServer->getURLForPath("/Page2").data())); + ASSERT_STREQ("Page2", ewk_view_title_get(webView())); ASSERT_TRUE(ewk_view_back_possible(webView())); ASSERT_FALSE(ewk_view_forward_possible(webView())); // Go back to Page1 ewk_view_back(webView()); ASSERT_TRUE(waitUntilTitleChangedTo("Page1")); - ASSERT_STREQ(ewk_view_title_get(webView()), "Page1"); + ASSERT_STREQ("Page1", ewk_view_title_get(webView())); ASSERT_FALSE(ewk_view_back_possible(webView())); ASSERT_TRUE(ewk_view_forward_possible(webView())); // Go forward to Page2 ewk_view_forward(webView()); ASSERT_TRUE(waitUntilTitleChangedTo("Page2")); - ASSERT_STREQ(ewk_view_title_get(webView()), "Page2"); + ASSERT_STREQ("Page2", ewk_view_title_get(webView())); ASSERT_TRUE(ewk_view_back_possible(webView())); ASSERT_FALSE(ewk_view_forward_possible(webView())); } @@ -136,7 +136,7 @@ TEST_F(EWK2UnitTestBase, ewk_view_setting_encoding_custom) { ASSERT_FALSE(ewk_view_setting_encoding_custom_get(webView())); ASSERT_TRUE(ewk_view_setting_encoding_custom_set(webView(), "UTF-8")); - ASSERT_STREQ(ewk_view_setting_encoding_custom_get(webView()), "UTF-8"); + ASSERT_STREQ("UTF-8", ewk_view_setting_encoding_custom_get(webView())); // Set the default charset. ASSERT_TRUE(ewk_view_setting_encoding_custom_set(webView(), 0)); ASSERT_FALSE(ewk_view_setting_encoding_custom_get(webView())); @@ -151,19 +151,19 @@ static void onFormAboutToBeSubmitted(void* userData, Evas_Object*, void* eventIn Eina_List* fieldNames = ewk_form_submission_request_field_names_get(request); ASSERT_TRUE(fieldNames); - ASSERT_EQ(eina_list_count(fieldNames), 3); + ASSERT_EQ(3, eina_list_count(fieldNames)); void* data; EINA_LIST_FREE(fieldNames, data) eina_stringshare_del(static_cast<char*>(data)); const char* value1 = ewk_form_submission_request_field_value_get(request, "text1"); - ASSERT_STREQ(value1, "value1"); + ASSERT_STREQ("value1", value1); eina_stringshare_del(value1); const char* value2 = ewk_form_submission_request_field_value_get(request, "text2"); - ASSERT_STREQ(value2, "value2"); + ASSERT_STREQ("value2", value2); eina_stringshare_del(value2); const char* password = ewk_form_submission_request_field_value_get(request, "password"); - ASSERT_STREQ(password, "secret"); + ASSERT_STREQ("secret", password); eina_stringshare_del(password); *handled = true; @@ -195,9 +195,9 @@ TEST_F(EWK2UnitTestBase, ewk_view_form_submission_request) static inline void checkBasicPopupMenuItem(Ewk_Popup_Menu_Item* item, const char* title, bool enabled) { - EXPECT_EQ(ewk_popup_menu_item_type_get(item), EWK_POPUP_MENU_ITEM); - EXPECT_STREQ(ewk_popup_menu_item_text_get(item), title); - EXPECT_EQ(ewk_popup_menu_item_enabled_get(item), enabled); + EXPECT_EQ(EWK_POPUP_MENU_ITEM, ewk_popup_menu_item_type_get(item)); + EXPECT_STREQ(title, ewk_popup_menu_item_text_get(item)); + EXPECT_EQ(enabled, ewk_popup_menu_item_enabled_get(item)); } static Eina_Bool selectItemAfterDelayed(void* data) @@ -208,25 +208,25 @@ static Eina_Bool selectItemAfterDelayed(void* data) static Eina_Bool showPopupMenu(Ewk_View_Smart_Data* smartData, Eina_Rectangle, Ewk_Text_Direction, double, Eina_List* list, int selectedIndex) { - EXPECT_EQ(selectedIndex, 2); + EXPECT_EQ(2, selectedIndex); Ewk_Popup_Menu_Item* item = static_cast<Ewk_Popup_Menu_Item*>(eina_list_nth(list, 0)); checkBasicPopupMenuItem(item, "first", true); - EXPECT_EQ(ewk_popup_menu_item_text_direction_get(item), EWK_TEXT_DIRECTION_LEFT_TO_RIGHT); - EXPECT_STREQ(ewk_popup_menu_item_tooltip_get(item), ""); - EXPECT_STREQ(ewk_popup_menu_item_accessibility_text_get(item), ""); + EXPECT_EQ(EWK_TEXT_DIRECTION_LEFT_TO_RIGHT, ewk_popup_menu_item_text_direction_get(item)); + EXPECT_STREQ("", ewk_popup_menu_item_tooltip_get(item)); + EXPECT_STREQ("", ewk_popup_menu_item_accessibility_text_get(item)); EXPECT_FALSE(ewk_popup_menu_item_is_label_get(item)); EXPECT_FALSE(ewk_popup_menu_item_selected_get(item)); item = static_cast<Ewk_Popup_Menu_Item*>(eina_list_nth(list, 1)); checkBasicPopupMenuItem(item, "second", false); - EXPECT_EQ(ewk_popup_menu_item_enabled_get(item), false); + EXPECT_FALSE(ewk_popup_menu_item_enabled_get(item)); item = static_cast<Ewk_Popup_Menu_Item*>(eina_list_nth(list, 2)); checkBasicPopupMenuItem(item, "third", true); - EXPECT_EQ(ewk_popup_menu_item_text_direction_get(item), EWK_TEXT_DIRECTION_RIGHT_TO_LEFT); - EXPECT_STREQ(ewk_popup_menu_item_tooltip_get(item), "tooltip"); - EXPECT_STREQ(ewk_popup_menu_item_accessibility_text_get(item), "aria"); + EXPECT_EQ(EWK_TEXT_DIRECTION_RIGHT_TO_LEFT, ewk_popup_menu_item_text_direction_get(item)); + EXPECT_STREQ("tooltip", ewk_popup_menu_item_tooltip_get(item)); + EXPECT_STREQ("aria", ewk_popup_menu_item_accessibility_text_get(item)); EXPECT_TRUE(ewk_popup_menu_item_selected_get(item)); item = static_cast<Ewk_Popup_Menu_Item*>(eina_list_nth(list, 3)); @@ -237,8 +237,8 @@ static Eina_Bool showPopupMenu(Ewk_View_Smart_Data* smartData, Eina_Rectangle, E checkBasicPopupMenuItem(item, " forth", true); item = static_cast<Ewk_Popup_Menu_Item*>(eina_list_nth(list, 5)); - EXPECT_EQ(ewk_popup_menu_item_type_get(item), EWK_POPUP_MENU_UNKNOWN); - EXPECT_STREQ(ewk_popup_menu_item_text_get(item), 0); + EXPECT_EQ(EWK_POPUP_MENU_UNKNOWN, ewk_popup_menu_item_type_get(item)); + EXPECT_STREQ(0, ewk_popup_menu_item_text_get(item)); ecore_timer_add(0, selectItemAfterDelayed, smartData->self); return true; @@ -310,18 +310,6 @@ static Eina_Bool fullScreenCallback(Ewk_View_Smart_Data* smartData) return false; } -static void checkFullScreenProperty(Evas_Object* webView, bool expectedState) -{ - if (environment->useX11Window()) { - Ewk_View_Smart_Data* smartData = static_cast<Ewk_View_Smart_Data*>(evas_object_smart_data_get(webView)); - Ecore_Evas* ecoreEvas = ecore_evas_ecore_evas_get(smartData->base.evas); - bool windowState = false; - while (((windowState = ecore_evas_fullscreen_get(ecoreEvas)) != expectedState)) - ecore_main_loop_iterate(); - ASSERT_TRUE(expectedState == windowState); - } -} - TEST_F(EWK2UnitTestBase, ewk_view_full_screen_enter) { const char fullscreenHTML[] = @@ -339,7 +327,6 @@ TEST_F(EWK2UnitTestBase, ewk_view_full_screen_enter) mouseClick(50, 50); ASSERT_TRUE(waitUntilTitleChangedTo("fullscreen entered")); ASSERT_TRUE(fullScreenCallbackCalled); - checkFullScreenProperty(webView(), true); } TEST_F(EWK2UnitTestBase, ewk_view_full_screen_exit) @@ -360,18 +347,17 @@ TEST_F(EWK2UnitTestBase, ewk_view_full_screen_exit) mouseClick(50, 50); ASSERT_TRUE(waitUntilTitleChangedTo("fullscreen exited")); ASSERT_TRUE(fullScreenCallbackCalled); - checkFullScreenProperty(webView(), false); } TEST_F(EWK2UnitTestBase, ewk_view_same_page_navigation) { - // Tests that same page navigation updates the page URI. + // Tests that same page navigation updates the page URL. String testUrl = environment->urlForResource("same_page_navigation.html").data(); - loadUrlSync(testUrl.utf8().data()); - ASSERT_STREQ(testUrl.utf8().data(), ewk_view_uri_get(webView())); + ASSERT_TRUE(loadUrlSync(testUrl.utf8().data())); + ASSERT_STREQ(testUrl.utf8().data(), ewk_view_url_get(webView())); mouseClick(50, 50); testUrl = testUrl + '#'; - ASSERT_TRUE(waitUntilURIChangedTo(testUrl.utf8().data())); + ASSERT_TRUE(waitUntilURLChangedTo(testUrl.utf8().data())); } TEST_F(EWK2UnitTestBase, ewk_view_title_changed) @@ -381,21 +367,21 @@ TEST_F(EWK2UnitTestBase, ewk_view_title_changed) "<body onload=\"document.title='Title after changed';\"></body>"; ewk_view_html_string_load(webView(), titleChangedHTML, 0, 0); EXPECT_TRUE(waitUntilTitleChangedTo("Title after changed")); - EXPECT_STREQ(ewk_view_title_get(webView()), "Title after changed"); + EXPECT_STREQ("Title after changed", ewk_view_title_get(webView())); titleChangedHTML = "<!doctype html><head><title>Title before changed</title></head>" "<body onload=\"document.title='';\"></body>"; ewk_view_html_string_load(webView(), titleChangedHTML, 0, 0); EXPECT_TRUE(waitUntilTitleChangedTo("")); - EXPECT_STREQ(ewk_view_title_get(webView()), ""); + EXPECT_STREQ("", ewk_view_title_get(webView())); titleChangedHTML = "<!doctype html><head><title>Title before changed</title></head>" "<body onload=\"document.title=null;\"></body>"; ewk_view_html_string_load(webView(), titleChangedHTML, 0, 0); EXPECT_TRUE(waitUntilTitleChangedTo("")); - EXPECT_STREQ(ewk_view_title_get(webView()), ""); + EXPECT_STREQ("", ewk_view_title_get(webView())); } static struct { @@ -431,35 +417,35 @@ TEST_F(EWK2UnitTestBase, ewk_view_run_javascript_alert) alertCallbackData.called = false; ewk_view_html_string_load(webView(), alertHTML, 0, 0); EXPECT_TRUE(waitUntilLoadFinished()); - EXPECT_EQ(alertCallbackData.called, true); + EXPECT_TRUE(alertCallbackData.called); alertHTML = "<!doctype html><body onload=\"alert('');\"></body>"; alertCallbackData.expectedMessage = ""; alertCallbackData.called = false; ewk_view_html_string_load(webView(), alertHTML, 0, 0); EXPECT_TRUE(waitUntilLoadFinished()); - EXPECT_EQ(alertCallbackData.called, true); + EXPECT_TRUE(alertCallbackData.called); alertHTML = "<!doctype html><body onload=\"alert(null);\"></body>"; alertCallbackData.expectedMessage = "null"; alertCallbackData.called = false; ewk_view_html_string_load(webView(), alertHTML, 0, 0); EXPECT_TRUE(waitUntilLoadFinished()); - EXPECT_EQ(alertCallbackData.called, true); + EXPECT_TRUE(alertCallbackData.called); alertHTML = "<!doctype html><body onload=\"alert();\"></body>"; alertCallbackData.expectedMessage = "undefined"; alertCallbackData.called = false; ewk_view_html_string_load(webView(), alertHTML, 0, 0); EXPECT_TRUE(waitUntilLoadFinished()); - EXPECT_EQ(alertCallbackData.called, true); + EXPECT_TRUE(alertCallbackData.called); ewkViewClass()->run_javascript_alert = 0; alertCallbackData.called = false; ewk_view_html_string_load(webView(), alertHTML, 0, 0); EXPECT_TRUE(waitUntilLoadFinished()); - EXPECT_EQ(alertCallbackData.called, false); + EXPECT_FALSE(alertCallbackData.called); } static Eina_Bool checkConfirm(Ewk_View_Smart_Data*, const char* message) @@ -479,16 +465,16 @@ TEST_F(EWK2UnitTestBase, ewk_view_run_javascript_confirm) confirmCallbackData.called = false; ewk_view_html_string_load(webView(), confirmHTML, 0, 0); EXPECT_TRUE(waitUntilTitleChangedTo("true")); - EXPECT_STREQ(ewk_view_title_get(webView()), "true"); - EXPECT_EQ(confirmCallbackData.called, true); + EXPECT_STREQ("true", ewk_view_title_get(webView())); + EXPECT_TRUE(confirmCallbackData.called); confirmCallbackData.expectedMessage = "Confirm message"; confirmCallbackData.result = false; confirmCallbackData.called = false; ewk_view_html_string_load(webView(), confirmHTML, 0, 0); EXPECT_TRUE(waitUntilTitleChangedTo("false")); - EXPECT_STREQ(ewk_view_title_get(webView()), "false"); - EXPECT_EQ(confirmCallbackData.called, true); + EXPECT_STREQ("false", ewk_view_title_get(webView())); + EXPECT_TRUE(confirmCallbackData.called); confirmHTML = "<!doctype html><body onload=\"document.title = confirm('');\"></body>"; confirmCallbackData.expectedMessage = ""; @@ -496,8 +482,8 @@ TEST_F(EWK2UnitTestBase, ewk_view_run_javascript_confirm) confirmCallbackData.called = false; ewk_view_html_string_load(webView(), confirmHTML, 0, 0); EXPECT_TRUE(waitUntilTitleChangedTo("true")); - EXPECT_STREQ(ewk_view_title_get(webView()), "true"); - EXPECT_EQ(confirmCallbackData.called, true); + EXPECT_STREQ("true", ewk_view_title_get(webView())); + EXPECT_TRUE(confirmCallbackData.called); confirmHTML = "<!doctype html><body onload=\"document.title = confirm(null);\"></body>"; confirmCallbackData.expectedMessage = "null"; @@ -505,8 +491,8 @@ TEST_F(EWK2UnitTestBase, ewk_view_run_javascript_confirm) confirmCallbackData.called = false; ewk_view_html_string_load(webView(), confirmHTML, 0, 0); EXPECT_TRUE(waitUntilTitleChangedTo("true")); - EXPECT_STREQ(ewk_view_title_get(webView()), "true"); - EXPECT_EQ(confirmCallbackData.called, true); + EXPECT_STREQ("true", ewk_view_title_get(webView())); + EXPECT_TRUE(confirmCallbackData.called); confirmHTML = "<!doctype html><body onload=\"document.title = confirm();\"></body>"; confirmCallbackData.expectedMessage = "undefined"; @@ -514,16 +500,16 @@ TEST_F(EWK2UnitTestBase, ewk_view_run_javascript_confirm) confirmCallbackData.called = false; ewk_view_html_string_load(webView(), confirmHTML, 0, 0); EXPECT_TRUE(waitUntilTitleChangedTo("true")); - EXPECT_STREQ(ewk_view_title_get(webView()), "true"); - EXPECT_EQ(confirmCallbackData.called, true); + EXPECT_STREQ("true", ewk_view_title_get(webView())); + EXPECT_TRUE(confirmCallbackData.called); ewkViewClass()->run_javascript_confirm = 0; confirmCallbackData.called = false; ewk_view_html_string_load(webView(), confirmHTML, 0, 0); EXPECT_TRUE(waitUntilTitleChangedTo("false")); - EXPECT_STREQ(ewk_view_title_get(webView()), "false"); - EXPECT_EQ(confirmCallbackData.called, false); + EXPECT_STREQ("false", ewk_view_title_get(webView())); + EXPECT_FALSE(confirmCallbackData.called); } static const char* checkPrompt(Ewk_View_Smart_Data*, const char* message, const char* defaultValue) @@ -552,8 +538,8 @@ TEST_F(EWK2UnitTestBase, ewk_view_run_javascript_prompt) promptCallbackData.called = false; ewk_view_html_string_load(webView(), promptHTML, 0, 0); EXPECT_TRUE(waitUntilTitleChangedTo(promptResult)); - EXPECT_STREQ(ewk_view_title_get(webView()), promptResult); - EXPECT_EQ(promptCallbackData.called, true); + EXPECT_STREQ(promptResult, ewk_view_title_get(webView())); + EXPECT_TRUE(promptCallbackData.called); promptHTML = "<!doctype html><body onload=\"document.title = prompt('Prompt message', '');\"></body>"; promptCallbackData.expectedMessage = promptMessage; @@ -562,8 +548,8 @@ TEST_F(EWK2UnitTestBase, ewk_view_run_javascript_prompt) promptCallbackData.called = false; ewk_view_html_string_load(webView(), promptHTML, 0, 0); EXPECT_TRUE(waitUntilTitleChangedTo(promptResult)); - EXPECT_STREQ(ewk_view_title_get(webView()), promptResult); - EXPECT_EQ(promptCallbackData.called, true); + EXPECT_STREQ(promptResult, ewk_view_title_get(webView())); + EXPECT_TRUE(promptCallbackData.called); promptHTML = "<!doctype html><body onload=\"document.title = prompt('Prompt message');\"></body>"; promptCallbackData.expectedMessage = promptMessage; @@ -572,8 +558,8 @@ TEST_F(EWK2UnitTestBase, ewk_view_run_javascript_prompt) promptCallbackData.called = false; ewk_view_html_string_load(webView(), promptHTML, 0, 0); EXPECT_TRUE(waitUntilTitleChangedTo(promptResult)); - EXPECT_STREQ(ewk_view_title_get(webView()), promptResult); - EXPECT_EQ(promptCallbackData.called, true); + EXPECT_STREQ(promptResult, ewk_view_title_get(webView())); + EXPECT_TRUE(promptCallbackData.called); promptHTML = "<!doctype html><body onload=\"document.title = prompt('');\"></body>"; promptCallbackData.expectedMessage = ""; @@ -582,8 +568,8 @@ TEST_F(EWK2UnitTestBase, ewk_view_run_javascript_prompt) promptCallbackData.called = false; ewk_view_html_string_load(webView(), promptHTML, 0, 0); EXPECT_TRUE(waitUntilTitleChangedTo(promptResult)); - EXPECT_STREQ(ewk_view_title_get(webView()), promptResult); - EXPECT_EQ(promptCallbackData.called, true); + EXPECT_STREQ(promptResult, ewk_view_title_get(webView())); + EXPECT_TRUE(promptCallbackData.called); promptHTML = "<!doctype html><body onload=\"document.title = prompt();\"></body>"; promptCallbackData.expectedMessage = "undefined"; @@ -592,8 +578,8 @@ TEST_F(EWK2UnitTestBase, ewk_view_run_javascript_prompt) promptCallbackData.called = false; ewk_view_html_string_load(webView(), promptHTML, 0, 0); EXPECT_TRUE(waitUntilTitleChangedTo(promptResult)); - EXPECT_STREQ(ewk_view_title_get(webView()), promptResult); - EXPECT_EQ(promptCallbackData.called, true); + EXPECT_STREQ(promptResult, ewk_view_title_get(webView())); + EXPECT_TRUE(promptCallbackData.called); promptHTML = "<html><head><title>Default title</title></head>" "<body onload=\"var promptResult = prompt('Prompt message');" @@ -605,8 +591,8 @@ TEST_F(EWK2UnitTestBase, ewk_view_run_javascript_prompt) promptCallbackData.called = false; ewk_view_html_string_load(webView(), promptHTML, 0, 0); EXPECT_TRUE(waitUntilTitleChangedTo("")); - EXPECT_STREQ(ewk_view_title_get(webView()), ""); - EXPECT_EQ(promptCallbackData.called, true); + EXPECT_STREQ("", ewk_view_title_get(webView())); + EXPECT_TRUE(promptCallbackData.called); promptCallbackData.expectedMessage = promptMessage; promptCallbackData.expectedDefaultValue = ""; @@ -614,16 +600,16 @@ TEST_F(EWK2UnitTestBase, ewk_view_run_javascript_prompt) promptCallbackData.called = false; ewk_view_html_string_load(webView(), promptHTML, 0, 0); EXPECT_TRUE(waitUntilTitleChangedTo("null")); - EXPECT_STREQ(ewk_view_title_get(webView()), "null"); - EXPECT_EQ(promptCallbackData.called, true); + EXPECT_STREQ("null", ewk_view_title_get(webView())); + EXPECT_TRUE(promptCallbackData.called); ewkViewClass()->run_javascript_prompt = 0; promptCallbackData.called = false; ewk_view_html_string_load(webView(), promptHTML, 0, 0); EXPECT_TRUE(waitUntilTitleChangedTo("null")); - EXPECT_STREQ(ewk_view_title_get(webView()), "null"); - EXPECT_EQ(promptCallbackData.called, false); + EXPECT_STREQ("null", ewk_view_title_get(webView())); + EXPECT_FALSE(promptCallbackData.called); } #if ENABLE(INPUT_TYPE_COLOR) @@ -665,18 +651,18 @@ static Eina_Bool showColorPicker(Ewk_View_Smart_Data* smartData, int r, int g, i if (isFirstRun) { // 2. Check initial value from html file. - EXPECT_EQ(r, initialRed); - EXPECT_EQ(g, initialGreen); - EXPECT_EQ(b, initialBlue); - EXPECT_EQ(a, initialAlpha); + EXPECT_EQ(initialRed, r); + EXPECT_EQ(initialGreen, g); + EXPECT_EQ(initialBlue, b); + EXPECT_EQ(initialAlpha, a); isFirstRun = false; } else { // 7. Input values should be same as changed color. - EXPECT_EQ(r, changedRed); - EXPECT_EQ(g, changedGreen); - EXPECT_EQ(b, changedBlue); - EXPECT_EQ(a, changedAlpha); + EXPECT_EQ(changedRed, r); + EXPECT_EQ(changedGreen, g); + EXPECT_EQ(changedBlue, b); + EXPECT_EQ(changedAlpha, a); evas_object_smart_callback_call(smartData->self, "input,type,color,request", 0); return true; @@ -744,7 +730,7 @@ TEST_F(EWK2UnitTestBase, ewk_view_color_picker_color_set) while (!handled) ecore_main_loop_iterate(); - // 8. Click button to remove input element during color picker is shown. + // 8. Click button to remove input element durlng color picker is shown. api->input_picker_color_dismiss = hideColorPickerByRemovingElement; mouseClick(80, 20); @@ -787,3 +773,168 @@ TEST_F(EWK2UnitTestBase, ewk_view_feed_touch_event) eina_list_free(points); } + +static void onTextFound(void* userData, Evas_Object*, void* eventInfo) +{ + int* result = static_cast<int*>(userData); + unsigned* matchCount = static_cast<unsigned*>(eventInfo); + + *result = *matchCount; +} + +TEST_F(EWK2UnitTestBase, ewk_view_text_find) +{ + const char textFindHTML[] = + "<!DOCTYPE html>" + "<body>" + "apple apple apple banana banana coconut" + "</body>"; + ewk_view_html_string_load(webView(), textFindHTML, 0, 0); + waitUntilLoadFinished(); + + int matchCount = -1; + evas_object_smart_callback_add(webView(), "text,found", onTextFound, &matchCount); + + ewk_view_text_find(webView(), "apple", EWK_FIND_OPTIONS_SHOW_OVERLAY, 100); + while (matchCount < 0) + ecore_main_loop_iterate(); + EXPECT_EQ(3, matchCount); + + matchCount = -1; + ewk_view_text_find(webView(), "mango", EWK_FIND_OPTIONS_SHOW_OVERLAY, 100); + while (matchCount < 0) + ecore_main_loop_iterate(); + EXPECT_EQ(0, matchCount); + + evas_object_smart_callback_del(webView(), "text,found", onTextFound); +} + +TEST_F(EWK2UnitTestBase, ewk_view_text_matches_count) +{ + const char textFindHTML[] = + "<!DOCTYPE html>" + "<body>" + "apple Apple apple apple banana bananaApple banana coconut" + "</body>"; + ewk_view_html_string_load(webView(), textFindHTML, 0, 0); + waitUntilLoadFinished(); + + int matchCount = -1; + evas_object_smart_callback_add(webView(), "text,found", onTextFound, &matchCount); + + ewk_view_text_matches_count(webView(), "apple", EWK_FIND_OPTIONS_NONE, 100); + while (matchCount < 0) + ecore_main_loop_iterate(); + EXPECT_EQ(3, matchCount); + + matchCount = -1; + ewk_view_text_matches_count(webView(), "apple", EWK_FIND_OPTIONS_CASE_INSENSITIVE, 100); + while (matchCount < 0) + ecore_main_loop_iterate(); + EXPECT_EQ(5, matchCount); + + matchCount = -1; + ewk_view_text_matches_count(webView(), "Apple", EWK_FIND_OPTIONS_AT_WORD_STARTS, 100); + while (matchCount < 0) + ecore_main_loop_iterate(); + EXPECT_EQ(1, matchCount); + + matchCount = -1; + ewk_view_text_matches_count(webView(), "Apple", EWK_FIND_OPTIONS_TREAT_MEDIAL_CAPITAL_AS_WORD_START, 100); + while (matchCount < 0) + ecore_main_loop_iterate(); + EXPECT_EQ(2, matchCount); + + matchCount = -1; + ewk_view_text_matches_count(webView(), "mango", EWK_FIND_OPTIONS_NONE, 100); + while (matchCount < 0) + ecore_main_loop_iterate(); + EXPECT_EQ(0, matchCount); + + // If we have more matches than allowed, -1 is returned as a matched count. + matchCount = -2; + ewk_view_text_matches_count(webView(), "apple", EWK_FIND_OPTIONS_NONE, 2); + while (matchCount < -1) + ecore_main_loop_iterate(); + EXPECT_EQ(-1, matchCount); + + evas_object_smart_callback_del(webView(), "text,found", onTextFound); +} + +TEST_F(EWK2UnitTestBase, ewk_view_touch_events_enabled) +{ + ASSERT_FALSE(ewk_view_touch_events_enabled_get(webView())); + + ASSERT_TRUE(ewk_view_touch_events_enabled_set(webView(), true)); + ASSERT_TRUE(ewk_view_touch_events_enabled_get(webView())); + + ASSERT_TRUE(ewk_view_touch_events_enabled_set(webView(), 2)); + ASSERT_TRUE(ewk_view_touch_events_enabled_get(webView())); + + const char* touchHTML = + "<!doctype html><body><div style=\"width:100px; height:100px;\" " + "ontouchstart=\"document.title='touchstarted' + event.touches.length;\" " + "ontouchmove=\"document.title='touchmoved' + event.touches.length;\" " + "ontouchend=\"document.title='touchended' + event.touches.length;\">" + "</div></body>"; + + ewk_view_html_string_load(webView(), touchHTML, "file:///", 0); + ASSERT_TRUE(waitUntilLoadFinished()); + + mouseDown(10, 10); + ASSERT_TRUE(waitUntilTitleChangedTo("touchstarted1")); + + multiDown(1, 30, 30); + ASSERT_TRUE(waitUntilTitleChangedTo("touchstarted2")); + + multiMove(1, 40, 40); + ASSERT_TRUE(waitUntilTitleChangedTo("touchmoved2")); + + multiUp(1, 40, 40); + ASSERT_TRUE(waitUntilTitleChangedTo("touchended1")); + + mouseMove(20, 20); + ASSERT_TRUE(waitUntilTitleChangedTo("touchmoved1")); + + mouseUp(20, 20); + ASSERT_TRUE(waitUntilTitleChangedTo("touchended0")); + + ASSERT_TRUE(ewk_view_touch_events_enabled_set(webView(), false)); + ASSERT_FALSE(ewk_view_touch_events_enabled_get(webView())); +} + +Eina_Bool windowMoveResizeTimedOut(void* data) +{ + *static_cast<bool*>(data) = true; +} + +TEST_F(EWK2UnitTestBase, window_move_resize) +{ + int x, y, width, height; + Ecore_Evas* ee = ecore_evas_ecore_evas_get(evas_object_evas_get(webView())); + ecore_evas_geometry_get(ee, 0, 0, &width, &height); + + EXPECT_EQ(800, width); + EXPECT_EQ(600, height); + + ewk_view_url_set(webView(), environment->urlForResource("window_move_resize.html").data()); + ASSERT_TRUE(waitUntilTitleChangedTo("Moved and resized")); + + // Check that the window has been moved and resized. + ecore_evas_request_geometry_get(ee, &x, &y, &width, &height); + EXPECT_EQ(150, x); + EXPECT_EQ(200, y); + EXPECT_EQ(200, width); + EXPECT_EQ(100, height); +} + +TEST_F(EWK2UnitTestBase, ewk_view_inspector) +{ +#if ENABLE(INSPECTOR) + ASSERT_TRUE(ewk_view_inspector_show(webView())); + ASSERT_TRUE(ewk_view_inspector_close(webView())); +#else + ASSERT_FALSE(ewk_view_inspector_show(webView())); + ASSERT_FALSE(ewk_view_inspector_close(webView())); +#endif +} diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitDownloadClient.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitDownloadClient.cpp index 6e72496ef..79c1c3e2a 100644 --- a/Source/WebKit2/UIProcess/API/gtk/WebKitDownloadClient.cpp +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitDownloadClient.cpp @@ -34,13 +34,13 @@ using namespace WebKit; static void didStart(WKContextRef, WKDownloadRef wkDownload, const void* clientInfo) { - GRefPtr<WebKitDownload> download = webkitWebContextGetOrCreateDownload(wkDownload); + GRefPtr<WebKitDownload> download = webkitWebContextGetOrCreateDownload(toImpl(wkDownload)); webkitWebContextDownloadStarted(WEBKIT_WEB_CONTEXT(clientInfo), download.get()); } static void didReceiveResponse(WKContextRef, WKDownloadRef wkDownload, WKURLResponseRef wkResponse, const void* clientInfo) { - GRefPtr<WebKitDownload> download = webkitWebContextGetOrCreateDownload(wkDownload); + GRefPtr<WebKitDownload> download = webkitWebContextGetOrCreateDownload(toImpl(wkDownload)); if (webkitDownloadIsCancelled(download.get())) return; @@ -50,13 +50,13 @@ static void didReceiveResponse(WKContextRef, WKDownloadRef wkDownload, WKURLResp static void didReceiveData(WKContextRef, WKDownloadRef wkDownload, uint64_t length, const void* clientInfo) { - GRefPtr<WebKitDownload> download = webkitWebContextGetOrCreateDownload(wkDownload); + GRefPtr<WebKitDownload> download = webkitWebContextGetOrCreateDownload(toImpl(wkDownload)); webkitDownloadNotifyProgress(download.get(), length); } static WKStringRef decideDestinationWithSuggestedFilename(WKContextRef, WKDownloadRef wkDownload, WKStringRef filename, bool* allowOverwrite, const void* clientInfo) { - GRefPtr<WebKitDownload> download = webkitWebContextGetOrCreateDownload(wkDownload); + GRefPtr<WebKitDownload> download = webkitWebContextGetOrCreateDownload(toImpl(wkDownload)); CString destinationURI = webkitDownloadDecideDestinationWithSuggestedFilename(download.get(), toImpl(filename)->string().utf8()); return WKStringCreateWithUTF8CString(destinationURI.data()); @@ -64,33 +64,33 @@ static WKStringRef decideDestinationWithSuggestedFilename(WKContextRef, WKDownlo static void didCreateDestination(WKContextRef, WKDownloadRef wkDownload, WKStringRef path, const void* clientInfo) { - GRefPtr<WebKitDownload> download = webkitWebContextGetOrCreateDownload(wkDownload); + GRefPtr<WebKitDownload> download = webkitWebContextGetOrCreateDownload(toImpl(wkDownload)); webkitDownloadDestinationCreated(download.get(), toImpl(path)->string().utf8()); } static void didFail(WKContextRef, WKDownloadRef wkDownload, WKErrorRef error, const void *clientInfo) { - GRefPtr<WebKitDownload> download = webkitWebContextGetOrCreateDownload(wkDownload); + GRefPtr<WebKitDownload> download = webkitWebContextGetOrCreateDownload(toImpl(wkDownload)); if (webkitDownloadIsCancelled(download.get())) { // Cancellation takes precedence over other errors. webkitDownloadCancelled(download.get()); } else webkitDownloadFailed(download.get(), toImpl(error)->platformError()); - webkitWebContextRemoveDownload(wkDownload); + webkitWebContextRemoveDownload(toImpl(wkDownload)); } static void didCancel(WKContextRef, WKDownloadRef wkDownload, const void *clientInfo) { - GRefPtr<WebKitDownload> download = webkitWebContextGetOrCreateDownload(wkDownload); + GRefPtr<WebKitDownload> download = webkitWebContextGetOrCreateDownload(toImpl(wkDownload)); webkitDownloadCancelled(download.get()); - webkitWebContextRemoveDownload(wkDownload); + webkitWebContextRemoveDownload(toImpl(wkDownload)); } static void didFinish(WKContextRef wkContext, WKDownloadRef wkDownload, const void *clientInfo) { - GRefPtr<WebKitDownload> download = webkitWebContextGetOrCreateDownload(wkDownload); + GRefPtr<WebKitDownload> download = webkitWebContextGetOrCreateDownload(toImpl(wkDownload)); webkitDownloadFinished(download.get()); - webkitWebContextRemoveDownload(wkDownload); + webkitWebContextRemoveDownload(toImpl(wkDownload)); } void attachDownloadClientToContext(WebKitWebContext* webContext) @@ -110,6 +110,6 @@ void attachDownloadClientToContext(WebKitWebContext* webContext) didCancel, 0, // processDidCrash }; - WKContextSetDownloadClient(webkitWebContextGetWKContext(webContext), &wkDownloadClient); + WKContextSetDownloadClient(toAPI(webkitWebContextGetContext(webContext)), &wkDownloadClient); } diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitFaviconDatabase.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitFaviconDatabase.cpp new file mode 100644 index 000000000..cb016ab09 --- /dev/null +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitFaviconDatabase.cpp @@ -0,0 +1,391 @@ +/* + * Copyright (C) 2012 Igalia S.L. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2,1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include "config.h" +#include "WebKitFaviconDatabase.h" + +#include "WebKitFaviconDatabasePrivate.h" +#include "WebKitPrivate.h" +#include <WebCore/FileSystem.h> +#include <WebCore/Image.h> +#include <WebCore/IntSize.h> +#include <WebCore/RefPtrCairo.h> +#include <glib/gi18n-lib.h> +#include <wtf/MainThread.h> +#include <wtf/gobject/GOwnPtr.h> +#include <wtf/gobject/GRefPtr.h> +#include <wtf/text/CString.h> + +using namespace WebKit; + +enum { + ICON_READY, + + LAST_SIGNAL +}; + +static guint signals[LAST_SIGNAL] = { 0, }; + +typedef Vector<GRefPtr<GSimpleAsyncResult> > PendingIconRequestVector; +typedef HashMap<String, PendingIconRequestVector*> PendingIconRequestMap; + +struct _WebKitFaviconDatabasePrivate { + RefPtr<WebIconDatabase> iconDatabase; + PendingIconRequestMap pendingIconRequests; +}; + +G_DEFINE_TYPE(WebKitFaviconDatabase, webkit_favicon_database, G_TYPE_OBJECT) + +static void webkit_favicon_database_init(WebKitFaviconDatabase* manager) +{ + WebKitFaviconDatabasePrivate* priv = G_TYPE_INSTANCE_GET_PRIVATE(manager, WEBKIT_TYPE_FAVICON_DATABASE, WebKitFaviconDatabasePrivate); + manager->priv = priv; + new (priv) WebKitFaviconDatabasePrivate(); +} + +static void webkitFaviconDatabaseDispose(GObject* object) +{ + WebKitFaviconDatabase* database = WEBKIT_FAVICON_DATABASE(object); + + WebKitFaviconDatabasePrivate* priv = database->priv; + if (priv->iconDatabase->isOpen()) + priv->iconDatabase->close(); + + G_OBJECT_CLASS(webkit_favicon_database_parent_class)->dispose(object); +} + +static void webkitFaviconDatabaseFinalize(GObject* object) +{ + WebKitFaviconDatabase* database = WEBKIT_FAVICON_DATABASE(object); + database->priv->~WebKitFaviconDatabasePrivate(); + G_OBJECT_CLASS(webkit_favicon_database_parent_class)->finalize(object); +} + +static void webkit_favicon_database_class_init(WebKitFaviconDatabaseClass* faviconDatabaseClass) +{ + GObjectClass* gObjectClass = G_OBJECT_CLASS(faviconDatabaseClass); + gObjectClass->dispose = webkitFaviconDatabaseDispose; + gObjectClass->finalize = webkitFaviconDatabaseFinalize; + + /** + * WebKitFaviconDatabase::favicon-ready: + * @database: the object on which the signal is emitted + * @page_uri: the URI of the Web page containing the icon. + * + * This signal gets emitted when the favicon of @page_uri is + * ready. This means that the favicon's data is ready to be used + * by the application, either because it has been loaded from the + * network, if it's the first time it gets retrieved, or because + * it has been already imported from the icon database. + */ + signals[ICON_READY] = + g_signal_new("favicon-ready", + G_TYPE_FROM_CLASS(faviconDatabaseClass), + G_SIGNAL_RUN_LAST, + 0, 0, 0, + g_cclosure_marshal_VOID__STRING, + G_TYPE_NONE, 1, + G_TYPE_STRING); + + g_type_class_add_private(faviconDatabaseClass, sizeof(WebKitFaviconDatabasePrivate)); +} + +struct GetFaviconSurfaceAsyncData { + GRefPtr<WebKitFaviconDatabase> faviconDatabase; + String pageURL; + RefPtr<cairo_surface_t> icon; + GOwnPtr<GError> error; + GRefPtr<GCancellable> cancellable; +}; +WEBKIT_DEFINE_ASYNC_DATA_STRUCT(GetFaviconSurfaceAsyncData) + +static cairo_surface_t* getIconSurfaceSynchronously(WebKitFaviconDatabase* database, const String& pageURL, GError** error) +{ + ASSERT(isMainThread()); + + database->priv->iconDatabase->retainIconForPageURL(pageURL); + + // The exact size we pass is irrelevant to the iconDatabase code. + // We must pass something greater than 0x0 to get an icon. + WebCore::Image* iconImage = database->priv->iconDatabase->imageForPageURL(pageURL, WebCore::IntSize(1, 1)); + if (!iconImage) { + g_set_error(error, WEBKIT_FAVICON_DATABASE_ERROR, WEBKIT_FAVICON_DATABASE_ERROR_FAVICON_UNKNOWN, _("Unknown favicon for page %s"), pageURL.utf8().data()); + database->priv->iconDatabase->releaseIconForPageURL(pageURL); + return 0; + } + + WebCore::NativeImagePtr icon = iconImage->nativeImageForCurrentFrame(); + if (!icon) { + g_set_error(error, WEBKIT_FAVICON_DATABASE_ERROR, WEBKIT_FAVICON_DATABASE_ERROR_FAVICON_NOT_FOUND, _("Page %s does not have a favicon"), pageURL.utf8().data()); + database->priv->iconDatabase->releaseIconForPageURL(pageURL); + return 0; + } + + return icon->surface(); +} + +static void deletePendingIconRequests(WebKitFaviconDatabase* database, PendingIconRequestVector* requests, const String& pageURL) +{ + database->priv->pendingIconRequests.remove(pageURL); + delete requests; +} + +static void processPendingIconsForPageURL(WebKitFaviconDatabase* database, const String& pageURL) +{ + PendingIconRequestVector* pendingIconRequests = database->priv->pendingIconRequests.get(pageURL); + if (!pendingIconRequests) + return; + + GOwnPtr<GError> error; + RefPtr<cairo_surface_t> icon = getIconSurfaceSynchronously(database, pageURL, &error.outPtr()); + + for (size_t i = 0; i < pendingIconRequests->size(); ++i) { + GSimpleAsyncResult* result = pendingIconRequests->at(i).get(); + GetFaviconSurfaceAsyncData* data = static_cast<GetFaviconSurfaceAsyncData*>(g_simple_async_result_get_op_res_gpointer(result)); + if (!g_cancellable_is_cancelled(data->cancellable.get())) { + if (error) + g_propagate_error(&data->error.outPtr(), error.release()); + else + data->icon = icon; + } + + g_simple_async_result_complete(result); + } + deletePendingIconRequests(database, pendingIconRequests, pageURL); +} + +static void iconDataReadyForPageURLCallback(WKIconDatabaseRef wkIconDatabase, WKURLRef wkPageURL, const void* clientInfo) +{ + ASSERT(isMainThread()); + + WebKitFaviconDatabase* database = WEBKIT_FAVICON_DATABASE(clientInfo); + String pageURL = toImpl(wkPageURL)->string(); + + processPendingIconsForPageURL(database, pageURL); + g_signal_emit(database, signals[ICON_READY], 0, pageURL.utf8().data()); +} + +WebKitFaviconDatabase* webkitFaviconDatabaseCreate(WebIconDatabase* iconDatabase) +{ + WebKitFaviconDatabase* faviconDatabase = WEBKIT_FAVICON_DATABASE(g_object_new(WEBKIT_TYPE_FAVICON_DATABASE, NULL)); + faviconDatabase->priv->iconDatabase = iconDatabase; + + WKIconDatabaseClient wkIconDatabaseClient = { + kWKIconDatabaseClientCurrentVersion, + faviconDatabase, // clientInfo + 0, // didChangeIconForPageURLCallback + 0, // didRemoveAllIconsCallback + iconDataReadyForPageURLCallback, + }; + WKIconDatabaseSetIconDatabaseClient(toAPI(iconDatabase), &wkIconDatabaseClient); + return faviconDatabase; +} + +cairo_surface_t* webkitFaviconDatabaseGetFavicon(WebKitFaviconDatabase* database, const CString& pageURL) +{ + ASSERT(WEBKIT_IS_FAVICON_DATABASE(database)); + ASSERT(!pageURL.isNull()); + + cairo_surface_t* iconSurface = getIconSurfaceSynchronously(database, String::fromUTF8(pageURL.data()), 0); + if (!iconSurface) + return 0; + + return cairo_surface_reference(iconSurface); +} + +static PendingIconRequestVector* getOrCreatePendingIconRequests(WebKitFaviconDatabase* database, const String& pageURL) +{ + PendingIconRequestVector* icons = database->priv->pendingIconRequests.get(pageURL); + if (!icons) { + icons = new PendingIconRequestVector; + database->priv->pendingIconRequests.set(pageURL, icons); + } + + return icons; +} + +static void setErrorForAsyncResult(GSimpleAsyncResult* result, WebKitFaviconDatabaseError error, const String& pageURL = String()) +{ + ASSERT(result); + + switch (error) { + case WEBKIT_FAVICON_DATABASE_ERROR_NOT_INITIALIZED: + g_simple_async_result_set_error(result, WEBKIT_FAVICON_DATABASE_ERROR, error, _("Favicons database not initialized yet")); + break; + + case WEBKIT_FAVICON_DATABASE_ERROR_FAVICON_NOT_FOUND: + g_simple_async_result_set_error(result, WEBKIT_FAVICON_DATABASE_ERROR, error, _("Page %s does not have a favicon"), pageURL.utf8().data()); + break; + + case WEBKIT_FAVICON_DATABASE_ERROR_FAVICON_UNKNOWN: + g_simple_async_result_set_error(result, WEBKIT_FAVICON_DATABASE_ERROR, error, _("Unknown favicon for page %s"), pageURL.utf8().data()); + break; + + default: + ASSERT_NOT_REACHED(); + } +} + +GQuark webkit_favicon_database_error_quark(void) +{ + return g_quark_from_static_string("WebKitFaviconDatabaseError"); +} + +/** + * webkit_favicon_database_get_favicon: + * @database: a #WebKitFaviconDatabase + * @page_uri: URI of the page for which we want to retrieve the favicon + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @callback: (scope async): A #GAsyncReadyCallback to call when the request is + * satisfied or %NULL if you don't care about the result. + * @user_data: (closure): The data to pass to @callback. + * + * Asynchronously obtains a #cairo_surface_t of the favicon for the + * given page URI. It returns the cached icon if it's in the database + * asynchronously waiting for the icon to be read from the database. + * + * This is an asynchronous method. When the operation is finished, callback will + * be invoked. You can then call webkit_favicon_database_get_favicon_finish() + * to get the result of the operation. + */ +void webkit_favicon_database_get_favicon(WebKitFaviconDatabase* database, const gchar* pageURI, GCancellable* cancellable, GAsyncReadyCallback callback, gpointer userData) +{ + g_return_if_fail(WEBKIT_IS_FAVICON_DATABASE(database)); + g_return_if_fail(pageURI); + + GRefPtr<GSimpleAsyncResult> result = adoptGRef(g_simple_async_result_new(G_OBJECT(database), callback, userData, reinterpret_cast<gpointer>(webkit_favicon_database_get_favicon))); + g_simple_async_result_set_check_cancellable(result.get(), cancellable); + + GetFaviconSurfaceAsyncData* data = createGetFaviconSurfaceAsyncData(); + g_simple_async_result_set_op_res_gpointer(result.get(), data, reinterpret_cast<GDestroyNotify>(destroyGetFaviconSurfaceAsyncData)); + data->faviconDatabase = database; + data->pageURL = String::fromUTF8(pageURI); + data->cancellable = cancellable; + + WebKitFaviconDatabasePrivate* priv = database->priv; + WebIconDatabase* iconDatabaseImpl = priv->iconDatabase.get(); + if (!iconDatabaseImpl->isOpen()) { + setErrorForAsyncResult(result.get(), WEBKIT_FAVICON_DATABASE_ERROR_NOT_INITIALIZED); + g_simple_async_result_complete_in_idle(result.get()); + return; + } + + if (data->pageURL.isEmpty() || data->pageURL.startsWith("about:")) { + setErrorForAsyncResult(result.get(), WEBKIT_FAVICON_DATABASE_ERROR_FAVICON_NOT_FOUND, data->pageURL); + g_simple_async_result_complete_in_idle(result.get()); + return; + } + + // We ask for the icon directly. If we don't get the icon data now, + // we'll be notified later (even if the database is still importing icons). + GOwnPtr<GError> error; + data->icon = getIconSurfaceSynchronously(database, data->pageURL, &error.outPtr()); + if (data->icon) { + g_simple_async_result_complete_in_idle(result.get()); + return; + } + + if (g_error_matches(error.get(), WEBKIT_FAVICON_DATABASE_ERROR, WEBKIT_FAVICON_DATABASE_ERROR_FAVICON_NOT_FOUND)) { + g_simple_async_result_take_error(result.get(), error.release()); + g_simple_async_result_complete_in_idle(result.get()); + return; + } + + // If there's not a valid icon, but there's an iconURL registered, + // or it's still not registered but the import process hasn't + // finished yet, we need to wait for iconDataReadyForPage to be + // called before making and informed decision. + String iconURLForPageURL; + iconDatabaseImpl->synchronousIconURLForPageURL(data->pageURL, iconURLForPageURL); + if (!iconURLForPageURL.isEmpty() || !iconDatabaseImpl->isUrlImportCompleted()) { + PendingIconRequestVector* icons = getOrCreatePendingIconRequests(database, data->pageURL); + ASSERT(icons); + icons->append(result); + return; + } + + setErrorForAsyncResult(result.get(), WEBKIT_FAVICON_DATABASE_ERROR_FAVICON_UNKNOWN, data->pageURL); + g_simple_async_result_complete_in_idle(result.get()); +} + +/** + * webkit_favicon_database_get_favicon_finish: + * @database: a #WebKitFaviconDatabase + * @result: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to webkit_favicon_database_get_favicon() + * @error: (allow-none): Return location for error or %NULL. + * + * Finishes an operation started with webkit_favicon_database_get_favicon(). + * + * Returns: (transfer full): a new reference to a #cairo_surface_t, or + * %NULL in case of error. + */ +cairo_surface_t* webkit_favicon_database_get_favicon_finish(WebKitFaviconDatabase* database, GAsyncResult* result, GError** error) +{ + GSimpleAsyncResult* simpleResult = G_SIMPLE_ASYNC_RESULT(result); + g_warn_if_fail(g_simple_async_result_get_source_tag(simpleResult) == webkit_favicon_database_get_favicon); + + if (g_simple_async_result_propagate_error(simpleResult, error)) + return 0; + + GetFaviconSurfaceAsyncData* data = static_cast<GetFaviconSurfaceAsyncData*>(g_simple_async_result_get_op_res_gpointer(simpleResult)); + ASSERT(data); + if (data->error) { + g_propagate_error(error, data->error.release()); + return 0; + } + + return cairo_surface_reference(data->icon.get()); +} + +/** + * webkit_favicon_database_get_favicon_uri: + * @database: a #WebKitFaviconDatabase + * @page_uri: URI of the page containing the icon + * + * Obtains the URI of the favicon for the given @page_uri. + * + * Returns: a newly allocated URI for the favicon, or %NULL if the + * database doesn't have a favicon for @page_uri. + */ +gchar* webkit_favicon_database_get_favicon_uri(WebKitFaviconDatabase* database, const gchar* pageURL) +{ + g_return_val_if_fail(WEBKIT_IS_FAVICON_DATABASE(database), 0); + g_return_val_if_fail(pageURL, 0); + ASSERT(isMainThread()); + + String iconURLForPageURL; + database->priv->iconDatabase->synchronousIconURLForPageURL(String::fromUTF8(pageURL), iconURLForPageURL); + if (iconURLForPageURL.isEmpty()) + return 0; + + return g_strdup(iconURLForPageURL.utf8().data()); +} + +/** + * webkit_favicon_database_clear: + * @database: a #WebKitFaviconDatabase + * + * Clears all icons from the database. + */ +void webkit_favicon_database_clear(WebKitFaviconDatabase* database) +{ + g_return_if_fail(WEBKIT_IS_FAVICON_DATABASE(database)); + + database->priv->iconDatabase->removeAllIcons(); +} diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitFaviconDatabase.h b/Source/WebKit2/UIProcess/API/gtk/WebKitFaviconDatabase.h new file mode 100644 index 000000000..811a8e6bb --- /dev/null +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitFaviconDatabase.h @@ -0,0 +1,94 @@ +/* + * Copyright (C) 2012 Igalia S.L. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2,1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#if !defined(__WEBKIT2_H_INSIDE__) && !defined(WEBKIT2_COMPILATION) +#error "Only <webkit2/webkit2.h> can be included directly." +#endif + +#ifndef WebKitFaviconDatabase_h +#define WebKitFaviconDatabase_h + +#include <cairo.h> +#include <gio/gio.h> +#include <glib-object.h> +#include <webkit2/WebKitDefines.h> + +G_BEGIN_DECLS + +#define WEBKIT_TYPE_FAVICON_DATABASE (webkit_favicon_database_get_type()) +#define WEBKIT_FAVICON_DATABASE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_FAVICON_DATABASE, WebKitFaviconDatabase)) +#define WEBKIT_IS_FAVICON_DATABASE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_FAVICON_DATABASE)) +#define WEBKIT_FAVICON_DATABASE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), WEBKIT_TYPE_FAVICON_DATABASE, WebKitFaviconDatabaseClass)) +#define WEBKIT_IS_FAVICON_DATABASE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_FAVICON_DATABASE)) +#define WEBKIT_FAVICON_DATABASE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_FAVICON_DATABASE, WebKitFaviconDatabaseClass)) +#define WEBKIT_FAVICON_DATABASE_ERROR (webkit_favicon_database_error_quark()) + +typedef struct _WebKitFaviconDatabase WebKitFaviconDatabase; +typedef struct _WebKitFaviconDatabaseClass WebKitFaviconDatabaseClass; +typedef struct _WebKitFaviconDatabasePrivate WebKitFaviconDatabasePrivate; + +struct _WebKitFaviconDatabase { + GObject parent; + + WebKitFaviconDatabasePrivate *priv; +}; + +struct _WebKitFaviconDatabaseClass { + GObjectClass parent_class; +}; + +/** + * WebKitFaviconDatabaseError: + * @WEBKIT_FAVICON_DATABASE_ERROR_NOT_INITIALIZED: The #WebKitFaviconDatabase has not been initialized yet + * @WEBKIT_FAVICON_DATABASE_ERROR_FAVICON_NOT_FOUND: There is not an icon available for the requested URL + * @WEBKIT_FAVICON_DATABASE_ERROR_FAVICON_UNKNOWN: There might be an icon for the requested URL, but its data is unknown at the moment + * + * Enum values used to denote the various errors related to the #WebKitFaviconDatabase. + **/ +typedef enum { + WEBKIT_FAVICON_DATABASE_ERROR_NOT_INITIALIZED, + WEBKIT_FAVICON_DATABASE_ERROR_FAVICON_NOT_FOUND, + WEBKIT_FAVICON_DATABASE_ERROR_FAVICON_UNKNOWN +} WebKitFaviconDatabaseError; + +WEBKIT_API GQuark +webkit_favicon_database_error_quark (void); + +WEBKIT_API GType +webkit_favicon_database_get_type (void); + +WEBKIT_API void +webkit_favicon_database_get_favicon (WebKitFaviconDatabase *database, + const gchar *page_uri, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +WEBKIT_API cairo_surface_t * +webkit_favicon_database_get_favicon_finish (WebKitFaviconDatabase *database, + GAsyncResult *result, + GError **error); +WEBKIT_API gchar * +webkit_favicon_database_get_favicon_uri (WebKitFaviconDatabase *database, + const gchar *page_uri); +WEBKIT_API void +webkit_favicon_database_clear (WebKitFaviconDatabase *database); + +G_END_DECLS + +#endif diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitFaviconDatabasePrivate.h b/Source/WebKit2/UIProcess/API/gtk/WebKitFaviconDatabasePrivate.h new file mode 100644 index 000000000..6c50949fb --- /dev/null +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitFaviconDatabasePrivate.h @@ -0,0 +1,32 @@ +/* + * Copyright (C) 2012 Igalia S.L. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef WebKitFaviconDatabasePrivate_h +#define WebKitFaviconDatabasePrivate_h + +#include "WebIconDatabase.h" +#include "WebKitFaviconDatabase.h" +#include <wtf/text/CString.h> + +using namespace WebKit; + +WebKitFaviconDatabase* webkitFaviconDatabaseCreate(WebIconDatabase*); +cairo_surface_t* webkitFaviconDatabaseGetFavicon(WebKitFaviconDatabase*, const CString&); + +#endif // WebKitFaviconDatabasePrivate_h diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitJavascriptResult.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitJavascriptResult.cpp index 84ad04d03..2a1b8d5a3 100644 --- a/Source/WebKit2/UIProcess/API/gtk/WebKitJavascriptResult.cpp +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitJavascriptResult.cpp @@ -21,15 +21,16 @@ #include "WebKitJavascriptResult.h" #include "WebKitJavascriptResultPrivate.h" +#include "WebSerializedScriptValue.h" #include <wtf/gobject/GRefPtr.h> struct _WebKitJavascriptResult { - _WebKitJavascriptResult(WebKitWebView* view, WKSerializedScriptValueRef wkSerializedScriptValue) + _WebKitJavascriptResult(WebKitWebView* view, WebSerializedScriptValue* serializedScriptValue) : webView(view) , referenceCount(1) - { - value = WKSerializedScriptValueDeserialize(wkSerializedScriptValue, webkit_web_view_get_javascript_global_context(view), 0); - } + { + value = serializedScriptValue->deserialize(webkit_web_view_get_javascript_global_context(view), 0); + } GRefPtr<WebKitWebView> webView; JSValueRef value; @@ -39,10 +40,10 @@ struct _WebKitJavascriptResult { G_DEFINE_BOXED_TYPE(WebKitJavascriptResult, webkit_javascript_result, webkit_javascript_result_ref, webkit_javascript_result_unref) -WebKitJavascriptResult* webkitJavascriptResultCreate(WebKitWebView* webView, WKSerializedScriptValueRef wkSerializedScriptValue) +WebKitJavascriptResult* webkitJavascriptResultCreate(WebKitWebView* webView, WebSerializedScriptValue* serializedScriptValue) { WebKitJavascriptResult* result = g_slice_new(WebKitJavascriptResult); - new (result) WebKitJavascriptResult(webView, wkSerializedScriptValue); + new (result) WebKitJavascriptResult(webView, serializedScriptValue); return result; } diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitJavascriptResultPrivate.h b/Source/WebKit2/UIProcess/API/gtk/WebKitJavascriptResultPrivate.h index 840ead058..ac7578857 100644 --- a/Source/WebKit2/UIProcess/API/gtk/WebKitJavascriptResultPrivate.h +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitJavascriptResultPrivate.h @@ -24,6 +24,8 @@ #include "WebKitPrivate.h" #include "WebKitWebView.h" -WebKitJavascriptResult* webkitJavascriptResultCreate(WebKitWebView*, WKSerializedScriptValueRef); +using namespace WebKit; + +WebKitJavascriptResult* webkitJavascriptResultCreate(WebKitWebView*, WebSerializedScriptValue*); #endif // WebKitJavascriptResultPrivate_h diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitLoaderClient.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitLoaderClient.cpp index 6c3bf920a..457c40141 100644 --- a/Source/WebKit2/UIProcess/API/gtk/WebKitLoaderClient.cpp +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitLoaderClient.cpp @@ -152,6 +152,7 @@ void attachLoaderClientToView(WebKitWebView* webView) 0, // pluginDidFail 0, // didReceiveIntentForFrame 0, // registerIntentServiceForFrame + 0, // didLayout }; WKPageRef wkPage = toAPI(webkitWebViewBaseGetPage(WEBKIT_WEB_VIEW_BASE(webView))); WKPageSetPageLoaderClient(wkPage, &wkLoaderClient); diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitPrivate.h b/Source/WebKit2/UIProcess/API/gtk/WebKitPrivate.h index 8fede827f..9ceafecb6 100644 --- a/Source/WebKit2/UIProcess/API/gtk/WebKitPrivate.h +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitPrivate.h @@ -34,6 +34,7 @@ #include <WebKit2/WKGeolocationManager.h> #include <WebKit2/WKGeolocationPermissionRequest.h> #include <WebKit2/WKGeolocationPosition.h> +#include <WebKit2/WKIconDatabase.h> #include <WebKit2/WKInspector.h> #include <WebKit2/WKInspectorClientGtk.h> #include <WebKit2/WKRetainPtr.h> diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitRequestManagerClient.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitRequestManagerClient.cpp index 8ea09f200..babafe651 100644 --- a/Source/WebKit2/UIProcess/API/gtk/WebKitRequestManagerClient.cpp +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitRequestManagerClient.cpp @@ -26,10 +26,10 @@ using namespace WebKit; -static void didReceiveURIRequest(WKSoupRequestManagerRef soupRequestManagerRef, WKURLRef urlRef, uint64_t requestID, const void* clientInfo) +static void didReceiveURIRequest(WKSoupRequestManagerRef soupRequestManagerRef, WKURLRef urlRef, WKPageRef initiatingPageRef, uint64_t requestID, const void* clientInfo) { WebKitWebContext* webContext = WEBKIT_WEB_CONTEXT(clientInfo); - GRefPtr<WebKitURISchemeRequest> request = adoptGRef(webkitURISchemeRequestCreate(webContext, soupRequestManagerRef, urlRef, requestID)); + GRefPtr<WebKitURISchemeRequest> request = adoptGRef(webkitURISchemeRequestCreate(webContext, soupRequestManagerRef, urlRef, initiatingPageRef, requestID)); webkitWebContextReceivedURIRequest(webContext, request.get()); } @@ -46,6 +46,6 @@ void attachRequestManagerClientToContext(WebKitWebContext* webContext) didReceiveURIRequest, didFailToLoadURIRequest }; - WKSoupRequestManagerSetClient(webkitWebContextGetRequestManager(webContext), &wkRequestManagerClient); + WKSoupRequestManagerSetClient(toAPI(webkitWebContextGetRequestManager(webContext)), &wkRequestManagerClient); } diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitSecurityManager.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitSecurityManager.cpp index 53b46f875..d170fcf3f 100644 --- a/Source/WebKit2/UIProcess/API/gtk/WebKitSecurityManager.cpp +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitSecurityManager.cpp @@ -74,7 +74,7 @@ WebKitSecurityManager* webkitSecurityManagerCreate(WebKitWebContext* webContext) static void registerSecurityPolicyForURIScheme(WebKitSecurityManager* manager, const char* scheme, SecurityPolicy policy) { String urlScheme = String::fromUTF8(scheme); - WebContext* webContext = toImpl(webkitWebContextGetWKContext(manager->priv->webContext)); + WebContext* webContext = webkitWebContextGetContext(manager->priv->webContext); // We keep the WebCore::SchemeRegistry of the UI process in sync with the // web process one, so that we can return the SecurityPolicy for diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp index c0a64162a..17d4c881b 100644 --- a/Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp @@ -34,6 +34,7 @@ #include "WebKitPrivate.h" #include "WebKitSettingsPrivate.h" #include "WebPageProxy.h" +#include "WebPreferences.h" #include <WebCore/UserAgentGtk.h> #include <glib/gi18n-lib.h> #include <wtf/text/CString.h> @@ -117,7 +118,8 @@ enum { PROP_DRAW_COMPOSITING_INDICATORS, PROP_ENABLE_SITE_SPECIFIC_QUIRKS, PROP_ENABLE_PAGE_CACHE, - PROP_USER_AGENT + PROP_USER_AGENT, + PROP_ENABLE_SMOOTH_SCROLLING }; static void webKitSettingsSetProperty(GObject* object, guint propId, const GValue* value, GParamSpec* paramSpec) @@ -251,6 +253,9 @@ static void webKitSettingsSetProperty(GObject* object, guint propId, const GValu case PROP_USER_AGENT: webkit_settings_set_user_agent(settings, g_value_get_string(value)); break; + case PROP_ENABLE_SMOOTH_SCROLLING: + webkit_settings_set_enable_smooth_scrolling(settings, g_value_get_boolean(value)); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propId, paramSpec); break; @@ -388,6 +393,9 @@ static void webKitSettingsGetProperty(GObject* object, guint propId, GValue* val case PROP_USER_AGENT: g_value_set_string(value, webkit_settings_get_user_agent(settings)); break; + case PROP_ENABLE_SMOOTH_SCROLLING: + g_value_set_boolean(value, webkit_settings_get_enable_smooth_scrolling(settings)); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propId, paramSpec); break; @@ -1039,6 +1047,19 @@ static void webkit_settings_class_init(WebKitSettingsClass* klass) 0, // A null string forces the standard user agent. readWriteConstructParamFlags)); + /** + * WebKitSettings:enable-smooth-scrolling: + * + * Enable or disable smooth scrolling. + */ + g_object_class_install_property(gObjectClass, + PROP_ENABLE_SMOOTH_SCROLLING, + g_param_spec_boolean("enable-smooth-scrolling", + _("Enable smooth scrolling"), + _("Whether to enable smooth scrolling"), + FALSE, + readWriteConstructParamFlags)); + g_type_class_add_private(klass, sizeof(WebKitSettingsPrivate)); } @@ -2644,3 +2665,38 @@ void webkit_settings_set_user_agent_with_application_details(WebKitSettings* set CString newUserAgent = WebCore::standardUserAgent(String::fromUTF8(applicationName), String::fromUTF8(applicationVersion)).utf8(); webkit_settings_set_user_agent(settings, newUserAgent.data()); } + +/** + * webkit_settings_get_enable_smooth_scrolling: + * @settings: a #WebKitSettings + * + * Get the #WebKitSettings:enable-smooth-scrolling property. + * + * Returns: %TRUE if smooth scrolling is enabled or %FALSE otherwise. + */ +gboolean webkit_settings_get_enable_smooth_scrolling(WebKitSettings* settings) +{ + g_return_val_if_fail(WEBKIT_IS_SETTINGS(settings), FALSE); + + return WebKit::toImpl(settings->priv->preferences.get())->scrollAnimatorEnabled(); +} + +/** + * webkit_settings_set_enable_smooth_scrolling: + * @settings: a #WebKitSettings + * @enabled: Value to be set + * + * Set the #WebKitSettings:enable-smooth-scrolling property. + */ +void webkit_settings_set_enable_smooth_scrolling(WebKitSettings* settings, gboolean enabled) +{ + g_return_if_fail(WEBKIT_IS_SETTINGS(settings)); + + WebKitSettingsPrivate* priv = settings->priv; + bool currentValue = WebKit::toImpl(priv->preferences.get())->scrollAnimatorEnabled(); + if (currentValue == enabled) + return; + + WebKit::toImpl(priv->preferences.get())->setScrollAnimatorEnabled(enabled); + g_object_notify(G_OBJECT(settings), "enable-smooth-scrolling"); +} diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitSettings.h b/Source/WebKit2/UIProcess/API/gtk/WebKitSettings.h index b35a23f06..a9fe86a30 100644 --- a/Source/WebKit2/UIProcess/API/gtk/WebKitSettings.h +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitSettings.h @@ -373,6 +373,13 @@ webkit_settings_set_user_agent_with_application_details (WebKitSettings * const gchar *application_name, const gchar *application_version); +WEBKIT_API gboolean +webkit_settings_get_enable_smooth_scrolling (WebKitSettings *settings); + +WEBKIT_API void +webkit_settings_set_enable_smooth_scrolling (WebKitSettings *settings, + gboolean enabled); + G_END_DECLS #endif /* WebKitSettings_h */ diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitURISchemeRequest.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitURISchemeRequest.cpp index e62c1faf5..e69831f29 100644 --- a/Source/WebKit2/UIProcess/API/gtk/WebKitURISchemeRequest.cpp +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitURISchemeRequest.cpp @@ -22,6 +22,8 @@ #include "WebKitURISchemeRequestPrivate.h" #include "WebKitWebContextPrivate.h" +#include "WebKitWebView.h" +#include "WebPageProxy.h" #include <WebCore/GOwnPtrSoup.h> #include <libsoup/soup.h> #include <wtf/gobject/GRefPtr.h> @@ -36,6 +38,7 @@ G_DEFINE_TYPE(WebKitURISchemeRequest, webkit_uri_scheme_request, G_TYPE_OBJECT) struct _WebKitURISchemeRequestPrivate { WebKitWebContext* webContext; WKRetainPtr<WKSoupRequestManagerRef> wkRequestManager; + WKRetainPtr<WKPageRef> wkInitiatingPage; uint64_t requestID; CString uri; GOwnPtr<SoupURI> soupURI; @@ -68,12 +71,13 @@ static void webkit_uri_scheme_request_class_init(WebKitURISchemeRequestClass* re g_type_class_add_private(requestClass, sizeof(WebKitURISchemeRequestPrivate)); } -WebKitURISchemeRequest* webkitURISchemeRequestCreate(WebKitWebContext* webContext, WKSoupRequestManagerRef wkRequestManager, WKURLRef wkURL, uint64_t requestID) +WebKitURISchemeRequest* webkitURISchemeRequestCreate(WebKitWebContext* webContext, WKSoupRequestManagerRef wkRequestManager, WKURLRef wkURL, WKPageRef wkInitiatingPage, uint64_t requestID) { WebKitURISchemeRequest* request = WEBKIT_URI_SCHEME_REQUEST(g_object_new(WEBKIT_TYPE_URI_SCHEME_REQUEST, NULL)); request->priv->webContext = webContext; request->priv->wkRequestManager = wkRequestManager; request->priv->uri = toImpl(wkURL)->string().utf8(); + request->priv->wkInitiatingPage = wkInitiatingPage; request->priv->requestID = requestID; return request; } @@ -138,6 +142,21 @@ const char* webkit_uri_scheme_request_get_path(WebKitURISchemeRequest* request) return request->priv->soupURI->path; } +/** + * webkit_uri_scheme_request_get_web_view: + * @request: a #WebKitURISchemeRequest + * + * Get the #WebKitWebView that initiated the request. + * + * Returns: (transfer none): the #WebKitWebView that initiated @request. + */ +WebKitWebView* webkit_uri_scheme_request_get_web_view(WebKitURISchemeRequest* request) +{ + g_return_val_if_fail(WEBKIT_IS_URI_SCHEME_REQUEST(request), 0); + + return WEBKIT_WEB_VIEW(toImpl(request->priv->wkInitiatingPage.get())->viewWidget()); +} + static void webkitURISchemeRequestReadCallback(GInputStream* inputStream, GAsyncResult* result, WebKitURISchemeRequest* schemeRequest) { GRefPtr<WebKitURISchemeRequest> request = adoptGRef(schemeRequest); diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitURISchemeRequest.h b/Source/WebKit2/UIProcess/API/gtk/WebKitURISchemeRequest.h index 34f214489..9ead50709 100644 --- a/Source/WebKit2/UIProcess/API/gtk/WebKitURISchemeRequest.h +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitURISchemeRequest.h @@ -51,22 +51,25 @@ struct _WebKitURISchemeRequestClass { }; WEBKIT_API GType -webkit_uri_scheme_request_get_type (void); +webkit_uri_scheme_request_get_type (void); WEBKIT_API const gchar * -webkit_uri_scheme_request_get_scheme (WebKitURISchemeRequest *request); +webkit_uri_scheme_request_get_scheme (WebKitURISchemeRequest *request); WEBKIT_API const gchar * -webkit_uri_scheme_request_get_uri (WebKitURISchemeRequest *request); +webkit_uri_scheme_request_get_uri (WebKitURISchemeRequest *request); WEBKIT_API const gchar * -webkit_uri_scheme_request_get_path (WebKitURISchemeRequest *request); +webkit_uri_scheme_request_get_path (WebKitURISchemeRequest *request); + +WEBKIT_API WebKitWebView * +webkit_uri_scheme_request_get_web_view (WebKitURISchemeRequest *request); WEBKIT_API void -webkit_uri_scheme_request_finish (WebKitURISchemeRequest *request, - GInputStream *stream, - gint64 stream_length, - const gchar *mime_type); +webkit_uri_scheme_request_finish (WebKitURISchemeRequest *request, + GInputStream *stream, + gint64 stream_length, + const gchar *mime_type); G_END_DECLS diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitURISchemeRequestPrivate.h b/Source/WebKit2/UIProcess/API/gtk/WebKitURISchemeRequestPrivate.h index 149813def..b7c011f66 100644 --- a/Source/WebKit2/UIProcess/API/gtk/WebKitURISchemeRequestPrivate.h +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitURISchemeRequestPrivate.h @@ -25,7 +25,7 @@ #include "WebKitWebContext.h" #include <WebKit2/WKSoupRequestManager.h> -WebKitURISchemeRequest* webkitURISchemeRequestCreate(WebKitWebContext*, WKSoupRequestManagerRef, WKURLRef, uint64_t requestID); +WebKitURISchemeRequest* webkitURISchemeRequestCreate(WebKitWebContext*, WKSoupRequestManagerRef, WKURLRef, WKPageRef, uint64_t requestID); uint64_t webkitURISchemeRequestGetID(WebKitURISchemeRequest*); void webkitURISchemeRequestCancel(WebKitURISchemeRequest*); diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp index 5b2c26697..dab18a87d 100644 --- a/Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp @@ -20,10 +20,10 @@ #include "config.h" #include "WebKitWebContext.h" -#include "WebContext.h" #include "WebKitCookieManagerPrivate.h" #include "WebKitDownloadClient.h" #include "WebKitDownloadPrivate.h" +#include "WebKitFaviconDatabasePrivate.h" #include "WebKitGeolocationProvider.h" #include "WebKitPluginPrivate.h" #include "WebKitPrivate.h" @@ -32,7 +32,9 @@ #include "WebKitTextChecker.h" #include "WebKitURISchemeRequestPrivate.h" #include "WebKitWebContextPrivate.h" +#include "WebResourceCacheManagerProxy.h" #include <WebCore/FileSystem.h> +#include <WebCore/IconDatabase.h> #include <WebCore/Language.h> #include <wtf/HashMap.h> #include <wtf/OwnPtr.h> @@ -42,8 +44,6 @@ #include <wtf/gobject/GRefPtr.h> #include <wtf/text/CString.h> -using namespace WebKit; - enum { DOWNLOAD_STARTED, @@ -93,11 +93,12 @@ typedef HashMap<String, RefPtr<WebKitURISchemeHandler> > URISchemeHandlerMap; typedef HashMap<uint64_t, GRefPtr<WebKitURISchemeRequest> > URISchemeRequestMap; struct _WebKitWebContextPrivate { - WKRetainPtr<WKContextRef> context; + RefPtr<WebContext> context; GRefPtr<WebKitCookieManager> cookieManager; + GRefPtr<WebKitFaviconDatabase> faviconDatabase; GRefPtr<WebKitSecurityManager> securityManager; - WKRetainPtr<WKSoupRequestManagerRef> requestManager; + RefPtr<WebSoupRequestManagerProxy> requestManager; URISchemeHandlerMap uriSchemeHandlers; URISchemeRequestMap uriSchemeRequests; #if ENABLE(GEOLOCATION) @@ -106,6 +107,7 @@ struct _WebKitWebContextPrivate { #if ENABLE(SPELLCHECK) OwnPtr<WebKitTextChecker> textChecker; #endif + CString faviconDatabaseDirectory; }; static guint signals[LAST_SIGNAL] = { 0, }; @@ -152,17 +154,20 @@ static void webkit_web_context_class_init(WebKitWebContextClass* webContextClass static gpointer createDefaultWebContext(gpointer) { static GRefPtr<WebKitWebContext> webContext = adoptGRef(WEBKIT_WEB_CONTEXT(g_object_new(WEBKIT_TYPE_WEB_CONTEXT, NULL))); - webContext->priv->context = WKContextCreate(); - webContext->priv->requestManager = WKContextGetSoupRequestManager(webContext->priv->context.get()); - WKContextSetCacheModel(webContext->priv->context.get(), kWKCacheModelPrimaryWebBrowser); + WebKitWebContextPrivate* priv = webContext->priv; + + priv->context = WebContext::create(String()); + priv->requestManager = webContext->priv->context->soupRequestManagerProxy(); + priv->context->setCacheModel(CacheModelPrimaryWebBrowser); + attachDownloadClientToContext(webContext.get()); attachRequestManagerClientToContext(webContext.get()); + #if ENABLE(GEOLOCATION) - WKGeolocationManagerRef wkGeolocationManager = WKContextGetGeolocationManager(webContext->priv->context.get()); - webContext->priv->geolocationProvider = WebKitGeolocationProvider::create(wkGeolocationManager); + priv->geolocationProvider = WebKitGeolocationProvider::create(toAPI(priv->context->geolocationManagerProxy())); #endif #if ENABLE(SPELLCHECK) - webContext->priv->textChecker = WebKitTextChecker::create(); + priv->textChecker = WebKitTextChecker::create(); #endif return webContext.get(); } @@ -206,26 +211,26 @@ WebKitWebContext* webkit_web_context_get_default(void) */ void webkit_web_context_set_cache_model(WebKitWebContext* context, WebKitCacheModel model) { - WKCacheModel cacheModel; + CacheModel cacheModel; g_return_if_fail(WEBKIT_IS_WEB_CONTEXT(context)); switch (model) { case WEBKIT_CACHE_MODEL_DOCUMENT_VIEWER: - cacheModel = kWKCacheModelDocumentViewer; + cacheModel = CacheModelDocumentViewer; break; case WEBKIT_CACHE_MODEL_WEB_BROWSER: - cacheModel = kWKCacheModelPrimaryWebBrowser; + cacheModel = CacheModelPrimaryWebBrowser; break; case WEBKIT_CACHE_MODEL_DOCUMENT_BROWSER: - cacheModel = kWKCacheModelDocumentBrowser; + cacheModel = CacheModelDocumentBrowser; break; default: g_assert_not_reached(); } - WebKitWebContextPrivate* priv = context->priv; - if (cacheModel != WKContextGetCacheModel(priv->context.get())) - WKContextSetCacheModel(priv->context.get(), cacheModel); + + if (cacheModel != context->priv->context->cacheModel()) + context->priv->context->setCacheModel(cacheModel); } /** @@ -242,13 +247,12 @@ WebKitCacheModel webkit_web_context_get_cache_model(WebKitWebContext* context) { g_return_val_if_fail(WEBKIT_IS_WEB_CONTEXT(context), WEBKIT_CACHE_MODEL_WEB_BROWSER); - WebKitWebContextPrivate* priv = context->priv; - switch (WKContextGetCacheModel(priv->context.get())) { - case kWKCacheModelDocumentViewer: + switch (context->priv->context->cacheModel()) { + case CacheModelDocumentViewer: return WEBKIT_CACHE_MODEL_DOCUMENT_VIEWER; - case kWKCacheModelPrimaryWebBrowser: + case CacheModelPrimaryWebBrowser: return WEBKIT_CACHE_MODEL_WEB_BROWSER; - case kWKCacheModelDocumentBrowser: + case CacheModelDocumentBrowser: return WEBKIT_CACHE_MODEL_DOCUMENT_BROWSER; default: g_assert_not_reached(); @@ -268,11 +272,10 @@ void webkit_web_context_clear_cache(WebKitWebContext* context) { g_return_if_fail(WEBKIT_IS_WEB_CONTEXT(context)); - WebKitWebContextPrivate* priv = context->priv; - WKResourceCacheManagerClearCacheForAllOrigins(WKContextGetResourceCacheManager(priv->context.get()), WKResourceCachesToClearAll); + context->priv->context->resourceCacheManagerProxy()->clearCacheForAllOrigins(AllResourceCaches); } -typedef HashMap<WKDownloadRef, GRefPtr<WebKitDownload> > DownloadsMap; +typedef HashMap<DownloadProxy*, GRefPtr<WebKitDownload> > DownloadsMap; static DownloadsMap& downloadsMap() { @@ -295,12 +298,9 @@ WebKitDownload* webkit_web_context_download_uri(WebKitWebContext* context, const g_return_val_if_fail(WEBKIT_IS_WEB_CONTEXT(context), 0); g_return_val_if_fail(uri, 0); - WebKitWebContextPrivate* priv = context->priv; - WKRetainPtr<WKURLRef> wkURL(AdoptWK, WKURLCreateWithUTF8CString(uri)); - WKRetainPtr<WKURLRequestRef> wkRequest(AdoptWK, WKURLRequestCreateWithWKURL(wkURL.get())); - WKRetainPtr<WKDownloadRef> wkDownload = WKContextDownloadURLRequest(priv->context.get(), wkRequest.get()); - WebKitDownload* download = webkitDownloadCreate(wkDownload.get()); - downloadsMap().set(wkDownload.get(), download); + DownloadProxy* downloadProxy = context->priv->context->download(0, WebCore::ResourceRequest(String::fromUTF8(uri))); + WebKitDownload* download = webkitDownloadCreate(toAPI(downloadProxy)); + downloadsMap().set(downloadProxy, download); return download; } @@ -318,11 +318,107 @@ WebKitCookieManager* webkit_web_context_get_cookie_manager(WebKitWebContext* con WebKitWebContextPrivate* priv = context->priv; if (!priv->cookieManager) - priv->cookieManager = adoptGRef(webkitCookieManagerCreate(WKContextGetCookieManager(priv->context.get()))); + priv->cookieManager = adoptGRef(webkitCookieManagerCreate(toAPI(priv->context->cookieManagerProxy()))); return priv->cookieManager.get(); } +static void ensureFaviconDatabase(WebKitWebContext* context) +{ + WebKitWebContextPrivate* priv = context->priv; + if (priv->faviconDatabase) + return; + + priv->faviconDatabase = adoptGRef(webkitFaviconDatabaseCreate(priv->context->iconDatabase())); +} + +/** + * webkit_web_context_set_favicon_database_directory: + * @context: a #WebKitWebContext + * @path: (allow-none): an absolute path to the icon database + * directory or %NULL to use the defaults + * + * Set the directory path to be used to store the favicons database + * for @context on disk. Passing %NULL as @path means using the + * default directory for the platform (see g_get_user_data_dir()). + * + * Calling this method also means enabling the favicons database for + * its use from the applications, so that's why it's expected to be + * called only once. Further calls for the same instance of + * #WebKitWebContext won't cause any effect. + */ +void webkit_web_context_set_favicon_database_directory(WebKitWebContext* context, const gchar* path) +{ + g_return_if_fail(WEBKIT_IS_WEB_CONTEXT(context)); + + WebKitWebContextPrivate* priv = context->priv; + WebIconDatabase* iconDatabase = priv->context->iconDatabase(); + if (iconDatabase->isOpen()) + return; + + ensureFaviconDatabase(context); + + // Use default if 0 is passed as parameter. + String directoryPath = WebCore::filenameToString(path); + priv->faviconDatabaseDirectory = directoryPath.isEmpty() + ? priv->context->iconDatabasePath().utf8() + : directoryPath.utf8(); + + // Build the full path to the icon database file on disk. + GOwnPtr<gchar> faviconDatabasePath(g_build_filename(priv->faviconDatabaseDirectory.data(), + WebCore::IconDatabase::defaultDatabaseFilename().utf8().data(), + NULL)); + + // Setting the path will cause the icon database to be opened. + priv->context->setIconDatabasePath(WebCore::filenameToString(faviconDatabasePath.get())); +} + +/** + * webkit_web_context_get_favicon_database_directory: + * @context: a #WebKitWebContext + * + * Get the directory path being used to store the favicons database + * for @context, or %NULL if + * webkit_web_context_set_favicon_database_directory() hasn't been + * called yet. + * + * This function will always return the same path after having called + * webkit_web_context_set_favicon_database_directory() for the first + * time. + * + * Returns: (transfer none): the path of the directory of the favicons + * database associated with @context, or %NULL. + */ +const gchar* webkit_web_context_get_favicon_database_directory(WebKitWebContext *context) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_CONTEXT(context), 0); + + WebKitWebContextPrivate* priv = context->priv; + if (priv->faviconDatabaseDirectory.isNull()) + return 0; + + return priv->faviconDatabaseDirectory.data(); +} + +/** + * webkit_web_context_get_favicon_database: + * @context: a #WebKitWebContext + * + * Get the #WebKitFaviconDatabase associated with @context. + * + * To initialize the database you need to call + * webkit_web_context_set_favicon_database_directory(). + * + * Returns: (transfer none): the #WebKitFaviconDatabase of @context. + */ +WebKitFaviconDatabase* webkit_web_context_get_favicon_database(WebKitWebContext* context) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_CONTEXT(context), 0); + + ensureFaviconDatabase(context); + return context->priv->faviconDatabase.get(); +} + /** * webkit_web_context_get_security_manager: * @context: a #WebKitWebContext @@ -354,7 +450,7 @@ void webkit_web_context_set_additional_plugins_directory(WebKitWebContext* conte g_return_if_fail(WEBKIT_IS_WEB_CONTEXT(context)); g_return_if_fail(directory); - toImpl(context->priv->context.get())->setAdditionalPluginsDirectory(WebCore::filenameToString(directory)); + context->priv->context->setAdditionalPluginsDirectory(WebCore::filenameToString(directory)); } struct GetPluginsAsyncData { @@ -365,7 +461,7 @@ WEBKIT_DEFINE_ASYNC_DATA_STRUCT(GetPluginsAsyncData) static void webkitWebContextGetPluginThread(GSimpleAsyncResult* result, GObject* object, GCancellable*) { GetPluginsAsyncData* data = static_cast<GetPluginsAsyncData*>(g_simple_async_result_get_op_res_gpointer(result)); - data->plugins = toImpl(WEBKIT_WEB_CONTEXT(object)->priv->context.get())->pluginInfoStore().plugins(); + data->plugins = WEBKIT_WEB_CONTEXT(object)->priv->context->pluginInfoStore().plugins(); } /** @@ -472,8 +568,7 @@ void webkit_web_context_register_uri_scheme(WebKitWebContext* context, const cha RefPtr<WebKitURISchemeHandler> handler = adoptRef(new WebKitURISchemeHandler(callback, userData, destroyNotify)); context->priv->uriSchemeHandlers.set(String::fromUTF8(scheme), handler.get()); - WKRetainPtr<WKStringRef> wkScheme(AdoptWK, WKStringCreateWithUTF8CString(scheme)); - WKSoupRequestManagerRegisterURIScheme(context->priv->requestManager.get(), wkScheme.get()); + context->priv->requestManager->registerURIScheme(String::fromUTF8(scheme)); } /** @@ -587,20 +682,20 @@ void webkit_web_context_set_preferred_languages(WebKitWebContext* context, const WebCore::languageDidChange(); } -WebKitDownload* webkitWebContextGetOrCreateDownload(WKDownloadRef wkDownload) +WebKitDownload* webkitWebContextGetOrCreateDownload(DownloadProxy* downloadProxy) { - GRefPtr<WebKitDownload> download = downloadsMap().get(wkDownload); + GRefPtr<WebKitDownload> download = downloadsMap().get(downloadProxy); if (download) return download.get(); - download = adoptGRef(webkitDownloadCreate(wkDownload)); - downloadsMap().set(wkDownload, download.get()); + download = adoptGRef(webkitDownloadCreate(toAPI(downloadProxy))); + downloadsMap().set(downloadProxy, download.get()); return download.get(); } -void webkitWebContextRemoveDownload(WKDownloadRef wkDownload) +void webkitWebContextRemoveDownload(DownloadProxy* downloadProxy) { - downloadsMap().remove(wkDownload); + downloadsMap().remove(downloadProxy); } void webkitWebContextDownloadStarted(WebKitWebContext* context, WebKitDownload* download) @@ -608,14 +703,14 @@ void webkitWebContextDownloadStarted(WebKitWebContext* context, WebKitDownload* g_signal_emit(context, signals[DOWNLOAD_STARTED], 0, download); } -WKContextRef webkitWebContextGetWKContext(WebKitWebContext* context) +WebContext* webkitWebContextGetContext(WebKitWebContext* context) { g_assert(WEBKIT_IS_WEB_CONTEXT(context)); return context->priv->context.get(); } -WKSoupRequestManagerRef webkitWebContextGetRequestManager(WebKitWebContext* context) +WebSoupRequestManagerProxy* webkitWebContextGetRequestManager(WebKitWebContext* context) { return context->priv->requestManager.get(); } diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.h b/Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.h index f77086f4d..ae79bec87 100644 --- a/Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.h +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.h @@ -28,6 +28,7 @@ #include <webkit2/WebKitCookieManager.h> #include <webkit2/WebKitDefines.h> #include <webkit2/WebKitDownload.h> +#include <webkit2/WebKitFaviconDatabase.h> #include <webkit2/WebKitSecurityManager.h> #include <webkit2/WebKitURISchemeRequest.h> @@ -114,6 +115,15 @@ webkit_web_context_download_uri (WebKitWebContext WEBKIT_API WebKitCookieManager * webkit_web_context_get_cookie_manager (WebKitWebContext *context); +WEBKIT_API WebKitFaviconDatabase * +webkit_web_context_get_favicon_database (WebKitWebContext *context); + +WEBKIT_API void +webkit_web_context_set_favicon_database_directory (WebKitWebContext *context, + const gchar *path); +WEBKIT_API const gchar * +webkit_web_context_get_favicon_database_directory (WebKitWebContext *context); + WEBKIT_API WebKitSecurityManager * webkit_web_context_get_security_manager (WebKitWebContext *context); diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitWebContextPrivate.h b/Source/WebKit2/UIProcess/API/gtk/WebKitWebContextPrivate.h index 9e5536b3a..67be48d5c 100644 --- a/Source/WebKit2/UIProcess/API/gtk/WebKitWebContextPrivate.h +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitWebContextPrivate.h @@ -26,15 +26,20 @@ #ifndef WebKitWebContextPrivate_h #define WebKitWebContextPrivate_h +#include "DownloadProxy.h" +#include "WebContext.h" #include "WebKitPrivate.h" #include "WebKitURISchemeRequest.h" #include "WebKitWebContext.h" +#include "WebSoupRequestManagerProxy.h" -WKContextRef webkitWebContextGetWKContext(WebKitWebContext*); -WebKitDownload* webkitWebContextGetOrCreateDownload(WKDownloadRef); -void webkitWebContextRemoveDownload(WKDownloadRef); +using namespace WebKit; + +WebContext* webkitWebContextGetContext(WebKitWebContext*); +WebKitDownload* webkitWebContextGetOrCreateDownload(DownloadProxy*); +void webkitWebContextRemoveDownload(DownloadProxy*); void webkitWebContextDownloadStarted(WebKitWebContext*, WebKitDownload*); -WKSoupRequestManagerRef webkitWebContextGetRequestManager(WebKitWebContext*); +WebSoupRequestManagerProxy* webkitWebContextGetRequestManager(WebKitWebContext*); void webkitWebContextReceivedURIRequest(WebKitWebContext*, WebKitURISchemeRequest*); void webkitWebContextDidFailToLoadURIRequest(WebKitWebContext*, uint64_t requestID); void webkitWebContextDidFinishURIRequest(WebKitWebContext*, uint64_t requestID); diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp index 301be899c..236a4f304 100644 --- a/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp @@ -30,6 +30,7 @@ #include "WebKitContextMenuPrivate.h" #include "WebKitEnumTypes.h" #include "WebKitError.h" +#include "WebKitFaviconDatabasePrivate.h" #include "WebKitFormClient.h" #include "WebKitFullscreenClient.h" #include "WebKitHitTestResultPrivate.h" @@ -56,6 +57,7 @@ #include <WebCore/DragIcon.h> #include <WebCore/GOwnPtrGtk.h> #include <WebCore/GtkUtilities.h> +#include <WebCore/RefPtrCairo.h> #include <glib/gi18n-lib.h> #include <wtf/gobject/GOwnPtr.h> #include <wtf/gobject/GRefPtr.h> @@ -102,6 +104,7 @@ enum { PROP_WEB_CONTEXT, PROP_TITLE, PROP_ESTIMATED_LOAD_PROGRESS, + PROP_FAVICON, PROP_URI, PROP_ZOOM_LEVEL, PROP_IS_LOADING @@ -120,6 +123,7 @@ struct _WebKitWebViewPrivate { bool waitingForMainResource; gulong mainResourceResponseHandlerID; + gulong watchForChangesInFaviconHandlerID; WebKitLoadEvent lastDelayedEvent; GRefPtr<WebKitBackForwardList> backForwardList; @@ -139,6 +143,9 @@ struct _WebKitWebViewPrivate { ResourcesMap subresourcesMap; GRefPtr<WebKitWebInspector> inspector; + + RefPtr<cairo_surface_t> favicon; + GRefPtr<GCancellable> faviconCancellable; }; static guint signals[LAST_SIGNAL] = { 0, }; @@ -260,6 +267,37 @@ static void userAgentChanged(WebKitSettings* settings, GParamSpec*, WebKitWebVie getPage(webView)->setCustomUserAgent(String::fromUTF8(webkit_settings_get_user_agent(settings))); } +static void webkitWebViewCancelFaviconRequest(WebKitWebView* webView) +{ + if (!webView->priv->faviconCancellable) + return; + + g_cancellable_cancel(webView->priv->faviconCancellable.get()); + webView->priv->faviconCancellable = 0; +} + +static void webkitWebViewUpdateFavicon(WebKitWebView* webView, cairo_surface_t* favicon) +{ + if (webView->priv->favicon.get() == favicon) + return; + + webView->priv->favicon = favicon; + g_object_notify(G_OBJECT(webView), "favicon"); +} + +static void iconReadyCallback(WebKitFaviconDatabase* database, const char* uri, WebKitWebView* webView) +{ + // Consider only the icon matching the active URI for this webview. + if (webView->priv->activeURI != uri) + return; + + // Update the favicon only if we don't have one already. + if (!webView->priv->favicon) { + RefPtr<cairo_surface_t> favicon = adoptRef(webkitFaviconDatabaseGetFavicon(database, webView->priv->activeURI)); + webkitWebViewUpdateFavicon(webView, favicon.get()); + } +} + static void webkitWebViewSetSettings(WebKitWebView* webView, WebKitSettings* settings) { webView->priv->settings = settings; @@ -285,6 +323,29 @@ static void webkitWebViewDisconnectMainResourceResponseChangedSignalHandler(WebK priv->mainResourceResponseHandlerID = 0; } +static void webkitWebViewWatchForChangesInFavicon(WebKitWebView* webView) +{ + WebKitWebViewPrivate* priv = webView->priv; + WebKitFaviconDatabase* database = webkit_web_context_get_favicon_database(priv->context); + + // Make sure we only connect to this signal once per view. + if (priv->watchForChangesInFaviconHandlerID) + return; + + priv->watchForChangesInFaviconHandlerID = + g_signal_connect(database, "favicon-ready", G_CALLBACK(iconReadyCallback), webView); +} + +static void webkitWebViewDisconnectFaviconDatabaseSignalHandlers(WebKitWebView* webView) +{ + WebKitWebViewPrivate* priv = webView->priv; + WebKitFaviconDatabase* database = webkit_web_context_get_favicon_database(priv->context); + + if (priv->watchForChangesInFaviconHandlerID) + g_signal_handler_disconnect(database, priv->watchForChangesInFaviconHandlerID); + priv->watchForChangesInFaviconHandlerID = 0; +} + static void fileChooserDialogResponseCallback(GtkDialog* dialog, gint responseID, WebKitFileChooserRequest* request) { GRefPtr<WebKitFileChooserRequest> adoptedRequest = adoptGRef(request); @@ -337,7 +398,7 @@ static void webkitWebViewConstructed(GObject* object) WebKitWebViewPrivate* priv = webView->priv; WebKitWebViewBase* webViewBase = WEBKIT_WEB_VIEW_BASE(webView); - webkitWebViewBaseCreateWebPage(webViewBase, toImpl(webkitWebContextGetWKContext(priv->context)), 0); + webkitWebViewBaseCreateWebPage(webViewBase, webkitWebContextGetContext(priv->context), 0); attachLoaderClientToView(webView); attachUIClientToView(webView); @@ -385,6 +446,9 @@ static void webkitWebViewGetProperty(GObject* object, guint propId, GValue* valu case PROP_ESTIMATED_LOAD_PROGRESS: g_value_set_double(value, webkit_web_view_get_estimated_load_progress(webView)); break; + case PROP_FAVICON: + g_value_set_pointer(value, webkit_web_view_get_favicon(webView)); + break; case PROP_URI: g_value_set_string(value, webkit_web_view_get_uri(webView)); break; @@ -411,8 +475,10 @@ static void webkitWebViewFinalize(GObject* object) if (priv->modalLoop && g_main_loop_is_running(priv->modalLoop.get())) g_main_loop_quit(priv->modalLoop.get()); + webkitWebViewCancelFaviconRequest(webView); webkitWebViewDisconnectMainResourceResponseChangedSignalHandler(webView); webkitWebViewDisconnectSettingsSignalHandlers(webView); + webkitWebViewDisconnectFaviconDatabaseSignalHandlers(webView); priv->~WebKitWebViewPrivate(); G_OBJECT_CLASS(webkit_web_view_parent_class)->finalize(object); @@ -500,6 +566,18 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass) 0.0, 1.0, 0.0, WEBKIT_PARAM_READABLE)); /** + * WebKitWebView:favicon: + * + * The favicon currently associated to the #WebKitWebView. + * See webkit_web_view_get_favicon() for more details. + */ + g_object_class_install_property(gObjectClass, + PROP_FAVICON, + g_param_spec_pointer("favicon", + _("Favicon"), + _("The favicon associated to the view, if any"), + WEBKIT_PARAM_READABLE)); + /** * WebKitWebView:uri: * * The current active URI of the #WebKitWebView. @@ -1158,9 +1236,10 @@ static void setCertificateToMainResource(WebKitWebView* webView) static void webkitWebViewEmitLoadChanged(WebKitWebView* webView, WebKitLoadEvent loadEvent) { - if (loadEvent == WEBKIT_LOAD_STARTED) + if (loadEvent == WEBKIT_LOAD_STARTED) { webkitWebViewSetIsLoading(webView, true); - else if (loadEvent == WEBKIT_LOAD_FINISHED) { + webkitWebViewWatchForChangesInFavicon(webView); + } else if (loadEvent == WEBKIT_LOAD_FINISHED) { webkitWebViewSetIsLoading(webView, false); webView->priv->waitingForMainResource = false; webkitWebViewDisconnectMainResourceResponseChangedSignalHandler(webView); @@ -1182,29 +1261,52 @@ static void webkitWebViewEmitDelayedLoadEvents(WebKitWebView* webView) priv->waitingForMainResource = false; } +static void getFaviconReadyCallback(GObject* object, GAsyncResult* result, gpointer userData) +{ + GOwnPtr<GError> error; + RefPtr<cairo_surface_t> favicon = adoptRef(webkit_favicon_database_get_favicon_finish(WEBKIT_FAVICON_DATABASE(object), result, &error.outPtr())); + if (!g_error_matches(error.get(), G_IO_ERROR, G_IO_ERROR_CANCELLED)) { + WebKitWebView* webView = WEBKIT_WEB_VIEW(userData); + webkitWebViewUpdateFavicon(webView, favicon.get()); + webView->priv->faviconCancellable = 0; + } +} + +static void webkitWebViewRequestFavicon(WebKitWebView* webView) +{ + WebKitWebViewPrivate* priv = webView->priv; + WebKitFaviconDatabase* database = webkit_web_context_get_favicon_database(priv->context); + priv->faviconCancellable = adoptGRef(g_cancellable_new()); + webkit_favicon_database_get_favicon(database, priv->activeURI.data(), priv->faviconCancellable.get(), getFaviconReadyCallback, webView); +} + void webkitWebViewLoadChanged(WebKitWebView* webView, WebKitLoadEvent loadEvent) { + WebKitWebViewPrivate* priv = webView->priv; if (loadEvent == WEBKIT_LOAD_STARTED) { // Finish a possible previous load waiting for main resource. webkitWebViewEmitDelayedLoadEvents(webView); - webView->priv->loadingResourcesMap.clear(); - webView->priv->mainResource = 0; - webView->priv->waitingForMainResource = false; + webkitWebViewCancelFaviconRequest(webView); + priv->loadingResourcesMap.clear(); + priv->mainResource = 0; + priv->waitingForMainResource = false; } else if (loadEvent == WEBKIT_LOAD_COMMITTED) { - webView->priv->subresourcesMap.clear(); - if (!webView->priv->mainResource) { + webkitWebViewRequestFavicon(webView); + + priv->subresourcesMap.clear(); + if (!priv->mainResource) { // When a page is loaded from the history cache, the main resource load callbacks // are called when the main frame load is finished. We want to make sure there's a // main resource available when load has been committed, so we delay the emission of // load-changed signal until main resource object has been created. - webView->priv->waitingForMainResource = true; + priv->waitingForMainResource = true; } else setCertificateToMainResource(webView); } - if (webView->priv->waitingForMainResource) - webView->priv->lastDelayedEvent = loadEvent; + if (priv->waitingForMainResource) + priv->lastDelayedEvent = loadEvent; else webkitWebViewEmitLoadChanged(webView, loadEvent); } @@ -1850,6 +1952,26 @@ const gchar* webkit_web_view_get_uri(WebKitWebView* webView) } /** + * webkit_web_view_get_favicon: + * @web_view: a #WebKitWebView + * + * Returns favicon currently associated to @web_view, if any. You can + * connect to notify::favicon signal of @web_view to be notified when + * the favicon is available. + * + * Returns: (transfer none): a pointer to a #cairo_surface_t with the + * favicon or %NULL if there's no icon associated with @web_view. + */ +cairo_surface_t* webkit_web_view_get_favicon(WebKitWebView* webView) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), 0); + if (webView->priv->activeURI.isNull()) + return 0; + + return webView->priv->favicon.get(); +} + +/** * webkit_web_view_get_custom_charset: * @web_view: a #WebKitWebView * @@ -2192,7 +2314,7 @@ static void webkitWebViewRunJavaScriptCallback(WKSerializedScriptValueRef wkSeri g_simple_async_result_take_error(result.get(), error); else if (wkSerializedScriptValue) { GRefPtr<WebKitWebView> webView = adoptGRef(WEBKIT_WEB_VIEW(g_async_result_get_source_object(G_ASYNC_RESULT(result.get())))); - data->scriptResult = webkitJavascriptResultCreate(webView.get(), wkSerializedScriptValue); + data->scriptResult = webkitJavascriptResultCreate(webView.get(), toImpl(wkSerializedScriptValue)); } else { g_set_error_literal(&error, WEBKIT_JAVASCRIPT_ERROR, WEBKIT_JAVASCRIPT_ERROR_SCRIPT_FAILED, _("An exception was raised in JavaScript")); g_simple_async_result_take_error(result.get(), error); @@ -2307,6 +2429,94 @@ WebKitJavascriptResult* webkit_web_view_run_javascript_finish(WebKitWebView* web return data->scriptResult ? webkit_javascript_result_ref(data->scriptResult) : 0; } +static void resourcesStreamReadCallback(GObject* object, GAsyncResult* result, gpointer userData) +{ + GOutputStream* outputStream = G_OUTPUT_STREAM(object); + GRefPtr<GSimpleAsyncResult> runJavascriptResult = adoptGRef(G_SIMPLE_ASYNC_RESULT(userData)); + + GError* error = 0; + g_output_stream_splice_finish(outputStream, result, &error); + if (error) { + g_simple_async_result_take_error(runJavascriptResult.get(), error); + g_simple_async_result_complete(runJavascriptResult.get()); + return; + } + + GRefPtr<WebKitWebView> webView = adoptGRef(WEBKIT_WEB_VIEW(g_async_result_get_source_object(G_ASYNC_RESULT(runJavascriptResult.get())))); + gpointer outputStreamData = g_memory_output_stream_get_data(G_MEMORY_OUTPUT_STREAM(outputStream)); + getPage(webView.get())->runJavaScriptInMainFrame(String::fromUTF8(reinterpret_cast<const gchar*>(outputStreamData)), + ScriptValueCallback::create(runJavascriptResult.leakRef(), webkitWebViewRunJavaScriptCallback)); +} + +/** + * webkit_web_view_run_javascript_from_gresource: + * @web_view: a #WebKitWebView + * @resource: the location of the resource to load + * @cancellable: (allow-none): a #GCancellable or %NULL to ignore + * @callback: (scope async): a #GAsyncReadyCallback to call when the script finished + * @user_data: (closure): the data to pass to callback function + * + * Asynchronously run the script from @resource in the context of the + * current page in @web_view. + * + * When the operation is finished, @callback will be called. You can + * then call webkit_web_view_run_javascript_from_gresource_finish() to get the result + * of the operation. + */ +void webkit_web_view_run_javascript_from_gresource(WebKitWebView* webView, const gchar* resource, GCancellable* cancellable, GAsyncReadyCallback callback, gpointer userData) +{ + g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView)); + g_return_if_fail(resource); + + GRefPtr<GSimpleAsyncResult> result = adoptGRef(g_simple_async_result_new(G_OBJECT(webView), callback, userData, + reinterpret_cast<gpointer>(webkit_web_view_run_javascript_from_gresource))); + RunJavaScriptAsyncData* data = createRunJavaScriptAsyncData(); + data->cancellable = cancellable; + g_simple_async_result_set_op_res_gpointer(result.get(), data, reinterpret_cast<GDestroyNotify>(destroyRunJavaScriptAsyncData)); + + GError* error = 0; + GRefPtr<GInputStream> inputStream = adoptGRef(g_resources_open_stream(resource, G_RESOURCE_LOOKUP_FLAGS_NONE, &error)); + if (error) { + g_simple_async_result_take_error(result.get(), error); + g_simple_async_result_complete_in_idle(result.get()); + return; + } + + GRefPtr<GOutputStream> outputStream = adoptGRef(g_memory_output_stream_new(0, 0, fastRealloc, fastFree)); + g_output_stream_splice_async(outputStream.get(), inputStream.get(), + static_cast<GOutputStreamSpliceFlags>(G_OUTPUT_STREAM_SPLICE_CLOSE_SOURCE | G_OUTPUT_STREAM_SPLICE_CLOSE_TARGET), + G_PRIORITY_DEFAULT, + cancellable, resourcesStreamReadCallback, result.leakRef()); +} + +/** + * webkit_web_view_run_javascript_from_gresource_finish: + * @web_view: a #WebKitWebView + * @result: a #GAsyncResult + * @error: return location for error or %NULL to ignore + * + * Finish an asynchronous operation started with webkit_web_view_run_javascript_from_gresource(). + * + * Check webkit_web_view_run_javascript_finish() for a usage example. + * + * Returns: (transfer full): a #WebKitJavascriptResult with the result of the last executed statement in @script + * or %NULL in case of error + */ +WebKitJavascriptResult* webkit_web_view_run_javascript_from_gresource_finish(WebKitWebView* webView, GAsyncResult* result, GError** error) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), 0); + g_return_val_if_fail(G_IS_ASYNC_RESULT(result), 0); + + GSimpleAsyncResult* simpleResult = G_SIMPLE_ASYNC_RESULT(result); + g_warn_if_fail(g_simple_async_result_get_source_tag(simpleResult) == webkit_web_view_run_javascript_from_gresource); + + if (g_simple_async_result_propagate_error(simpleResult, error)) + return 0; + + RunJavaScriptAsyncData* data = static_cast<RunJavaScriptAsyncData*>(g_simple_async_result_get_op_res_gpointer(simpleResult)); + return data->scriptResult ? webkit_javascript_result_ref(data->scriptResult) : 0; +} + /** * webkit_web_view_get_main_resource: * @web_view: a #WebKitWebView @@ -2341,7 +2551,7 @@ GList* webkit_web_view_get_subresources(WebKitWebView* webView) WebKitWebViewPrivate* priv = webView->priv; ResourcesMap::const_iterator end = priv->subresourcesMap.end(); for (ResourcesMap::const_iterator it = priv->subresourcesMap.begin(); it != end; ++it) - subresources = g_list_prepend(subresources, it->second.get()); + subresources = g_list_prepend(subresources, it->value.get()); return g_list_reverse(subresources); } diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h b/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h index 8a397b752..ac2e2813f 100644 --- a/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h @@ -191,170 +191,185 @@ struct _WebKitWebViewClass { }; WEBKIT_API GType -webkit_web_view_get_type (void); +webkit_web_view_get_type (void); WEBKIT_API GtkWidget * -webkit_web_view_new (void); +webkit_web_view_new (void); WEBKIT_API GtkWidget * -webkit_web_view_new_with_context (WebKitWebContext *context); +webkit_web_view_new_with_context (WebKitWebContext *context); WEBKIT_API WebKitWebContext * -webkit_web_view_get_context (WebKitWebView *web_view); +webkit_web_view_get_context (WebKitWebView *web_view); WEBKIT_API void -webkit_web_view_load_uri (WebKitWebView *web_view, - const gchar *uri); +webkit_web_view_load_uri (WebKitWebView *web_view, + const gchar *uri); WEBKIT_API void -webkit_web_view_load_html (WebKitWebView *web_view, - const gchar *content, - const gchar *base_uri); +webkit_web_view_load_html (WebKitWebView *web_view, + const gchar *content, + const gchar *base_uri); WEBKIT_API void -webkit_web_view_load_alternate_html (WebKitWebView *web_view, - const gchar *content, - const gchar *content_uri, - const gchar *base_uri); +webkit_web_view_load_alternate_html (WebKitWebView *web_view, + const gchar *content, + const gchar *content_uri, + const gchar *base_uri); WEBKIT_API void -webkit_web_view_load_plain_text (WebKitWebView *web_view, - const gchar *plain_text); +webkit_web_view_load_plain_text (WebKitWebView *web_view, + const gchar *plain_text); WEBKIT_API void -webkit_web_view_load_request (WebKitWebView *web_view, - WebKitURIRequest *request); +webkit_web_view_load_request (WebKitWebView *web_view, + WebKitURIRequest *request); WEBKIT_API void -webkit_web_view_stop_loading (WebKitWebView *web_view); +webkit_web_view_stop_loading (WebKitWebView *web_view); WEBKIT_API gboolean -webkit_web_view_is_loading (WebKitWebView *web_view); +webkit_web_view_is_loading (WebKitWebView *web_view); WEBKIT_API const gchar * -webkit_web_view_get_title (WebKitWebView *web_view); +webkit_web_view_get_title (WebKitWebView *web_view); WEBKIT_API void -webkit_web_view_reload (WebKitWebView *web_view); +webkit_web_view_reload (WebKitWebView *web_view); WEBKIT_API void -webkit_web_view_reload_bypass_cache (WebKitWebView *web_view); +webkit_web_view_reload_bypass_cache (WebKitWebView *web_view); WEBKIT_API gdouble -webkit_web_view_get_estimated_load_progress (WebKitWebView *web_view); +webkit_web_view_get_estimated_load_progress (WebKitWebView *web_view); WEBKIT_API void -webkit_web_view_go_back (WebKitWebView *web_view); +webkit_web_view_go_back (WebKitWebView *web_view); WEBKIT_API gboolean -webkit_web_view_can_go_back (WebKitWebView *web_view); +webkit_web_view_can_go_back (WebKitWebView *web_view); WEBKIT_API void -webkit_web_view_go_forward (WebKitWebView *web_view); +webkit_web_view_go_forward (WebKitWebView *web_view); WEBKIT_API gboolean -webkit_web_view_can_go_forward (WebKitWebView *web_view); +webkit_web_view_can_go_forward (WebKitWebView *web_view); WEBKIT_API WebKitBackForwardList * -webkit_web_view_get_back_forward_list (WebKitWebView *web_view); +webkit_web_view_get_back_forward_list (WebKitWebView *web_view); WEBKIT_API void -webkit_web_view_go_to_back_forward_list_item (WebKitWebView *web_view, - WebKitBackForwardListItem *list_item); +webkit_web_view_go_to_back_forward_list_item (WebKitWebView *web_view, + WebKitBackForwardListItem *list_item); WEBKIT_API const gchar * -webkit_web_view_get_uri (WebKitWebView *web_view); +webkit_web_view_get_uri (WebKitWebView *web_view); + +WEBKIT_API cairo_surface_t * +webkit_web_view_get_favicon (WebKitWebView *web_view); WEBKIT_API const gchar * -webkit_web_view_get_custom_charset (WebKitWebView *web_view); +webkit_web_view_get_custom_charset (WebKitWebView *web_view); WEBKIT_API void -webkit_web_view_set_custom_charset (WebKitWebView *web_view, - const gchar *charset); +webkit_web_view_set_custom_charset (WebKitWebView *web_view, + const gchar *charset); WEBKIT_API void -webkit_web_view_set_settings (WebKitWebView *web_view, - WebKitSettings *settings); +webkit_web_view_set_settings (WebKitWebView *web_view, + WebKitSettings *settings); WEBKIT_API WebKitSettings * -webkit_web_view_get_settings (WebKitWebView *web_view); +webkit_web_view_get_settings (WebKitWebView *web_view); WEBKIT_API WebKitWindowProperties * -webkit_web_view_get_window_properties (WebKitWebView *web_view); +webkit_web_view_get_window_properties (WebKitWebView *web_view); WEBKIT_API void -webkit_web_view_set_zoom_level (WebKitWebView *web_view, - gdouble zoom_level); +webkit_web_view_set_zoom_level (WebKitWebView *web_view, + gdouble zoom_level); WEBKIT_API gdouble -webkit_web_view_get_zoom_level (WebKitWebView *web_view); +webkit_web_view_get_zoom_level (WebKitWebView *web_view); WEBKIT_API void -webkit_web_view_can_execute_editing_command (WebKitWebView *web_view, - const gchar *command, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data); +webkit_web_view_can_execute_editing_command (WebKitWebView *web_view, + const gchar *command, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); WEBKIT_API gboolean -webkit_web_view_can_execute_editing_command_finish (WebKitWebView *web_view, - GAsyncResult *result, - GError **error); +webkit_web_view_can_execute_editing_command_finish (WebKitWebView *web_view, + GAsyncResult *result, + GError **error); WEBKIT_API void -webkit_web_view_execute_editing_command (WebKitWebView *web_view, - const gchar *command); +webkit_web_view_execute_editing_command (WebKitWebView *web_view, + const gchar *command); WEBKIT_API WebKitFindController * -webkit_web_view_get_find_controller (WebKitWebView *web_view); +webkit_web_view_get_find_controller (WebKitWebView *web_view); WEBKIT_API JSGlobalContextRef -webkit_web_view_get_javascript_global_context (WebKitWebView *web_view); +webkit_web_view_get_javascript_global_context (WebKitWebView *web_view); WEBKIT_API void -webkit_web_view_run_javascript (WebKitWebView *web_view, - const gchar *script, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data); +webkit_web_view_run_javascript (WebKitWebView *web_view, + const gchar *script, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +WEBKIT_API WebKitJavascriptResult * +webkit_web_view_run_javascript_finish (WebKitWebView *web_view, + GAsyncResult *result, + GError **error); + +WEBKIT_API void +webkit_web_view_run_javascript_from_gresource (WebKitWebView *web_view, + const gchar *resource, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + WEBKIT_API WebKitJavascriptResult * -webkit_web_view_run_javascript_finish (WebKitWebView *web_view, - GAsyncResult *result, - GError **error); +webkit_web_view_run_javascript_from_gresource_finish (WebKitWebView *web_view, + GAsyncResult *result, + GError **error); WEBKIT_API WebKitWebResource * -webkit_web_view_get_main_resource (WebKitWebView *web_view); +webkit_web_view_get_main_resource (WebKitWebView *web_view); WEBKIT_API GList * -webkit_web_view_get_subresources (WebKitWebView *web_view); +webkit_web_view_get_subresources (WebKitWebView *web_view); WEBKIT_API WebKitWebInspector * -webkit_web_view_get_inspector (WebKitWebView *web_view); +webkit_web_view_get_inspector (WebKitWebView *web_view); WEBKIT_API gboolean -webkit_web_view_can_show_mime_type (WebKitWebView *web_view, - const gchar *mime_type); +webkit_web_view_can_show_mime_type (WebKitWebView *web_view, + const gchar *mime_type); WEBKIT_API void -webkit_web_view_save (WebKitWebView *web_view, - WebKitSaveMode save_mode, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data); +webkit_web_view_save (WebKitWebView *web_view, + WebKitSaveMode save_mode, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); WEBKIT_API GInputStream * -webkit_web_view_save_finish (WebKitWebView *web_view, - GAsyncResult *result, - GError **error); +webkit_web_view_save_finish (WebKitWebView *web_view, + GAsyncResult *result, + GError **error); WEBKIT_API void -webkit_web_view_save_to_file (WebKitWebView *web_view, - GFile *file, - WebKitSaveMode save_mode, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data); +webkit_web_view_save_to_file (WebKitWebView *web_view, + GFile *file, + WebKitSaveMode save_mode, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); WEBKIT_API gboolean -webkit_web_view_save_to_file_finish (WebKitWebView *web_view, - GAsyncResult *result, - GError **error); +webkit_web_view_save_to_file_finish (WebKitWebView *web_view, + GAsyncResult *result, + GError **error); G_END_DECLS diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp index b42b2ee8f..e5bac671e 100644 --- a/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp @@ -75,6 +75,10 @@ using namespace WebCore; typedef HashMap<GtkWidget*, IntRect> WebKitWebViewChildrenMap; +#if USE(TEXTURE_MAPPER_GL) +void redirectedWindowDamagedCallback(void* data); +#endif + struct _WebKitWebViewBasePrivate { WebKitWebViewChildrenMap children; OwnPtr<PageClientImpl> pageClient; @@ -111,7 +115,6 @@ struct _WebKitWebViewBasePrivate { #if USE(TEXTURE_MAPPER_GL) OwnPtr<RedirectedXCompositeWindow> redirectedWindow; - bool readyToRenderAcceleratedCompositingResults; #endif }; @@ -300,7 +303,7 @@ static void webkitWebViewBaseContainerForall(GtkContainer* container, gboolean i WebKitWebViewChildrenMap children = priv->children; WebKitWebViewChildrenMap::const_iterator end = children.end(); for (WebKitWebViewChildrenMap::const_iterator current = children.begin(); current != end; ++current) - (*callback)(current->first, callbackData); + (*callback)(current->key, callbackData); if (includeInternals && priv->inspectorView) (*callback)(priv->inspectorView, callbackData); @@ -351,7 +354,8 @@ static void webkit_web_view_base_init(WebKitWebViewBase* webkitWebViewBase) #if USE(TEXTURE_MAPPER_GL) priv->redirectedWindow = RedirectedXCompositeWindow::create(IntSize(1, 1)); - priv->readyToRenderAcceleratedCompositingResults = false; + if (priv->redirectedWindow) + priv->redirectedWindow->setDamageNotifyCallback(redirectedWindowDamagedCallback, webkitWebViewBase); #endif } @@ -364,10 +368,9 @@ static bool webkitWebViewRenderAcceleratedCompositingResults(WebKitWebViewBase* // To avoid flashes when initializing accelerated compositing for the first // time, we wait until we know there's a frame ready before rendering. WebKitWebViewBasePrivate* priv = webViewBase->priv; - if (!priv->readyToRenderAcceleratedCompositingResults) + if (!priv->redirectedWindow) return false; - ASSERT(priv->redirectedWindow); cairo_rectangle(cr, clipRect->x, clipRect->y, clipRect->width, clipRect->height); cairo_surface_t* surface = priv->redirectedWindow->cairoSurfaceForWidget(GTK_WIDGET(webViewBase)); cairo_set_source_surface(cr, surface, 0, 0); @@ -430,7 +433,7 @@ static void resizeWebKitWebViewBaseFromAllocation(WebKitWebViewBase* webViewBase } #if USE(TEXTURE_MAPPER_GL) - if (sizeChanged) + if (sizeChanged && webViewBase->priv->redirectedWindow) webViewBase->priv->redirectedWindow->resize(viewRect.size()); #endif @@ -801,7 +804,8 @@ void webkitWebViewBaseCreateWebPage(WebKitWebViewBase* webkitWebViewBase, WebCon #endif #if USE(TEXTURE_MAPPER_GL) - priv->pageProxy->setAcceleratedCompositingWindowId(priv->redirectedWindow->windowId()); + if (priv->redirectedWindow) + priv->pageProxy->setAcceleratedCompositingWindowId(priv->redirectedWindow->windowId()); #endif } @@ -928,37 +932,9 @@ GdkEvent* webkitWebViewBaseTakeContextMenuEvent(WebKitWebViewBase* webkitWebView } #if USE(TEXTURE_MAPPER_GL) -static gboolean queueAnotherDrawOfAcceleratedCompositingResults(gpointer* webViewBasePointer) +void redirectedWindowDamagedCallback(void* data) { - // The WebViewBase may have been destroyed in the time since we queued this - // draw and the time we are actually executing. - if (!*webViewBasePointer) { - fastFree(webViewBasePointer); - return FALSE; - } - - WebKitWebViewBase* webViewBase = WEBKIT_WEB_VIEW_BASE(*webViewBasePointer); - gtk_widget_queue_draw(GTK_WIDGET(webViewBase)); - webViewBase->priv->readyToRenderAcceleratedCompositingResults = true; - - g_object_remove_weak_pointer(G_OBJECT(webViewBase), webViewBasePointer); - fastFree(webViewBasePointer); - - return FALSE; -} - -void webkitWebViewBaseQueueDrawOfAcceleratedCompositingResults(WebKitWebViewBase* webViewBase) -{ - gtk_widget_queue_draw(GTK_WIDGET(webViewBase)); - - // Redraw again, one frame later, as it might take some time for the new GL frame to be available. - // This prevents the display from always being one frame behind in the case GL hasn't yet finished - // rendering to the window. - // TODO: Add XDamage support to RedirectedXCompositeWindow to accomplish this. - gpointer* webViewBasePointer = static_cast<gpointer*>(fastMalloc(sizeof(gpointer))); - g_object_add_weak_pointer(G_OBJECT(webViewBase), webViewBasePointer); - *webViewBasePointer = webViewBase; - g_timeout_add(1000 / 60, reinterpret_cast<GSourceFunc>(queueAnotherDrawOfAcceleratedCompositingResults), webViewBasePointer); + gtk_widget_queue_draw(GTK_WIDGET(data)); } #endif diff --git a/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-docs.sgml b/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-docs.sgml index a7f34e6d1..8623af33e 100644 --- a/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-docs.sgml +++ b/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-docs.sgml @@ -30,6 +30,7 @@ <xi:include href="xml/WebKitPrintOperation.xml"/> <xi:include href="xml/WebKitWebResource.xml"/> <xi:include href="xml/WebKitError.xml"/> + <xi:include href="xml/WebKitFaviconDatabase.xml"/> <xi:include href="xml/WebKitFileChooserRequest.xml"/> <xi:include href="xml/WebKitFindController.xml"/> <xi:include href="xml/WebKitCookieManager.xml"/> diff --git a/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-sections.txt b/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-sections.txt index 1827b6b16..f56267b9a 100644 --- a/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-sections.txt +++ b/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-sections.txt @@ -30,6 +30,9 @@ webkit_web_context_set_cache_model webkit_web_context_clear_cache webkit_web_context_download_uri webkit_web_context_get_cookie_manager +webkit_web_context_get_favicon_database +webkit_web_context_set_favicon_database_directory +webkit_web_context_get_favicon_database_directory webkit_web_context_get_security_manager webkit_web_context_set_additional_plugins_directory webkit_web_context_get_plugins @@ -98,6 +101,7 @@ webkit_web_view_set_custom_charset webkit_web_view_get_back_forward_list webkit_web_view_go_to_back_forward_list_item webkit_web_view_get_uri +webkit_web_view_get_favicon webkit_web_view_set_settings webkit_web_view_get_settings webkit_web_view_get_window_properties @@ -111,6 +115,8 @@ webkit_web_view_get_inspector webkit_web_view_get_javascript_global_context webkit_web_view_run_javascript webkit_web_view_run_javascript_finish +webkit_web_view_run_javascript_from_gresource +webkit_web_view_run_javascript_from_gresource_finish webkit_web_view_can_show_mime_type webkit_web_view_save webkit_web_view_save_finish @@ -291,6 +297,8 @@ webkit_settings_set_enable_page_cache webkit_settings_get_user_agent webkit_settings_set_user_agent webkit_settings_set_user_agent_with_application_details +webkit_settings_get_enable_smooth_scrolling +webkit_settings_set_enable_smooth_scrolling <SUBSECTION Standard> WebKitSettingsClass @@ -602,6 +610,31 @@ webkit_javascript_error_quark </SECTION> <SECTION> +<FILE>WebKitFaviconDatabase</FILE> +WebKitFaviconDatabase +WEBKIT_FAVICON_DATABASE_ERROR +WebKitFaviconDatabaseError +webkit_favicon_database_get_favicon +webkit_favicon_database_get_favicon_finish +webkit_favicon_database_get_favicon_uri +webkit_favicon_database_clear + +<SUBSECTION Standard> +WebKitFaviconDatabaseClass +WEBKIT_TYPE_FAVICON_DATABASE +WEBKIT_FAVICON_DATABASE +WEBKIT_IS_FAVICON_DATABASE +WEBKIT_FAVICON_DATABASE_CLASS +WEBKIT_IS_FAVICON_DATABASE_CLASS +WEBKIT_FAVICON_DATABASE_GET_CLASS + +<SUBSECTION Private> +WebKitFaviconDatabasePrivate +webkit_favicon_database_get_type +webkit_favicon_database_error_quark +</SECTION> + +<SECTION> <FILE>WebKitFileChooserRequest</FILE> WebKitFileChooserRequest webkit_file_chooser_request_get_mime_types @@ -745,6 +778,7 @@ WebKitURISchemeRequest webkit_uri_scheme_request_get_scheme webkit_uri_scheme_request_get_uri webkit_uri_scheme_request_get_path +webkit_uri_scheme_request_get_web_view webkit_uri_scheme_request_finish <SUBSECTION Standard> diff --git a/Source/WebKit2/UIProcess/API/gtk/tests/GNUmakefile.am b/Source/WebKit2/UIProcess/API/gtk/tests/GNUmakefile.am index 3fadf40b4..06ea1af7c 100644 --- a/Source/WebKit2/UIProcess/API/gtk/tests/GNUmakefile.am +++ b/Source/WebKit2/UIProcess/API/gtk/tests/GNUmakefile.am @@ -11,6 +11,7 @@ TEST_PROGS += \ Programs/WebKit2APITests/TestResources \ Programs/WebKit2APITests/TestSSL \ Programs/WebKit2APITests/TestWebKitVersion \ + Programs/WebKit2APITests/TestWebKitFaviconDatabase \ Programs/WebKit2APITests/TestWebKitFindController \ Programs/WebKit2APITests/TestWebKitPolicyClient \ Programs/WebKit2APITests/TestWebKitSettings \ @@ -29,6 +30,7 @@ endif webkit2_tests_cppflags = \ -DWEBKIT_EXEC_PATH=\"${shell pwd}/$(top_builddir)/Programs\" \ -DWEBKIT_SRC_DIR=\"${shell pwd}/${srcdir}\" \ + -DWEBKIT_DERIVED_SRC_DIR=\"${shell pwd}/${top_builddir}/DerivedSources\" \ $(javascriptcore_cppflags) \ -I$(srcdir)/Source/JavaScriptCore \ -I$(srcdir)/Source \ @@ -55,6 +57,12 @@ webkit2_tests_ldflags = \ -no-install \ -no-fast-install +DerivedSources/WebKit2/webkit2gtk-tests-resources.gresource: Source/WebKit2/UIProcess/API/gtk/tests/resources/webkit2gtk-tests.gresource.xml $(shell $(GLIB_COMPILE_RESOURCES) --generate-dependencies $(srcdir)/Source/WebKit2/UIProcess/API/gtk/tests/resources/webkit2gtk-tests.gresource.xml) + $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir) $< + +DISTCLEANFILES += DerivedSources/WebKit2/webkit2gtk-tests-resources.gresource +noinst_DATA += DerivedSources/WebKit2/webkit2gtk-tests-resources.gresource + noinst_LTLIBRARIES += Libraries/libWebKit2APITestCore.la Libraries_libWebKit2APITestCore_la_SOURCES = \ Source/WebKit2/UIProcess/API/gtk/tests/LoadTrackingTest.cpp \ @@ -69,7 +77,9 @@ Libraries_libWebKit2APITestCore_la_CPPFLAGS = $(webkit2_tests_cppflags) EXTRA_DIST += \ Source/WebKit2/UIProcess/API/gtk/tests/resources/test-cert.pem \ - Source/WebKit2/UIProcess/API/gtk/tests/resources/test-key.pem + Source/WebKit2/UIProcess/API/gtk/tests/resources/test-key.pem \ + Source/WebKit2/UIProcess/API/gtk/tests/resources/webkit2gtk-tests.gresource.xml \ + Source/WebKit2/UIProcess/API/gtk/tests/resources/link-title.js Programs_WebKit2APITests_TestWebKitWebContext_SOURCES = \ Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebContext.cpp @@ -141,6 +151,12 @@ Programs_WebKit2APITests_TestPrinting_CPPFLAGS = $(webkit2_tests_cppflags) $(GTK Programs_WebKit2APITests_TestPrinting_LDADD = $(webkit2_tests_ldadd) $(GTK_UNIX_PRINTING_LIBS) Programs_WebKit2APITests_TestPrinting_LDFLAGS = $(webkit2_tests_ldflags) +Programs_WebKit2APITests_TestWebKitFaviconDatabase_SOURCES = \ + Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitFaviconDatabase.cpp +Programs_WebKit2APITests_TestWebKitFaviconDatabase_CPPFLAGS = $(webkit2_tests_cppflags) +Programs_WebKit2APITests_TestWebKitFaviconDatabase_LDADD = $(webkit2_tests_ldadd) +Programs_WebKit2APITests_TestWebKitFaviconDatabase_LDFLAGS = $(webkit2_tests_ldflags) + Programs_WebKit2APITests_TestWebKitFindController_SOURCES = \ Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitFindController.cpp Programs_WebKit2APITests_TestWebKitFindController_CPPFLAGS = $(webkit2_tests_cppflags) diff --git a/Source/WebKit2/UIProcess/API/gtk/tests/TestBackForwardList.cpp b/Source/WebKit2/UIProcess/API/gtk/tests/TestBackForwardList.cpp index e70e391ff..b479366a4 100644 --- a/Source/WebKit2/UIProcess/API/gtk/tests/TestBackForwardList.cpp +++ b/Source/WebKit2/UIProcess/API/gtk/tests/TestBackForwardList.cpp @@ -38,6 +38,11 @@ static void serverCallback(SoupServer* server, SoupMessage* msg, const char* pat return; } + if (g_str_has_suffix(path, "favicon.ico")) { + soup_message_set_status(msg, SOUP_STATUS_NOT_FOUND); + return; + } + soup_message_set_status(msg, SOUP_STATUS_OK); char* body = g_strdup_printf("<html><title>%s</title><body>%s</body></html>", path + 1, path + 1); diff --git a/Source/WebKit2/UIProcess/API/gtk/tests/TestCookieManager.cpp b/Source/WebKit2/UIProcess/API/gtk/tests/TestCookieManager.cpp index 2fe8998b5..94aeef6e1 100644 --- a/Source/WebKit2/UIProcess/API/gtk/tests/TestCookieManager.cpp +++ b/Source/WebKit2/UIProcess/API/gtk/tests/TestCookieManager.cpp @@ -295,7 +295,7 @@ static void serverCallback(SoupServer* server, SoupMessage* message, const char* } else if (g_str_equal(path, "/image.png")) soup_message_headers_replace(message->response_headers, "Set-Cookie", "baz=qux; Max-Age=60"); else - g_assert_not_reached(); + soup_message_set_status(message, SOUP_STATUS_NOT_FOUND); soup_message_body_complete(message->response_body); } diff --git a/Source/WebKit2/UIProcess/API/gtk/tests/TestLoaderClient.cpp b/Source/WebKit2/UIProcess/API/gtk/tests/TestLoaderClient.cpp index c3a14193d..8fcf33009 100644 --- a/Source/WebKit2/UIProcess/API/gtk/tests/TestLoaderClient.cpp +++ b/Source/WebKit2/UIProcess/API/gtk/tests/TestLoaderClient.cpp @@ -312,7 +312,8 @@ static void serverCallback(SoupServer* server, SoupMessage* message, const char* soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, responseString, strlen(responseString)); soup_server_unpause_message(server, message); return; - } + } else + soup_message_set_status(message, SOUP_STATUS_NOT_FOUND); soup_message_body_complete(message->response_body); } diff --git a/Source/WebKit2/UIProcess/API/gtk/tests/TestMain.cpp b/Source/WebKit2/UIProcess/API/gtk/tests/TestMain.cpp index 8622af19c..9db47f82b 100644 --- a/Source/WebKit2/UIProcess/API/gtk/tests/TestMain.cpp +++ b/Source/WebKit2/UIProcess/API/gtk/tests/TestMain.cpp @@ -25,12 +25,24 @@ void beforeAll(); void afterAll(); +static void registerGResource(void) +{ + GOwnPtr<char> resourcesPath(g_build_filename(WEBKIT_DERIVED_SRC_DIR, "WebKit2", "webkit2gtk-tests-resources.gresource", NULL)); + GResource* resource = g_resource_load(resourcesPath.get(), 0); + g_assert(resource); + + g_resources_register(resource); + g_resource_unref(resource); +} + int main(int argc, char** argv) { gtk_test_init(&argc, &argv, 0); g_setenv("WEBKIT_EXEC_PATH", WEBKIT_EXEC_PATH, FALSE); g_test_bug_base("https://bugs.webkit.org/"); + registerGResource(); + beforeAll(); int returnValue = g_test_run(); afterAll(); diff --git a/Source/WebKit2/UIProcess/API/gtk/tests/TestResources.cpp b/Source/WebKit2/UIProcess/API/gtk/tests/TestResources.cpp index 7e2e5de61..20b90b0b4 100644 --- a/Source/WebKit2/UIProcess/API/gtk/tests/TestResources.cpp +++ b/Source/WebKit2/UIProcess/API/gtk/tests/TestResources.cpp @@ -80,6 +80,11 @@ public: { test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(resource)); test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(request)); + + // Ignore favicons. + if (g_str_has_suffix(webkit_uri_request_get_uri(request), "favicon.ico")) + return; + test->resourceLoadStarted(resource, request); g_signal_connect(resource, "sent-request", G_CALLBACK(resourceSentRequestCallback), test); g_signal_connect(resource, "notify::response", G_CALLBACK(resourceReceivedResponseCallback), test); @@ -507,21 +512,31 @@ static void testWebResourceGetData(ResourcesTest* test, gconstpointer) static void testWebViewResourcesHistoryCache(SingleResourceLoadTest* test, gconstpointer) { - test->loadURI(kServer->getURIForPath("/").data()); + CString javascriptURI = kServer->getURIForPath("/javascript.html"); + test->loadURI(javascriptURI.data()); test->waitUntilResourceLoadFinished(); - g_assert(webkit_web_view_get_main_resource(test->m_webView)); + WebKitWebResource* resource = webkit_web_view_get_main_resource(test->m_webView); + g_assert(resource); + g_assert_cmpstr(webkit_web_resource_get_uri(resource), ==, javascriptURI.data()); - test->loadURI(kServer->getURIForPath("/javascript.html").data()); + CString simpleStyleCSSURI = kServer->getURIForPath("/simple-style-css.html"); + test->loadURI(simpleStyleCSSURI.data()); test->waitUntilResourceLoadFinished(); - g_assert(webkit_web_view_get_main_resource(test->m_webView)); + resource = webkit_web_view_get_main_resource(test->m_webView); + g_assert(resource); + g_assert_cmpstr(webkit_web_resource_get_uri(resource), ==, simpleStyleCSSURI.data()); test->goBack(); test->waitUntilResourceLoadFinished(); - g_assert(webkit_web_view_get_main_resource(test->m_webView)); + resource = webkit_web_view_get_main_resource(test->m_webView); + g_assert(resource); + g_assert_cmpstr(webkit_web_resource_get_uri(resource), ==, javascriptURI.data()); test->goForward(); test->waitUntilResourceLoadFinished(); - g_assert(webkit_web_view_get_main_resource(test->m_webView)); + resource = webkit_web_view_get_main_resource(test->m_webView); + g_assert(resource); + g_assert_cmpstr(webkit_web_resource_get_uri(resource), ==, simpleStyleCSSURI.data()); } static void addCacheHTTPHeadersToResponse(SoupMessage* message) @@ -567,6 +582,9 @@ static void serverCallback(SoupServer* server, SoupMessage* message, const char* } else if (g_str_equal(path, "/invalid-css.html")) { static const char* invalidCSSHtml = "<html><head><link rel='stylesheet' href='/invalid.css' type='text/css'></head><body></html>"; soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, invalidCSSHtml, strlen(invalidCSSHtml)); + } else if (g_str_equal(path, "/simple-style-css.html")) { + static const char* simpleStyleCSSHtml = "<html><head><link rel='stylesheet' href='/simple-style.css' type='text/css'></head><body></html>"; + soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, simpleStyleCSSHtml, strlen(simpleStyleCSSHtml)); } else if (g_str_equal(path, "/style.css")) { soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, kStyleCSS, strlen(kStyleCSS)); addCacheHTTPHeadersToResponse(message); @@ -594,6 +612,8 @@ static void serverCallback(SoupServer* server, SoupMessage* message, const char* soup_message_headers_append(message->response_headers, "Location", "/simple-style.css"); } else if (g_str_equal(path, "/invalid.css")) soup_message_set_status(message, SOUP_STATUS_CANT_CONNECT); + else + soup_message_set_status(message, SOUP_STATUS_NOT_FOUND); soup_message_body_complete(message->response_body); } diff --git a/Source/WebKit2/UIProcess/API/gtk/tests/TestSSL.cpp b/Source/WebKit2/UIProcess/API/gtk/tests/TestSSL.cpp index 40e9fbeee..8fa013dc4 100644 --- a/Source/WebKit2/UIProcess/API/gtk/tests/TestSSL.cpp +++ b/Source/WebKit2/UIProcess/API/gtk/tests/TestSSL.cpp @@ -82,9 +82,12 @@ static void serverCallback(SoupServer* server, SoupMessage* message, const char* return; } - soup_message_set_status(message, SOUP_STATUS_OK); - soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, indexHTML, strlen(indexHTML)); - soup_message_body_complete(message->response_body); + if (g_str_equal(path, "/")) { + soup_message_set_status(message, SOUP_STATUS_OK); + soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, indexHTML, strlen(indexHTML)); + soup_message_body_complete(message->response_body); + } else + soup_message_set_status(message, SOUP_STATUS_NOT_FOUND); } void beforeAll() diff --git a/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitFaviconDatabase.cpp b/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitFaviconDatabase.cpp new file mode 100644 index 000000000..40fb5a17a --- /dev/null +++ b/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitFaviconDatabase.cpp @@ -0,0 +1,246 @@ +/* + * Copyright (C) 2012 Igalia S.L. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2,1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include "config.h" + +#include "WebKitTestServer.h" +#include "WebViewTest.h" +#include <glib/gstdio.h> +#include <libsoup/soup.h> +#include <wtf/gobject/GOwnPtr.h> + +static WebKitTestServer* kServer; +static char* kTempDirectory; + +class FaviconDatabaseTest: public WebViewTest { +public: + MAKE_GLIB_TEST_FIXTURE(FaviconDatabaseTest); + + FaviconDatabaseTest() + : m_webContext(webkit_web_context_get_default()) + , m_favicon(0) + , m_error(0) + , m_iconReadySignalReceived(false) + , m_faviconNotificationReceived(false) + { + WebKitFaviconDatabase* database = webkit_web_context_get_favicon_database(m_webContext); + g_signal_connect(database, "favicon-ready", G_CALLBACK(iconReadyCallback), this); + } + + ~FaviconDatabaseTest() + { + if (m_favicon) + cairo_surface_destroy(m_favicon); + + WebKitFaviconDatabase* database = webkit_web_context_get_favicon_database(m_webContext); + g_signal_handlers_disconnect_matched(database, G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, this); + } + + static void iconReadyCallback(WebKitFaviconDatabase* database, const char* pageURI, FaviconDatabaseTest* test) + { + g_assert_cmpstr(webkit_web_view_get_uri(test->m_webView), ==, pageURI); + test->m_iconReadySignalReceived = true; + } + + static void faviconChangedCallback(WebKitWebView* webView, GParamSpec* pspec, gpointer data) + { + FaviconDatabaseTest* test = static_cast<FaviconDatabaseTest*>(data); + g_assert(test->m_webView == webView); + test->m_faviconNotificationReceived = true; + test->quitMainLoop(); + } + + static void getFaviconCallback(GObject* sourceObject, GAsyncResult* result, void* data) + { + FaviconDatabaseTest* test = static_cast<FaviconDatabaseTest*>(data); + WebKitFaviconDatabase* database = webkit_web_context_get_favicon_database(test->m_webContext); + test->m_favicon = webkit_favicon_database_get_favicon_finish(database, result, &test->m_error.outPtr()); + test->quitMainLoop(); + } + + void waitUntilFaviconChanged() + { + m_faviconNotificationReceived = false; + unsigned long handlerID = g_signal_connect(m_webView, "notify::favicon", G_CALLBACK(faviconChangedCallback), this); + g_main_loop_run(m_mainLoop); + g_signal_handler_disconnect(m_webView, handlerID); + } + + void getFaviconForPageURIAndWaitUntilReady(const char* pageURI) + { + m_error.clear(); + if (m_favicon) { + cairo_surface_destroy(m_favicon); + m_favicon = 0; + } + WebKitFaviconDatabase* database = webkit_web_context_get_favicon_database(m_webContext); + webkit_favicon_database_get_favicon(database, pageURI, 0, getFaviconCallback, this); + g_main_loop_run(m_mainLoop); + } + + WebKitWebContext* m_webContext; + cairo_surface_t* m_favicon; + GOwnPtr<GError> m_error; + bool m_iconReadySignalReceived; + bool m_faviconNotificationReceived; +}; + +static void +serverCallback(SoupServer* server, SoupMessage* message, const char* path, GHashTable* query, SoupClientContext* context, void* data) +{ + if (message->method != SOUP_METHOD_GET) { + soup_message_set_status(message, SOUP_STATUS_NOT_IMPLEMENTED); + return; + } + + char* contents; + gsize length; + if (g_str_equal(path, "/favicon.ico")) { + GOwnPtr<char> pathToFavicon(g_build_filename(Test::getWebKit1TestResoucesDir().data(), "blank.ico", NULL)); + g_file_get_contents(pathToFavicon.get(), &contents, &length, 0); + } else if (g_str_equal(path, "/nofavicon/favicon.ico")) { + soup_message_set_status(message, SOUP_STATUS_NOT_FOUND); + soup_message_body_complete(message->response_body); + return; + } else { + contents = g_strdup("<html><body>test</body></html>"); + length = strlen(contents); + } + + soup_message_set_status(message, SOUP_STATUS_OK); + soup_message_body_append(message->response_body, SOUP_MEMORY_TAKE, contents, length); + soup_message_body_complete(message->response_body); +} + +static void testNotInitialized(FaviconDatabaseTest* test, gconstpointer) +{ + // Try to retrieve a valid favicon from a not initialized database. + test->getFaviconForPageURIAndWaitUntilReady(kServer->getURIForPath("/").data()); + g_assert(!test->m_favicon); + g_assert(test->m_error); + g_assert_cmpint(test->m_error->code, ==, WEBKIT_FAVICON_DATABASE_ERROR_NOT_INITIALIZED); +} + +static void testSetDirectory(FaviconDatabaseTest* test, gconstpointer) +{ + webkit_web_context_set_favicon_database_directory(test->m_webContext, kTempDirectory); + g_assert_cmpstr(kTempDirectory, ==, webkit_web_context_get_favicon_database_directory(test->m_webContext)); +} + +static void testClearDatabase(FaviconDatabaseTest* test, gconstpointer) +{ + WebKitFaviconDatabase* database = webkit_web_context_get_favicon_database(test->m_webContext); + webkit_favicon_database_clear(database); + + GOwnPtr<char> iconURI(webkit_favicon_database_get_favicon_uri(database, kServer->getURIForPath("/").data())); + g_assert(!iconURI); +} + +static void testGetFavicon(FaviconDatabaseTest* test, gconstpointer) +{ + // We need to load the page first to ensure the icon data will be + // in the database in case there's an associated favicon. + test->loadURI(kServer->getURIForPath("/").data()); + test->waitUntilFaviconChanged(); + g_assert(test->m_iconReadySignalReceived); + + // Check the API retrieving a valid favicon. + test->m_iconReadySignalReceived = false; + test->getFaviconForPageURIAndWaitUntilReady(kServer->getURIForPath("/").data()); + g_assert(test->m_favicon); + g_assert(!test->m_error); + g_assert(!test->m_iconReadySignalReceived); + + // Check that width and height match those from blank.ico (16x16 favicon). + g_assert_cmpint(cairo_image_surface_get_width(test->m_favicon), ==, 16); + g_assert_cmpint(cairo_image_surface_get_height(test->m_favicon), ==, 16); + + // Check the API retrieving an invalid favicon. + test->loadURI(kServer->getURIForPath("/nofavicon").data()); + test->waitUntilFaviconChanged(); + g_assert(!test->m_iconReadySignalReceived); + + test->getFaviconForPageURIAndWaitUntilReady(kServer->getURIForPath("/nofavicon/").data()); + g_assert(!test->m_favicon); + g_assert(test->m_error); + g_assert(!test->m_iconReadySignalReceived); +} + +static void testGetFaviconURI(FaviconDatabaseTest* test, gconstpointer) +{ + WebKitFaviconDatabase* database = webkit_web_context_get_favicon_database(test->m_webContext); + + const char* baseURI = kServer->getURIForPath("/").data(); + GOwnPtr<char> iconURI(webkit_favicon_database_get_favicon_uri(database, baseURI)); + g_assert_cmpstr(iconURI.get(), ==, kServer->getURIForPath("/favicon.ico").data()); +} + +static void testWebViewFavicon(FaviconDatabaseTest* test, gconstpointer) +{ + cairo_surface_t* iconFromWebView = webkit_web_view_get_favicon(test->m_webView); + g_assert(!iconFromWebView); + + test->loadURI(kServer->getURIForPath("/").data()); + test->waitUntilFaviconChanged(); + g_assert(test->m_faviconNotificationReceived); + + iconFromWebView = webkit_web_view_get_favicon(test->m_webView); + g_assert(iconFromWebView); + g_assert_cmpuint(cairo_image_surface_get_width(iconFromWebView), ==, 16); + g_assert_cmpuint(cairo_image_surface_get_height(iconFromWebView), ==, 16); +} + +void beforeAll() +{ + // Start a soup server for testing. + kServer = new WebKitTestServer(); + kServer->run(serverCallback); + + kTempDirectory = g_dir_make_tmp("WebKit2Tests-XXXXXX", 0); + g_assert(kTempDirectory); + + // Add tests to the suite. + FaviconDatabaseTest::add("WebKitFaviconDatabase", "not-initialized", testNotInitialized); + FaviconDatabaseTest::add("WebKitFaviconDatabase", "set-directory", testSetDirectory); + FaviconDatabaseTest::add("WebKitFaviconDatabase", "get-favicon", testGetFavicon); + FaviconDatabaseTest::add("WebKitFaviconDatabase", "get-favicon-uri", testGetFaviconURI); + FaviconDatabaseTest::add("WebKitFaviconDatabase", "clear-database", testClearDatabase); + FaviconDatabaseTest::add("WebKitWebView", "favicon", testWebViewFavicon); +} + +static void webkitFaviconDatabaseFinalizedCallback(gpointer, GObject*) +{ + if (!g_file_test(kTempDirectory, G_FILE_TEST_IS_DIR)) + return; + + GOwnPtr<char> filename(g_build_filename(kTempDirectory, "WebpageIcons.db", NULL)); + g_unlink(filename.get()); + + g_rmdir(kTempDirectory); +} + +void afterAll() +{ + delete kServer; + + // Delete the temporary files after the IconDatabase has been + // closed, that is, once WebKitFaviconDatabase is being destroyed. + WebKitFaviconDatabase* database = webkit_web_context_get_favicon_database(webkit_web_context_get_default()); + g_object_weak_ref(G_OBJECT(database), webkitFaviconDatabaseFinalizedCallback, 0); +} diff --git a/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitPolicyClient.cpp b/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitPolicyClient.cpp index 9f6ce7819..abbfd652a 100644 --- a/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitPolicyClient.cpp +++ b/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitPolicyClient.cpp @@ -232,11 +232,13 @@ static void serverCallback(SoupServer* server, SoupMessage* message, const char* return; } - soup_message_set_status(message, SOUP_STATUS_OK); - - static const char* responseString = "<html><body>Testing!</body></html>"; - soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, responseString, strlen(responseString)); - soup_message_body_complete(message->response_body); + if (g_str_equal(path, "/")) { + static const char* responseString = "<html><body>Testing!</body></html>"; + soup_message_set_status(message, SOUP_STATUS_OK); + soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, responseString, strlen(responseString)); + soup_message_body_complete(message->response_body); + } else + soup_message_set_status(message, SOUP_STATUS_NOT_FOUND); } void beforeAll() diff --git a/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitSettings.cpp b/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitSettings.cpp index d8e355472..c7a0dc259 100644 --- a/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitSettings.cpp +++ b/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitSettings.cpp @@ -243,6 +243,11 @@ static void testWebKitSettings(Test*, gconstpointer) webkit_settings_set_enable_page_cache(settings, FALSE); g_assert(!webkit_settings_get_enable_page_cache(settings)); + // By default, smooth scrolling is disabled. + g_assert(!webkit_settings_get_enable_smooth_scrolling(settings)); + webkit_settings_set_enable_smooth_scrolling(settings, TRUE); + g_assert(webkit_settings_get_enable_smooth_scrolling(settings)); + g_object_unref(G_OBJECT(settings)); } @@ -315,10 +320,13 @@ static void serverCallback(SoupServer* server, SoupMessage* message, const char* return; } - soup_message_set_status(message, SOUP_STATUS_OK); - const char* userAgent = soup_message_headers_get_one(message->request_headers, "User-Agent"); - soup_message_body_append(message->response_body, SOUP_MEMORY_COPY, userAgent, strlen(userAgent)); - soup_message_body_complete(message->response_body); + if (g_str_equal(path, "/")) { + const char* userAgent = soup_message_headers_get_one(message->request_headers, "User-Agent"); + soup_message_set_status(message, SOUP_STATUS_OK); + soup_message_body_append(message->response_body, SOUP_MEMORY_COPY, userAgent, strlen(userAgent)); + soup_message_body_complete(message->response_body); + } else + soup_message_set_status(message, SOUP_STATUS_NOT_FOUND); } void beforeAll() diff --git a/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebContext.cpp b/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebContext.cpp index 7a13d285d..185c06cfe 100644 --- a/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebContext.cpp +++ b/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebContext.cpp @@ -146,6 +146,8 @@ public: test->m_uriSchemeRequest = request; test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(request)); + g_assert(webkit_uri_scheme_request_get_web_view(request) == test->m_webView); + GRefPtr<GInputStream> inputStream = adoptGRef(g_memory_input_stream_new()); test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(inputStream.get())); @@ -291,10 +293,13 @@ static void serverCallback(SoupServer* server, SoupMessage* message, const char* return; } - soup_message_set_status(message, SOUP_STATUS_OK); - const char* acceptLanguage = soup_message_headers_get_one(message->request_headers, "Accept-Language"); - soup_message_body_append(message->response_body, SOUP_MEMORY_COPY, acceptLanguage, strlen(acceptLanguage)); - soup_message_body_complete(message->response_body); + if (g_str_equal(path, "/")) { + const char* acceptLanguage = soup_message_headers_get_one(message->request_headers, "Accept-Language"); + soup_message_set_status(message, SOUP_STATUS_OK); + soup_message_body_append(message->response_body, SOUP_MEMORY_COPY, acceptLanguage, strlen(acceptLanguage)); + soup_message_body_complete(message->response_body); + } else + soup_message_set_status(message, SOUP_STATUS_NOT_FOUND); } class SecurityPolicyTest: public Test { diff --git a/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp b/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp index 02e8138de..f5197b936 100644 --- a/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp +++ b/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp @@ -643,6 +643,17 @@ static void testWebViewRunJavaScript(WebViewTest* test, gconstpointer) g_assert(!error.get()); g_assert(WebViewTest::javascriptResultIsUndefined(javascriptResult)); + javascriptResult = test->runJavaScriptFromGResourceAndWaitUntilFinished("/org/webkit/webkit2gtk/tests/link-title.js", &error.outPtr()); + g_assert(javascriptResult); + g_assert(!error.get()); + valueString.set(WebViewTest::javascriptResultToCString(javascriptResult)); + g_assert_cmpstr(valueString.get(), ==, "WebKitGTK+ Title"); + + javascriptResult = test->runJavaScriptFromGResourceAndWaitUntilFinished("/wrong/path/to/resource.js", &error.outPtr()); + g_assert(!javascriptResult); + g_assert_error(error.get(), G_RESOURCE_ERROR, G_RESOURCE_ERROR_NOT_FOUND); + error.clear(); + javascriptResult = test->runJavaScriptAndWaitUntilFinished("foo();", &error.outPtr()); g_assert(!javascriptResult); g_assert_error(error.get(), WEBKIT_JAVASCRIPT_ERROR, WEBKIT_JAVASCRIPT_ERROR_SCRIPT_FAILED); diff --git a/Source/WebKit2/UIProcess/API/gtk/tests/WebViewTest.cpp b/Source/WebKit2/UIProcess/API/gtk/tests/WebViewTest.cpp index 04747480e..7e7eb0167 100644 --- a/Source/WebKit2/UIProcess/API/gtk/tests/WebViewTest.cpp +++ b/Source/WebKit2/UIProcess/API/gtk/tests/WebViewTest.cpp @@ -313,6 +313,12 @@ static void runJavaScriptReadyCallback(GObject*, GAsyncResult* result, WebViewTe g_main_loop_quit(test->m_mainLoop); } +static void runJavaScriptFromGResourceReadyCallback(GObject*, GAsyncResult* result, WebViewTest* test) +{ + test->m_javascriptResult = webkit_web_view_run_javascript_from_gresource_finish(test->m_webView, result, test->m_javascriptError); + g_main_loop_quit(test->m_mainLoop); +} + WebKitJavascriptResult* WebViewTest::runJavaScriptAndWaitUntilFinished(const char* javascript, GError** error) { if (m_javascriptResult) @@ -325,6 +331,18 @@ WebKitJavascriptResult* WebViewTest::runJavaScriptAndWaitUntilFinished(const cha return m_javascriptResult; } +WebKitJavascriptResult* WebViewTest::runJavaScriptFromGResourceAndWaitUntilFinished(const char* resource, GError** error) +{ + if (m_javascriptResult) + webkit_javascript_result_unref(m_javascriptResult); + m_javascriptResult = 0; + m_javascriptError = error; + webkit_web_view_run_javascript_from_gresource(m_webView, resource, 0, reinterpret_cast<GAsyncReadyCallback>(runJavaScriptFromGResourceReadyCallback), this); + g_main_loop_run(m_mainLoop); + + return m_javascriptResult; +} + static char* jsValueToCString(JSGlobalContextRef context, JSValueRef value) { g_assert(value); diff --git a/Source/WebKit2/UIProcess/API/gtk/tests/WebViewTest.h b/Source/WebKit2/UIProcess/API/gtk/tests/WebViewTest.h index 25209caa3..06f398f96 100644 --- a/Source/WebKit2/UIProcess/API/gtk/tests/WebViewTest.h +++ b/Source/WebKit2/UIProcess/API/gtk/tests/WebViewTest.h @@ -55,6 +55,7 @@ public: void keyStroke(unsigned int keyVal, unsigned int keyModifiers = 0); WebKitJavascriptResult* runJavaScriptAndWaitUntilFinished(const char* javascript, GError**); + WebKitJavascriptResult* runJavaScriptFromGResourceAndWaitUntilFinished(const char* resource, GError**); // Javascript result helpers. static char* javascriptResultToCString(WebKitJavascriptResult*); diff --git a/Source/WebKit2/UIProcess/API/gtk/tests/resources/link-title.js b/Source/WebKit2/UIProcess/API/gtk/tests/resources/link-title.js new file mode 100644 index 000000000..2c824da38 --- /dev/null +++ b/Source/WebKit2/UIProcess/API/gtk/tests/resources/link-title.js @@ -0,0 +1 @@ +window.document.getElementById('WebKitLink').title; diff --git a/Source/WebKit2/UIProcess/API/gtk/tests/resources/webkit2gtk-tests.gresource.xml b/Source/WebKit2/UIProcess/API/gtk/tests/resources/webkit2gtk-tests.gresource.xml new file mode 100644 index 000000000..4f1e5a654 --- /dev/null +++ b/Source/WebKit2/UIProcess/API/gtk/tests/resources/webkit2gtk-tests.gresource.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<gresources> + <gresource prefix="/org/webkit/webkit2gtk/tests/"> + <file alias="link-title.js">Source/WebKit2/UIProcess/API/gtk/tests/resources/link-title.js</file> + </gresource> +</gresources> diff --git a/Source/WebKit2/UIProcess/API/gtk/webkit2.h b/Source/WebKit2/UIProcess/API/gtk/webkit2.h index e1f3ba04a..1b4fa86a1 100644 --- a/Source/WebKit2/UIProcess/API/gtk/webkit2.h +++ b/Source/WebKit2/UIProcess/API/gtk/webkit2.h @@ -34,6 +34,7 @@ #include <webkit2/WebKitEditingCommands.h> #include <webkit2/WebKitEnumTypes.h> #include <webkit2/WebKitError.h> +#include <webkit2/WebKitFaviconDatabase.h> #include <webkit2/WebKitFileChooserRequest.h> #include <webkit2/WebKitFindController.h> #include <webkit2/WebKitFormSubmissionRequest.h> diff --git a/Source/WebKit2/UIProcess/API/mac/WKBrowsingContextGroup.h b/Source/WebKit2/UIProcess/API/mac/WKBrowsingContextGroup.h index f3428fc93..f26c952c0 100644 --- a/Source/WebKit2/UIProcess/API/mac/WKBrowsingContextGroup.h +++ b/Source/WebKit2/UIProcess/API/mac/WKBrowsingContextGroup.h @@ -36,6 +36,11 @@ WK_EXPORT - (id)initWithIdentifier:(NSString *)identifier; +/* User Content */ + +- (void)addUserStyleSheet:(NSString *)source baseURL:(NSURL *)baseURL whitelist:(NSArray *)whitelist blacklist:(NSArray *)blacklist mainFrameOnly:(BOOL)mainFrameOnly; +- (void)removeAllUserStyleSheets; + /* Settings */ diff --git a/Source/WebKit2/UIProcess/API/mac/WKBrowsingContextGroup.mm b/Source/WebKit2/UIProcess/API/mac/WKBrowsingContextGroup.mm index 338d390ca..87cffd0e7 100644 --- a/Source/WebKit2/UIProcess/API/mac/WKBrowsingContextGroup.mm +++ b/Source/WebKit2/UIProcess/API/mac/WKBrowsingContextGroup.mm @@ -27,10 +27,14 @@ #import "WKBrowsingContextGroup.h" #import "WKBrowsingContextGroupInternal.h" +#import "WKArray.h" #import "WKPageGroup.h" #import "WKPreferences.h" #import "WKRetainPtr.h" #import "WKStringCF.h" +#import "WKURL.h" +#import "WKURLCF.h" +#import <wtf/Vector.h> @interface WKBrowsingContextGroupData : NSObject { @public @@ -81,6 +85,43 @@ WKPreferencesSetPluginsEnabled(WKPageGroupGetPreferences(self._pageGroupRef), allowsPlugIns); } +static WKArrayRef createWKArray(NSArray *array) +{ + NSUInteger count = [array count]; + if (count == 0) + return WKArrayRef(); + + Vector<WKTypeRef> stringVector; + stringVector.reserveInitialCapacity(count); + for (NSUInteger i = 0; i < count; ++i) { + id entry = [array objectAtIndex:i]; + if ([entry isKindOfClass:[NSString class]]) + stringVector.uncheckedAppend(WKStringCreateWithCFString((CFStringRef)entry)); + + } + + return WKArrayCreateAdoptingValues(stringVector.data(), stringVector.size()); +} + +-(void)addUserStyleSheet:(NSString *)source baseURL:(NSURL *)baseURL whitelist:(NSArray *)whitelist blacklist:(NSArray *)blacklist mainFrameOnly:(BOOL)mainFrameOnly +{ + if (!source) + return; + + WKRetainPtr<WKStringRef> wkSource = adoptWK(WKStringCreateWithCFString((CFStringRef)source)); + WKRetainPtr<WKURLRef> wkBaseURL = adoptWK(WKURLCreateWithCFURL((CFURLRef)baseURL)); + WKRetainPtr<WKArrayRef> wkWhitelist = adoptWK(createWKArray(whitelist)); + WKRetainPtr<WKArrayRef> wkBlacklist = adoptWK(createWKArray(blacklist)); + WKUserContentInjectedFrames injectedFrames = mainFrameOnly ? kWKInjectInTopFrameOnly : kWKInjectInAllFrames; + + WKPageGroupAddUserStyleSheet(self._pageGroupRef, wkSource.get(), wkBaseURL.get(), wkWhitelist.get(), wkBlacklist.get(), injectedFrames); +} + +- (void)removeAllUserStyleSheets +{ + WKPageGroupRemoveAllUserStyleSheets(self._pageGroupRef); +} + @end @implementation WKBrowsingContextGroup (Internal) diff --git a/Source/WebKit2/UIProcess/API/mac/WKPrintingView.mm b/Source/WebKit2/UIProcess/API/mac/WKPrintingView.mm index 63c58895f..ca1cad582 100644 --- a/Source/WebKit2/UIProcess/API/mac/WKPrintingView.mm +++ b/Source/WebKit2/UIProcess/API/mac/WKPrintingView.mm @@ -194,8 +194,8 @@ static BOOL isForcingPreviewUpdate; - (uint64_t)_expectedPreviewCallbackForRect:(const IntRect&)rect { for (HashMap<uint64_t, WebCore::IntRect>::iterator iter = _expectedPreviewCallbacks.begin(); iter != _expectedPreviewCallbacks.end(); ++iter) { - if (iter->second == rect) - return iter->first; + if (iter->value == rect) + return iter->key; } return 0; } @@ -229,8 +229,8 @@ static void pageDidDrawToPDF(WKDataRef dataRef, WKErrorRef, void* untypedContext ASSERT([view _isPrintingPreview]); if (data) { - HashMap<WebCore::IntRect, Vector<uint8_t> >::AddResult entry = view->_pagePreviews.add(iter->second, Vector<uint8_t>()); - entry.iterator->second.append(data->bytes(), data->size()); + HashMap<WebCore::IntRect, Vector<uint8_t> >::AddResult entry = view->_pagePreviews.add(iter->value, Vector<uint8_t>()); + entry.iterator->value.append(data->bytes(), data->size()); } view->_expectedPreviewCallbacks.remove(context->callbackID); bool receivedResponseToLatestRequest = view->_latestExpectedPreviewCallback == context->callbackID; @@ -494,7 +494,7 @@ static void prepareDataForPrintingOnSecondaryThread(void* untypedContext) return; } - const Vector<uint8_t>& pdfDataBytes = pagePreviewIterator->second; + const Vector<uint8_t>& pdfDataBytes = pagePreviewIterator->value; RetainPtr<NSData> pdfData(AdoptNS, [[NSData alloc] initWithBytes:pdfDataBytes.data() length:pdfDataBytes.size()]); RetainPtr<PDFDocument> pdfDocument(AdoptNS, [[pdfDocumentClass() alloc] initWithData:pdfData.get()]); diff --git a/Source/WebKit2/UIProcess/API/mac/WKView.mm b/Source/WebKit2/UIProcess/API/mac/WKView.mm index 9d69399d4..d4b301298 100644 --- a/Source/WebKit2/UIProcess/API/mac/WKView.mm +++ b/Source/WebKit2/UIProcess/API/mac/WKView.mm @@ -428,7 +428,7 @@ static String commandNameForSelector(SEL selector) static const SelectorNameMap* exceptionMap = createSelectorExceptionMap(); SelectorNameMap::const_iterator it = exceptionMap->find(selector); if (it != exceptionMap->end()) - return it->second; + return it->value; // Remove the trailing colon. // No need to capitalize the command name since Editor command names are @@ -742,7 +742,7 @@ static void validateCommandCallback(WKStringRef commandName, bool isEnabled, int // Add this item to the vector of items for a given command that are awaiting validation. ValidationMap::AddResult addResult = _data->_validationMap.add(commandName, ValidationVector()); - addResult.iterator->second.append(item); + addResult.iterator->value.append(item); if (addResult.isNewEntry) { // If we are not already awaiting validation for this command, start the asynchronous validation process. // FIXME: Theoretically, there is a race here; when we get the answer it might be old, from a previous time diff --git a/Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp b/Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp index db51b85dd..71688cbe6 100644 --- a/Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp +++ b/Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp @@ -158,7 +158,7 @@ void QQuickWebPagePrivate::updateSize() DrawingAreaProxy* drawingArea = webPageProxy->drawingArea(); if (drawingArea && drawingArea->layerTreeCoordinatorProxy()) - drawingArea->layerTreeCoordinatorProxy()->setContentsSize(contentsSize); + drawingArea->layerTreeCoordinatorProxy()->setContentsSize(WebCore::FloatSize(contentsSize)); q->setSize(scaledSize); diff --git a/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp b/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp index b78cae0f3..07ed832ce 100644 --- a/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp +++ b/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp @@ -268,6 +268,7 @@ QQuickWebViewPrivate::QQuickWebViewPrivate(QQuickWebView* viewport) , filePicker(0) , databaseQuotaDialog(0) , colorChooser(0) + , m_betweenLoadCommitAndFirstFrame(false) , m_useDefaultContentItemSize(true) , m_navigatorQtObjectEnabled(false) , m_renderToOffscreenBuffer(false) @@ -330,14 +331,6 @@ void QQuickWebViewPrivate::loadDidStop() emit q->loadingChanged(&loadRequest); } -void QQuickWebViewPrivate::onComponentComplete() -{ - Q_Q(QQuickWebView); - m_pageViewportControllerClient.reset(new PageViewportControllerClientQt(q, pageView.data())); - m_pageViewportController.reset(new PageViewportController(webPageProxy.get(), m_pageViewportControllerClient.data())); - pageView->eventHandler()->setViewportController(m_pageViewportControllerClient.data()); -} - void QQuickWebViewPrivate::setTransparentBackground(bool enable) { webPageProxy->setDrawsTransparentBackground(enable); @@ -370,6 +363,7 @@ void QQuickWebViewPrivate::loadDidCommit() Q_Q(QQuickWebView); ASSERT(q->loading()); + m_betweenLoadCommitAndFirstFrame = true; emit q->navigationHistoryChanged(); emit q->titleChanged(); } @@ -452,10 +446,18 @@ void QQuickWebViewPrivate::setNeedsDisplay() q->page()->d->paint(&painter); return; } - q->page()->update(); } +void QQuickWebViewPrivate::didRenderFrame() +{ + Q_Q(QQuickWebView); + if (m_betweenLoadCommitAndFirstFrame) { + emit q->experimental()->loadVisuallyCommitted(); + m_betweenLoadCommitAndFirstFrame = false; + } +} + void QQuickWebViewPrivate::processDidCrash() { Q_Q(QQuickWebView); @@ -478,8 +480,6 @@ void QQuickWebViewPrivate::didRelaunchProcess() { qWarning("WARNING: The web process has been successfully restarted."); - // Reset to default so that the later update can reach the web process. - webPageProxy->setCustomDeviceScaleFactor(0); webPageProxy->drawingArea()->setSize(viewSize(), IntSize()); updateViewportSize(); @@ -820,12 +820,17 @@ void QQuickWebViewLegacyPrivate::updateViewportSize() QSizeF viewportSize = q->boundingRect().size(); if (viewportSize.isEmpty()) return; + + float devicePixelRatio = webPageProxy->deviceScaleFactor(); pageView->setContentsSize(viewportSize); + // Make sure that our scale matches the one passed to setVisibleContentsRect. + pageView->setContentsScale(devicePixelRatio); + // The fixed layout is handled by the FrameView and the drawing area doesn't behave differently // whether its fixed or not. We still need to tell the drawing area which part of it // has to be rendered on tiles, and in desktop mode it's all of it. - webPageProxy->drawingArea()->setSize(viewportSize.toSize(), IntSize()); - webPageProxy->drawingArea()->setVisibleContentsRect(FloatRect(FloatPoint(), viewportSize), 1, FloatPoint()); + webPageProxy->drawingArea()->setSize((viewportSize / devicePixelRatio).toSize(), IntSize()); + webPageProxy->drawingArea()->setVisibleContentsRect(FloatRect(FloatPoint(), FloatSize(viewportSize / devicePixelRatio)), devicePixelRatio, FloatPoint()); } qreal QQuickWebViewLegacyPrivate::zoomFactor() const @@ -853,6 +858,11 @@ void QQuickWebViewFlickablePrivate::onComponentComplete() { QQuickWebViewPrivate::onComponentComplete(); + Q_Q(QQuickWebView); + m_pageViewportControllerClient.reset(new PageViewportControllerClientQt(q, pageView.data())); + m_pageViewportController.reset(new PageViewportController(webPageProxy.get(), m_pageViewportControllerClient.data())); + pageView->eventHandler()->setViewportController(m_pageViewportControllerClient.data()); + // Trigger setting of correct visibility flags after everything was allocated and initialized. _q_onVisibleChanged(); } @@ -868,7 +878,7 @@ void QQuickWebViewFlickablePrivate::updateViewportSize() Q_Q(QQuickWebView); if (m_pageViewportController) - m_pageViewportController->didChangeViewportSize(QSizeF(q->width(), q->height())); + m_pageViewportController->didChangeViewportSize(FloatSize(q->width(), q->height())); } void QQuickWebViewFlickablePrivate::pageDidRequestScroll(const QPoint& pos) @@ -877,13 +887,6 @@ void QQuickWebViewFlickablePrivate::pageDidRequestScroll(const QPoint& pos) m_pageViewportController->pageDidRequestScroll(pos); } -void QQuickWebViewFlickablePrivate::didChangeContentsSize(const QSize& newSize) -{ - QQuickWebViewPrivate::didChangeContentsSize(newSize); - pageView->setContentsSize(newSize); // emits contentsSizeChanged() - m_pageViewportController->didChangeContentsSize(newSize); -} - void QQuickWebViewFlickablePrivate::handleMouseEvent(QMouseEvent* event) { if (!pageView->eventHandler()) @@ -1233,7 +1236,7 @@ void QQuickWebViewExperimental::setDevicePixelRatio(qreal devicePixelRatio) if (0 >= devicePixelRatio || devicePixelRatio == this->devicePixelRatio()) return; - d->webPageProxy->setCustomDeviceScaleFactor(devicePixelRatio); + d->webPageProxy->setIntrinsicDeviceScaleFactor(devicePixelRatio); emit devicePixelRatioChanged(); } diff --git a/Source/WebKit2/UIProcess/API/qt/qquickwebview_p.h b/Source/WebKit2/UIProcess/API/qt/qquickwebview_p.h index e8b1bf7a1..89e7fbc99 100644 --- a/Source/WebKit2/UIProcess/API/qt/qquickwebview_p.h +++ b/Source/WebKit2/UIProcess/API/qt/qquickwebview_p.h @@ -355,6 +355,7 @@ public Q_SLOTS: void evaluateJavaScript(const QString& script, const QJSValue& value = QJSValue()); Q_SIGNALS: + void loadVisuallyCommitted(); void alertDialogChanged(); void confirmDialogChanged(); void promptDialogChanged(); diff --git a/Source/WebKit2/UIProcess/API/qt/qquickwebview_p_p.h b/Source/WebKit2/UIProcess/API/qt/qquickwebview_p_p.h index f172ad68f..15bf818d7 100644 --- a/Source/WebKit2/UIProcess/API/qt/qquickwebview_p_p.h +++ b/Source/WebKit2/UIProcess/API/qt/qquickwebview_p_p.h @@ -70,7 +70,7 @@ public: virtual void initialize(WKContextRef contextRef = 0, WKPageGroupRef pageGroupRef = 0); - virtual void onComponentComplete(); + virtual void onComponentComplete() { } virtual void provisionalLoadDidStart(const WTF::String& url); virtual void didReceiveServerRedirectForProvisionalLoad(const WTF::String& url); @@ -88,8 +88,9 @@ public: int loadProgress() const { return m_loadProgress; } void setNeedsDisplay(); + void didRenderFrame(); - WebKit::PageViewportController* viewportController() const { return m_pageViewportController.data(); } + virtual WebKit::PageViewportController* viewportController() const { return 0; } virtual void updateViewportSize() { } void updateTouchViewportSize(); @@ -130,7 +131,6 @@ public: WebCore::IntSize viewSize() const; void didReceiveMessageFromNavigatorQtObject(const String& message); virtual void pageDidRequestScroll(const QPoint& pos) { } - virtual void didChangeContentsSize(const QSize& newSize) { } void processDidCrash(); void didRelaunchProcess(); PassOwnPtr<WebKit::DrawingAreaProxy> createDrawingAreaProxy(); @@ -172,9 +172,6 @@ protected: QScopedPointer<QQuickWebPage> pageView; QQuickWebView* q_ptr; - QScopedPointer<WebKit::PageViewportController> m_pageViewportController; - QScopedPointer<WebKit::PageViewportControllerClientQt> m_pageViewportControllerClient; - FlickableAxisLocker axisLocker; QQmlComponent* alertDialog; @@ -190,6 +187,7 @@ protected: QList<QUrl> userScripts; + bool m_betweenLoadCommitAndFirstFrame; bool m_useDefaultContentItemSize; bool m_navigatorQtObjectEnabled; bool m_renderToOffscreenBuffer; @@ -220,11 +218,15 @@ public: virtual void onComponentComplete(); virtual void didChangeViewportProperties(const WebCore::ViewportAttributes&); + virtual WebKit::PageViewportController* viewportController() const { return m_pageViewportController.data(); } virtual void updateViewportSize(); virtual void pageDidRequestScroll(const QPoint& pos); - virtual void didChangeContentsSize(const QSize& newSize); virtual void handleMouseEvent(QMouseEvent*); + +private: + QScopedPointer<WebKit::PageViewportController> m_pageViewportController; + QScopedPointer<WebKit::PageViewportControllerClientQt> m_pageViewportControllerClient; }; #endif // qquickwebview_p_p_h diff --git a/Source/WebKit2/UIProcess/API/qt/raw/qrawwebview.cpp b/Source/WebKit2/UIProcess/API/qt/raw/qrawwebview.cpp index 0a7a684cf..5f6c16d56 100644 --- a/Source/WebKit2/UIProcess/API/qt/raw/qrawwebview.cpp +++ b/Source/WebKit2/UIProcess/API/qt/raw/qrawwebview.cpp @@ -167,6 +167,11 @@ void QRawWebViewPrivate::toolTipChanged(const String&, const String& newTooltip) notImplemented(); } +void QRawWebViewPrivate::pageTransitionViewportReady() +{ + m_webPageProxy->commitPageTransitionViewport(); +} + void QRawWebViewPrivate::startDrag(const WebCore::DragData& dragData, PassRefPtr<WebKit::ShareableBitmap> dragImage) { notImplemented(); @@ -319,6 +324,7 @@ void QRawWebView::setActive(bool active) { d->m_active = active; d->m_webPageProxy->viewStateDidChange(WebKit::WebPageProxy::ViewWindowIsActive); + layerTreeRenderer()->setActive(active); } QSize QRawWebView::size() const @@ -352,17 +358,20 @@ WKPageRef QRawWebView::pageRef() return toAPI(d->m_webPageProxy.get()); } -void QRawWebView::paint(const QMatrix4x4& transform, float opacity, unsigned paintFlags) +WebKit::LayerTreeRenderer* QRawWebView::layerTreeRenderer() const { WebKit::DrawingAreaProxy* drawingArea = d->m_webPageProxy->drawingArea(); if (!drawingArea) - return; - - WebKit::LayerTreeCoordinatorProxy* coordinatorProxy = drawingArea->layerTreeCoordinatorProxy(); - if (!coordinatorProxy) - return; + return 0; + WebKit::LayerTreeCoordinatorProxy* layerTreeCoordinatorProxy = drawingArea->layerTreeCoordinatorProxy(); + if (!layerTreeCoordinatorProxy) + return 0; + return layerTreeCoordinatorProxy->layerTreeRenderer(); +} - WebKit::LayerTreeRenderer* renderer = coordinatorProxy->layerTreeRenderer(); +void QRawWebView::paint(const QMatrix4x4& transform, float opacity, unsigned paintFlags) +{ + WebKit::LayerTreeRenderer* renderer = layerTreeRenderer(); if (!renderer) return; diff --git a/Source/WebKit2/UIProcess/API/qt/raw/qrawwebview_p.h b/Source/WebKit2/UIProcess/API/qt/raw/qrawwebview_p.h index f8f15b06d..015815ad8 100644 --- a/Source/WebKit2/UIProcess/API/qt/raw/qrawwebview_p.h +++ b/Source/WebKit2/UIProcess/API/qt/raw/qrawwebview_p.h @@ -47,6 +47,10 @@ QT_END_NAMESPACE class QRawWebViewPrivate; +namespace WebKit { +class LayerTreeRenderer; +} + class QRawWebViewClient { public: virtual ~QRawWebViewClient() { } @@ -97,6 +101,8 @@ public: void sendTouchEvent(QTouchEvent*); private: + WebKit::LayerTreeRenderer* layerTreeRenderer() const; + QRawWebViewPrivate* d; }; diff --git a/Source/WebKit2/UIProcess/API/qt/raw/qrawwebview_p_p.h b/Source/WebKit2/UIProcess/API/qt/raw/qrawwebview_p_p.h index 55bc85ba0..545096d02 100644 --- a/Source/WebKit2/UIProcess/API/qt/raw/qrawwebview_p_p.h +++ b/Source/WebKit2/UIProcess/API/qt/raw/qrawwebview_p_p.h @@ -82,6 +82,7 @@ public: virtual void setCursorHiddenUntilMouseMoves(bool hiddenUntilMouseMoves); virtual void toolTipChanged(const String&, const String& newTooltip); + virtual void pageTransitionViewportReady(); virtual void startDrag(const WebCore::DragData& dragData, PassRefPtr<WebKit::ShareableBitmap> dragImage); @@ -104,6 +105,7 @@ public: virtual void didRelaunchProcess(); virtual void setViewNeedsDisplay(const WebCore::IntRect& rect); virtual void didChangeContentsSize(const WebCore::IntSize& newSize); + virtual void didRenderFrame(const WebCore::IntSize& contentsSize, const WebCore::IntRect& coveredRect) { } virtual void setCursor(const WebCore::Cursor&); virtual bool isViewFocused() { return m_focused; } diff --git a/Source/WebKit2/UIProcess/API/qt/tests/inspectorserver/inspectorserver.pro b/Source/WebKit2/UIProcess/API/qt/tests/inspectorserver/inspectorserver.pro index 4a8d86f80..bc5307f2d 100644 --- a/Source/WebKit2/UIProcess/API/qt/tests/inspectorserver/inspectorserver.pro +++ b/Source/WebKit2/UIProcess/API/qt/tests/inspectorserver/inspectorserver.pro @@ -1,4 +1,4 @@ include(../tests.pri) SOURCES += $${TARGET}.cpp -QT += webkit-private +QT += webkitwidgets-private DEFINES += IMPORT_DIR=\"\\\"$${ROOT_BUILD_DIR}$${QMAKE_DIR_SEP}imports\\\"\" diff --git a/Source/WebKit2/UIProcess/API/qt/tests/publicapi/publicapi.pro b/Source/WebKit2/UIProcess/API/qt/tests/publicapi/publicapi.pro index 02dc197c7..ba8f4cea3 100644 --- a/Source/WebKit2/UIProcess/API/qt/tests/publicapi/publicapi.pro +++ b/Source/WebKit2/UIProcess/API/qt/tests/publicapi/publicapi.pro @@ -1,3 +1,3 @@ include(../tests.pri) SOURCES += $${TARGET}.cpp -QT += webkit-private +QT += webkitwidgets-private diff --git a/Source/WebKit2/UIProcess/API/qt/tests/qmltests/DesktopBehavior.pro b/Source/WebKit2/UIProcess/API/qt/tests/qmltests/DesktopBehavior.pro index 3fd3d4583..7c72fd2f1 100644 --- a/Source/WebKit2/UIProcess/API/qt/tests/qmltests/DesktopBehavior.pro +++ b/Source/WebKit2/UIProcess/API/qt/tests/qmltests/DesktopBehavior.pro @@ -3,7 +3,7 @@ SOURCES += tst_qmltests.cpp TARGET = tst_qmltests_DesktopBehavior OBJECTS_DIR = obj_DesktopBehavior/$$activeBuildConfig() -QT += webkit-private +QT += webkitwidgets-private CONFIG += warn_on testcase QT += qmltest diff --git a/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView.pro b/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView.pro index b340235e4..3e217b369 100644 --- a/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView.pro +++ b/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView.pro @@ -3,7 +3,7 @@ SOURCES += tst_qmltests.cpp TARGET = tst_qmltests_WebView OBJECTS_DIR = obj_WebView/$$activeBuildConfig() -QT += webkit-private +QT += webkitwidgets-private CONFIG += warn_on testcase QT += qmltest diff --git a/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_doubleTapToZoom.qml b/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_doubleTapToZoom.qml index 691455708..d21ef211a 100644 --- a/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_doubleTapToZoom.qml +++ b/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_doubleTapToZoom.qml @@ -40,6 +40,7 @@ Item { TestCase { name: "DoubleTapToZoom" + when: windowShown property variant test: webView.experimental.test @@ -78,7 +79,7 @@ Item { function test_basic() { webView.url = webView.content - verify(webView.waitForLoadSucceeded()) + verify(webView.waitForViewportReady()) compare(documentSize(), "480x720") diff --git a/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_fitToView.qml b/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_fitToView.qml index f12da5de8..fcd3d9301 100644 --- a/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_fitToView.qml +++ b/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_fitToView.qml @@ -38,6 +38,7 @@ Item { TestCase { name: "FitToView" + when: windowShown property variant test: webView.experimental.test @@ -69,7 +70,7 @@ Item { function test_basic() { webView.url = webView.content - verify(webView.waitForLoadSucceeded()) + verify(webView.waitForViewportReady()) compare(documentSize(), "480x720") compare(test.contentsScale, 1.0) diff --git a/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_wheelEventHandling.qml b/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_wheelEventHandling.qml index 1fc1559ab..aa6d711a1 100644 --- a/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_wheelEventHandling.qml +++ b/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_wheelEventHandling.qml @@ -21,12 +21,13 @@ Item { TestCase { name: "WheelEventHandling" + when: windowShown property variant test: webView.experimental.test function init() { webView.url = Qt.resolvedUrl("../common/test4.html") - verify(webView.waitForLoadSucceeded()) + verify(webView.waitForViewportReady()) webView.contentY = 0 } @@ -38,7 +39,7 @@ Item { scrollSpy.wait() var position = webView.contentY webView.reload() - verify(webView.waitForLoadSucceeded()) + verify(webView.waitForViewportReady()) // The check below will fail if the previous position was not restored after reload. verify(position == webView.contentY) } @@ -46,7 +47,7 @@ Item { function test_wheelScrollEventAfterReload() { scrollSpy.clear() webView.reload() - verify(webView.waitForLoadSucceeded()) + verify(webView.waitForViewportReady()) var centerPoint = Qt.point(webView.width / 2, webView.height / 2) test.wheelEvent(webView, centerPoint.x, centerPoint.y, -500); // The signal spy below will time out if the wheel event did not scroll the content. diff --git a/Source/WebKit2/UIProcess/API/qt/tests/qmltests/common/TestWebView.qml b/Source/WebKit2/UIProcess/API/qt/tests/qmltests/common/TestWebView.qml index 0dd7bccee..5a05f9b3e 100644 --- a/Source/WebKit2/UIProcess/API/qt/tests/qmltests/common/TestWebView.qml +++ b/Source/WebKit2/UIProcess/API/qt/tests/qmltests/common/TestWebView.qml @@ -5,43 +5,47 @@ import QtWebKit.experimental 1.0 WebView { property var loadStatus: null + property var viewportReady: false function waitForLoadSucceeded() { - var timeout = 5000 - var i = 0 - while (i < timeout && loadStatus != WebView.LoadSucceededStatus) { - testResult.wait(50) - i += 50 - } - var success = loadStatus == WebView.LoadSucceededStatus + var success = _waitFor(function() { return loadStatus == WebView.LoadSucceededStatus }) loadStatus = null return success } + function waitForViewportReady() { + // Note: You need to have "when: windowShown" in your TestCase for this to work. + // The viewport is locked until the first frame is rendered, and the rendering isn't + // activated until the WebView is visible in a mapped QQuickView. + return _waitFor(function() { return viewportReady }) + } function waitForLoadFailed() { - var timeout = 5000 - var i = 0 - while (i < timeout && loadStatus != WebView.LoadFailedStatus) { - testResult.wait(50) - i += 50 - } - var failure = loadStatus == WebView.LoadFailedStatus + var failure = _waitFor(function() { return loadStatus == WebView.LoadFailedStatus }) loadStatus = null return failure } function waitForLoadStopped() { + var stop = _waitFor(function() { return loadStatus == WebView.LoadStoppedStatus }) + loadStatus = null + return stop + } + function _waitFor(predicate) { var timeout = 5000 var i = 0 - while (i < timeout && loadStatus != WebView.LoadStoppedStatus) { + while (i < timeout && !predicate()) { testResult.wait(50) i += 50 } - var stop = loadStatus == WebView.LoadStoppedStatus - loadStatus = null - return stop + return predicate() } TestResult { id: testResult } - onLoadingChanged: loadStatus = loadRequest.status + experimental.onLoadVisuallyCommitted: viewportReady = true + onLoadingChanged: { + loadStatus = loadRequest.status + if (loadRequest.status == WebView.LoadStartedStatus) + viewportReady = false + } + } diff --git a/Source/WebKit2/UIProcess/API/qt/tests/qquickwebview/qquickwebview.pro b/Source/WebKit2/UIProcess/API/qt/tests/qquickwebview/qquickwebview.pro index 4a8d86f80..bc5307f2d 100644 --- a/Source/WebKit2/UIProcess/API/qt/tests/qquickwebview/qquickwebview.pro +++ b/Source/WebKit2/UIProcess/API/qt/tests/qquickwebview/qquickwebview.pro @@ -1,4 +1,4 @@ include(../tests.pri) SOURCES += $${TARGET}.cpp -QT += webkit-private +QT += webkitwidgets-private DEFINES += IMPORT_DIR=\"\\\"$${ROOT_BUILD_DIR}$${QMAKE_DIR_SEP}imports\\\"\" diff --git a/Source/WebKit2/UIProcess/API/qt/tests/qquickwebview/tst_qquickwebview.cpp b/Source/WebKit2/UIProcess/API/qt/tests/qquickwebview/tst_qquickwebview.cpp index 5b98ae7b7..558053729 100644 --- a/Source/WebKit2/UIProcess/API/qt/tests/qquickwebview/tst_qquickwebview.cpp +++ b/Source/WebKit2/UIProcess/API/qt/tests/qquickwebview/tst_qquickwebview.cpp @@ -440,10 +440,11 @@ void tst_QQuickWebView::inputMethodHints() void tst_QQuickWebView::scrollRequest() { - webView()->setSize(QSizeF(300, 400)); + m_window->setGeometry(0, 0, 300, 400); + m_window->show(); webView()->setUrl(QUrl::fromLocalFile(QLatin1String(TESTS_SOURCE_DIR "/html/scroll.html"))); - QVERIFY(waitForLoadSucceeded(webView())); + QVERIFY(waitForViewportReady(webView())); // COMPARE with the position requested in the html // Use qRound as that is also used when calculating the position diff --git a/Source/WebKit2/UIProcess/API/qt/tests/qrawwebview/qrawwebview.pro b/Source/WebKit2/UIProcess/API/qt/tests/qrawwebview/qrawwebview.pro index 02dc197c7..ba8f4cea3 100644 --- a/Source/WebKit2/UIProcess/API/qt/tests/qrawwebview/qrawwebview.pro +++ b/Source/WebKit2/UIProcess/API/qt/tests/qrawwebview/qrawwebview.pro @@ -1,3 +1,3 @@ include(../tests.pri) SOURCES += $${TARGET}.cpp -QT += webkit-private +QT += webkitwidgets-private diff --git a/Source/WebKit2/UIProcess/API/qt/tests/qrawwebview/tst_qrawwebview.cpp b/Source/WebKit2/UIProcess/API/qt/tests/qrawwebview/tst_qrawwebview.cpp index 31102b876..208288d1e 100644 --- a/Source/WebKit2/UIProcess/API/qt/tests/qrawwebview/tst_qrawwebview.cpp +++ b/Source/WebKit2/UIProcess/API/qt/tests/qrawwebview/tst_qrawwebview.cpp @@ -27,6 +27,7 @@ #include <WebKit2/WKContext.h> #include <WebKit2/WKPageGroup.h> +#include <WebKit2/WKPageLoadTypes.h> #include <WebKit2/WKPreferences.h> #include <WebKit2/WKPreferencesPrivate.h> #include <WebKit2/WKStringQt.h> @@ -60,15 +61,18 @@ class WebView : public QObject, public QRawWebViewClient { public: WebView(const QSize& size, bool transparent = false) { + m_webView = new QRawWebView(webContext(), webPageGroup(QString()), this); + m_webView->setTransparentBackground(transparent); + m_webView->create(); + WKPageLoaderClient loaderClient; memset(&loaderClient, 0, sizeof(WKPageLoaderClient)); + loaderClient.version = kWKPageLoaderClientCurrentVersion; loaderClient.clientInfo = this; - loaderClient.didFirstVisuallyNonEmptyLayoutForFrame = WebView::finishFirstLayoutForFrame; + loaderClient.didLayout = WebView::didLayout; - m_webView = new QRawWebView(webContext(), webPageGroup(QString()), this); WKPageSetPageLoaderClient(m_webView->pageRef(), &loaderClient); - m_webView->setTransparentBackground(transparent); - m_webView->create(); + WKPageListenForLayoutMilestones(m_webView->pageRef(), kWKDidFirstVisuallyNonEmptyLayout); WKPageSetUseFixedLayout(m_webView->pageRef(), true); m_webView->setSize(size); @@ -118,7 +122,7 @@ public: static_cast<WebView*>(context)->onRepaintDone(); } - static void finishFirstLayoutForFrame(WKPageRef page, WKFrameRef frame, WKTypeRef userData, const void *clientInfo) + static void didLayout(WKPageRef page, WKLayoutMilestones milestones, WKTypeRef userData, const void *clientInfo) { static_cast<WebView*>(const_cast<void*>(clientInfo))->frameLoaded(); } @@ -152,7 +156,9 @@ public: tst_qrawwebview() : m_resourceDir(QString::fromLatin1(TESTS_SOURCE_DIR "/html/resources")) , m_baseUrl(QUrl::fromLocalFile(TESTS_SOURCE_DIR "/html").toString()) - { } + { + addQtWebProcessToPath(); + } private Q_SLOTS: void paint() { run(&tst_qrawwebview::doPaint, m_resourceDir + "/qwkview_paint.png"); } diff --git a/Source/WebKit2/UIProcess/API/qt/tests/tests.pri b/Source/WebKit2/UIProcess/API/qt/tests/tests.pri index a1133530d..123b25ce2 100644 --- a/Source/WebKit2/UIProcess/API/qt/tests/tests.pri +++ b/Source/WebKit2/UIProcess/API/qt/tests/tests.pri @@ -6,7 +6,7 @@ TARGET = tst_$$TARGET INCLUDEPATH += $$PWD SOURCES += ../util.cpp -QT += testlib webkit +QT += testlib webkitwidgets have?(QTQUICK) { QT += qml quick quick-private HEADERS += ../bytearraytestdata.h \ diff --git a/Source/WebKit2/UIProcess/API/qt/tests/util.cpp b/Source/WebKit2/UIProcess/API/qt/tests/util.cpp index 4525e882b..fce3cc7f6 100644 --- a/Source/WebKit2/UIProcess/API/qt/tests/util.cpp +++ b/Source/WebKit2/UIProcess/API/qt/tests/util.cpp @@ -57,10 +57,10 @@ bool waitForSignal(QObject* obj, const char* signal, int timeout) return timeoutSpy.isEmpty(); } -static void messageHandler(QtMsgType type, const char* message) +static void messageHandler(QtMsgType type, const QMessageLogContext&, const QString& message) { if (type == QtCriticalMsg) { - fprintf(stderr, "%s\n", message); + fprintf(stderr, "%s\n", qPrintable(message)); return; } // Do nothing @@ -68,7 +68,7 @@ static void messageHandler(QtMsgType type, const char* message) void suppressDebugOutput() { - qInstallMsgHandler(messageHandler); \ + qInstallMessageHandler(messageHandler); \ if (qgetenv("QT_WEBKIT_SUPPRESS_WEB_PROCESS_OUTPUT").isEmpty()) \ qputenv("QT_WEBKIT_SUPPRESS_WEB_PROCESS_OUTPUT", "1"); } @@ -126,6 +126,13 @@ bool waitForLoadFailed(QQuickWebView* webView, int timeout) return timeoutSpy.isEmpty(); } +bool waitForViewportReady(QQuickWebView* webView, int timeout) +{ + // The viewport is locked until the first frame of a page load is rendered. + // The QQuickView needs to be shown for this to succeed. + return waitForSignal(webView->experimental(), SIGNAL(loadVisuallyCommitted()), timeout); +} + LoadStartedCatcher::LoadStartedCatcher(QQuickWebView* webView) : m_webView(webView) { diff --git a/Source/WebKit2/UIProcess/API/qt/tests/util.h b/Source/WebKit2/UIProcess/API/qt/tests/util.h index 0c14a1ff4..4834029b4 100644 --- a/Source/WebKit2/UIProcess/API/qt/tests/util.h +++ b/Source/WebKit2/UIProcess/API/qt/tests/util.h @@ -36,6 +36,7 @@ void suppressDebugOutput(); #if defined(HAVE_QTQUICK) && HAVE_QTQUICK bool waitForLoadSucceeded(QQuickWebView* webView, int timeout = 10000); bool waitForLoadFailed(QQuickWebView* webView, int timeout = 10000); +bool waitForViewportReady(QQuickWebView* webView, int timeout = 10000); class LoadStartedCatcher : public QObject { Q_OBJECT diff --git a/Source/WebKit2/UIProcess/CoordinatedGraphics/CoordinatedBackingStore.cpp b/Source/WebKit2/UIProcess/CoordinatedGraphics/CoordinatedBackingStore.cpp index 84f6ebd2f..77fdc0a26 100644 --- a/Source/WebKit2/UIProcess/CoordinatedGraphics/CoordinatedBackingStore.cpp +++ b/Source/WebKit2/UIProcess/CoordinatedGraphics/CoordinatedBackingStore.cpp @@ -80,15 +80,15 @@ void CoordinatedBackingStore::updateTile(int id, const IntRect& sourceRect, cons { HashMap<int, CoordinatedBackingStoreTile>::iterator it = m_tiles.find(id); ASSERT(it != m_tiles.end()); - it->second.incrementRepaintCount(); - it->second.setBackBuffer(targetRect, sourceRect, backBuffer, offset); + it->value.incrementRepaintCount(); + it->value.setBackBuffer(targetRect, sourceRect, backBuffer, offset); } PassRefPtr<BitmapTexture> CoordinatedBackingStore::texture() const { HashMap<int, CoordinatedBackingStoreTile>::const_iterator end = m_tiles.end(); for (HashMap<int, CoordinatedBackingStoreTile>::const_iterator it = m_tiles.begin(); it != end; ++it) { - RefPtr<BitmapTexture> texture = it->second.texture(); + RefPtr<BitmapTexture> texture = it->value.texture(); if (texture) return texture; } @@ -112,7 +112,7 @@ void CoordinatedBackingStore::paintToTextureMapper(TextureMapper* textureMapper, HashMap<int, CoordinatedBackingStoreTile>::iterator end = m_tiles.end(); FloatRect coveredRect; for (HashMap<int, CoordinatedBackingStoreTile>::iterator it = m_tiles.begin(); it != end; ++it) { - CoordinatedBackingStoreTile& tile = it->second; + CoordinatedBackingStoreTile& tile = it->value; if (!tile.texture()) continue; @@ -156,7 +156,7 @@ void CoordinatedBackingStore::commitTileOperations(TextureMapper* textureMapper) HashMap<int, CoordinatedBackingStoreTile>::iterator tilesEnd = m_tiles.end(); for (HashMap<int, CoordinatedBackingStoreTile>::iterator it = m_tiles.begin(); it != tilesEnd; ++it) - it->second.swapBuffers(textureMapper); + it->value.swapBuffers(textureMapper); } } // namespace WebKit diff --git a/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.cpp b/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.cpp index e6f582f22..1953afb61 100644 --- a/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.cpp +++ b/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.cpp @@ -66,14 +66,14 @@ void LayerTreeCoordinatorProxy::updateTileForLayer(int layerID, int tileID, cons { RefPtr<ShareableSurface> surface; #if USE(GRAPHICS_SURFACE) - uint64_t token = updateInfo.surfaceHandle.graphicsSurfaceToken(); - if (token) { - HashMap<uint64_t, RefPtr<ShareableSurface> >::iterator it = m_surfaces.find(token); + GraphicsSurfaceToken token = updateInfo.surfaceHandle.graphicsSurfaceToken(); + if (token.isValid()) { + HashMap<GraphicsSurfaceToken::BufferHandle, RefPtr<ShareableSurface> >::iterator it = m_surfaces.find(token.frontBufferHandle); if (it == m_surfaces.end()) { surface = ShareableSurface::create(updateInfo.surfaceHandle); - m_surfaces.add(token, surface); + m_surfaces.add(token.frontBufferHandle, surface); } else - surface = it->second; + surface = it->value; } else surface = ShareableSurface::create(updateInfo.surfaceHandle); #else @@ -116,10 +116,16 @@ void LayerTreeCoordinatorProxy::setCompositingLayerFilters(WebLayerID id, const } #endif -void LayerTreeCoordinatorProxy::didRenderFrame() +void LayerTreeCoordinatorProxy::didRenderFrame(const WebCore::IntSize& contentsSize, const WebCore::IntRect& coveredRect) { dispatchUpdate(bind(&LayerTreeRenderer::flushLayerChanges, m_renderer.get())); updateViewport(); +#if PLATFORM(QT) + m_drawingAreaProxy->page()->didRenderFrame(contentsSize, coveredRect); +#else + UNUSED_PARAM(contentsSize); + UNUSED_PARAM(coveredRect); +#endif } void LayerTreeCoordinatorProxy::createDirectlyCompositedImage(int64_t key, const WebKit::ShareableBitmap::Handle& handle) @@ -174,10 +180,12 @@ void LayerTreeCoordinatorProxy::didChangeScrollPosition(const IntPoint& position dispatchUpdate(bind(&LayerTreeRenderer::didChangeScrollPosition, m_renderer.get(), position)); } -void LayerTreeCoordinatorProxy::syncCanvas(uint32_t id, const IntSize& canvasSize, uint64_t graphicsSurfaceToken, uint32_t frontBuffer) +#if USE(GRAPHICS_SURFACE) +void LayerTreeCoordinatorProxy::syncCanvas(uint32_t id, const IntSize& canvasSize, const GraphicsSurfaceToken& token, uint32_t frontBuffer) { - dispatchUpdate(bind(&LayerTreeRenderer::syncCanvas, m_renderer.get(), id, canvasSize, graphicsSurfaceToken, frontBuffer)); + dispatchUpdate(bind(&LayerTreeRenderer::syncCanvas, m_renderer.get(), id, canvasSize, token, frontBuffer)); } +#endif void LayerTreeCoordinatorProxy::purgeBackingStores() { diff --git a/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.h b/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.h index 65a9f5e99..b1ef401a4 100644 --- a/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.h +++ b/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.h @@ -29,6 +29,7 @@ #include "WebLayerTreeInfo.h" #include <WebCore/GraphicsContext.h> #include <WebCore/GraphicsLayer.h> +#include <WebCore/GraphicsSurfaceToken.h> #include <WebCore/IntRect.h> #include <WebCore/IntSize.h> #include <WebCore/RunLoop.h> @@ -63,7 +64,7 @@ public: void purgeGLResources(); void setContentsSize(const WebCore::FloatSize&); void setVisibleContentsRect(const WebCore::FloatRect&, float scale, const WebCore::FloatPoint& trajectoryVector); - void didRenderFrame(); + void didRenderFrame(const WebCore::IntSize& contentsSize, const WebCore::IntRect& coveredRect); void createTileForLayer(int layerID, int tileID, const WebCore::IntRect&, const SurfaceUpdateInfo&); void updateTileForLayer(int layerID, int tileID, const WebCore::IntRect&, const SurfaceUpdateInfo&); void removeTileForLayer(int layerID, int tileID); @@ -73,7 +74,9 @@ public: void updateViewport(); void renderNextFrame(); void didChangeScrollPosition(const WebCore::IntPoint& position); - void syncCanvas(uint32_t id, const WebCore::IntSize& canvasSize, uint64_t graphicsSurfaceToken, uint32_t frontBuffer); +#if USE(GRAPHICS_SURFACE) + void syncCanvas(uint32_t id, const WebCore::IntSize& canvasSize, const WebCore::GraphicsSurfaceToken&, uint32_t frontBuffer); +#endif void purgeBackingStores(); LayerTreeRenderer* layerTreeRenderer() const { return m_renderer.get(); } void setLayerAnimatedOpacity(uint32_t, float); @@ -88,7 +91,7 @@ protected: float m_lastSentScale; WebCore::FloatPoint m_lastSentTrajectoryVector; #if USE(GRAPHICS_SURFACE) - HashMap<uint64_t, RefPtr<ShareableSurface> > m_surfaces; + HashMap<WebCore::GraphicsSurfaceToken::BufferHandle, RefPtr<ShareableSurface> > m_surfaces; #endif }; diff --git a/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.messages.in b/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.messages.in index 23869233c..b73960021 100644 --- a/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.messages.in +++ b/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.messages.in @@ -31,9 +31,11 @@ messages -> LayerTreeCoordinatorProxy { RemoveTileForLayer(uint32_t layerID, int tileID) CreateDirectlyCompositedImage(int64_t key, WebKit::ShareableBitmap::Handle handle) DestroyDirectlyCompositedImage(int64_t key) - DidRenderFrame() + DidRenderFrame(WebCore::IntSize contentsSize, WebCore::IntRect coveredRect) DidChangeScrollPosition(WebCore::IntPoint position) - SyncCanvas(uint32_t id, WebCore::IntSize canvasSize, uint64_t graphicsSurfaceToken, uint32_t frontBuffer) +#if USE(GRAPHICS_SURFACE) + SyncCanvas(uint32_t id, WebCore::IntSize canvasSize, WebCore::GraphicsSurfaceToken token, uint32_t frontBuffer) +#endif SetLayerAnimatedOpacity(uint32_t id, float opacity) SetLayerAnimatedTransform(uint32_t id, WebCore::TransformationMatrix transform) } diff --git a/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp b/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp index b94c66b9d..f053a57a6 100644 --- a/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp +++ b/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp @@ -126,7 +126,7 @@ void LayerTreeRenderer::paintToCurrentGLContext(const TransformationMatrix& matr if (currentRootLayer->opacity() != opacity || currentRootLayer->transform() != matrix) { currentRootLayer->setOpacity(opacity); currentRootLayer->setTransform(matrix); - currentRootLayer->syncCompositingStateForThisLayerOnly(); + currentRootLayer->flushCompositingStateForThisLayerOnly(); } layer->paint(); @@ -183,7 +183,7 @@ void LayerTreeRenderer::adjustPositionForFixedLayers() LayerMap::iterator end = m_fixedLayers.end(); for (LayerMap::iterator it = m_fixedLayers.begin(); it != end; ++it) - toTextureMapperLayer(it->second)->setScrollPositionDeltaIfNeeded(delta); + toTextureMapperLayer(it->value)->setScrollPositionDeltaIfNeeded(delta); } void LayerTreeRenderer::didChangeScrollPosition(const IntPoint& position) @@ -191,12 +191,12 @@ void LayerTreeRenderer::didChangeScrollPosition(const IntPoint& position) m_pendingRenderedContentsScrollPosition = position; } -void LayerTreeRenderer::syncCanvas(WebLayerID id, const WebCore::IntSize& canvasSize, uint64_t graphicsSurfaceToken, uint32_t frontBuffer) +#if USE(GRAPHICS_SURFACE) +void LayerTreeRenderer::syncCanvas(WebLayerID id, const WebCore::IntSize& canvasSize, const GraphicsSurfaceToken& token, uint32_t frontBuffer) { if (canvasSize.isEmpty() || !m_textureMapper) return; -#if USE(GRAPHICS_SURFACE) ensureLayer(id); GraphicsLayer* layer = layerByID(id); @@ -206,18 +206,18 @@ void LayerTreeRenderer::syncCanvas(WebLayerID id, const WebCore::IntSize& canvas canvasBackingStore = TextureMapperSurfaceBackingStore::create(); m_surfaceBackingStores.set(id, canvasBackingStore); } else - canvasBackingStore = it->second; + canvasBackingStore = it->value; - canvasBackingStore->setGraphicsSurface(graphicsSurfaceToken, canvasSize, frontBuffer); + canvasBackingStore->setGraphicsSurface(token, canvasSize, frontBuffer); layer->setContentsToMedia(canvasBackingStore.get()); -#endif } +#endif void LayerTreeRenderer::setLayerChildren(WebLayerID id, const Vector<WebLayerID>& childIDs) { ensureLayer(id); LayerMap::iterator it = m_layers.find(id); - GraphicsLayer* layer = it->second; + GraphicsLayer* layer = it->value; Vector<GraphicsLayer*> children; for (size_t i = 0; i < childIDs.size(); ++i) { @@ -239,7 +239,7 @@ void LayerTreeRenderer::setLayerFilters(WebLayerID id, const FilterOperations& f LayerMap::iterator it = m_layers.find(id); ASSERT(it != m_layers.end()); - GraphicsLayer* layer = it->second; + GraphicsLayer* layer = it->value; layer->setFilters(filters); } #endif @@ -250,7 +250,7 @@ void LayerTreeRenderer::setLayerState(WebLayerID id, const WebLayerInfo& layerIn LayerMap::iterator it = m_layers.find(id); ASSERT(it != m_layers.end()); - GraphicsLayer* layer = it->second; + GraphicsLayer* layer = it->value; layer->setReplicatedByLayer(layerByID(layerInfo.replica)); layer->setMaskLayer(layerByID(layerInfo.mask)); @@ -377,7 +377,7 @@ void LayerTreeRenderer::assignImageToLayer(GraphicsLayer* layer, int64_t imageID HashMap<int64_t, RefPtr<TextureMapperBackingStore> >::iterator it = m_directlyCompositedImages.find(imageID); ASSERT(it != m_directlyCompositedImages.end()); - layer->setContentsToMedia(it->second.get()); + layer->setContentsToMedia(it->value.get()); } void LayerTreeRenderer::commitTileOperations() @@ -393,7 +393,7 @@ void LayerTreeRenderer::flushLayerChanges() { m_renderedContentsScrollPosition = m_pendingRenderedContentsScrollPosition; - m_rootLayer->syncCompositingState(FloatRect()); + m_rootLayer->flushCompositingState(FloatRect()); commitTileOperations(); // The pending tiles state is on its way for the screen, tell the web process to render the next one. diff --git a/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.h b/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.h index 4e45678e6..0a6ae3b88 100644 --- a/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.h +++ b/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.h @@ -22,13 +22,13 @@ #if USE(COORDINATED_GRAPHICS) #include "BackingStore.h" -#include "GraphicsSurface.h" #include "ShareableSurface.h" #include "TextureMapper.h" #include "TextureMapperBackingStore.h" #include "WebLayerTreeInfo.h" #include <WebCore/GraphicsContext.h> #include <WebCore/GraphicsLayer.h> +#include <WebCore/GraphicsSurface.h> #include <WebCore/IntRect.h> #include <WebCore/IntSize.h> #include <WebCore/RunLoop.h> @@ -68,7 +68,9 @@ public: void setContentsSize(const WebCore::FloatSize&); void setVisibleContentsRect(const WebCore::FloatRect&); void didChangeScrollPosition(const WebCore::IntPoint& position); - void syncCanvas(uint32_t id, const WebCore::IntSize& canvasSize, uint64_t graphicsSurfaceToken, uint32_t frontBuffer); +#if USE(GRAPHICS_SURFACE) + void syncCanvas(uint32_t id, const WebCore::IntSize& canvasSize, const WebCore::GraphicsSurfaceToken&, uint32_t frontBuffer); +#endif void detach(); void appendUpdate(const Function<void()>&); @@ -100,7 +102,7 @@ private: // Reimplementations from WebCore::GraphicsLayerClient. virtual void notifyAnimationStarted(const WebCore::GraphicsLayer*, double) { } - virtual void notifySyncRequired(const WebCore::GraphicsLayer*) { } + virtual void notifyFlushRequired(const WebCore::GraphicsLayer*) { } virtual bool showDebugBorders(const WebCore::GraphicsLayer*) const { return false; } virtual bool showRepaintCounter(const WebCore::GraphicsLayer*) const { return false; } void paintContents(const WebCore::GraphicsLayer*, WebCore::GraphicsContext&, WebCore::GraphicsLayerPaintingPhase, const WebCore::IntRect&) { } diff --git a/Source/WebKit2/UIProcess/GeolocationPermissionRequestManagerProxy.cpp b/Source/WebKit2/UIProcess/GeolocationPermissionRequestManagerProxy.cpp index eb06c29d8..b26395736 100644 --- a/Source/WebKit2/UIProcess/GeolocationPermissionRequestManagerProxy.cpp +++ b/Source/WebKit2/UIProcess/GeolocationPermissionRequestManagerProxy.cpp @@ -42,7 +42,7 @@ void GeolocationPermissionRequestManagerProxy::invalidateRequests() PendingRequestMap::const_iterator it = m_pendingRequests.begin(); PendingRequestMap::const_iterator end = m_pendingRequests.end(); for (; it != end; ++it) - it->second->invalidate(); + it->value->invalidate(); m_pendingRequests.clear(); } diff --git a/Source/WebKit2/UIProcess/InspectorServer/WebInspectorServer.cpp b/Source/WebKit2/UIProcess/InspectorServer/WebInspectorServer.cpp index 66d644734..bc585e94d 100644 --- a/Source/WebKit2/UIProcess/InspectorServer/WebInspectorServer.cpp +++ b/Source/WebKit2/UIProcess/InspectorServer/WebInspectorServer.cpp @@ -67,7 +67,7 @@ WebInspectorServer::~WebInspectorServer() // Close any remaining open connections. HashMap<unsigned, WebSocketServerConnection*>::iterator end = m_connectionMap.end(); for (HashMap<unsigned, WebSocketServerConnection*>::iterator it = m_connectionMap.begin(); it != end; ++it) { - WebSocketServerConnection* connection = it->second; + WebSocketServerConnection* connection = it->value; WebInspectorProxy* client = m_clientMap.get(connection->identifier()); closeConnection(client, connection); } @@ -78,7 +78,7 @@ int WebInspectorServer::registerPage(WebInspectorProxy* client) #ifndef ASSERT_DISABLED ClientMap::iterator end = m_clientMap.end(); for (ClientMap::iterator it = m_clientMap.begin(); it != end; ++it) - ASSERT(it->second != client); + ASSERT(it->value != client); #endif int pageId = m_nextAvailablePageId++; diff --git a/Source/WebKit2/UIProcess/InspectorServer/WebSocketServerConnection.cpp b/Source/WebKit2/UIProcess/InspectorServer/WebSocketServerConnection.cpp index abc805fd7..6317c62c2 100644 --- a/Source/WebKit2/UIProcess/InspectorServer/WebSocketServerConnection.cpp +++ b/Source/WebKit2/UIProcess/InspectorServer/WebSocketServerConnection.cpp @@ -106,9 +106,9 @@ void WebSocketServerConnection::sendHTTPResponseHeader(int statusCode, const Str builder.appendLiteral("\r\n"); HTTPHeaderMap::const_iterator end = headerFields.end(); for (HTTPHeaderMap::const_iterator it = headerFields.begin(); it != end; ++it) { - builder.append(it->first); + builder.append(it->key); builder.appendLiteral(": "); - builder.append(it->second); + builder.append(it->value); builder.appendLiteral("\r\n"); } builder.appendLiteral("\r\n"); diff --git a/Source/WebKit2/UIProcess/InspectorServer/qt/WebInspectorServerQt.cpp b/Source/WebKit2/UIProcess/InspectorServer/qt/WebInspectorServerQt.cpp index 1882586af..11e57cfd5 100644 --- a/Source/WebKit2/UIProcess/InspectorServer/qt/WebInspectorServerQt.cpp +++ b/Source/WebKit2/UIProcess/InspectorServer/qt/WebInspectorServerQt.cpp @@ -83,18 +83,18 @@ void WebInspectorServer::buildPageList(Vector<char>& data, String& contentType) builder.appendLiteral("[ "); ClientMap::iterator end = m_clientMap.end(); for (ClientMap::iterator it = m_clientMap.begin(); it != end; ++it) { - WebPageProxy* webPage = it->second->page(); + WebPageProxy* webPage = it->value->page(); if (it != m_clientMap.begin()) builder.appendLiteral(", "); builder.appendLiteral("{ \"id\": "); - builder.appendNumber(it->first); + builder.appendNumber(it->key); builder.appendLiteral(", \"title\": \""); builder.append(webPage->pageTitle()); builder.appendLiteral("\", \"url\": \""); builder.append(webPage->activeURL()); builder.appendLiteral("\", \"inspectorUrl\": \""); builder.append(remoteInspectorPagePath()); - builder.appendNumber(it->first); + builder.appendNumber(it->key); builder.appendLiteral("\" }"); } builder.appendLiteral(" ]"); diff --git a/Source/WebKit2/UIProcess/Launcher/ProcessLauncher.cpp b/Source/WebKit2/UIProcess/Launcher/ProcessLauncher.cpp index ba22dda2d..f790de1e8 100644 --- a/Source/WebKit2/UIProcess/Launcher/ProcessLauncher.cpp +++ b/Source/WebKit2/UIProcess/Launcher/ProcessLauncher.cpp @@ -75,6 +75,8 @@ const char* ProcessLauncher::processTypeAsString(ProcessType processType) return "webprocess"; case PluginProcess: return "pluginprocess"; + case NetworkProcess: + return "networkprocess"; } ASSERT_NOT_REACHED(); @@ -93,6 +95,11 @@ bool ProcessLauncher::getProcessTypeFromString(const char* string, ProcessType& return true; } + if (!strcmp(string, "networkprocess")) { + processType = NetworkProcess; + return true; + } + return false; } diff --git a/Source/WebKit2/UIProcess/Launcher/ProcessLauncher.h b/Source/WebKit2/UIProcess/Launcher/ProcessLauncher.h index 5945e1e28..ff600c59c 100644 --- a/Source/WebKit2/UIProcess/Launcher/ProcessLauncher.h +++ b/Source/WebKit2/UIProcess/Launcher/ProcessLauncher.h @@ -48,7 +48,8 @@ public: enum ProcessType { WebProcess, - PluginProcess + PluginProcess, + NetworkProcess }; struct LaunchOptions { diff --git a/Source/WebKit2/UIProcess/Launcher/mac/ProcessLauncherMac.mm b/Source/WebKit2/UIProcess/Launcher/mac/ProcessLauncherMac.mm index 560ceb773..b69bac697 100644 --- a/Source/WebKit2/UIProcess/Launcher/mac/ProcessLauncherMac.mm +++ b/Source/WebKit2/UIProcess/Launcher/mac/ProcessLauncherMac.mm @@ -82,7 +82,7 @@ struct UUIDHolder : public RefCounted<UUIDHolder> { static void setUpTerminationNotificationHandler(pid_t pid) { #if HAVE(DISPATCH_H) - dispatch_source_t processDiedSource = dispatch_source_create(DISPATCH_SOURCE_TYPE_PROC, pid, DISPATCH_PROC_EXIT, dispatch_get_current_queue()); + dispatch_source_t processDiedSource = dispatch_source_create(DISPATCH_SOURCE_TYPE_PROC, pid, DISPATCH_PROC_EXIT, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)); dispatch_source_set_event_handler(processDiedSource, ^{ int status; waitpid(dispatch_source_get_handle(processDiedSource), &status, 0); @@ -366,7 +366,22 @@ static void createProcess(const ProcessLauncher::LaunchOptions& launchOptions, b CString localization = String(cfLocalization.get()).utf8(); NSBundle *webKit2Bundle = [NSBundle bundleWithIdentifier:@"com.apple.WebKit2"]; - NSString *processPath = [webKit2Bundle pathForAuxiliaryExecutable:(launchOptions.processType == ProcessLauncher::PluginProcess ? @"PluginProcess.app" : @"WebProcess.app")]; + + NSString *processPath; + switch(launchOptions.processType) { + case ProcessLauncher::WebProcess: + processPath = [webKit2Bundle pathForAuxiliaryExecutable:@"WebProcess.app"]; + break; + case ProcessLauncher::PluginProcess: + processPath = [webKit2Bundle pathForAuxiliaryExecutable:@"PluginProcess.app"]; + break; +#if ENABLE(NETWORK_PROCESS) + case ProcessLauncher::NetworkProcess: + processPath = [webKit2Bundle pathForAuxiliaryExecutable:@"NetworkProcess.app"]; + break; +#endif + } + NSString *frameworkExecutablePath = [webKit2Bundle executablePath]; NSString *processAppExecutablePath = [[NSBundle bundleWithPath:processPath] executablePath]; diff --git a/Source/WebKit2/UIProcess/Launcher/qt/ProcessLauncherQt.cpp b/Source/WebKit2/UIProcess/Launcher/qt/ProcessLauncherQt.cpp index 3cacf04db..60cde5fa0 100644 --- a/Source/WebKit2/UIProcess/Launcher/qt/ProcessLauncherQt.cpp +++ b/Source/WebKit2/UIProcess/Launcher/qt/ProcessLauncherQt.cpp @@ -128,7 +128,7 @@ void ProcessLauncher::launchProcess() mach_port_insert_right(mach_task_self(), connector, connector, MACH_MSG_TYPE_MAKE_SEND); // Register port with a service name to the system. - QString serviceName = QString("com.nokia.Qt.WebKit.QtWebProcess-%1-%2"); + QString serviceName = QStringLiteral("com.nokia.Qt.WebKit.QtWebProcess-%1-%2"); serviceName = serviceName.arg(QString().setNum(getpid()), QString().setNum((size_t)this)); kern_return_t kr = bootstrap_register2(bootstrap_port, const_cast<char*>(serviceName.toUtf8().data()), connector, 0); ASSERT_UNUSED(kr, kr == KERN_SUCCESS); diff --git a/Source/WebKit2/UIProcess/Network/NetworkProcessProxy.cpp b/Source/WebKit2/UIProcess/Network/NetworkProcessProxy.cpp new file mode 100644 index 000000000..fe528351a --- /dev/null +++ b/Source/WebKit2/UIProcess/Network/NetworkProcessProxy.cpp @@ -0,0 +1,110 @@ +/* + * Copyright (C) 2012 Apple Inc. 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 "NetworkProcessProxy.h" + +#include "NetworkProcessCreationParameters.h" +#include "NetworkProcessMessages.h" +#include <WebCore/RunLoop.h> + +#if ENABLE(NETWORK_PROCESS) + +using namespace WebCore; + +namespace WebKit { + +PassRefPtr<NetworkProcessProxy> NetworkProcessProxy::create() +{ + return adoptRef(new NetworkProcessProxy); +} + +NetworkProcessProxy::NetworkProcessProxy() +{ + ProcessLauncher::LaunchOptions launchOptions; + launchOptions.processType = ProcessLauncher::NetworkProcess; + +#if PLATFORM(MAC) + launchOptions.architecture = ProcessLauncher::LaunchOptions::MatchCurrentArchitecture; + launchOptions.executableHeap = false; +#if HAVE(XPC) + launchOptions.useXPC = false; +#endif +#endif + + m_processLauncher = ProcessLauncher::create(this, launchOptions); +} + +NetworkProcessProxy::~NetworkProcessProxy() +{ + +} + +void NetworkProcessProxy::didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*) +{ + +} + +void NetworkProcessProxy::didClose(CoreIPC::Connection*) +{ + +} + +void NetworkProcessProxy::didReceiveInvalidMessage(CoreIPC::Connection*, CoreIPC::MessageID) +{ + +} + +void NetworkProcessProxy::syncMessageSendTimedOut(CoreIPC::Connection*) +{ + +} + +void NetworkProcessProxy::didFinishLaunching(ProcessLauncher*, CoreIPC::Connection::Identifier connectionIdentifier) +{ + ASSERT(!m_connection); + + if (CoreIPC::Connection::identifierIsNull(connectionIdentifier)) { + // FIXME: Do better cleanup here. + return; + } + + m_connection = CoreIPC::Connection::createServerConnection(connectionIdentifier, this, RunLoop::main()); +#if PLATFORM(MAC) + m_connection->setShouldCloseConnectionOnMachExceptions(); +#endif + + m_connection->open(); + + NetworkProcessCreationParameters parameters; + platformInitializeNetworkProcess(parameters); + + // Initialize the network host process. + m_connection->send(Messages::NetworkProcess::InitializeNetworkProcess(parameters), 0); +} + +} // namespace WebKit + +#endif // ENABLE(NETWORK_PROCESS) diff --git a/Source/WebKit2/UIProcess/Network/NetworkProcessProxy.h b/Source/WebKit2/UIProcess/Network/NetworkProcessProxy.h new file mode 100644 index 000000000..57e37e653 --- /dev/null +++ b/Source/WebKit2/UIProcess/Network/NetworkProcessProxy.h @@ -0,0 +1,71 @@ +/* + * Copyright (C) 2012 Apple Inc. 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. + */ + +#ifndef NetworkProcessProxy_h +#define NetworkProcessProxy_h + +#if ENABLE(NETWORK_PROCESS) + +#include "Connection.h" +#include "ProcessLauncher.h" +#include "WebProcessProxyMessages.h" +#include <wtf/Deque.h> + +namespace WebKit { + +struct NetworkProcessCreationParameters; + +class NetworkProcessProxy : public RefCounted<NetworkProcessProxy>, CoreIPC::Connection::Client, ProcessLauncher::Client { +public: + static PassRefPtr<NetworkProcessProxy> create(); + ~NetworkProcessProxy(); + +private: + NetworkProcessProxy(); + + void platformInitializeNetworkProcess(NetworkProcessCreationParameters&); + + // CoreIPC::Connection::Client + virtual void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); + virtual void didClose(CoreIPC::Connection*); + virtual void didReceiveInvalidMessage(CoreIPC::Connection*, CoreIPC::MessageID); + virtual void syncMessageSendTimedOut(CoreIPC::Connection*); + + // ProcessLauncher::Client + virtual void didFinishLaunching(ProcessLauncher*, CoreIPC::Connection::Identifier); + + // The connection to the network process. + RefPtr<CoreIPC::Connection> m_connection; + + // The process launcher for the network process. + RefPtr<ProcessLauncher> m_processLauncher; + +}; + +} // namespace WebKit + +#endif // ENABLE(NETWORK_PROCESS) + +#endif // NetworkProcessProxy_h diff --git a/Source/WebKit2/UIProcess/Network/mac/NetworkProcessProxyMac.mm b/Source/WebKit2/UIProcess/Network/mac/NetworkProcessProxyMac.mm new file mode 100644 index 000000000..440cc429f --- /dev/null +++ b/Source/WebKit2/UIProcess/Network/mac/NetworkProcessProxyMac.mm @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2012 Apple Inc. 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. + */ + +#import "config.h" +#import "NetworkProcessProxy.h" + +#import "NetworkProcessCreationParameters.h" + +#if ENABLE(NETWORK_PROCESS) + +using namespace WebCore; + +namespace WebKit { + +void NetworkProcessProxy::platformInitializeNetworkProcess(NetworkProcessCreationParameters& parameters) +{ + parameters.parentProcessName = [[NSProcessInfo processInfo] processName]; +} + +} // namespace WebKit + +#endif // ENABLE(NETWORK_PROCESS) diff --git a/Source/WebKit2/UIProcess/Notifications/NotificationPermissionRequestManagerProxy.cpp b/Source/WebKit2/UIProcess/Notifications/NotificationPermissionRequestManagerProxy.cpp index 07922985e..4a0c47529 100644 --- a/Source/WebKit2/UIProcess/Notifications/NotificationPermissionRequestManagerProxy.cpp +++ b/Source/WebKit2/UIProcess/Notifications/NotificationPermissionRequestManagerProxy.cpp @@ -43,7 +43,7 @@ void NotificationPermissionRequestManagerProxy::invalidateRequests() PendingRequestMap::const_iterator it = m_pendingRequests.begin(); PendingRequestMap::const_iterator end = m_pendingRequests.end(); for (; it != end; ++it) - it->second->invalidate(); + it->value->invalidate(); m_pendingRequests.clear(); } diff --git a/Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.cpp b/Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.cpp index 88e2cf1aa..07e1f8497 100644 --- a/Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.cpp +++ b/Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.cpp @@ -47,6 +47,7 @@ PassRefPtr<WebNotificationManagerProxy> WebNotificationManagerProxy::create(WebC WebNotificationManagerProxy::WebNotificationManagerProxy(WebContext* context) : m_context(context) { + m_context->addMessageReceiver(CoreIPC::MessageClassWebNotificationManagerProxy, this); } void WebNotificationManagerProxy::invalidate() diff --git a/Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.h b/Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.h index d61b6f661..620915d14 100644 --- a/Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.h +++ b/Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.h @@ -27,7 +27,7 @@ #define WebNotificationManagerProxy_h #include "APIObject.h" -#include "MessageID.h" +#include "MessageReceiver.h" #include "WebNotificationProvider.h" #include <WebCore/NotificationClient.h> #include <wtf/HashMap.h> @@ -35,12 +35,6 @@ #include <wtf/PassRefPtr.h> #include <wtf/text/StringHash.h> -namespace CoreIPC { -class ArgumentDecoder; -class ArgumentEncoder; -class Connection; -} - namespace WebKit { class ImmutableArray; @@ -48,7 +42,7 @@ class WebContext; class WebPageProxy; class WebSecurityOrigin; -class WebNotificationManagerProxy : public APIObject { +class WebNotificationManagerProxy : public APIObject, private CoreIPC::MessageReceiver { public: static const Type APIType = TypeNotificationManager; @@ -68,13 +62,13 @@ public: void providerDidUpdateNotificationPolicy(const WebSecurityOrigin*, bool allowed); void providerDidRemoveNotificationPolicies(ImmutableArray* origins); - void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); - private: explicit WebNotificationManagerProxy(WebContext*); virtual Type type() const { return APIType; } - + + // CoreIPC::MessageReceiver + virtual void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*) OVERRIDE; void didReceiveWebNotificationManagerProxyMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); // Message handlers diff --git a/Source/WebKit2/UIProcess/PageClient.h b/Source/WebKit2/UIProcess/PageClient.h index ebf5cd16f..c6fb91882 100644 --- a/Source/WebKit2/UIProcess/PageClient.h +++ b/Source/WebKit2/UIProcess/PageClient.h @@ -118,6 +118,8 @@ public: virtual void pageDidRequestScroll(const WebCore::IntPoint&) = 0; #endif #if PLATFORM(QT) + virtual void didRenderFrame(const WebCore::IntSize& contentsSize, const WebCore::IntRect& coveredRect) = 0; + virtual void pageTransitionViewportReady() = 0; virtual void didFindZoomableArea(const WebCore::IntPoint&, const WebCore::IntRect&) = 0; virtual void didReceiveMessageFromNavigatorQtObject(const String&) = 0; virtual void updateTextInputState() = 0; diff --git a/Source/WebKit2/UIProcess/PageViewportController.cpp b/Source/WebKit2/UIProcess/PageViewportController.cpp index e42006a14..02fd3b699 100644 --- a/Source/WebKit2/UIProcess/PageViewportController.cpp +++ b/Source/WebKit2/UIProcess/PageViewportController.cpp @@ -54,9 +54,6 @@ ViewportUpdateDeferrer::~ViewportUpdateDeferrer() return; m_controller->resumeContent(); - - // Make sure that tiles all around the viewport will be requested. - m_controller->syncVisibleContents(); } PageViewportController::PageViewportController(WebKit::WebPageProxy* proxy, PageViewportControllerClient* client) @@ -109,15 +106,65 @@ FloatPoint PageViewportController::clampViewportToContents(const WebCore::FloatP return FloatPoint(clampTo(viewportPos.x(), 0.f, horizontalRange), clampTo(viewportPos.y(), 0.f, verticalRange)); } -void PageViewportController::didChangeContentsSize(const IntSize& newSize) +void PageViewportController::didCommitLoad() { - if (m_viewportSize.isEmpty() || newSize.isEmpty()) - return; + // Do not count the previous committed page contents as covered. + m_lastFrameCoveredRect = FloatRect(); + + // Reset the position to the top, page/history scroll requests may override this before we re-enable rendering. + applyPositionAfterRenderingContents(FloatPoint()); +} +void PageViewportController::didChangeContentsSize(const IntSize& newSize) +{ m_contentsSize = newSize; updateMinimumScaleToFit(); +} + +void PageViewportController::didRenderFrame(const IntSize& contentsSize, const IntRect& coveredRect) +{ + if (m_clientContentsSize != contentsSize) { + m_clientContentsSize = contentsSize; + // Only update the viewport's contents dimensions along with its render if the + // size actually changed since animations on the page trigger DidRenderFrame + // messages without causing dimension changes. + m_client->didChangeContentsSize(contentsSize); + } + + m_lastFrameCoveredRect = coveredRect; + + // Apply any scale or scroll position we locked to be set on the viewport + // only when there is something to display there. The scale goes first to + // avoid offsetting our deferred position by scaling at the viewport center. + // All position and scale changes resulting from a web process event should + // go through here to be applied on the viewport to avoid showing incomplete + // tiles to the user during a few milliseconds. + if (m_effectiveScaleIsLocked) { + m_client->setContentsScale(m_effectiveScale, false); + m_effectiveScaleIsLocked = false; + } + if (m_viewportPosIsLocked) { + FloatPoint clampedPos = clampViewportToContents(m_viewportPos, m_effectiveScale); + // There might be rendered frames not covering our requested position yet, wait for it. + if (FloatRect(clampedPos, viewportSizeInContentsCoordinates()).intersects(coveredRect)) { + m_client->setViewportPosition(clampedPos); + m_viewportPosIsLocked = false; + } + } +} + +void PageViewportController::pageTransitionViewportReady() +{ + if (!m_rawAttributes.layoutSize.isEmpty()) { + m_hadUserInteraction = false; + applyScaleAfterRenderingContents(innerBoundedViewportScale(toViewportScale(m_rawAttributes.initialScale))); + } - m_client->didChangeContentsSize(); + // At this point we should already have received the first viewport arguments and the requested scroll + // position for the newly loaded page and sent our reactions to the web process. It's now safe to tell + // the web process to start rendering the new page contents and possibly re-use the current tiles. + // This assumes that all messages have been handled in order and that nothing has been pushed back on the event loop. + m_webPageProxy->commitPageTransitionViewport(); } void PageViewportController::pageDidRequestScroll(const IntPoint& cssPosition) @@ -126,7 +173,12 @@ void PageViewportController::pageDidRequestScroll(const IntPoint& cssPosition) if (m_activeDeferrerCount) return; - m_client->setViewportPosition(clampViewportToContents(cssPosition, m_effectiveScale)); + FloatRect endVisibleContentRect(clampViewportToContents(cssPosition, m_effectiveScale), viewportSizeInContentsCoordinates()); + if (m_lastFrameCoveredRect.intersects(endVisibleContentRect)) + m_client->setViewportPosition(endVisibleContentRect.location()); + else + // Keep the unclamped position in case the contents size is changed later on. + applyPositionAfterRenderingContents(cssPosition); } void PageViewportController::didChangeViewportSize(const FloatSize& newSize) @@ -145,8 +197,11 @@ void PageViewportController::didChangeViewportSize(const FloatSize& newSize) void PageViewportController::didChangeContentsVisibility(const FloatPoint& viewportPos, float viewportScale, const FloatPoint& trajectoryVector) { - m_viewportPos = viewportPos; - m_effectiveScale = viewportScale; + if (!m_viewportPosIsLocked) + m_viewportPos = viewportPos; + if (!m_effectiveScaleIsLocked) + m_effectiveScale = viewportScale; + syncVisibleContents(trajectoryVector); } @@ -156,7 +211,7 @@ void PageViewportController::syncVisibleContents(const FloatPoint& trajectoryVec if (!drawingArea || m_viewportSize.isEmpty() || m_contentsSize.isEmpty()) return; - FloatRect visibleContentsRect(clampViewportToContents(m_viewportPos, m_effectiveScale), m_viewportSize / m_effectiveScale); + FloatRect visibleContentsRect(clampViewportToContents(m_viewportPos, m_effectiveScale), viewportSizeInContentsCoordinates()); visibleContentsRect.intersect(FloatRect(FloatPoint::zero(), m_contentsSize)); drawingArea->setVisibleContentsRect(visibleContentsRect, m_effectiveScale, trajectoryVector); @@ -177,6 +232,11 @@ void PageViewportController::didChangeViewportAttributes(const WebCore::Viewport m_client->didChangeViewportAttributes(); } +WebCore::FloatSize PageViewportController::viewportSizeInContentsCoordinates() const +{ + return WebCore::FloatSize(m_viewportSize.width() / m_effectiveScale, m_viewportSize.height() / m_effectiveScale); +} + void PageViewportController::suspendContent() { if (m_hasSuspendedContent) @@ -188,12 +248,6 @@ void PageViewportController::suspendContent() void PageViewportController::resumeContent() { - if (!m_rawAttributes.layoutSize.isEmpty() && m_rawAttributes.initialScale > 0) { - m_hadUserInteraction = false; - m_client->setContentsScale(innerBoundedViewportScale(toViewportScale(m_rawAttributes.initialScale)), /* isInitialScale */ true); - m_rawAttributes.initialScale = -1; // Mark used. - } - m_client->didResumeContent(); if (!m_hasSuspendedContent) @@ -203,15 +257,32 @@ void PageViewportController::resumeContent() m_webPageProxy->resumeActiveDOMObjectsAndAnimations(); } +void PageViewportController::applyScaleAfterRenderingContents(float scale) +{ + m_effectiveScale = scale; + m_effectiveScaleIsLocked = true; + syncVisibleContents(); +} + +void PageViewportController::applyPositionAfterRenderingContents(const FloatPoint& pos) +{ + m_viewportPos = pos; + m_viewportPosIsLocked = true; + syncVisibleContents(); +} + void PageViewportController::updateMinimumScaleToFit() { + if (m_viewportSize.isEmpty()) + return; + float minimumScale = WebCore::computeMinimumScaleFactorForContentContained(m_rawAttributes, WebCore::roundedIntSize(m_viewportSize), WebCore::roundedIntSize(m_contentsSize)); if (!fuzzyCompare(minimumScale, m_minimumScaleToFit, 0.001)) { m_minimumScaleToFit = minimumScale; if (!m_hadUserInteraction && !hasSuspendedContent()) - m_client->setContentsScale(toViewportScale(minimumScale), true /* isInitialScale */); + applyScaleAfterRenderingContents(toViewportScale(minimumScale)); m_client->didChangeViewportAttributes(); } diff --git a/Source/WebKit2/UIProcess/PageViewportController.h b/Source/WebKit2/UIProcess/PageViewportController.h index acbb22a58..d38ddb914 100644 --- a/Source/WebKit2/UIProcess/PageViewportController.h +++ b/Source/WebKit2/UIProcess/PageViewportController.h @@ -95,15 +95,21 @@ public: void didChangeContentsVisibility(const WebCore::FloatPoint& viewportPos, float viewportScale, const WebCore::FloatPoint& trajectoryVector = WebCore::FloatPoint::zero()); // Notifications from the WebProcess. + void didCommitLoad(); void didChangeContentsSize(const WebCore::IntSize& newSize); void didChangeViewportAttributes(const WebCore::ViewportAttributes&); + void didRenderFrame(const WebCore::IntSize& contentsSize, const WebCore::IntRect& coveredRect); + void pageTransitionViewportReady(); void pageDidRequestScroll(const WebCore::IntPoint& cssPosition); private: float fromViewportScale(float scale) const { return scale / devicePixelRatio(); } float toViewportScale(float scale) const { return scale * devicePixelRatio(); } void syncVisibleContents(const WebCore::FloatPoint &trajectoryVector = WebCore::FloatPoint::zero()); + void applyScaleAfterRenderingContents(float scale); + void applyPositionAfterRenderingContents(const WebCore::FloatPoint& pos); void updateMinimumScaleToFit(); + WebCore::FloatSize viewportSizeInContentsCoordinates() const; WebPageProxy* const m_webPageProxy; PageViewportControllerClient* m_client; @@ -120,8 +126,13 @@ private: WebCore::FloatPoint m_viewportPos; WebCore::FloatSize m_viewportSize; WebCore::FloatSize m_contentsSize; + WebCore::IntSize m_clientContentsSize; float m_effectiveScale; // Should always be cssScale * devicePixelRatio. + bool m_viewportPosIsLocked; + bool m_effectiveScaleIsLocked; + WebCore::FloatRect m_lastFrameCoveredRect; + friend class ViewportUpdateDeferrer; }; diff --git a/Source/WebKit2/UIProcess/PageViewportControllerClient.h b/Source/WebKit2/UIProcess/PageViewportControllerClient.h index 3d91b9aac..7b05ea854 100644 --- a/Source/WebKit2/UIProcess/PageViewportControllerClient.h +++ b/Source/WebKit2/UIProcess/PageViewportControllerClient.h @@ -23,6 +23,11 @@ #include <wtf/Noncopyable.h> +namespace WebCore { +class FloatPoint; +class IntSize; +} + namespace WebKit { class PageViewportController; @@ -37,7 +42,7 @@ public: virtual void setContentsScale(float, bool treatAsInitialValue) = 0; virtual void didResumeContent() = 0; - virtual void didChangeContentsSize() = 0; + virtual void didChangeContentsSize(const WebCore::IntSize&) = 0; virtual void didChangeVisibleContents() = 0; virtual void didChangeViewportAttributes() = 0; diff --git a/Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp b/Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp index cebf4f7b2..f497895db 100644 --- a/Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp +++ b/Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp @@ -74,15 +74,6 @@ void PluginProcessManager::clearSiteData(const PluginModuleInfo& plugin, WebPlug pluginProcess->clearSiteData(webPluginSiteDataManager, sites, flags, maxAgeInSeconds, callbackID); } -void PluginProcessManager::pluginSyncMessageSendTimedOut(const String& pluginPath) -{ - PluginProcessProxy* pluginProcess = pluginProcessWithPath(pluginPath); - if (!pluginProcess) - return; - - pluginProcess->terminate(); -} - PluginProcessProxy* PluginProcessManager::pluginProcessWithPath(const String& pluginPath) { for (size_t i = 0; i < m_pluginProcesses.size(); ++i) { diff --git a/Source/WebKit2/UIProcess/Plugins/PluginProcessManager.h b/Source/WebKit2/UIProcess/Plugins/PluginProcessManager.h index 19aafe860..37824c4aa 100644 --- a/Source/WebKit2/UIProcess/Plugins/PluginProcessManager.h +++ b/Source/WebKit2/UIProcess/Plugins/PluginProcessManager.h @@ -56,8 +56,6 @@ public: void getSitesWithData(const PluginModuleInfo&, WebPluginSiteDataManager*, uint64_t callbackID); void clearSiteData(const PluginModuleInfo&, WebPluginSiteDataManager*, const Vector<String>& sites, uint64_t flags, uint64_t maxAgeInSeconds, uint64_t callbackID); - void pluginSyncMessageSendTimedOut(const String& pluginPath); - private: PluginProcessManager(); diff --git a/Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.cpp b/Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.cpp index cfdff9efb..7796cfe97 100644 --- a/Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.cpp +++ b/Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.cpp @@ -152,10 +152,10 @@ void PluginProcessProxy::pluginProcessCrashedOrFailedToLaunch() } while (!m_pendingGetSitesReplies.isEmpty()) - didGetSitesWithData(Vector<String>(), m_pendingGetSitesReplies.begin()->first); + didGetSitesWithData(Vector<String>(), m_pendingGetSitesReplies.begin()->key); while (!m_pendingClearSiteDataReplies.isEmpty()) - didClearSiteData(m_pendingClearSiteDataReplies.begin()->first); + didClearSiteData(m_pendingClearSiteDataReplies.begin()->key); // Tell the plug-in process manager to forget about this plug-in process proxy. This may cause us to be deleted. m_pluginProcessManager->removePluginProcessProxy(this); @@ -188,10 +188,6 @@ void PluginProcessProxy::didReceiveInvalidMessage(CoreIPC::Connection*, CoreIPC: { } -void PluginProcessProxy::syncMessageSendTimedOut(CoreIPC::Connection*) -{ -} - void PluginProcessProxy::didFinishLaunching(ProcessLauncher*, CoreIPC::Connection::Identifier connectionIdentifier) { ASSERT(!m_connection); diff --git a/Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.h b/Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.h index e0fe15ff0..4b50e6b80 100644 --- a/Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.h +++ b/Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.h @@ -101,7 +101,6 @@ private: virtual void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); virtual void didClose(CoreIPC::Connection*); virtual void didReceiveInvalidMessage(CoreIPC::Connection*, CoreIPC::MessageID); - virtual void syncMessageSendTimedOut(CoreIPC::Connection*); // ProcessLauncher::Client virtual void didFinishLaunching(ProcessLauncher*, CoreIPC::Connection::Identifier); diff --git a/Source/WebKit2/UIProcess/Plugins/WebPluginSiteDataManager.cpp b/Source/WebKit2/UIProcess/Plugins/WebPluginSiteDataManager.cpp index a26bbbdb8..246eeb447 100644 --- a/Source/WebKit2/UIProcess/Plugins/WebPluginSiteDataManager.cpp +++ b/Source/WebKit2/UIProcess/Plugins/WebPluginSiteDataManager.cpp @@ -163,8 +163,6 @@ void WebPluginSiteDataManager::getSitesWithData(PassRefPtr<ArrayCallback> prpCal m_pendingGetSitesWithData.set(callbackID, state); state->getSitesWithDataForNextPlugin(); #else - m_webContext->relaunchProcessIfNecessary(); - Vector<PluginModuleInfo> plugins = m_webContext->pluginInfoStore().plugins(); Vector<String> pluginPaths; for (size_t i = 0; i < plugins.size(); ++i) @@ -225,8 +223,6 @@ void WebPluginSiteDataManager::clearSiteData(ImmutableArray* sites, uint64_t fla m_pendingClearSiteData.set(callbackID, state); state->clearSiteDataForNextPlugin(); #else - m_webContext->relaunchProcessIfNecessary(); - Vector<PluginModuleInfo> plugins = m_webContext->pluginInfoStore().plugins(); Vector<String> pluginPaths; for (size_t i = 0; i < plugins.size(); ++i) diff --git a/Source/WebKit2/UIProcess/Plugins/mac/PluginProcessProxyMac.mm b/Source/WebKit2/UIProcess/Plugins/mac/PluginProcessProxyMac.mm index 5137968e6..2150c06f2 100644 --- a/Source/WebKit2/UIProcess/Plugins/mac/PluginProcessProxyMac.mm +++ b/Source/WebKit2/UIProcess/Plugins/mac/PluginProcessProxyMac.mm @@ -145,7 +145,14 @@ void PluginProcessProxy::platformInitializePluginProcess(PluginProcessCreationPa bool PluginProcessProxy::getPluginProcessSerialNumber(ProcessSerialNumber& pluginProcessSerialNumber) { pid_t pluginProcessPID = m_processLauncher->processIdentifier(); +#if COMPILER(CLANG) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" +#endif return GetProcessForPID(pluginProcessPID, &pluginProcessSerialNumber) == noErr; +#if COMPILER(CLANG) +#pragma clang diagnostic pop +#endif } void PluginProcessProxy::makePluginProcessTheFrontProcess() @@ -154,14 +161,28 @@ void PluginProcessProxy::makePluginProcessTheFrontProcess() if (!getPluginProcessSerialNumber(pluginProcessSerialNumber)) return; +#if COMPILER(CLANG) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" +#endif SetFrontProcess(&pluginProcessSerialNumber); +#if COMPILER(CLANG) +#pragma clang diagnostic pop +#endif } void PluginProcessProxy::makeUIProcessTheFrontProcess() { ProcessSerialNumber processSerialNumber; +#if COMPILER(CLANG) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" +#endif GetCurrentProcess(&processSerialNumber); SetFrontProcess(&processSerialNumber); +#if COMPILER(CLANG) +#pragma clang diagnostic pop +#endif } void PluginProcessProxy::setFullscreenWindowIsShowing(bool fullscreenWindowIsShowing) @@ -193,7 +214,14 @@ void PluginProcessProxy::exitFullscreen() { // If the plug-in host is the current application then we should bring ourselves to the front when it exits full-screen mode. ProcessSerialNumber frontProcessSerialNumber; +#if COMPILER(CLANG) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" +#endif GetFrontProcess(&frontProcessSerialNumber); +#if COMPILER(CLANG) +#pragma clang diagnostic pop +#endif // The UI process must be the front process in order to change the presentation mode. makeUIProcessTheFrontProcess(); @@ -206,9 +234,24 @@ void PluginProcessProxy::exitFullscreen() // If the plug-in process was not the front process, switch back to the previous front process. // (Otherwise we'll keep the UI process as the front process). Boolean isPluginProcessFrontProcess; +#if COMPILER(CLANG) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" +#endif SameProcess(&frontProcessSerialNumber, &pluginProcessSerialNumber, &isPluginProcessFrontProcess); - if (!isPluginProcessFrontProcess) +#if COMPILER(CLANG) +#pragma clang diagnostic pop +#endif + if (!isPluginProcessFrontProcess) { +#if COMPILER(CLANG) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" +#endif SetFrontProcess(&frontProcessSerialNumber); +#if COMPILER(CLANG) +#pragma clang diagnostic pop +#endif + } } void PluginProcessProxy::setModalWindowIsShowing(bool modalWindowIsShowing) diff --git a/Source/WebKit2/UIProcess/Plugins/gtk/PluginProcessProxyGtk.cpp b/Source/WebKit2/UIProcess/Plugins/unix/PluginProcessProxyUnix.cpp index fa9339d09..3febb069a 100644 --- a/Source/WebKit2/UIProcess/Plugins/gtk/PluginProcessProxyGtk.cpp +++ b/Source/WebKit2/UIProcess/Plugins/unix/PluginProcessProxyUnix.cpp @@ -1,5 +1,7 @@ /* * Copyright (C) 2011 Igalia S.L. + * Copyright (C) 2011 Apple Inc. + * Copyright (C) 2012 Samsung Electronics * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -10,10 +12,10 @@ * 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'' + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 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 @@ -31,10 +33,11 @@ #include "PluginProcessCreationParameters.h" #include "ProcessExecutablePath.h" #include <WebCore/FileSystem.h> -#include <WebCore/GOwnPtrGtk.h> -#include <glib.h> #include <wtf/text/CString.h> #include <wtf/text/WTFString.h> +#if PLATFORM(GTK) || (PLATFORM(EFL) && ENABLE(GLIB_SUPPORT)) +#include <glib.h> +#endif using namespace WebCore; @@ -46,6 +49,7 @@ void PluginProcessProxy::platformInitializePluginProcess(PluginProcessCreationPa bool PluginProcessProxy::scanPlugin(const String& pluginPath, RawPluginMetaData& result) { +#if PLATFORM(GTK) || (PLATFORM(EFL) && ENABLE(GLIB_SUPPORT)) CString binaryPath = fileSystemRepresentation(executablePathOfPluginProcess()); CString pluginPathCString = fileSystemRepresentation(pluginPath); char* argv[4]; @@ -54,27 +58,39 @@ bool PluginProcessProxy::scanPlugin(const String& pluginPath, RawPluginMetaData& argv[2] = const_cast<char*>(pluginPathCString.data()); argv[3] = 0; - gint status; - GOwnPtr<gchar> stdOut; - if (!g_spawn_sync(0, argv, 0, G_SPAWN_STDERR_TO_DEV_NULL, 0, 0, &stdOut.outPtr(), 0, &status, 0)) + int status; + char* stdOut = 0; + + if (!g_spawn_sync(0, argv, 0, G_SPAWN_STDERR_TO_DEV_NULL, 0, 0, &stdOut, 0, &status, 0)) return false; - if (!WIFEXITED(status) || WEXITSTATUS(status) != EXIT_SUCCESS) + + if (!WIFEXITED(status) || WEXITSTATUS(status) != EXIT_SUCCESS) { + free(stdOut); return false; + } const unsigned kNumLinesExpected = 3; String lines[kNumLinesExpected]; unsigned lineIndex = 0; - const UChar* current = reinterpret_cast<const UChar*>(stdOut.get()); + + const UChar* current = reinterpret_cast<const UChar*>(stdOut); + while (lineIndex < kNumLinesExpected) { const UChar* start = current; while (*current++ != UChar('\n')) { } lines[lineIndex++] = String(start, current - start - 1); } + if (stdOut) + free(stdOut); + result.name.swap(lines[0]); result.description.swap(lines[1]); result.mimeDescription.swap(lines[2]); return !result.mimeDescription.isEmpty(); +#else // PLATFORM(GTK) || (PLATFORM(EFL) && ENABLE(GLIB_SUPPORT)) + return false; +#endif // PLATFORM(GTK) || (PLATFORM(EFL) && ENABLE(GLIB_SUPPORT)) } } // namespace WebKit diff --git a/Source/WebKit2/UIProcess/WebApplicationCacheManagerProxy.cpp b/Source/WebKit2/UIProcess/WebApplicationCacheManagerProxy.cpp index f43c819fd..4fc41ba21 100644 --- a/Source/WebKit2/UIProcess/WebApplicationCacheManagerProxy.cpp +++ b/Source/WebKit2/UIProcess/WebApplicationCacheManagerProxy.cpp @@ -41,6 +41,7 @@ PassRefPtr<WebApplicationCacheManagerProxy> WebApplicationCacheManagerProxy::cre WebApplicationCacheManagerProxy::WebApplicationCacheManagerProxy(WebContext* context) : m_webContext(context) { + m_webContext->addMessageReceiver(CoreIPC::MessageClassWebApplicationCacheManagerProxy, this); } WebApplicationCacheManagerProxy::~WebApplicationCacheManagerProxy() diff --git a/Source/WebKit2/UIProcess/WebApplicationCacheManagerProxy.h b/Source/WebKit2/UIProcess/WebApplicationCacheManagerProxy.h index 597f8d7e1..464621856 100644 --- a/Source/WebKit2/UIProcess/WebApplicationCacheManagerProxy.h +++ b/Source/WebKit2/UIProcess/WebApplicationCacheManagerProxy.h @@ -29,7 +29,7 @@ #include "APIObject.h" #include "GenericCallback.h" #include "ImmutableArray.h" - +#include "MessageReceiver.h" #include <wtf/PassRefPtr.h> #include <wtf/RefPtr.h> #include <wtf/Vector.h> @@ -49,7 +49,7 @@ class WebSecurityOrigin; typedef GenericCallback<WKArrayRef> ArrayCallback; -class WebApplicationCacheManagerProxy : public APIObject { +class WebApplicationCacheManagerProxy : public APIObject, private CoreIPC::MessageReceiver { public: static const Type APIType = TypeApplicationCacheManager; @@ -63,8 +63,6 @@ public: void deleteEntriesForOrigin(WebSecurityOrigin*); void deleteAllEntries(); - void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); - bool shouldTerminate(WebProcessProxy*) const; private: @@ -73,7 +71,9 @@ private: virtual Type type() const { return APIType; } void didGetApplicationCacheOrigins(const Vector<SecurityOriginData>&, uint64_t callbackID); - + + // CoreIPC::MessageReceiver + virtual void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*) OVERRIDE; void didReceiveWebApplicationCacheManagerProxyMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); WebContext* m_webContext; diff --git a/Source/WebKit2/UIProcess/WebBatteryManagerProxy.cpp b/Source/WebKit2/UIProcess/WebBatteryManagerProxy.cpp index c3897e81c..b42b7b021 100644 --- a/Source/WebKit2/UIProcess/WebBatteryManagerProxy.cpp +++ b/Source/WebKit2/UIProcess/WebBatteryManagerProxy.cpp @@ -42,6 +42,7 @@ WebBatteryManagerProxy::WebBatteryManagerProxy(WebContext* context) : m_isUpdating(false) , m_context(context) { + m_context->addMessageReceiver(CoreIPC::MessageClassWebBatteryManagerProxy, this); } WebBatteryManagerProxy::~WebBatteryManagerProxy() diff --git a/Source/WebKit2/UIProcess/WebBatteryManagerProxy.h b/Source/WebKit2/UIProcess/WebBatteryManagerProxy.h index 9fa5bdc43..65c6614da 100644 --- a/Source/WebKit2/UIProcess/WebBatteryManagerProxy.h +++ b/Source/WebKit2/UIProcess/WebBatteryManagerProxy.h @@ -29,21 +29,16 @@ #if ENABLE(BATTERY_STATUS) #include "APIObject.h" -#include "MessageID.h" +#include "MessageReceiver.h" #include "WebBatteryProvider.h" #include <wtf/Forward.h> -namespace CoreIPC { -class ArgumentDecoder; -class Connection; -} - namespace WebKit { class WebContext; class WebBatteryStatus; +class WebBatteryManagerProxy : public APIObject, private CoreIPC::MessageReceiver { -class WebBatteryManagerProxy : public APIObject { public: static const Type APIType = TypeBatteryManager; @@ -58,13 +53,14 @@ public: void providerDidChangeBatteryStatus(const WTF::AtomicString&, WebBatteryStatus*); void providerUpdateBatteryStatus(WebBatteryStatus*); - void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); - private: explicit WebBatteryManagerProxy(WebContext*); virtual Type type() const { return APIType; } + // CoreIPC::MessageReceiver + virtual void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*) OVERRIDE; + // Implemented in generated WebBatteryManagerProxyMessageReceiver.cpp void didReceiveWebBatteryManagerProxyMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); diff --git a/Source/WebKit2/UIProcess/WebConnectionToWebProcess.cpp b/Source/WebKit2/UIProcess/WebConnectionToWebProcess.cpp index dbf12ccf0..86ba91c08 100644 --- a/Source/WebKit2/UIProcess/WebConnectionToWebProcess.cpp +++ b/Source/WebKit2/UIProcess/WebConnectionToWebProcess.cpp @@ -40,8 +40,8 @@ PassRefPtr<WebConnectionToWebProcess> WebConnectionToWebProcess::create(WebProce } WebConnectionToWebProcess::WebConnectionToWebProcess(WebProcessProxy* process, CoreIPC::Connection::Identifier connectionIdentifier, RunLoop* runLoop) - : m_process(process) - , m_connection(CoreIPC::Connection::createServerConnection(connectionIdentifier, this, runLoop)) + : WebConnection(CoreIPC::Connection::createServerConnection(connectionIdentifier, this, runLoop)) + , m_process(process) { #if OS(DARWIN) m_connection->setShouldCloseConnectionOnMachExceptions(); @@ -50,42 +50,27 @@ WebConnectionToWebProcess::WebConnectionToWebProcess(WebProcessProxy* process, C #endif } -void WebConnectionToWebProcess::invalidate() +// WebConnection + +void WebConnectionToWebProcess::encodeMessageBody(CoreIPC::ArgumentEncoder* argumentEncoder, APIObject* messageBody) { - m_connection->invalidate(); - m_connection = nullptr; - m_process = 0; + argumentEncoder->encode(WebContextUserMessageEncoder(messageBody)); } -// WebConnection - -void WebConnectionToWebProcess::postMessage(const String& messageName, APIObject* messageBody) +bool WebConnectionToWebProcess::decodeMessageBody(CoreIPC::ArgumentDecoder* argumentDecoder, RefPtr<APIObject>& messageBody) { - // We need to check if we have an underlying process here since a user of the API can hold - // onto us and call postMessage even after the process has been invalidated. - if (!m_process) - return; + if (!argumentDecoder->decode(WebContextUserMessageDecoder(messageBody, m_process))) + return false; - m_process->deprecatedSend(WebConnectionLegacyMessage::PostMessage, 0, CoreIPC::In(messageName, WebContextUserMessageEncoder(messageBody))); + return true; } // CoreIPC::Connection::Client void WebConnectionToWebProcess::didReceiveMessage(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::ArgumentDecoder* arguments) { - if (messageID.is<CoreIPC::MessageClassWebConnectionLegacy>()) { - switch (messageID.get<WebConnectionLegacyMessage::Kind>()) { - case WebConnectionLegacyMessage::PostMessage: { - String messageName; - RefPtr<APIObject> messageBody; - WebContextUserMessageDecoder messageDecoder(messageBody, m_process); - if (!arguments->decode(CoreIPC::Out(messageName, messageDecoder))) - return; - - forwardDidReceiveMessageToClient(messageName, messageBody.get()); - return; - } - } + if (messageID.is<CoreIPC::MessageClassWebConnection>()) { + didReceiveWebConnectionMessage(connection, messageID, arguments); return; } @@ -124,11 +109,6 @@ void WebConnectionToWebProcess::didReceiveInvalidMessage(CoreIPC::Connection* co m_client.didClose(this); } -void WebConnectionToWebProcess::syncMessageSendTimedOut(CoreIPC::Connection* connection) -{ - m_process->syncMessageSendTimedOut(connection); -} - #if PLATFORM(WIN) Vector<HWND> WebConnectionToWebProcess::windowsToReceiveSentMessagesWhileWaitingForSyncReply() { diff --git a/Source/WebKit2/UIProcess/WebConnectionToWebProcess.h b/Source/WebKit2/UIProcess/WebConnectionToWebProcess.h index f4962e26c..160813247 100644 --- a/Source/WebKit2/UIProcess/WebConnectionToWebProcess.h +++ b/Source/WebKit2/UIProcess/WebConnectionToWebProcess.h @@ -33,32 +33,28 @@ namespace WebKit { class WebProcessProxy; -class WebConnectionToWebProcess : public WebConnection, CoreIPC::Connection::Client { +class WebConnectionToWebProcess : public WebConnection, public CoreIPC::Connection::Client { public: static PassRefPtr<WebConnectionToWebProcess> create(WebProcessProxy*, CoreIPC::Connection::Identifier, WebCore::RunLoop*); - CoreIPC::Connection* connection() { return m_connection.get(); } - - void invalidate(); - + WebProcessProxy* webProcessProxy() const { return m_process; } private: WebConnectionToWebProcess(WebProcessProxy*, CoreIPC::Connection::Identifier, WebCore::RunLoop*); // WebConnection - virtual void postMessage(const String&, APIObject*); + virtual void encodeMessageBody(CoreIPC::ArgumentEncoder*, APIObject*) OVERRIDE; + virtual bool decodeMessageBody(CoreIPC::ArgumentDecoder*, RefPtr<APIObject>&) OVERRIDE; // CoreIPC::Connection::Client virtual void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); virtual void didReceiveSyncMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*, OwnPtr<CoreIPC::ArgumentEncoder>&); virtual void didClose(CoreIPC::Connection*); virtual void didReceiveInvalidMessage(CoreIPC::Connection*, CoreIPC::MessageID); - virtual void syncMessageSendTimedOut(CoreIPC::Connection*); #if PLATFORM(WIN) virtual Vector<HWND> windowsToReceiveSentMessagesWhileWaitingForSyncReply(); #endif WebProcessProxy* m_process; - RefPtr<CoreIPC::Connection> m_connection; }; } // namespace WebKit diff --git a/Source/WebKit2/UIProcess/WebContext.cpp b/Source/WebKit2/UIProcess/WebContext.cpp index f0c3580c1..d3dab6c74 100644 --- a/Source/WebKit2/UIProcess/WebContext.cpp +++ b/Source/WebKit2/UIProcess/WebContext.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010, 2011 Apple Inc. All rights reserved. + * Copyright (C) 2010, 2011, 2012 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -28,7 +28,6 @@ #include "DownloadProxy.h" #include "ImmutableArray.h" -#include "InjectedBundleMessageKinds.h" #include "Logging.h" #include "MutableDictionary.h" #include "SandboxExtension.h" @@ -121,36 +120,45 @@ WebContext::WebContext(ProcessModel processModel, const String& injectedBundlePa , m_cacheModel(CacheModelDocumentViewer) , m_memorySamplerEnabled(false) , m_memorySamplerInterval(1400.0) - , m_applicationCacheManagerProxy(WebApplicationCacheManagerProxy::create(this)) +#if PLATFORM(WIN) + , m_shouldPaintNativeControls(true) + , m_initialHTTPCookieAcceptPolicy(HTTPCookieAcceptPolicyAlways) +#endif + , m_processTerminationEnabled(true) +#if ENABLE(NETWORK_PROCESS) + , m_usesNetworkProcess(false) +#endif +{ + addMessageReceiver(CoreIPC::MessageClassWebContext, this); + addMessageReceiver(CoreIPC::MessageClassDownloadProxy, this); + addMessageReceiver(CoreIPC::MessageClassWebContextLegacy, this); + + // NOTE: These sub-objects must be initialized after m_messageReceiverMap.. + m_applicationCacheManagerProxy = WebApplicationCacheManagerProxy::create(this); #if ENABLE(BATTERY_STATUS) - , m_batteryManagerProxy(WebBatteryManagerProxy::create(this)) + m_batteryManagerProxy = WebBatteryManagerProxy::create(this); #endif - , m_cookieManagerProxy(WebCookieManagerProxy::create(this)) + m_cookieManagerProxy = WebCookieManagerProxy::create(this); #if ENABLE(SQL_DATABASE) - , m_databaseManagerProxy(WebDatabaseManagerProxy::create(this)) + m_databaseManagerProxy = WebDatabaseManagerProxy::create(this); #endif - , m_geolocationManagerProxy(WebGeolocationManagerProxy::create(this)) - , m_iconDatabase(WebIconDatabase::create(this)) - , m_keyValueStorageManagerProxy(WebKeyValueStorageManagerProxy::create(this)) - , m_mediaCacheManagerProxy(WebMediaCacheManagerProxy::create(this)) + m_geolocationManagerProxy = WebGeolocationManagerProxy::create(this); + m_iconDatabase = WebIconDatabase::create(this); + m_keyValueStorageManagerProxy = WebKeyValueStorageManagerProxy::create(this); + m_mediaCacheManagerProxy = WebMediaCacheManagerProxy::create(this); #if ENABLE(NETWORK_INFO) - , m_networkInfoManagerProxy(WebNetworkInfoManagerProxy::create(this)) + m_networkInfoManagerProxy = WebNetworkInfoManagerProxy::create(this); #endif - , m_notificationManagerProxy(WebNotificationManagerProxy::create(this)) - , m_pluginSiteDataManager(WebPluginSiteDataManager::create(this)) - , m_resourceCacheManagerProxy(WebResourceCacheManagerProxy::create(this)) + m_notificationManagerProxy = WebNotificationManagerProxy::create(this); + m_pluginSiteDataManager = WebPluginSiteDataManager::create(this); + m_resourceCacheManagerProxy = WebResourceCacheManagerProxy::create(this); #if USE(SOUP) - , m_soupRequestManagerProxy(WebSoupRequestManagerProxy::create(this)) + m_soupRequestManagerProxy = WebSoupRequestManagerProxy::create(this); #endif #if ENABLE(VIBRATION) - , m_vibrationProxy(WebVibrationProxy::create(this)) + m_vibrationProxy = WebVibrationProxy::create(this); #endif -#if PLATFORM(WIN) - , m_shouldPaintNativeControls(true) - , m_initialHTTPCookieAcceptPolicy(HTTPCookieAcceptPolicyAlways) -#endif - , m_processTerminationEnabled(true) -{ + #if !LOG_DISABLED WebKit::initializeLogChannelsIfNecessary(); #endif @@ -175,6 +183,8 @@ WebContext::~WebContext() removeLanguageChangeObserver(this); + m_messageReceiverMap.invalidate(); + m_applicationCacheManagerProxy->invalidate(); m_applicationCacheManagerProxy->clearContext(); @@ -263,6 +273,8 @@ void WebContext::setProcessModel(ProcessModel processModel) // Guard against API misuse. if (!m_processes.isEmpty()) CRASH(); + if (processModel != ProcessModelSharedSecondaryProcess && !m_messagesToInjectedBundlePostedToEmptyContext.isEmpty()) + CRASH(); #if !ENABLE(PLUGIN_PROCESS) // Plugin process is required for multiple web process mode. @@ -301,14 +313,28 @@ void WebContext::textCheckerStateChanged() sendToAllProcesses(Messages::WebProcess::SetTextCheckerState(TextChecker::state())); } +void WebContext::setUsesNetworkProcess(bool usesNetworkProcess) +{ +#if ENABLE(NETWORK_PROCESS) + m_usesNetworkProcess = usesNetworkProcess; +#else + UNUSED_PARAM(usesNetworkProcess); +#endif +} + void WebContext::ensureSharedWebProcess() { if (m_processes.isEmpty()) - m_processes.append(createNewWebProcess()); + createNewWebProcess(); } PassRefPtr<WebProcessProxy> WebContext::createNewWebProcess() { +#if ENABLE(NETWORK_PROCESS) + if (m_usesNetworkProcess) + ensureNetworkProcess(); +#endif + RefPtr<WebProcessProxy> process = WebProcessProxy::create(this); WebProcessCreationParameters parameters; @@ -366,6 +392,23 @@ PassRefPtr<WebProcessProxy> WebContext::createNewWebProcess() injectedBundleInitializationUserData = m_injectedBundleInitializationUserData; process->send(Messages::WebProcess::InitializeWebProcess(parameters, WebContextUserMessageEncoder(injectedBundleInitializationUserData.get())), 0); + m_processes.append(process); + + if (m_processModel == ProcessModelSharedSecondaryProcess) { + for (size_t i = 0; i != m_messagesToInjectedBundlePostedToEmptyContext.size(); ++i) { + pair<String, RefPtr<APIObject> >& message = m_messagesToInjectedBundlePostedToEmptyContext[i]; + + OwnPtr<CoreIPC::ArgumentEncoder> messageData = CoreIPC::ArgumentEncoder::create(0); + + messageData->encode(message.first); + messageData->encode(WebContextUserMessageEncoder(message.second.get())); + process->send(Messages::WebProcess::PostInjectedBundleMessage(CoreIPC::DataReference(messageData->buffer(), messageData->bufferSize())), 0); + } + m_messagesToInjectedBundlePostedToEmptyContext.clear(); + } else + ASSERT(m_messagesToInjectedBundlePostedToEmptyContext.isEmpty()); + + return process.release(); } @@ -376,10 +419,20 @@ void WebContext::warmInitialProcess() return; } - m_processes.append(createNewWebProcess()); + createNewWebProcess(); m_haveInitialEmptyProcess = true; } +#if ENABLE(NETWORK_PROCESS) +void WebContext::ensureNetworkProcess() +{ + if (m_networkProcess) + return; + + m_networkProcess = NetworkProcessProxy::create(); +} +#endif + void WebContext::enableProcessTermination() { m_processTerminationEnabled = true; @@ -446,6 +499,9 @@ void WebContext::disconnectProcess(WebProcessProxy* process) m_visitedLinkProvider.processDidClose(process); + if (m_haveInitialEmptyProcess && process == m_processes.last()) + m_haveInitialEmptyProcess = false; + // FIXME (Multi-WebProcess): <rdar://problem/12239765> All the invalidation calls below are still necessary in multi-process mode, but they should only affect data structures pertaining to the process being disconnected. // Clearing everything causes assertion failures, so it's less trouble to skip that for now. if (m_processModel != ProcessModelSharedSecondaryProcess) { @@ -514,7 +570,6 @@ PassRefPtr<WebPageProxy> WebContext::createWebPage(PageClient* pageClient, WebPa } else { // FIXME (Multi-WebProcess): <rdar://problem/12239661> Consider limiting the number of web processes in per-tab process model. process = createNewWebProcess(); - m_processes.append(process); } } @@ -529,10 +584,10 @@ WebProcessProxy* WebContext::relaunchProcessIfNecessary() if (m_processModel == ProcessModelSharedSecondaryProcess) { ensureSharedWebProcess(); return m_processes[0].get(); - } else { - // FIXME (Multi-WebProcess): What should this do in this model? - return 0; } + + ASSERT_NOT_REACHED(); + return 0; } DownloadProxy* WebContext::download(WebPageProxy* initiatingPage, const ResourceRequest& request) @@ -559,15 +614,20 @@ DownloadProxy* WebContext::download(WebPageProxy* initiatingPage, const Resource void WebContext::postMessageToInjectedBundle(const String& messageName, APIObject* messageBody) { - if (m_processes.isEmpty()) + if (m_processes.isEmpty()) { + if (m_processModel == ProcessModelSharedSecondaryProcess) + m_messagesToInjectedBundlePostedToEmptyContext.append(std::make_pair(messageName, messageBody)); return; + } // FIXME: Return early if the message body contains any references to WKPageRefs/WKFrameRefs etc. since they're local to a process. + OwnPtr<CoreIPC::ArgumentEncoder> messageData = CoreIPC::ArgumentEncoder::create(0); + messageData->encode(messageName); + messageData->encode(WebContextUserMessageEncoder(messageBody)); + for (size_t i = 0; i < m_processes.size(); ++i) { - // FIXME: We should consider returning false from this function if the messageBody cannot be encoded. - // FIXME: Can we encode the message body outside the loop for all the processes? - m_processes[i]->deprecatedSend(InjectedBundleMessage::PostMessage, 0, CoreIPC::In(messageName, WebContextUserMessageEncoder(messageBody))); + m_processes[i]->send(Messages::WebProcess::PostInjectedBundleMessage(CoreIPC::DataReference(messageData->buffer(), messageData->bufferSize())), 0); } } @@ -709,100 +769,40 @@ HashSet<String, CaseFoldingHash> WebContext::pdfAndPostScriptMIMETypes() return mimeTypes; } -void WebContext::didReceiveMessage(WebProcessProxy* process, CoreIPC::MessageID messageID, CoreIPC::ArgumentDecoder* arguments) +void WebContext::addMessageReceiver(CoreIPC::MessageClass messageClass, CoreIPC::MessageReceiver* messageReceiver) +{ + m_messageReceiverMap.addMessageReceiver(messageClass, messageReceiver); +} + +bool WebContext::dispatchMessage(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::ArgumentDecoder* argumentDecoder) +{ + return m_messageReceiverMap.dispatchMessage(connection, messageID, argumentDecoder); +} + +bool WebContext::dispatchSyncMessage(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::ArgumentDecoder* argumentDecoder, OwnPtr<CoreIPC::ArgumentEncoder>& reply) +{ + return m_messageReceiverMap.dispatchSyncMessage(connection, messageID, argumentDecoder, reply); +} + +void WebContext::didReceiveMessage(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::ArgumentDecoder* arguments) { if (messageID.is<CoreIPC::MessageClassWebContext>()) { - didReceiveWebContextMessage(process->connection(), messageID, arguments); + didReceiveWebContextMessage(connection, messageID, arguments); return; } if (messageID.is<CoreIPC::MessageClassDownloadProxy>()) { if (DownloadProxy* downloadProxy = m_downloads.get(arguments->destinationID()).get()) - downloadProxy->didReceiveDownloadProxyMessage(process->connection(), messageID, arguments); + downloadProxy->didReceiveDownloadProxyMessage(connection, messageID, arguments); return; } - if (messageID.is<CoreIPC::MessageClassWebApplicationCacheManagerProxy>()) { - m_applicationCacheManagerProxy->didReceiveMessage(process->connection(), messageID, arguments); - return; - } - -#if ENABLE(BATTERY_STATUS) - if (messageID.is<CoreIPC::MessageClassWebBatteryManagerProxy>()) { - m_batteryManagerProxy->didReceiveMessage(process->connection(), messageID, arguments); - return; - } -#endif - - if (messageID.is<CoreIPC::MessageClassWebCookieManagerProxy>()) { - m_cookieManagerProxy->didReceiveMessage(process->connection(), messageID, arguments); - return; - } - -#if ENABLE(SQL_DATABASE) - if (messageID.is<CoreIPC::MessageClassWebDatabaseManagerProxy>()) { - m_databaseManagerProxy->didReceiveWebDatabaseManagerProxyMessage(process->connection(), messageID, arguments); - return; - } -#endif - - if (messageID.is<CoreIPC::MessageClassWebGeolocationManagerProxy>()) { - m_geolocationManagerProxy->didReceiveMessage(process->connection(), messageID, arguments); - return; - } - - if (messageID.is<CoreIPC::MessageClassWebIconDatabase>()) { - m_iconDatabase->didReceiveMessage(process->connection(), messageID, arguments); - return; - } - - if (messageID.is<CoreIPC::MessageClassWebKeyValueStorageManagerProxy>()) { - m_keyValueStorageManagerProxy->didReceiveMessage(process->connection(), messageID, arguments); - return; - } - - if (messageID.is<CoreIPC::MessageClassWebMediaCacheManagerProxy>()) { - m_mediaCacheManagerProxy->didReceiveMessage(process->connection(), messageID, arguments); - return; - } - -#if ENABLE(NETWORK_INFO) - if (messageID.is<CoreIPC::MessageClassWebNetworkInfoManagerProxy>()) { - m_networkInfoManagerProxy->didReceiveMessage(process->connection(), messageID, arguments); - return; - } -#endif - - if (messageID.is<CoreIPC::MessageClassWebNotificationManagerProxy>()) { - m_notificationManagerProxy->didReceiveMessage(process->connection(), messageID, arguments); - return; - } - - if (messageID.is<CoreIPC::MessageClassWebResourceCacheManagerProxy>()) { - m_resourceCacheManagerProxy->didReceiveWebResourceCacheManagerProxyMessage(process->connection(), messageID, arguments); - return; - } - -#if USE(SOUP) - if (messageID.is<CoreIPC::MessageClassWebSoupRequestManagerProxy>()) { - m_soupRequestManagerProxy->didReceiveMessage(process->connection(), messageID, arguments); - return; - } -#endif - -#if ENABLE(VIBRATION) - if (messageID.is<CoreIPC::MessageClassWebVibrationProxy>()) { - m_vibrationProxy->didReceiveMessage(process->connection(), messageID, arguments); - return; - } -#endif - switch (messageID.get<WebContextLegacyMessage::Kind>()) { case WebContextLegacyMessage::PostMessage: { String messageName; RefPtr<APIObject> messageBody; - WebContextUserMessageDecoder messageDecoder(messageBody, process); + WebContextUserMessageDecoder messageDecoder(messageBody, WebProcessProxy::fromConnection(connection)); if (!arguments->decode(CoreIPC::Out(messageName, messageDecoder))) return; @@ -816,38 +816,26 @@ void WebContext::didReceiveMessage(WebProcessProxy* process, CoreIPC::MessageID ASSERT_NOT_REACHED(); } -void WebContext::didReceiveSyncMessage(WebProcessProxy* process, CoreIPC::MessageID messageID, CoreIPC::ArgumentDecoder* arguments, OwnPtr<CoreIPC::ArgumentEncoder>& reply) +void WebContext::didReceiveSyncMessage(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::ArgumentDecoder* arguments, OwnPtr<CoreIPC::ArgumentEncoder>& reply) { if (messageID.is<CoreIPC::MessageClassWebContext>()) { - didReceiveSyncWebContextMessage(process->connection(), messageID, arguments, reply); + didReceiveSyncWebContextMessage(connection, messageID, arguments, reply); return; } if (messageID.is<CoreIPC::MessageClassDownloadProxy>()) { if (DownloadProxy* downloadProxy = m_downloads.get(arguments->destinationID()).get()) - downloadProxy->didReceiveSyncDownloadProxyMessage(process->connection(), messageID, arguments, reply); + downloadProxy->didReceiveSyncDownloadProxyMessage(connection, messageID, arguments, reply); return; } - if (messageID.is<CoreIPC::MessageClassWebIconDatabase>()) { - m_iconDatabase->didReceiveSyncMessage(process->connection(), messageID, arguments, reply); - return; - } - -#if ENABLE(NETWORK_INFO) - if (messageID.is<CoreIPC::MessageClassWebNetworkInfoManagerProxy>()) { - m_networkInfoManagerProxy->didReceiveSyncMessage(process->connection(), messageID, arguments, reply); - return; - } -#endif - switch (messageID.get<WebContextLegacyMessage::Kind>()) { case WebContextLegacyMessage::PostSynchronousMessage: { // FIXME: We should probably encode something in the case that the arguments do not decode correctly. String messageName; RefPtr<APIObject> messageBody; - WebContextUserMessageDecoder messageDecoder(messageBody, process); + WebContextUserMessageDecoder messageDecoder(messageBody, WebProcessProxy::fromConnection(connection)); if (!arguments->decode(CoreIPC::Out(messageName, messageDecoder))) return; @@ -970,7 +958,7 @@ static PassRefPtr<MutableDictionary> createDictionaryFromHashMap(const HashMap<S RefPtr<MutableDictionary> result = MutableDictionary::create(); HashMap<String, uint64_t>::const_iterator end = map.end(); for (HashMap<String, uint64_t>::const_iterator it = map.begin(); it != end; ++it) - result->set(it->first, RefPtr<WebUInt64>(WebUInt64::create(it->second)).get()); + result->set(it->key, RefPtr<WebUInt64>(WebUInt64::create(it->value)).get()); return result; } diff --git a/Source/WebKit2/UIProcess/WebContext.h b/Source/WebKit2/UIProcess/WebContext.h index 2de4a71c6..11a338d3c 100644 --- a/Source/WebKit2/UIProcess/WebContext.h +++ b/Source/WebKit2/UIProcess/WebContext.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010, 2011 Apple Inc. All rights reserved. + * Copyright (C) 2010, 2011, 2012 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -28,11 +28,13 @@ #include "APIObject.h" #include "GenericCallback.h" +#include "MessageReceiver.h" +#include "MessageReceiverMap.h" #include "PluginInfoStore.h" #include "ProcessModel.h" #include "VisitedLinkProvider.h" -#include "WebContextInjectedBundleClient.h" #include "WebContextConnectionClient.h" +#include "WebContextInjectedBundleClient.h" #include "WebDownloadClient.h" #include "WebHistoryClient.h" #include "WebProcessProxy.h" @@ -44,6 +46,10 @@ #include <wtf/text/StringHash.h> #include <wtf/text/WTFString.h> +#if ENABLE(NETWORK_PROCESS) +#include "NetworkProcessProxy.h" +#endif + namespace WebKit { class DownloadProxy; @@ -75,7 +81,7 @@ struct WebProcessCreationParameters; typedef GenericCallback<WKDictionaryRef> DictionaryCallback; -class WebContext : public APIObject { +class WebContext : public APIObject, private CoreIPC::MessageReceiver { public: static const Type APIType = TypeContext; @@ -84,6 +90,10 @@ public: static const Vector<WebContext*>& allContexts(); + void addMessageReceiver(CoreIPC::MessageClass, CoreIPC::MessageReceiver*); + bool dispatchMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); + bool dispatchSyncMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*, OwnPtr<CoreIPC::ArgumentEncoder>&); + void initializeInjectedBundleClient(const WKContextInjectedBundleClient*); void initializeConnectionClient(const WKContextConnectionClient*); void initializeHistoryClient(const WKContextHistoryClient*); @@ -140,8 +150,9 @@ public: void addVisitedLink(const String&); void addVisitedLinkHash(WebCore::LinkHash); - void didReceiveMessage(WebProcessProxy*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); - void didReceiveSyncMessage(WebProcessProxy*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*, OwnPtr<CoreIPC::ArgumentEncoder>&); + // MessageReceiver. + virtual void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*) OVERRIDE; + virtual void didReceiveSyncMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*, OwnPtr<CoreIPC::ArgumentEncoder>&) OVERRIDE; void setCacheModel(CacheModel); CacheModel cacheModel() const { return m_cacheModel; } @@ -230,6 +241,8 @@ public: void textCheckerStateChanged(); + void setUsesNetworkProcess(bool); + private: WebContext(ProcessModel, const String& injectedBundlePath); @@ -237,7 +250,11 @@ private: void platformInitializeWebProcess(WebProcessCreationParameters&); void platformInvalidateContext(); - + +#if ENABLE(NETWORK_PROCESS) + void ensureNetworkProcess(); +#endif + #if PLATFORM(MAC) void getPasteboardTypes(const String& pasteboardName, Vector<String>& pasteboardTypes); void getPasteboardPathnamesForType(const String& pasteboardName, const String& pasteboardType, Vector<String>& pathnames); @@ -307,6 +324,10 @@ private: bool m_alwaysUsesComplexTextCodePath; bool m_shouldUseFontSmoothing; + // Messages that were posted before any pages were created. + // The client should use initialization messages instead, so that a restarted process would get the same state. + Vector<pair<String, RefPtr<APIObject> > > m_messagesToInjectedBundlePostedToEmptyContext; + CacheModel m_cacheModel; WebDownloadClient m_downloadClient; @@ -354,8 +375,15 @@ private: String m_overrideLocalStorageDirectory; bool m_processTerminationEnabled; + +#if ENABLE(NETWORK_PROCESS) + RefPtr<NetworkProcessProxy> m_networkProcess; + bool m_usesNetworkProcess; +#endif HashMap<uint64_t, RefPtr<DictionaryCallback> > m_dictionaryCallbacks; + + CoreIPC::MessageReceiverMap m_messageReceiverMap; }; template<typename U> inline void WebContext::sendToAllProcesses(const U& message) @@ -370,7 +398,9 @@ template<typename U> inline void WebContext::sendToAllProcesses(const U& message template<typename U> void WebContext::sendToAllProcessesRelaunchingThemIfNecessary(const U& message) { - relaunchProcessIfNecessary(); +// FIXME (Multi-WebProcess): WebContext doesn't track processes that have exited, so it cannot relaunch these. Perhaps this functionality won't be needed in this mode. + if (m_processModel == ProcessModelSharedSecondaryProcess) + relaunchProcessIfNecessary(); sendToAllProcesses(message); } diff --git a/Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp b/Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp index cc9b23eb6..aa33ce62f 100644 --- a/Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp +++ b/Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp @@ -41,6 +41,7 @@ PassRefPtr<WebCookieManagerProxy> WebCookieManagerProxy::create(WebContext* cont WebCookieManagerProxy::WebCookieManagerProxy(WebContext* context) : m_webContext(context) { + m_webContext->addMessageReceiver(CoreIPC::MessageClassWebCookieManagerProxy, this); } WebCookieManagerProxy::~WebCookieManagerProxy() diff --git a/Source/WebKit2/UIProcess/WebCookieManagerProxy.h b/Source/WebKit2/UIProcess/WebCookieManagerProxy.h index cf1c15b05..6981c0d06 100644 --- a/Source/WebKit2/UIProcess/WebCookieManagerProxy.h +++ b/Source/WebKit2/UIProcess/WebCookieManagerProxy.h @@ -29,6 +29,7 @@ #include "APIObject.h" #include "GenericCallback.h" #include "ImmutableArray.h" +#include "MessageReceiver.h" #include "WebCookieManagerProxyClient.h" #include <wtf/PassRefPtr.h> #include <wtf/RefPtr.h> @@ -48,7 +49,7 @@ class WebProcessProxy; typedef GenericCallback<WKArrayRef> ArrayCallback; typedef GenericCallback<WKHTTPCookieAcceptPolicy, HTTPCookieAcceptPolicy> HTTPCookieAcceptPolicyCallback; -class WebCookieManagerProxy : public APIObject { +class WebCookieManagerProxy : public APIObject, private CoreIPC::MessageReceiver { public: static const Type APIType = TypeCookieManager; @@ -74,8 +75,6 @@ public: void setCookiePersistentStorage(const String& storagePath, uint32_t storageType); #endif - void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); - bool shouldTerminate(WebProcessProxy*) const; private: @@ -88,6 +87,8 @@ private: void cookiesDidChange(); + // CoreIPC::MessageReceiver + virtual void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*) OVERRIDE; void didReceiveWebCookieManagerProxyMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); #if PLATFORM(MAC) diff --git a/Source/WebKit2/UIProcess/WebDatabaseManagerProxy.cpp b/Source/WebKit2/UIProcess/WebDatabaseManagerProxy.cpp index b4331d45c..a3fda6556 100644 --- a/Source/WebKit2/UIProcess/WebDatabaseManagerProxy.cpp +++ b/Source/WebKit2/UIProcess/WebDatabaseManagerProxy.cpp @@ -94,6 +94,7 @@ PassRefPtr<WebDatabaseManagerProxy> WebDatabaseManagerProxy::create(WebContext* WebDatabaseManagerProxy::WebDatabaseManagerProxy(WebContext* webContext) : m_webContext(webContext) { + m_webContext->addMessageReceiver(CoreIPC::MessageClassWebDatabaseManagerProxy, this); } WebDatabaseManagerProxy::~WebDatabaseManagerProxy() @@ -231,6 +232,11 @@ void WebDatabaseManagerProxy::didModifyDatabase(const String& originIdentifier, m_client.didModifyDatabase(this, origin.get(), databaseIdentifier); } +void WebDatabaseManagerProxy::didReceiveMessage(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::ArgumentDecoder* arguments) +{ + didReceiveWebDatabaseManagerProxyMessage(connection, messageID, arguments); +} + } // namespace WebKit #endif // ENABLE(SQL_DATABASE) diff --git a/Source/WebKit2/UIProcess/WebDatabaseManagerProxy.h b/Source/WebKit2/UIProcess/WebDatabaseManagerProxy.h index fe920bb03..b724a847d 100644 --- a/Source/WebKit2/UIProcess/WebDatabaseManagerProxy.h +++ b/Source/WebKit2/UIProcess/WebDatabaseManagerProxy.h @@ -31,17 +31,12 @@ #include "APIObject.h" #include "Arguments.h" #include "GenericCallback.h" +#include "MessageReceiver.h" #include "OriginAndDatabases.h" #include "WebDatabaseManagerProxyClient.h" #include <wtf/HashMap.h> #include <wtf/PassRefPtr.h> -namespace CoreIPC { -class ArgumentDecoder; -class Connection; -class MessageID; -} - namespace WebKit { class WebContext; @@ -50,7 +45,7 @@ class WebSecurityOrigin; typedef GenericCallback<WKArrayRef> ArrayCallback; -class WebDatabaseManagerProxy : public APIObject { +class WebDatabaseManagerProxy : public APIObject, private CoreIPC::MessageReceiver { public: static const Type APIType = TypeDatabaseManager; @@ -78,8 +73,6 @@ public: static String databaseDetailsExpectedUsageKey(); static String databaseDetailsCurrentUsageKey(); - void didReceiveWebDatabaseManagerProxyMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); - bool shouldTerminate(WebProcessProxy*) const; private: @@ -87,6 +80,10 @@ private: virtual Type type() const { return APIType; } + // CoreIPC::MessageReceiver + virtual void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*) OVERRIDE; + void didReceiveWebDatabaseManagerProxyMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); + // Message handlers. void didGetDatabasesByOrigin(const Vector<OriginAndDatabases>& originAndDatabases, uint64_t callbackID); void didGetDatabaseOrigins(const Vector<String>& originIdentifiers, uint64_t callbackID); diff --git a/Source/WebKit2/UIProcess/WebFullScreenManagerProxy.cpp b/Source/WebKit2/UIProcess/WebFullScreenManagerProxy.cpp index 9dc13bcc9..fe71ecaa4 100644 --- a/Source/WebKit2/UIProcess/WebFullScreenManagerProxy.cpp +++ b/Source/WebKit2/UIProcess/WebFullScreenManagerProxy.cpp @@ -94,9 +94,9 @@ void WebFullScreenManagerProxy::requestExitFullScreen() m_page->process()->send(Messages::WebFullScreenManager::RequestExitFullScreen(), m_page->pageID()); } -void WebFullScreenManagerProxy::supportsFullScreen(bool /*withKeyboard*/, bool& supports) +void WebFullScreenManagerProxy::supportsFullScreen(bool withKeyboard, bool& supports) { - supports = true; + supports = !withKeyboard; } } // namespace WebKit diff --git a/Source/WebKit2/UIProcess/WebGeolocationManagerProxy.cpp b/Source/WebKit2/UIProcess/WebGeolocationManagerProxy.cpp index af49f9bc1..e20d1eebd 100644 --- a/Source/WebKit2/UIProcess/WebGeolocationManagerProxy.cpp +++ b/Source/WebKit2/UIProcess/WebGeolocationManagerProxy.cpp @@ -40,6 +40,7 @@ WebGeolocationManagerProxy::WebGeolocationManagerProxy(WebContext* context) : m_isUpdating(false) , m_context(context) { + m_context->addMessageReceiver(CoreIPC::MessageClassWebGeolocationManagerProxy, this); } WebGeolocationManagerProxy::~WebGeolocationManagerProxy() diff --git a/Source/WebKit2/UIProcess/WebGeolocationManagerProxy.h b/Source/WebKit2/UIProcess/WebGeolocationManagerProxy.h index 65d7b7a7e..8f4102b61 100644 --- a/Source/WebKit2/UIProcess/WebGeolocationManagerProxy.h +++ b/Source/WebKit2/UIProcess/WebGeolocationManagerProxy.h @@ -27,21 +27,16 @@ #define WebGeolocationManagerProxy_h #include "APIObject.h" -#include "MessageID.h" +#include "MessageReceiver.h" #include "WebGeolocationProvider.h" #include <wtf/text/WTFString.h> -namespace CoreIPC { -class ArgumentDecoder; -class Connection; -} - namespace WebKit { class WebContext; class WebGeolocationPosition; -class WebGeolocationManagerProxy : public APIObject { +class WebGeolocationManagerProxy : public APIObject, private CoreIPC::MessageReceiver { public: static const Type APIType = TypeGeolocationManager; @@ -56,13 +51,14 @@ public: void providerDidChangePosition(WebGeolocationPosition*); void providerDidFailToDeterminePosition(const String& errorMessage = String()); - void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); - private: explicit WebGeolocationManagerProxy(WebContext*); virtual Type type() const { return APIType; } + // CoreIPC::MessageReceiver + virtual void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*) OVERRIDE; + // Implemented in generated WebGeolocationManagerProxyMessageReceiver.cpp void didReceiveWebGeolocationManagerProxyMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); diff --git a/Source/WebKit2/UIProcess/WebIconDatabase.cpp b/Source/WebKit2/UIProcess/WebIconDatabase.cpp index 41c2617bf..8b71e89e0 100644 --- a/Source/WebKit2/UIProcess/WebIconDatabase.cpp +++ b/Source/WebKit2/UIProcess/WebIconDatabase.cpp @@ -54,6 +54,7 @@ WebIconDatabase::WebIconDatabase(WebContext* context) , m_urlImportCompleted(false) , m_databaseCleanupDisabled(false) { + m_webContext->addMessageReceiver(CoreIPC::MessageClassWebIconDatabase, this); } void WebIconDatabase::invalidate() @@ -180,6 +181,11 @@ void WebIconDatabase::getLoadDecisionForIconURL(const String& iconURL, uint64_t m_webContext->sendToAllProcesses(Messages::WebIconDatabaseProxy::ReceivedIconLoadDecision((int)decision, callbackID)); } +void WebIconDatabase::didReceiveIconForPageURL(const String& pageURL) +{ + notifyIconDataReadyForPageURL(pageURL); +} + Image* WebIconDatabase::imageForPageURL(const String& pageURL, const WebCore::IntSize& iconSize) { if (!m_webContext || !m_iconDatabaseImpl || !m_iconDatabaseImpl->isOpen() || pageURL.isEmpty()) @@ -203,6 +209,11 @@ bool WebIconDatabase::isOpen() return m_iconDatabaseImpl && m_iconDatabaseImpl->isOpen(); } +bool WebIconDatabase::isUrlImportCompleted() +{ + return m_urlImportCompleted; +} + void WebIconDatabase::removeAllIcons() { m_iconDatabaseImpl->removeAllIcons(); @@ -224,11 +235,6 @@ void WebIconDatabase::initializeIconDatabaseClient(const WKIconDatabaseClient* c } // WebCore::IconDatabaseClient -bool WebIconDatabase::performImport() -{ - // WebKit2 icon database doesn't currently support importing any old icon database formats. - return true; -} void WebIconDatabase::didImportIconURLForPageURL(const String& pageURL) { @@ -237,7 +243,7 @@ void WebIconDatabase::didImportIconURLForPageURL(const String& pageURL) void WebIconDatabase::didImportIconDataForPageURL(const String& pageURL) { - didChangeIconForPageURL(pageURL); + notifyIconDataReadyForPageURL(pageURL); } void WebIconDatabase::didChangeIconForPageURL(const String& pageURL) @@ -263,14 +269,14 @@ void WebIconDatabase::didFinishURLImport() HashMap<uint64_t, String>::iterator end = m_pendingLoadDecisionURLMap.end(); for (; i != end; ++i) { - LOG(IconDatabase, "WK2 UIProcess performing delayed callback on callback ID %i for page url %s", (int)i->first, i->second.ascii().data()); - IconLoadDecision decision = m_iconDatabaseImpl->synchronousLoadDecisionForIconURL(i->second, 0); + LOG(IconDatabase, "WK2 UIProcess performing delayed callback on callback ID %i for page url %s", (int)i->key, i->value.ascii().data()); + IconLoadDecision decision = m_iconDatabaseImpl->synchronousLoadDecisionForIconURL(i->value, 0); // Decisions should never be unknown after the inital import is complete ASSERT(decision != IconLoadUnknown); // FIXME (Multi-WebProcess): <rdar://problem/12240223> We need to know which connection to send this message to. - m_webContext->sendToAllProcesses(Messages::WebIconDatabaseProxy::ReceivedIconLoadDecision(static_cast<int>(decision), i->first)); + m_webContext->sendToAllProcesses(Messages::WebIconDatabaseProxy::ReceivedIconLoadDecision(static_cast<int>(decision), i->key)); } m_pendingLoadDecisionURLMap.clear(); @@ -288,4 +294,10 @@ void WebIconDatabase::didReceiveSyncMessage(CoreIPC::Connection* connection, Cor didReceiveSyncWebIconDatabaseMessage(connection, messageID, decoder, reply); } +void WebIconDatabase::notifyIconDataReadyForPageURL(const String& pageURL) +{ + m_iconDatabaseClient.iconDataReadyForPageURL(this, WebURL::create(pageURL).get()); + didChangeIconForPageURL(pageURL); +} + } // namespace WebKit diff --git a/Source/WebKit2/UIProcess/WebIconDatabase.h b/Source/WebKit2/UIProcess/WebIconDatabase.h index d808ef0d9..8643a481d 100644 --- a/Source/WebKit2/UIProcess/WebIconDatabase.h +++ b/Source/WebKit2/UIProcess/WebIconDatabase.h @@ -54,7 +54,7 @@ namespace WebKit { class WebContext; -class WebIconDatabase : public APIObject, public WebCore::IconDatabaseClient { +class WebIconDatabase : public APIObject, public WebCore::IconDatabaseClient, private CoreIPC::MessageReceiver { public: static const Type APIType = TypeIconDatabase; @@ -77,10 +77,12 @@ public: void synchronousLoadDecisionForIconURL(const String&, int&) const; void getLoadDecisionForIconURL(const String&, uint64_t callbackID); + void didReceiveIconForPageURL(const String&); WebCore::Image* imageForPageURL(const String&, const WebCore::IntSize& iconSize = WebCore::IntSize(32, 32)); WebCore::NativeImagePtr nativeImageForPageURL(const String&, const WebCore::IntSize& iconSize = WebCore::IntSize(32, 32)); bool isOpen(); + bool isUrlImportCompleted(); void removeAllIcons(); void checkIntegrityBeforeOpening(); @@ -88,25 +90,27 @@ public: void initializeIconDatabaseClient(const WKIconDatabaseClient*); +private: + WebIconDatabase(WebContext*); + + virtual Type type() const { return APIType; } + // WebCore::IconDatabaseClient - virtual bool performImport(); virtual void didImportIconURLForPageURL(const String&); virtual void didImportIconDataForPageURL(const String&); virtual void didChangeIconForPageURL(const String&); virtual void didRemoveAllIcons(); virtual void didFinishURLImport(); - - void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); - void didReceiveSyncMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*, OwnPtr<CoreIPC::ArgumentEncoder>&); -private: - WebIconDatabase(WebContext*); - - virtual Type type() const { return APIType; } + // CoreIPC::MessageReceiver + virtual void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*) OVERRIDE; + virtual void didReceiveSyncMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*, OwnPtr<CoreIPC::ArgumentEncoder>&) OVERRIDE; void didReceiveWebIconDatabaseMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); void didReceiveSyncWebIconDatabaseMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*, OwnPtr<CoreIPC::ArgumentEncoder>&); + void notifyIconDataReadyForPageURL(const String&); + WebContext* m_webContext; OwnPtr<WebCore::IconDatabase> m_iconDatabaseImpl; diff --git a/Source/WebKit2/UIProcess/WebIconDatabase.messages.in b/Source/WebKit2/UIProcess/WebIconDatabase.messages.in index b68a0a742..400adb081 100644 --- a/Source/WebKit2/UIProcess/WebIconDatabase.messages.in +++ b/Source/WebKit2/UIProcess/WebIconDatabase.messages.in @@ -32,4 +32,5 @@ messages -> WebIconDatabase { SynchronousLoadDecisionForIconURL(WTF::String iconURL) -> (int loadDecision) GetLoadDecisionForIconURL(WTF::String iconURL, uint64_t callbackID) + DidReceiveIconForPageURL(WTF::String pageURL) } diff --git a/Source/WebKit2/UIProcess/WebIconDatabaseClient.cpp b/Source/WebKit2/UIProcess/WebIconDatabaseClient.cpp index e0de3664e..4fbfd3ccd 100644 --- a/Source/WebKit2/UIProcess/WebIconDatabaseClient.cpp +++ b/Source/WebKit2/UIProcess/WebIconDatabaseClient.cpp @@ -47,4 +47,12 @@ void WebIconDatabaseClient::didRemoveAllIcons(WebIconDatabase* iconDatabase) m_client.didRemoveAllIcons(toAPI(iconDatabase), m_client.clientInfo); } +void WebIconDatabaseClient::iconDataReadyForPageURL(WebIconDatabase* iconDatabase, WebURL* url) +{ + if (!m_client.iconDataReadyForPageURL) + return; + + m_client.iconDataReadyForPageURL(toAPI(iconDatabase), toAPI(url), m_client.clientInfo); +} + } // namespace WebKit diff --git a/Source/WebKit2/UIProcess/WebIconDatabaseClient.h b/Source/WebKit2/UIProcess/WebIconDatabaseClient.h index 801ec12a8..5fe2fea43 100644 --- a/Source/WebKit2/UIProcess/WebIconDatabaseClient.h +++ b/Source/WebKit2/UIProcess/WebIconDatabaseClient.h @@ -39,6 +39,7 @@ class WebIconDatabaseClient : public APIClient<WKIconDatabaseClient, kWKIconData public: void didChangeIconForPageURL(WebIconDatabase*, WebURL*); void didRemoveAllIcons(WebIconDatabase*); + void iconDataReadyForPageURL(WebIconDatabase*, WebURL*); }; } // namespace WebKit diff --git a/Source/WebKit2/UIProcess/WebInspectorProxy.h b/Source/WebKit2/UIProcess/WebInspectorProxy.h index b80700429..6922b7d73 100644 --- a/Source/WebKit2/UIProcess/WebInspectorProxy.h +++ b/Source/WebKit2/UIProcess/WebInspectorProxy.h @@ -189,7 +189,7 @@ private: virtual void windowReceivedMessage(HWND, UINT message, WPARAM, LPARAM); #endif -#if PLATFORM(GTK) +#if PLATFORM(GTK) || PLATFORM(EFL) void createInspectorWindow(); #endif diff --git a/Source/WebKit2/UIProcess/WebIntentData.cpp b/Source/WebKit2/UIProcess/WebIntentData.cpp index 632aa3b75..c6d8c64ba 100644 --- a/Source/WebKit2/UIProcess/WebIntentData.cpp +++ b/Source/WebKit2/UIProcess/WebIntentData.cpp @@ -78,7 +78,7 @@ PassRefPtr<ImmutableDictionary> WebIntentData::extras() const ImmutableDictionary::MapType wkExtras; HashMap<String, String>::const_iterator end = m_store.extras.end(); for (HashMap<String, String>::const_iterator it = m_store.extras.begin(); it != end; ++it) - wkExtras.set(it->first, WebString::create(it->second)); + wkExtras.set(it->key, WebString::create(it->value)); return ImmutableDictionary::adopt(wkExtras); } diff --git a/Source/WebKit2/UIProcess/WebKeyValueStorageManagerProxy.cpp b/Source/WebKit2/UIProcess/WebKeyValueStorageManagerProxy.cpp index 8b3332aa5..454d082f5 100644 --- a/Source/WebKit2/UIProcess/WebKeyValueStorageManagerProxy.cpp +++ b/Source/WebKit2/UIProcess/WebKeyValueStorageManagerProxy.cpp @@ -41,6 +41,7 @@ PassRefPtr<WebKeyValueStorageManagerProxy> WebKeyValueStorageManagerProxy::creat WebKeyValueStorageManagerProxy::WebKeyValueStorageManagerProxy(WebContext* context) : m_webContext(context) { + m_webContext->addMessageReceiver(CoreIPC::MessageClassWebKeyValueStorageManagerProxy, this); } WebKeyValueStorageManagerProxy::~WebKeyValueStorageManagerProxy() diff --git a/Source/WebKit2/UIProcess/WebKeyValueStorageManagerProxy.h b/Source/WebKit2/UIProcess/WebKeyValueStorageManagerProxy.h index 2be77c351..9c63142f6 100644 --- a/Source/WebKit2/UIProcess/WebKeyValueStorageManagerProxy.h +++ b/Source/WebKit2/UIProcess/WebKeyValueStorageManagerProxy.h @@ -29,17 +29,11 @@ #include "APIObject.h" #include "GenericCallback.h" #include "ImmutableArray.h" - +#include "MessageReceiver.h" #include <wtf/PassRefPtr.h> #include <wtf/RefPtr.h> #include <wtf/Vector.h> -namespace CoreIPC { - class ArgumentDecoder; - class Connection; - class MessageID; -} - namespace WebKit { struct SecurityOriginData; @@ -49,7 +43,7 @@ class WebSecurityOrigin; typedef GenericCallback<WKArrayRef> ArrayCallback; -class WebKeyValueStorageManagerProxy : public APIObject { +class WebKeyValueStorageManagerProxy : public APIObject, private CoreIPC::MessageReceiver { public: static const Type APIType = TypeKeyValueStorageManager; @@ -63,8 +57,6 @@ public: void deleteEntriesForOrigin(WebSecurityOrigin*); void deleteAllEntries(); - void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); - bool shouldTerminate(WebProcessProxy*) const; private: @@ -73,7 +65,9 @@ private: virtual Type type() const { return APIType; } void didGetKeyValueStorageOrigins(const Vector<SecurityOriginData>&, uint64_t callbackID); - + + // CoreIPC::MessageReceiver + virtual void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*) OVERRIDE; void didReceiveWebKeyValueStorageManagerProxyMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); WebContext* m_webContext; diff --git a/Source/WebKit2/UIProcess/WebMediaCacheManagerProxy.cpp b/Source/WebKit2/UIProcess/WebMediaCacheManagerProxy.cpp index ce4a78c64..81cf98f56 100644 --- a/Source/WebKit2/UIProcess/WebMediaCacheManagerProxy.cpp +++ b/Source/WebKit2/UIProcess/WebMediaCacheManagerProxy.cpp @@ -40,6 +40,7 @@ PassRefPtr<WebMediaCacheManagerProxy> WebMediaCacheManagerProxy::create(WebConte WebMediaCacheManagerProxy::WebMediaCacheManagerProxy(WebContext* context) : m_webContext(context) { + m_webContext->addMessageReceiver(CoreIPC::MessageClassWebMediaCacheManagerProxy, this); } WebMediaCacheManagerProxy::~WebMediaCacheManagerProxy() diff --git a/Source/WebKit2/UIProcess/WebMediaCacheManagerProxy.h b/Source/WebKit2/UIProcess/WebMediaCacheManagerProxy.h index adc68c4ab..48e88e0fc 100644 --- a/Source/WebKit2/UIProcess/WebMediaCacheManagerProxy.h +++ b/Source/WebKit2/UIProcess/WebMediaCacheManagerProxy.h @@ -29,17 +29,11 @@ #include "APIObject.h" #include "GenericCallback.h" #include "ImmutableArray.h" - +#include "MessageReceiver.h" #include <wtf/PassRefPtr.h> #include <wtf/RefPtr.h> #include <wtf/Vector.h> -namespace CoreIPC { - class ArgumentDecoder; - class Connection; - class MessageID; -} - namespace WebKit { class WebContext; @@ -47,7 +41,7 @@ class WebProcessProxy; typedef GenericCallback<WKArrayRef> ArrayCallback; -class WebMediaCacheManagerProxy : public APIObject { +class WebMediaCacheManagerProxy : public APIObject, private CoreIPC::MessageReceiver { public: static const Type APIType = TypeMediaCacheManager; @@ -61,8 +55,6 @@ public: void clearCacheForHostname(const String&); void clearCacheForAllHostnames(); - void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); - bool shouldTerminate(WebProcessProxy*) const; private: @@ -71,7 +63,9 @@ private: virtual Type type() const { return APIType; } void didGetHostnamesWithMediaCache(const Vector<String>&, uint64_t callbackID); - + + // CoreIPC::MessageReceiver + virtual void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*) OVERRIDE; void didReceiveWebMediaCacheManagerProxyMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); WebContext* m_webContext; diff --git a/Source/WebKit2/UIProcess/WebNetworkInfoManagerProxy.cpp b/Source/WebKit2/UIProcess/WebNetworkInfoManagerProxy.cpp index 9bacced06..21a399bc0 100644 --- a/Source/WebKit2/UIProcess/WebNetworkInfoManagerProxy.cpp +++ b/Source/WebKit2/UIProcess/WebNetworkInfoManagerProxy.cpp @@ -43,6 +43,7 @@ WebNetworkInfoManagerProxy::WebNetworkInfoManagerProxy(WebContext* context) : m_isUpdating(false) , m_context(context) { + m_context->addMessageReceiver(CoreIPC::MessageClassWebNetworkInfoManagerProxy, this); } WebNetworkInfoManagerProxy::~WebNetworkInfoManagerProxy() @@ -72,7 +73,7 @@ void WebNetworkInfoManagerProxy::didReceiveMessage(CoreIPC::Connection* connecti didReceiveWebNetworkInfoManagerProxyMessage(connection, messageID, arguments); } -void WebNetworkInfoManagerProxy::didReceiveSyncMessage(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::ArgumentDecoder* arguments, WTF::OwnPtr<CoreIPC::ArgumentEncoder>& reply) +void WebNetworkInfoManagerProxy::didReceiveSyncMessage(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::ArgumentDecoder* arguments, OwnPtr<CoreIPC::ArgumentEncoder>& reply) { didReceiveSyncWebNetworkInfoManagerProxyMessage(connection, messageID, arguments, reply); } diff --git a/Source/WebKit2/UIProcess/WebNetworkInfoManagerProxy.h b/Source/WebKit2/UIProcess/WebNetworkInfoManagerProxy.h index b7298553c..2c4ef7c67 100644 --- a/Source/WebKit2/UIProcess/WebNetworkInfoManagerProxy.h +++ b/Source/WebKit2/UIProcess/WebNetworkInfoManagerProxy.h @@ -29,22 +29,16 @@ #if ENABLE(NETWORK_INFO) #include "APIObject.h" -#include "MessageID.h" +#include "MessageReceiver.h" #include "WebNetworkInfoProvider.h" #include <wtf/Forward.h> -namespace CoreIPC { -class ArgumentDecoder; -class ArgumentEncoder; -class Connection; -} - namespace WebKit { class WebContext; class WebNetworkInfo; -class WebNetworkInfoManagerProxy : public APIObject { +class WebNetworkInfoManagerProxy : public APIObject, private CoreIPC::MessageReceiver { public: static const Type APIType = TypeNetworkInfoManager; @@ -58,17 +52,18 @@ public: void providerDidChangeNetworkInformation(const WTF::AtomicString& eventType, WebNetworkInfo*); - void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); - void didReceiveSyncMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*, WTF::OwnPtr<CoreIPC::ArgumentEncoder>&); - private: explicit WebNetworkInfoManagerProxy(WebContext*); virtual Type type() const { return APIType; } + // CoreIPC::MessageReceiver + virtual void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*) OVERRIDE; + virtual void didReceiveSyncMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*, OwnPtr<CoreIPC::ArgumentEncoder>&) OVERRIDE; + // Implemented in generated WebNetworkInfoManagerProxyMessageReceiver.cpp void didReceiveWebNetworkInfoManagerProxyMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); - void didReceiveSyncWebNetworkInfoManagerProxyMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*, WTF::OwnPtr<CoreIPC::ArgumentEncoder>&); + void didReceiveSyncWebNetworkInfoManagerProxyMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*, OwnPtr<CoreIPC::ArgumentEncoder>&); void startUpdating(); void stopUpdating(); diff --git a/Source/WebKit2/UIProcess/WebPageGroup.cpp b/Source/WebKit2/UIProcess/WebPageGroup.cpp index 72588d4d7..0cdbf817d 100644 --- a/Source/WebKit2/UIProcess/WebPageGroup.cpp +++ b/Source/WebKit2/UIProcess/WebPageGroup.cpp @@ -26,6 +26,7 @@ #include "config.h" #include "WebPageGroup.h" +#include "WebPageGroupProxyMessages.h" #include "WebPageProxy.h" #include "WebPreferences.h" #include <wtf/HashMap.h> @@ -128,4 +129,65 @@ void WebPageGroup::preferencesDidChange() } } +static Vector<String> toStringVector(ImmutableArray* array) +{ + Vector<String> patternVector; + if (!array) + return patternVector; + + size_t size = array->size(); + if (!size) + return patternVector; + + patternVector.reserveInitialCapacity(size); + for (size_t i = 0; i < size; ++i) { + WebString* webString = array->at<WebString>(i); + ASSERT(webString); + patternVector.uncheckedAppend(webString->string()); + } + + return patternVector; +} + +void WebPageGroup::addUserStyleSheet(const String& source, const String& baseURL, ImmutableArray* whitelist, ImmutableArray* blacklist, WebCore::UserContentInjectedFrames injectedFrames, WebCore::UserStyleLevel level) +{ + if (source.isEmpty()) + return; + + WebCore::UserStyleSheet userStyleSheet = WebCore::UserStyleSheet(source, (baseURL.isEmpty() ? WebCore::blankURL() : WebCore::KURL(WebCore::KURL(), baseURL)), toStringVector(whitelist), toStringVector(blacklist), injectedFrames, level); + + m_data.userStyleSheets.append(userStyleSheet); + sendToAllProcessesInGroup(Messages::WebPageGroupProxy::AddUserStyleSheet(userStyleSheet), m_data.pageGroupID); +} + +void WebPageGroup::addUserScript(const String& source, const String& baseURL, ImmutableArray* whitelist, ImmutableArray* blacklist, WebCore::UserContentInjectedFrames injectedFrames, WebCore::UserScriptInjectionTime injectionTime) +{ + if (source.isEmpty()) + return; + + WebCore::UserScript userScript = WebCore::UserScript(source, (baseURL.isEmpty() ? WebCore::blankURL() : WebCore::KURL(WebCore::KURL(), baseURL)), toStringVector(whitelist), toStringVector(blacklist), injectionTime, injectedFrames); + + m_data.userScripts.append(userScript); + sendToAllProcessesInGroup(Messages::WebPageGroupProxy::AddUserScript(userScript), m_data.pageGroupID); +} + +void WebPageGroup::removeAllUserStyleSheets() +{ + m_data.userStyleSheets.clear(); + sendToAllProcessesInGroup(Messages::WebPageGroupProxy::RemoveAllUserStyleSheets(), m_data.pageGroupID); +} + +void WebPageGroup::removeAllUserScripts() +{ + m_data.userScripts.clear(); + sendToAllProcessesInGroup(Messages::WebPageGroupProxy::RemoveAllUserScripts(), m_data.pageGroupID); +} + +void WebPageGroup::removeAllUserContent() +{ + m_data.userStyleSheets.clear(); + m_data.userScripts.clear(); + sendToAllProcessesInGroup(Messages::WebPageGroupProxy::RemoveAllUserContent(), m_data.pageGroupID); +} + } // namespace WebKit diff --git a/Source/WebKit2/UIProcess/WebPageGroup.h b/Source/WebKit2/UIProcess/WebPageGroup.h index ccc14bd91..176b9ee46 100644 --- a/Source/WebKit2/UIProcess/WebPageGroup.h +++ b/Source/WebKit2/UIProcess/WebPageGroup.h @@ -28,6 +28,8 @@ #include "APIObject.h" #include "WebPageGroupData.h" +#include "WebPageProxy.h" +#include "WebProcessProxy.h" #include <wtf/Forward.h> #include <wtf/HashSet.h> @@ -56,16 +58,37 @@ public: void setPreferences(WebPreferences*); WebPreferences* preferences() const; void preferencesDidChange(); + + void addUserStyleSheet(const String& source, const String& baseURL, ImmutableArray* whitelist, ImmutableArray* blacklist, WebCore::UserContentInjectedFrames, WebCore::UserStyleLevel); + void addUserScript(const String& source, const String& baseURL, ImmutableArray* whitelist, ImmutableArray* blacklist, WebCore::UserContentInjectedFrames, WebCore::UserScriptInjectionTime); + void removeAllUserStyleSheets(); + void removeAllUserScripts(); + void removeAllUserContent(); private: WebPageGroup(const String& identifier, bool visibleToInjectedBundle, bool visibleToHistoryClient); virtual Type type() const { return APIType; } + + template<typename MessageType> void sendToAllProcessesInGroup(const MessageType&, uint64_t destinationID); WebPageGroupData m_data; mutable RefPtr<WebPreferences> m_preferences; HashSet<WebPageProxy*> m_pages; }; + +template<typename MessageType> inline void WebPageGroup::sendToAllProcessesInGroup(const MessageType& message, uint64_t destinationID) +{ + HashSet<WebProcessProxy*> processesSeen; + for (HashSet<WebPageProxy*>::const_iterator it = m_pages.begin(), end = m_pages.end(); it != end; ++it) { + WebProcessProxy* webProcessProxy = (*it)->process(); + ASSERT(webProcessProxy); + if (!processesSeen.add(webProcessProxy).isNewEntry) + continue; + if (webProcessProxy->canSendMessage()) + webProcessProxy->send(message, destinationID); + } +} } // namespace WebKit diff --git a/Source/WebKit2/UIProcess/WebPageProxy.cpp b/Source/WebKit2/UIProcess/WebPageProxy.cpp index a0e9ee7f7..7ef4a249f 100644 --- a/Source/WebKit2/UIProcess/WebPageProxy.cpp +++ b/Source/WebKit2/UIProcess/WebPageProxy.cpp @@ -34,7 +34,6 @@ #include "DrawingAreaProxy.h" #include "EventDispatcherMessages.h" #include "FindIndicator.h" -#include "InjectedBundleMessageKinds.h" #include "Logging.h" #include "MessageID.h" #include "NativeWebKeyboardEvent.h" @@ -108,6 +107,10 @@ #include "ArgumentCodersGtk.h" #endif +#if USE(SOUP) +#include "WebSoupRequestManagerProxy.h" +#endif + #ifndef NDEBUG #include <wtf/RefCountedLeakCounter.h> #endif @@ -220,6 +223,8 @@ WebPageProxy::WebPageProxy(PageClient* pageClient, PassRefPtr<WebProcessProxy> p , m_canShortCircuitHorizontalWheelEvents(true) , m_mainFrameIsPinnedToLeftSide(false) , m_mainFrameIsPinnedToRightSide(false) + , m_mainFrameIsPinnedToTopSide(false) + , m_mainFrameIsPinnedToBottomSide(false) , m_pageCount(0) , m_renderTreeSize(0) , m_shouldSendEventsSynchronously(false) @@ -229,6 +234,10 @@ WebPageProxy::WebPageProxy(PageClient* pageClient, PassRefPtr<WebProcessProxy> p , m_visibilityState(PageVisibilityStateVisible) #endif { +#if ENABLE(PAGE_VISIBILITY_API) + if (!m_isVisible) + m_visibilityState = PageVisibilityStateHidden; +#endif #ifndef NDEBUG webPageProxyCounter.increment(); #endif @@ -277,6 +286,21 @@ bool WebPageProxy::isValid() return m_isValid; } +PassRefPtr<ImmutableArray> WebPageProxy::relatedPages() const +{ + Vector<WebPageProxy*> pages = m_process->pages(); + ASSERT(pages.contains(this)); + + Vector<RefPtr<APIObject> > result; + result.reserveCapacity(pages.size() - 1); + for (size_t i = 0; i < pages.size(); ++i) { + if (pages[i] != this) + result.append(pages[i]); + } + + return ImmutableArray::adopt(result); +} + void WebPageProxy::initializeLoaderClient(const WKPageLoaderClient* loadClient) { m_loaderClient.initialize(loadClient); @@ -342,10 +366,13 @@ void WebPageProxy::initializeContextMenuClient(const WKPageContextMenuClient* cl void WebPageProxy::reattachToWebProcess() { ASSERT(!isValid()); + ASSERT(m_process); + ASSERT(!m_process->isValid()); + ASSERT(!m_process->isLaunching()); m_isValid = true; - m_process = m_process->context()->relaunchProcessIfNecessary(); + m_process = m_process->context()->createNewWebProcess(); m_process->addExistingWebPage(this, m_pageID); initializeWebPage(); @@ -388,6 +415,8 @@ void WebPageProxy::initializeWebPage() #if ENABLE(PAGE_VISIBILITY_API) m_process->send(Messages::WebPage::SetVisibilityState(m_visibilityState, /* isInitialState */ true), m_pageID); +#elif ENABLE(HIDDEN_PAGE_DOM_TIMER_THROTTLING) + m_process->send(Messages::WebPage::SetVisibilityState(m_isVisible ? PageVisibilityStateVisible : PageVisibilityStateHidden, /* isInitialState */ true), m_pageID); #endif } @@ -448,6 +477,8 @@ void WebPageProxy::close() m_mainFrameIsPinnedToLeftSide = false; m_mainFrameIsPinnedToRightSide = false; + m_mainFrameIsPinnedToTopSide = false; + m_mainFrameIsPinnedToBottomSide = false; m_visibleScrollerThumbRect = IntRect(); @@ -745,18 +776,9 @@ String WebPageProxy::committedURL() const bool WebPageProxy::canShowMIMEType(const String& mimeType) const { - if (MIMETypeRegistry::isSupportedNonImageMIMEType(mimeType)) + if (MIMETypeRegistry::canShowMIMEType(mimeType)) return true; - if (MIMETypeRegistry::isSupportedImageMIMEType(mimeType)) - return true; - - if (MIMETypeRegistry::isSupportedMediaMIMEType(mimeType)) - return true; - - if (mimeType.startsWith("text/", false)) - return !MIMETypeRegistry::isUnsupportedTextMIMEType(mimeType); - String newMimeType = mimeType; PluginModuleInfo plugin = m_process->context()->pluginInfoStore().findPlugin(newMimeType, KURL()); if (!plugin.path.isNull()) @@ -839,6 +861,11 @@ void WebPageProxy::viewStateDidChange(ViewStateFlags flags) // stop the unresponsiveness timer here. m_process->responsivenessTimer()->stop(); } + +#if ENABLE(HIDDEN_PAGE_DOM_TIMER_THROTTLING) && !ENABLE(PAGE_VISIBILITY_API) + PageVisibilityState visibilityState = m_isVisible ? PageVisibilityStateVisible : PageVisibilityStateHidden; + m_process->send(Messages::WebPage::SetVisibilityState(visibilityState, false), m_pageID); +#endif } } @@ -861,7 +888,7 @@ void WebPageProxy::viewStateDidChange(ViewStateFlags flags) #if ENABLE(PAGE_VISIBILITY_API) PageVisibilityState visibilityState = PageVisibilityStateHidden; - if (m_pageClient->isViewVisible()) + if (m_isVisible) visibilityState = PageVisibilityStateVisible; if (visibilityState != m_visibilityState) { @@ -936,6 +963,14 @@ void WebPageProxy::setViewportSize(const IntSize& size) m_process->send(Messages::WebPage::SetViewportSize(size), m_pageID); } + +void WebPageProxy::commitPageTransitionViewport() +{ + if (!isValid()) + return; + + process()->send(Messages::WebPage::CommitPageTransitionViewport(), m_pageID); +} #endif #if ENABLE(DRAG_SUPPORT) @@ -2066,6 +2101,8 @@ void WebPageProxy::didCommitLoadForFrame(uint64_t frameID, const String& mimeTyp // any wheel events and dispatch them to the WKView when necessary. m_mainFrameIsPinnedToLeftSide = true; m_mainFrameIsPinnedToRightSide = true; + m_mainFrameIsPinnedToTopSide = true; + m_mainFrameIsPinnedToBottomSide = true; } m_pageClient->didCommitLoadForMainFrame(frameHasCustomRepresentation); } @@ -2704,41 +2741,6 @@ void WebPageProxy::setMediaVolume(float volume) m_process->send(Messages::WebPage::SetMediaVolume(volume), m_pageID); } -#if PLATFORM(QT) -void WebPageProxy::didFindZoomableArea(const IntPoint& target, const IntRect& area) -{ - m_pageClient->didFindZoomableArea(target, area); -} - -void WebPageProxy::findZoomableAreaForPoint(const IntPoint& point, const IntSize& area) -{ - if (!isValid()) - return; - - m_process->send(Messages::WebPage::FindZoomableAreaForPoint(point, area), m_pageID); -} - -void WebPageProxy::didReceiveMessageFromNavigatorQtObject(const String& contents) -{ - m_pageClient->didReceiveMessageFromNavigatorQtObject(contents); -} - -void WebPageProxy::authenticationRequiredRequest(const String& hostname, const String& realm, const String& prefilledUsername, String& username, String& password) -{ - m_pageClient->handleAuthenticationRequiredRequest(hostname, realm, prefilledUsername, username, password); -} - -void WebPageProxy::proxyAuthenticationRequiredRequest(const String& hostname, uint16_t port, const String& prefilledUsername, String& username, String& password) -{ - m_pageClient->handleProxyAuthenticationRequiredRequest(hostname, port, prefilledUsername, username, password); -} - -void WebPageProxy::certificateVerificationRequest(const String& hostname, bool& ignoreErrors) -{ - m_pageClient->handleCertificateVerificationRequest(hostname, ignoreErrors); -} -#endif // PLATFORM(QT). - #if PLATFORM(QT) || PLATFORM(EFL) void WebPageProxy::handleDownloadRequest(DownloadProxy* download) { @@ -2962,8 +2964,7 @@ NativeWebMouseEvent* WebPageProxy::currentlyProcessedMouseDownEvent() void WebPageProxy::postMessageToInjectedBundle(const String& messageName, APIObject* messageBody) { - // FIXME: We should consider returning false from this function if the messageBody cannot be encoded. - process()->deprecatedSend(InjectedBundleMessage::PostMessageToPage, m_pageID, CoreIPC::In(messageName, WebContextUserMessageEncoder(messageBody))); + process()->send(Messages::WebPage::PostInjectedBundleMessage(messageName, WebContextUserMessageEncoder(messageBody)), m_pageID); } #if PLATFORM(GTK) @@ -3615,6 +3616,8 @@ void WebPageProxy::processDidCrash() m_mainFrameIsPinnedToLeftSide = false; m_mainFrameIsPinnedToRightSide = false; + m_mainFrameIsPinnedToTopSide = false; + m_mainFrameIsPinnedToBottomSide = false; m_visibleScrollerThumbRect = IntRect(); @@ -3863,10 +3866,12 @@ void WebPageProxy::didChangeScrollbarsForMainFrame(bool hasHorizontalScrollbar, m_pageClient->didChangeScrollbarsForMainFrame(); } -void WebPageProxy::didChangeScrollOffsetPinningForMainFrame(bool pinnedToLeftSide, bool pinnedToRightSide) +void WebPageProxy::didChangeScrollOffsetPinningForMainFrame(bool pinnedToLeftSide, bool pinnedToRightSide, bool pinnedToTopSide, bool pinnedToBottomSide) { m_mainFrameIsPinnedToLeftSide = pinnedToLeftSide; m_mainFrameIsPinnedToRightSide = pinnedToRightSide; + m_mainFrameIsPinnedToTopSide = pinnedToTopSide; + m_mainFrameIsPinnedToBottomSide = pinnedToBottomSide; } void WebPageProxy::didChangePageCount(unsigned pageCount) @@ -4103,4 +4108,11 @@ void WebPageProxy::dictationAlternatives(uint64_t dictationContext, Vector<Strin #endif // PLATFORM(MAC) +#if USE(SOUP) +void WebPageProxy::didReceiveURIRequest(String uriString, uint64_t requestID) +{ + m_process->context()->soupRequestManagerProxy()->didReceiveURIRequest(uriString, this, requestID); +} +#endif + } // namespace WebKit diff --git a/Source/WebKit2/UIProcess/WebPageProxy.h b/Source/WebKit2/UIProcess/WebPageProxy.h index 4cbafa3a9..eede6b96f 100644 --- a/Source/WebKit2/UIProcess/WebPageProxy.h +++ b/Source/WebKit2/UIProcess/WebPageProxy.h @@ -356,6 +356,7 @@ public: bool maintainsInactiveSelection() const { return m_maintainsInactiveSelection; } void setMaintainsInactiveSelection(bool); #if PLATFORM(QT) + void didRenderFrame(const WebCore::IntSize& contentsSize, const WebCore::IntRect& coveredRect); void registerApplicationScheme(const String& scheme); void resolveApplicationSchemeRequest(QtNetworkRequestData); void sendApplicationSchemeReply(const QQuickNetworkReply*); @@ -418,6 +419,7 @@ public: #endif #if USE(TILED_BACKING_STORE) void setViewportSize(const WebCore::IntSize&); + void commitPageTransitionViewport(); #endif void handleMouseEvent(const NativeWebMouseEvent&); @@ -494,6 +496,8 @@ public: bool isPinnedToLeftSide() const { return m_mainFrameIsPinnedToLeftSide; } bool isPinnedToRightSide() const { return m_mainFrameIsPinnedToRightSide; } + bool isPinnedToTopSide() const { return m_mainFrameIsPinnedToTopSide; } + bool isPinnedToBottomSide() const { return m_mainFrameIsPinnedToBottomSide; } void setPaginationMode(WebCore::Pagination::Mode); WebCore::Pagination::Mode paginationMode() const { return m_paginationMode; } @@ -621,6 +625,8 @@ public: bool isValid(); + PassRefPtr<ImmutableArray> relatedPages() const; + const String& urlAtProcessExit() const { return m_urlAtProcessExit; } WebFrameProxy::LoadState loadStateAtProcessExit() const { return m_loadStateAtProcessExit; } @@ -717,7 +723,6 @@ public: #if PLATFORM(GTK) && USE(TEXTURE_MAPPER_GL) void setAcceleratedCompositingWindowId(uint64_t nativeWindowId); - void invalidateWidget(); #endif void setSuppressVisibilityUpdates(bool flag) { m_suppressVisibilityUpdates = flag; } @@ -833,7 +838,7 @@ private: void notifyScrollerThumbIsVisibleInRect(const WebCore::IntRect&); void recommendedScrollbarStyleDidChange(int32_t newStyle); void didChangeScrollbarsForMainFrame(bool hasHorizontalScrollbar, bool hasVerticalScrollbar); - void didChangeScrollOffsetPinningForMainFrame(bool pinnedToLeftSide, bool pinnedToRightSide); + void didChangeScrollOffsetPinningForMainFrame(bool pinnedToLeftSide, bool pinnedToRightSide, bool pinnedToTopSide, bool pinnedToBottomSide); void didChangePageCount(unsigned); void didFailToInitializePlugin(const String& mimeType); void didBlockInsecurePluginVersion(const String& mimeType, const String& urlString); @@ -850,6 +855,7 @@ private: #endif #if PLATFORM(QT) + void pageTransitionViewportReady(); void didFindZoomableArea(const WebCore::IntPoint&, const WebCore::IntRect&); #endif @@ -995,6 +1001,10 @@ private: #endif #endif // PLATFORM(MAC) +#if USE(SOUP) + void didReceiveURIRequest(String uriString, uint64_t requestID); +#endif + void clearLoadDependentCallbacks(); void performDragControllerAction(DragControllerAction, WebCore::DragData*, const String& dragStorageName, const SandboxExtension::Handle&, const SandboxExtension::HandleArray&); @@ -1188,6 +1198,8 @@ private: bool m_mainFrameIsPinnedToLeftSide; bool m_mainFrameIsPinnedToRightSide; + bool m_mainFrameIsPinnedToTopSide; + bool m_mainFrameIsPinnedToBottomSide; unsigned m_pageCount; diff --git a/Source/WebKit2/UIProcess/WebPageProxy.messages.in b/Source/WebKit2/UIProcess/WebPageProxy.messages.in index 3a755e1dd..77ac830f2 100644 --- a/Source/WebKit2/UIProcess/WebPageProxy.messages.in +++ b/Source/WebKit2/UIProcess/WebPageProxy.messages.in @@ -29,7 +29,7 @@ messages -> WebPageProxy { RunJavaScriptConfirm(uint64_t frameID, WTF::String message) -> (bool result) RunJavaScriptPrompt(uint64_t frameID, WTF::String message, WTF::String defaultValue) -> (WTF::String result) ShouldInterruptJavaScript() -> (bool shouldInterupt) - MouseDidMoveOverElement(WebKit::WebHitTestResult::Data hitTestResultData, uint32_t modifiers, WebKit::InjectedBundleUserMessageEncoder userData); + MouseDidMoveOverElement(WebKit::WebHitTestResult::Data hitTestResultData, uint32_t modifiers, WebKit::InjectedBundleUserMessageEncoder userData) Variadic UnavailablePluginButtonClicked(uint32_t pluginUnavailabilityReason, WTF::String mimeType, WTF::String url, WTF::String pluginsPageURL) DidChangeViewportProperties(WebCore::ViewportAttributes attributes) DidReceiveEvent(uint32_t type, bool handled) @@ -63,7 +63,7 @@ messages -> WebPageProxy { NotifyScrollerThumbIsVisibleInRect(WebCore::IntRect scrollerThumb) RecommendedScrollbarStyleDidChange(int32_t newStyle) DidChangeScrollbarsForMainFrame(bool hasHorizontalScrollbar, bool hasVerticalScrollbar) - DidChangeScrollOffsetPinningForMainFrame(bool hasHorizontalScrollbar, bool hasVerticalScrollbar) + DidChangeScrollOffsetPinningForMainFrame(bool pinnedToLeftSide, bool pinnedToRightSide, bool pinnedToTopSide, bool pinnedToBottomSide) DidChangePageCount(unsigned pageCount); DidFailToInitializePlugin(WTF::String mimeType) DidBlockInsecurePluginVersion(WTF::String mimeType, WTF::String urlString) @@ -73,6 +73,7 @@ messages -> WebPageProxy { PageDidRequestScroll(WebCore::IntPoint point) #endif #if PLATFORM(QT) + PageTransitionViewportReady() DidFindZoomableArea(WebCore::IntPoint target, WebCore::IntRect area) AuthenticationRequiredRequest(WTF::String hostname, WTF::String realm, WTF::String prefilledUsername) -> (WTF::String username, WTF::String password) CertificateVerificationRequest(WTF::String hostname) -> (bool ignoreErrors) @@ -94,17 +95,17 @@ messages -> WebPageProxy { #endif # Policy messages - DecidePolicyForResponse(uint64_t frameID, WebCore::ResourceResponse response, WebCore::ResourceRequest request, uint64_t listenerID, WebKit::InjectedBundleUserMessageEncoder userData) -> (bool receivedPolicyAction, uint64_t policyAction, uint64_t downloadID) - DecidePolicyForNavigationAction(uint64_t frameID, uint32_t navigationType, uint32_t modifiers, int32_t mouseButton, WebCore::ResourceRequest request, uint64_t listenerID, WebKit::InjectedBundleUserMessageEncoder userData) -> (bool receivedPolicyAction, uint64_t policyAction, uint64_t downloadID) - DecidePolicyForNewWindowAction(uint64_t frameID, uint32_t navigationType, uint32_t modifiers, int32_t mouseButton, WebCore::ResourceRequest request, WTF::String frameName, uint64_t listenerID, WebKit::InjectedBundleUserMessageEncoder userData) - UnableToImplementPolicy(uint64_t frameID, WebCore::ResourceError error, WebKit::InjectedBundleUserMessageEncoder userData) + DecidePolicyForResponse(uint64_t frameID, WebCore::ResourceResponse response, WebCore::ResourceRequest request, uint64_t listenerID, WebKit::InjectedBundleUserMessageEncoder userData) -> (bool receivedPolicyAction, uint64_t policyAction, uint64_t downloadID) Variadic + DecidePolicyForNavigationAction(uint64_t frameID, uint32_t navigationType, uint32_t modifiers, int32_t mouseButton, WebCore::ResourceRequest request, uint64_t listenerID, WebKit::InjectedBundleUserMessageEncoder userData) -> (bool receivedPolicyAction, uint64_t policyAction, uint64_t downloadID) Variadic + DecidePolicyForNewWindowAction(uint64_t frameID, uint32_t navigationType, uint32_t modifiers, int32_t mouseButton, WebCore::ResourceRequest request, WTF::String frameName, uint64_t listenerID, WebKit::InjectedBundleUserMessageEncoder userData) Variadic + UnableToImplementPolicy(uint64_t frameID, WebCore::ResourceError error, WebKit::InjectedBundleUserMessageEncoder userData) Variadic # Intent messages #if ENABLE(WEB_INTENTS) - DidReceiveIntentForFrame(uint64_t frameID, WebKit::IntentData intent, WebKit::InjectedBundleUserMessageEncoder userData) + DidReceiveIntentForFrame(uint64_t frameID, WebKit::IntentData intent, WebKit::InjectedBundleUserMessageEncoder userData) Variadic #endif #if ENABLE(WEB_INTENTS_TAG) - RegisterIntentServiceForFrame(uint64_t frameID, WebKit::IntentServiceInfo serviceInfo, WebKit::InjectedBundleUserMessageEncoder userData); + RegisterIntentServiceForFrame(uint64_t frameID, WebKit::IntentServiceInfo serviceInfo, WebKit::InjectedBundleUserMessageEncoder userData) Variadic #endif # Progress messages @@ -119,23 +120,23 @@ messages -> WebPageProxy { DidRestoreFrameFromPageCache(uint64_t frameID, uint64_t parentFrameID); # Frame load messages - DidCommitLoadForFrame(uint64_t frameID, WTF::String mimeType, bool hasCustomRepresentation, WebKit::PlatformCertificateInfo certificateInfo, WebKit::InjectedBundleUserMessageEncoder userData) - DidFailLoadForFrame(uint64_t frameID, WebCore::ResourceError error, WebKit::InjectedBundleUserMessageEncoder userData) - DidFailProvisionalLoadForFrame(uint64_t frameID, WebCore::ResourceError error, WebKit::InjectedBundleUserMessageEncoder userData) - DidFinishDocumentLoadForFrame(uint64_t frameID, WebKit::InjectedBundleUserMessageEncoder userData) - DidFinishLoadForFrame(uint64_t frameID, WebKit::InjectedBundleUserMessageEncoder userData) - DidFirstLayoutForFrame(uint64_t frameID, WebKit::InjectedBundleUserMessageEncoder userData) - DidFirstVisuallyNonEmptyLayoutForFrame(uint64_t frameID, WebKit::InjectedBundleUserMessageEncoder userData) - DidNewFirstVisuallyNonEmptyLayout(WebKit::InjectedBundleUserMessageEncoder userData) - DidLayout(uint32_t type, WebKit::InjectedBundleUserMessageEncoder userData) - DidReceiveServerRedirectForProvisionalLoadForFrame(uint64_t frameID, WTF::String url, WebKit::InjectedBundleUserMessageEncoder userData) - DidRemoveFrameFromHierarchy(uint64_t frameID, WebKit::InjectedBundleUserMessageEncoder userData) - DidStartProvisionalLoadForFrame(uint64_t frameID, WTF::String url, WTF::String unreachableURL, WebKit::InjectedBundleUserMessageEncoder userData) - DidReceiveTitleForFrame(uint64_t frameID, WTF::String title, WebKit::InjectedBundleUserMessageEncoder userData) - DidDisplayInsecureContentForFrame(uint64_t frameID, WebKit::InjectedBundleUserMessageEncoder userData) - DidRunInsecureContentForFrame(uint64_t frameID, WebKit::InjectedBundleUserMessageEncoder userData) - DidDetectXSSForFrame(uint64_t frameID, WebKit::InjectedBundleUserMessageEncoder userData) - DidSameDocumentNavigationForFrame(uint64_t frameID, uint32_t type, WTF::String url, WebKit::InjectedBundleUserMessageEncoder userData) + DidCommitLoadForFrame(uint64_t frameID, WTF::String mimeType, bool hasCustomRepresentation, WebKit::PlatformCertificateInfo certificateInfo, WebKit::InjectedBundleUserMessageEncoder userData) Variadic + DidFailLoadForFrame(uint64_t frameID, WebCore::ResourceError error, WebKit::InjectedBundleUserMessageEncoder userData) Variadic + DidFailProvisionalLoadForFrame(uint64_t frameID, WebCore::ResourceError error, WebKit::InjectedBundleUserMessageEncoder userData) Variadic + DidFinishDocumentLoadForFrame(uint64_t frameID, WebKit::InjectedBundleUserMessageEncoder userData) Variadic + DidFinishLoadForFrame(uint64_t frameID, WebKit::InjectedBundleUserMessageEncoder userData) Variadic + DidFirstLayoutForFrame(uint64_t frameID, WebKit::InjectedBundleUserMessageEncoder userData) Variadic + DidFirstVisuallyNonEmptyLayoutForFrame(uint64_t frameID, WebKit::InjectedBundleUserMessageEncoder userData) Variadic + DidNewFirstVisuallyNonEmptyLayout(WebKit::InjectedBundleUserMessageEncoder userData) Variadic + DidLayout(uint32_t type, WebKit::InjectedBundleUserMessageEncoder userData) Variadic + DidReceiveServerRedirectForProvisionalLoadForFrame(uint64_t frameID, WTF::String url, WebKit::InjectedBundleUserMessageEncoder userData) Variadic + DidRemoveFrameFromHierarchy(uint64_t frameID, WebKit::InjectedBundleUserMessageEncoder userData) Variadic + DidStartProvisionalLoadForFrame(uint64_t frameID, WTF::String url, WTF::String unreachableURL, WebKit::InjectedBundleUserMessageEncoder userData) Variadic + DidReceiveTitleForFrame(uint64_t frameID, WTF::String title, WebKit::InjectedBundleUserMessageEncoder userData) Variadic + DidDisplayInsecureContentForFrame(uint64_t frameID, WebKit::InjectedBundleUserMessageEncoder userData) Variadic + DidRunInsecureContentForFrame(uint64_t frameID, WebKit::InjectedBundleUserMessageEncoder userData) Variadic + DidDetectXSSForFrame(uint64_t frameID, WebKit::InjectedBundleUserMessageEncoder userData) Variadic + DidSameDocumentNavigationForFrame(uint64_t frameID, uint32_t type, WTF::String url, WebKit::InjectedBundleUserMessageEncoder userData) Variadic FrameDidBecomeFrameSet(uint64_t frameID, bool value) @@ -155,7 +156,7 @@ messages -> WebPageProxy { DidFinishLoadingDataForCustomRepresentation(WTF::String suggestedFilename, CoreIPC::DataReference data) # Forms messages - WillSubmitForm(uint64_t frameID, uint64_t sourceFrameID, WebKit::StringPairVector textFieldValues, uint64_t listenerID, WebKit::InjectedBundleUserMessageEncoder userData) + WillSubmitForm(uint64_t frameID, uint64_t sourceFrameID, WebKit::StringPairVector textFieldValues, uint64_t listenerID, WebKit::InjectedBundleUserMessageEncoder userData) Variadic # Callback messages VoidCallback(uint64_t callbackID) @@ -178,10 +179,6 @@ messages -> WebPageProxy { BindAccessibilityTree(WTF::String plugID) #endif -#if PLATFORM(GTK) && USE(TEXTURE_MAPPER_GL) - InvalidateWidget() -#endif - # BackForward messages BackForwardAddItem(uint64_t itemID) BackForwardGoToItem(uint64_t itemID) -> (WebKit::SandboxExtension::Handle sandboxExtensionHandle) @@ -190,7 +187,7 @@ messages -> WebPageProxy { BackForwardForwardListCount() -> (int32_t count) BackForwardClear() ShouldGoToBackForwardListItem(uint64_t itemID) -> (bool shouldGoToBackForwardListItem) - WillGoToBackForwardListItem(uint64_t itemID, WebKit::InjectedBundleUserMessageEncoder userData) + WillGoToBackForwardListItem(uint64_t itemID, WebKit::InjectedBundleUserMessageEncoder userData) Variadic # Undo/Redo messages RegisterEditCommandForUndo(uint64_t commandID, uint32_t editAction) @@ -222,7 +219,7 @@ messages -> WebPageProxy { #if ENABLE(CONTEXT_MENUS) # ContextMenu messages - ShowContextMenu(WebCore::IntPoint menuLocation, WebKit::WebHitTestResult::Data hitTestResultData, Vector<WebKit::WebContextMenuItemData> items, WebKit::InjectedBundleUserMessageEncoder userData) + ShowContextMenu(WebCore::IntPoint menuLocation, WebKit::WebHitTestResult::Data hitTestResultData, Vector<WebKit::WebContextMenuItemData> items, WebKit::InjectedBundleUserMessageEncoder userData) Variadic #endif # Authentication messages @@ -328,4 +325,9 @@ messages -> WebPageProxy { # Search popup menus SaveRecentSearches(WTF::String name, Vector<String> searchItems) LoadRecentSearches(WTF::String name) -> (Vector<String> result) + +#if USE(SOUP) + # Soup custom URI request messages + DidReceiveURIRequest(WTF::String uriString, uint64_t requestID); +#endif } diff --git a/Source/WebKit2/UIProcess/WebProcessProxy.cpp b/Source/WebKit2/UIProcess/WebProcessProxy.cpp index 579783eed..4114a2851 100644 --- a/Source/WebKit2/UIProcess/WebProcessProxy.cpp +++ b/Source/WebKit2/UIProcess/WebProcessProxy.cpp @@ -46,7 +46,10 @@ #include <wtf/text/WTFString.h> #if PLATFORM(MAC) -#include "BuiltInPDFView.h" +#include "SimplePDFPlugin.h" +#if ENABLE(PDFKIT_PLUGIN) +#include "PDFPlugin.h" +#endif #endif using namespace WebCore; @@ -102,6 +105,16 @@ WebProcessProxy::~WebProcessProxy() } } +WebProcessProxy* WebProcessProxy::fromConnection(CoreIPC::Connection* connection) +{ + ASSERT(connection); + WebConnectionToWebProcess* webConnection = static_cast<WebConnectionToWebProcess*>(connection->client()); + + WebProcessProxy* webProcessProxy = webConnection->webProcessProxy(); + ASSERT(webProcessProxy->connection() == connection); + return webProcessProxy; +} + void WebProcessProxy::connect() { ASSERT(!m_processLauncher); @@ -186,6 +199,13 @@ void WebProcessProxy::removeWebPage(uint64_t pageID) m_pageMap.remove(pageID); } +Vector<WebPageProxy*> WebProcessProxy::pages() const +{ + Vector<WebPageProxy*> result; + copyValuesToVector(m_pageMap, result); + return result; +} + #if ENABLE(WEB_INTENTS) void WebProcessProxy::removeMessagePortChannel(uint64_t channelID) { @@ -253,9 +273,9 @@ bool WebProcessProxy::checkURLReceivedFromWebProcess(const KURL& url) // Items in back/forward list have been already checked. // One case where we don't have sandbox extensions for file URLs in b/f list is if the list has been reinstated after a crash or a browser restart. for (WebBackForwardListItemMap::iterator iter = m_backForwardListItemMap.begin(), end = m_backForwardListItemMap.end(); iter != end; ++iter) { - if (KURL(KURL(), iter->second->url()).fileSystemPath() == path) + if (KURL(KURL(), iter->value->url()).fileSystemPath() == path) return true; - if (KURL(KURL(), iter->second->originalURL()).fileSystemPath() == path) + if (KURL(KURL(), iter->value->originalURL()).fileSystemPath() == path) return true; } @@ -278,15 +298,15 @@ void WebProcessProxy::addBackForwardItem(uint64_t itemID, const String& original WebBackForwardListItemMap::AddResult result = m_backForwardListItemMap.add(itemID, 0); if (result.isNewEntry) { - result.iterator->second = WebBackForwardListItem::create(originalURL, url, title, backForwardData.data(), backForwardData.size(), itemID); + result.iterator->value = WebBackForwardListItem::create(originalURL, url, title, backForwardData.data(), backForwardData.size(), itemID); return; } // Update existing item. - result.iterator->second->setOriginalURL(originalURL); - result.iterator->second->setURL(url); - result.iterator->second->setTitle(title); - result.iterator->second->setBackForwardData(backForwardData.data(), backForwardData.size()); + result.iterator->value->setOriginalURL(originalURL); + result.iterator->value->setURL(url); + result.iterator->value->setTitle(title); + result.iterator->value->setBackForwardData(backForwardData.data(), backForwardData.size()); } void WebProcessProxy::sendDidGetPlugins(uint64_t requestID, PassOwnPtr<Vector<PluginInfo> > pluginInfos) @@ -298,8 +318,12 @@ void WebProcessProxy::sendDidGetPlugins(uint64_t requestID, PassOwnPtr<Vector<Pl #if PLATFORM(MAC) // Add built-in PDF last, so that it's not used when a real plug-in is installed. // NOTE: This has to be done on the main thread as it calls localizedString(). - if (!m_context->omitPDFSupport()) - plugins->append(BuiltInPDFView::pluginInfo()); + if (!m_context->omitPDFSupport()) { +#if ENABLE(PDFKIT_PLUGIN) + plugins->append(PDFPlugin::pluginInfo()); +#endif + plugins->append(SimplePDFPlugin::pluginInfo()); + } #endif send(Messages::WebProcess::DidGetPlugins(requestID, *plugins), 0); @@ -352,11 +376,6 @@ void WebProcessProxy::getPluginProcessConnection(const String& pluginPath, PassR PluginProcessManager::shared().getPluginProcessConnection(m_context->pluginInfoStore(), pluginPath, reply); } -void WebProcessProxy::pluginSyncMessageSendTimedOut(const String& pluginPath) -{ - PluginProcessManager::shared().pluginSyncMessageSendTimedOut(pluginPath); -} - #else void WebProcessProxy::didGetSitesWithPluginData(const Vector<String>& sites, uint64_t callbackID) @@ -373,36 +392,11 @@ void WebProcessProxy::didClearPluginSiteData(uint64_t callbackID) void WebProcessProxy::didReceiveMessage(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::ArgumentDecoder* arguments) { - if (messageID.is<CoreIPC::MessageClassWebProcessProxy>()) { - didReceiveWebProcessProxyMessage(connection, messageID, arguments); + if (m_context->dispatchMessage(connection, messageID, arguments)) return; - } - if (messageID.is<CoreIPC::MessageClassWebContext>() - || messageID.is<CoreIPC::MessageClassWebContextLegacy>() - || messageID.is<CoreIPC::MessageClassDownloadProxy>() - || messageID.is<CoreIPC::MessageClassWebApplicationCacheManagerProxy>() -#if ENABLE(BATTERY_STATUS) - || messageID.is<CoreIPC::MessageClassWebBatteryManagerProxy>() -#endif - || messageID.is<CoreIPC::MessageClassWebCookieManagerProxy>() - || messageID.is<CoreIPC::MessageClassWebDatabaseManagerProxy>() - || messageID.is<CoreIPC::MessageClassWebGeolocationManagerProxy>() - || messageID.is<CoreIPC::MessageClassWebIconDatabase>() - || messageID.is<CoreIPC::MessageClassWebKeyValueStorageManagerProxy>() - || messageID.is<CoreIPC::MessageClassWebMediaCacheManagerProxy>() -#if ENABLE(NETWORK_INFO) - || messageID.is<CoreIPC::MessageClassWebNetworkInfoManagerProxy>() -#endif - || messageID.is<CoreIPC::MessageClassWebNotificationManagerProxy>() -#if USE(SOUP) - || messageID.is<CoreIPC::MessageClassWebSoupRequestManagerProxy>() -#endif -#if ENABLE(VIBRATION) - || messageID.is<CoreIPC::MessageClassWebVibrationProxy>() -#endif - || messageID.is<CoreIPC::MessageClassWebResourceCacheManagerProxy>()) { - m_context->didReceiveMessage(this, messageID, arguments); + if (messageID.is<CoreIPC::MessageClassWebProcessProxy>()) { + didReceiveWebProcessProxyMessage(connection, messageID, arguments); return; } @@ -419,17 +413,11 @@ void WebProcessProxy::didReceiveMessage(CoreIPC::Connection* connection, CoreIPC void WebProcessProxy::didReceiveSyncMessage(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::ArgumentDecoder* arguments, OwnPtr<CoreIPC::ArgumentEncoder>& reply) { - if (messageID.is<CoreIPC::MessageClassWebProcessProxy>()) { - didReceiveSyncWebProcessProxyMessage(connection, messageID, arguments, reply); + if (m_context->dispatchSyncMessage(connection, messageID, arguments, reply)) return; - } - if (messageID.is<CoreIPC::MessageClassWebContext>() || messageID.is<CoreIPC::MessageClassWebContextLegacy>() -#if ENABLE(NETWORK_INFO) - || messageID.is<CoreIPC::MessageClassWebNetworkInfoManagerProxy>() -#endif - || messageID.is<CoreIPC::MessageClassDownloadProxy>() || messageID.is<CoreIPC::MessageClassWebIconDatabase>()) { - m_context->didReceiveSyncMessage(this, messageID, arguments, reply); + if (messageID.is<CoreIPC::MessageClassWebProcessProxy>()) { + didReceiveSyncWebProcessProxyMessage(connection, messageID, arguments, reply); return; } @@ -473,10 +461,6 @@ void WebProcessProxy::didReceiveInvalidMessage(CoreIPC::Connection*, CoreIPC::Me terminate(); } -void WebProcessProxy::syncMessageSendTimedOut(CoreIPC::Connection*) -{ -} - void WebProcessProxy::didBecomeUnresponsive(ResponsivenessTimer*) { Vector<RefPtr<WebPageProxy> > pages; @@ -565,7 +549,7 @@ size_t WebProcessProxy::frameCountInPage(WebPageProxy* page) const { size_t result = 0; for (HashMap<uint64_t, RefPtr<WebFrameProxy> >::const_iterator iter = m_frameMap.begin(); iter != m_frameMap.end(); ++iter) { - if (iter->second->page() == page) + if (iter->value->page() == page) ++result; } return result; diff --git a/Source/WebKit2/UIProcess/WebProcessProxy.h b/Source/WebKit2/UIProcess/WebProcessProxy.h index c4fd3c929..45a9524a9 100644 --- a/Source/WebKit2/UIProcess/WebProcessProxy.h +++ b/Source/WebKit2/UIProcess/WebProcessProxy.h @@ -63,6 +63,8 @@ public: static PassRefPtr<WebProcessProxy> create(PassRefPtr<WebContext>); ~WebProcessProxy(); + static WebProcessProxy* fromConnection(CoreIPC::Connection*); + void terminate(); template<typename T> bool send(const T& message, uint64_t destinationID, unsigned messageSendFlags = 0); @@ -84,6 +86,7 @@ public: PassRefPtr<WebPageProxy> createWebPage(PageClient*, WebContext*, WebPageGroup*); void addExistingWebPage(WebPageProxy*, uint64_t pageID); void removeWebPage(uint64_t pageID); + Vector<WebPageProxy*> pages() const; #if ENABLE(WEB_INTENTS) void removeMessagePortChannel(uint64_t channelID); @@ -142,7 +145,6 @@ private: void getPluginPath(const String& mimeType, const String& urlString, String& pluginPath, bool& blocked); #if ENABLE(PLUGIN_PROCESS) void getPluginProcessConnection(const String& pluginPath, PassRefPtr<Messages::WebProcessProxy::GetPluginProcessConnection::DelayedReply>); - void pluginSyncMessageSendTimedOut(const String& pluginPath); #else void didGetSitesWithPluginData(const Vector<String>& sites, uint64_t callbackID); void didClearPluginSiteData(uint64_t callbackID); @@ -162,7 +164,6 @@ private: virtual void didReceiveSyncMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*, OwnPtr<CoreIPC::ArgumentEncoder>&); virtual void didClose(CoreIPC::Connection*); virtual void didReceiveInvalidMessage(CoreIPC::Connection*, CoreIPC::MessageID); - virtual void syncMessageSendTimedOut(CoreIPC::Connection*); #if PLATFORM(WIN) virtual Vector<HWND> windowsToReceiveSentMessagesWhileWaitingForSyncReply(); #endif diff --git a/Source/WebKit2/UIProcess/WebProcessProxy.messages.in b/Source/WebKit2/UIProcess/WebProcessProxy.messages.in index 2c3d58b93..6df22ca86 100644 --- a/Source/WebKit2/UIProcess/WebProcessProxy.messages.in +++ b/Source/WebKit2/UIProcess/WebProcessProxy.messages.in @@ -38,7 +38,6 @@ messages -> WebProcessProxy { GetPluginPath(WTF::String mimeType, WTF::String urlString) -> (WTF::String pluginPath, bool blocked) #if ENABLE(PLUGIN_PROCESS) GetPluginProcessConnection(WTF::String pluginPath) -> (CoreIPC::Attachment connectionHandle, bool supportsAsynchronousInitialization) Delayed - PluginSyncMessageSendTimedOut(WTF::String pluginPath) #endif #if !ENABLE(PLUGIN_PROCESS) void DidGetSitesWithPluginData(Vector<WTF::String> sites, uint64_t callbackID) diff --git a/Source/WebKit2/UIProcess/WebResourceCacheManagerProxy.cpp b/Source/WebKit2/UIProcess/WebResourceCacheManagerProxy.cpp index 60bf1a1ba..3c2980797 100644 --- a/Source/WebKit2/UIProcess/WebResourceCacheManagerProxy.cpp +++ b/Source/WebKit2/UIProcess/WebResourceCacheManagerProxy.cpp @@ -45,6 +45,7 @@ PassRefPtr<WebResourceCacheManagerProxy> WebResourceCacheManagerProxy::create(We WebResourceCacheManagerProxy::WebResourceCacheManagerProxy(WebContext* webContext) : m_webContext(webContext) { + m_webContext->addMessageReceiver(CoreIPC::MessageClassWebResourceCacheManagerProxy, this); } WebResourceCacheManagerProxy::~WebResourceCacheManagerProxy() @@ -64,7 +65,6 @@ bool WebResourceCacheManagerProxy::shouldTerminate(WebProcessProxy*) const void WebResourceCacheManagerProxy::getCacheOrigins(PassRefPtr<ArrayCallback> prpCallback) { RefPtr<ArrayCallback> callback = prpCallback; - m_webContext->relaunchProcessIfNecessary(); uint64_t callbackID = callback->callbackID(); m_arrayCallbacks.set(callbackID, callback.release()); @@ -95,4 +95,9 @@ void WebResourceCacheManagerProxy::clearCacheForAllOrigins(ResourceCachesToClear m_webContext->sendToAllProcessesRelaunchingThemIfNecessary(Messages::WebResourceCacheManager::ClearCacheForAllOrigins(cachesToClear)); } +void WebResourceCacheManagerProxy::didReceiveMessage(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::ArgumentDecoder* arguments) +{ + didReceiveWebResourceCacheManagerProxyMessage(connection, messageID, arguments); +} + } // namespace WebKit diff --git a/Source/WebKit2/UIProcess/WebResourceCacheManagerProxy.h b/Source/WebKit2/UIProcess/WebResourceCacheManagerProxy.h index f0c7bb549..9e59b641f 100644 --- a/Source/WebKit2/UIProcess/WebResourceCacheManagerProxy.h +++ b/Source/WebKit2/UIProcess/WebResourceCacheManagerProxy.h @@ -29,16 +29,11 @@ #include "APIObject.h" #include "Arguments.h" #include "GenericCallback.h" +#include "MessageReceiver.h" #include "ResourceCachesToClear.h" #include <wtf/HashMap.h> #include <wtf/PassRefPtr.h> -namespace CoreIPC { -class ArgumentDecoder; -class Connection; -class MessageID; -} - namespace WebKit { struct SecurityOriginData; @@ -48,7 +43,7 @@ class WebSecurityOrigin; typedef GenericCallback<WKArrayRef> ArrayCallback; -class WebResourceCacheManagerProxy : public APIObject { +class WebResourceCacheManagerProxy : public APIObject, private CoreIPC::MessageReceiver { public: static const Type APIType = TypeCacheManager; @@ -62,8 +57,6 @@ public: void clearCacheForOrigin(WebSecurityOrigin*, ResourceCachesToClear); void clearCacheForAllOrigins(ResourceCachesToClear); - void didReceiveWebResourceCacheManagerProxyMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); - bool shouldTerminate(WebProcessProxy*) const; private: @@ -71,6 +64,10 @@ private: virtual Type type() const { return APIType; } + // CoreIPC::MessageReceiver + virtual void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*) OVERRIDE; + void didReceiveWebResourceCacheManagerProxyMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); + // Message handlers. void didGetCacheOrigins(const Vector<SecurityOriginData>& originIdentifiers, uint64_t callbackID); diff --git a/Source/WebKit2/UIProcess/WebVibrationProxy.cpp b/Source/WebKit2/UIProcess/WebVibrationProxy.cpp index 9a5f7f264..0590f30cc 100644 --- a/Source/WebKit2/UIProcess/WebVibrationProxy.cpp +++ b/Source/WebKit2/UIProcess/WebVibrationProxy.cpp @@ -40,6 +40,7 @@ PassRefPtr<WebVibrationProxy> WebVibrationProxy::create(WebContext* context) WebVibrationProxy::WebVibrationProxy(WebContext* context) : m_context(context) { + m_context->addMessageReceiver(CoreIPC::MessageClassWebVibrationProxy, this); } WebVibrationProxy::~WebVibrationProxy() diff --git a/Source/WebKit2/UIProcess/WebVibrationProxy.h b/Source/WebKit2/UIProcess/WebVibrationProxy.h index 4e69e96fa..676d3a497 100644 --- a/Source/WebKit2/UIProcess/WebVibrationProxy.h +++ b/Source/WebKit2/UIProcess/WebVibrationProxy.h @@ -29,20 +29,15 @@ #if ENABLE(VIBRATION) #include "APIObject.h" -#include "MessageID.h" +#include "MessageReceiver.h" #include "WebVibrationProvider.h" #include <wtf/Forward.h> -namespace CoreIPC { -class ArgumentDecoder; -class Connection; -} - namespace WebKit { class WebContext; -class WebVibrationProxy : public APIObject { +class WebVibrationProxy : public APIObject, private CoreIPC::MessageReceiver { public: static const Type APIType = TypeVibration; @@ -54,13 +49,14 @@ public: void initializeProvider(const WKVibrationProvider*); - void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); - private: explicit WebVibrationProxy(WebContext*); virtual Type type() const { return APIType; } + // CoreIPC::MessageReceiver + virtual void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*) OVERRIDE; + // Implemented in generated WebVibrationProxyMessageReceiver.cpp void didReceiveWebVibrationProxyMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); diff --git a/Source/WebKit2/UIProcess/efl/WebInspectorProxyEfl.cpp b/Source/WebKit2/UIProcess/efl/WebInspectorProxyEfl.cpp index 538356610..7f69c2efb 100644 --- a/Source/WebKit2/UIProcess/efl/WebInspectorProxyEfl.cpp +++ b/Source/WebKit2/UIProcess/efl/WebInspectorProxyEfl.cpp @@ -29,6 +29,7 @@ #if ENABLE(INSPECTOR) #include "WebProcessProxy.h" +#include "ewk_settings.h" #include "ewk_view.h" #include "ewk_view_private.h" #include <WebCore/NotImplemented.h> @@ -38,22 +39,73 @@ namespace WebKit { +static void resizeInspectorWindow(Ecore_Evas* inspectorWindow) +{ + Evas_Object* inspectorView = evas_object_name_find(ecore_evas_get(inspectorWindow), "inspector"); + if (!inspectorView) + return; + + int width, height; + ecore_evas_geometry_get(inspectorWindow, 0, 0, &width, &height); + + evas_object_move(inspectorView, 0, 0); + evas_object_resize(inspectorView, width, height); +} + +static void destroyInspectorWindow(Ecore_Evas* inspectorWindow) +{ + Evas_Object* inspectorView = evas_object_name_find(ecore_evas_get(inspectorWindow), "inspector"); + if (inspectorView) + evas_object_smart_callback_call(inspectorView, "inspector,view,close", 0); +} + +static void closeInspectorWindow(void* userData, Evas_Object*, void*) +{ + WebInspectorProxy* inspectorProxy = static_cast<WebInspectorProxy*>(userData); + + inspectorProxy->close(); +} + +void WebInspectorProxy::createInspectorWindow() +{ + ecore_evas_title_set(m_inspectorWindow, "Web Inspector"); + ecore_evas_callback_resize_set(m_inspectorWindow, resizeInspectorWindow); + ecore_evas_callback_delete_request_set(m_inspectorWindow, destroyInspectorWindow); + ecore_evas_show(m_inspectorWindow); + + evas_object_name_set(m_inspectorView, "inspector"); + evas_object_move(m_inspectorView, 0, 0); + evas_object_resize(m_inspectorView, initialWindowWidth, initialWindowHeight); + evas_object_show(m_inspectorView); + + evas_object_focus_set(m_inspectorView, true); +} + WebPageProxy* WebInspectorProxy::platformCreateInspectorPage() { ASSERT(m_page); - m_inspectorWindow = ecore_evas_buffer_new(initialWindowWidth, initialWindowHeight); + m_inspectorWindow = ecore_evas_new(0, 0, 0, initialWindowWidth, initialWindowHeight, 0); if (!m_inspectorWindow) return 0; m_inspectorView = ewk_view_base_add(ecore_evas_get(m_inspectorWindow), toAPI(page()->process()->context()), toAPI(inspectorPageGroup())); ewk_view_theme_set(m_inspectorView, TEST_THEME_DIR"/default.edj"); + + Ewk_Settings* settings = ewk_view_settings_get(m_inspectorView); + ewk_settings_file_access_from_file_urls_allowed_set(settings, true); + return ewk_view_page_get(m_inspectorView); } void WebInspectorProxy::platformOpen() { - notImplemented(); + if (m_isAttached) + platformAttach(); + else + createInspectorWindow(); + + evas_object_smart_callback_add(m_inspectorView, "inspector,view,close", closeInspectorWindow, this); } void WebInspectorProxy::platformDidClose() diff --git a/Source/WebKit2/UIProcess/efl/WebPageProxyEfl.cpp b/Source/WebKit2/UIProcess/efl/WebPageProxyEfl.cpp index 2a3b3078d..8981ceeb1 100644 --- a/Source/WebKit2/UIProcess/efl/WebPageProxyEfl.cpp +++ b/Source/WebKit2/UIProcess/efl/WebPageProxyEfl.cpp @@ -83,4 +83,14 @@ void WebPageProxy::setThemePath(const String& themePath) process()->send(Messages::WebPage::SetThemePath(themePath), m_pageID, 0); } +void WebPageProxy::createPluginContainer(uint64_t&) +{ + notImplemented(); +} + +void WebPageProxy::windowedPluginGeometryDidChange(const WebCore::IntRect&, const WebCore::IntRect&, uint64_t) +{ + notImplemented(); +} + } // namespace WebKit diff --git a/Source/WebKit2/UIProcess/gtk/WebContextGtk.cpp b/Source/WebKit2/UIProcess/gtk/WebContextGtk.cpp index 71c7bbe3c..d35aeff60 100644 --- a/Source/WebKit2/UIProcess/gtk/WebContextGtk.cpp +++ b/Source/WebKit2/UIProcess/gtk/WebContextGtk.cpp @@ -53,8 +53,8 @@ String WebContext::platformDefaultDatabaseDirectory() const String WebContext::platformDefaultIconDatabasePath() const { - // FIXME: Implement. - return WTF::String(); + GOwnPtr<gchar> databaseDirectory(g_build_filename(g_get_user_data_dir(), "webkitgtk", "icondatabase", NULL)); + return WebCore::filenameToString(databaseDirectory.get()); } String WebContext::platformDefaultLocalStorageDirectory() const diff --git a/Source/WebKit2/UIProcess/gtk/WebPageProxyGtk.cpp b/Source/WebKit2/UIProcess/gtk/WebPageProxyGtk.cpp index 80881bfe7..6b01bb027 100644 --- a/Source/WebKit2/UIProcess/gtk/WebPageProxyGtk.cpp +++ b/Source/WebKit2/UIProcess/gtk/WebPageProxyGtk.cpp @@ -114,11 +114,6 @@ void WebPageProxy::setAcceleratedCompositingWindowId(uint64_t nativeWindowId) { process()->send(Messages::WebPage::SetAcceleratedCompositingWindowId(nativeWindowId), m_pageID); } - -void WebPageProxy::invalidateWidget() -{ - webkitWebViewBaseQueueDrawOfAcceleratedCompositingResults(WEBKIT_WEB_VIEW_BASE(static_cast<PageClientImpl*>(m_pageClient)->viewWidget())); -} #endif } // namespace WebKit diff --git a/Source/WebKit2/UIProcess/mac/WebContextMac.mm b/Source/WebKit2/UIProcess/mac/WebContextMac.mm index 68c8e1125..bbb981c9c 100644 --- a/Source/WebKit2/UIProcess/mac/WebContextMac.mm +++ b/Source/WebKit2/UIProcess/mac/WebContextMac.mm @@ -77,12 +77,6 @@ void WebContext::platformInitializeWebProcess(WebProcessCreationParameters& para { parameters.presenterApplicationPid = getpid(); - if (!omitPDFSupport()) { - // We want to use a PDF view in the UI process for PDF MIME types. - HashSet<String, CaseFoldingHash> mimeType = pdfAndPostScriptMIMETypes(); - parameters.mimeTypesWithCustomRepresentation.appendRange(mimeType.begin(), mimeType.end()); - } - parameters.parentProcessName = [[NSProcessInfo processInfo] processName]; RetainPtr<CFStringRef> cachePath(AdoptCF, WKCopyFoundationCacheDirectory()); @@ -100,10 +94,7 @@ void WebContext::platformInitializeWebProcess(WebProcessCreationParameters& para #if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1090 parameters.shouldForceScreenFontSubstitution = [[NSUserDefaults standardUserDefaults] boolForKey:@"NSFontDefaultScreenFontSubstitutionEnabled"]; #endif - -#if ENABLE(PLUGIN_PROCESS) - parameters.disablePluginProcessMessageTimeout = [[NSUserDefaults standardUserDefaults] boolForKey:@"WebKitDisablePluginProcessMessageTimeout"]; -#endif + parameters.shouldEnableKerningAndLigaturesByDefault = [[NSUserDefaults standardUserDefaults] boolForKey:@"WebKitKerningAndLigaturesEnabledByDefault"]; #if USE(ACCELERATED_COMPOSITING) && HAVE(HOSTED_CORE_ANIMATION) #if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1070 diff --git a/Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm b/Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm index eb442fde5..530a2f587 100644 --- a/Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm +++ b/Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm @@ -96,7 +96,7 @@ static const CGFloat windowContentBorderThickness = 55; // depend on this for enforcing the height constraints, so a small delay isn't terrible. Most // of the time the views will already have the correct frames because of autoresizing masks. - dispatch_after(DISPATCH_TIME_NOW, dispatch_get_current_queue(), ^{ + dispatch_after(DISPATCH_TIME_NOW, dispatch_get_main_queue(), ^{ if (!_inspectorProxy) return; static_cast<WebInspectorProxy*>(_inspectorProxy)->inspectedViewFrameDidChange(); diff --git a/Source/WebKit2/UIProcess/mac/WebProcessProxyMac.mm b/Source/WebKit2/UIProcess/mac/WebProcessProxyMac.mm index 73f3ddc02..a182faa42 100644 --- a/Source/WebKit2/UIProcess/mac/WebProcessProxyMac.mm +++ b/Source/WebKit2/UIProcess/mac/WebProcessProxyMac.mm @@ -149,6 +149,20 @@ bool WebProcessProxy::fullKeyboardAccessEnabled() return [WKFullKeyboardAccessWatcher fullKeyboardAccessEnabled]; } +#if HAVE(XPC) +static bool shouldUseXPC() +{ + if (id value = [[NSUserDefaults standardUserDefaults] objectForKey:@"WebKit2UseXPCServiceForWebProcess"]) + return [value boolValue]; + +#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1090 + return true; +#else + return false; +#endif +} +#endif + void WebProcessProxy::platformConnect(ProcessLauncher::LaunchOptions& launchOptions) { // We want the web process to match the architecture of the UI process. @@ -156,7 +170,7 @@ void WebProcessProxy::platformConnect(ProcessLauncher::LaunchOptions& launchOpti launchOptions.executableHeap = false; #if HAVE(XPC) - launchOptions.useXPC = [[NSUserDefaults standardUserDefaults] boolForKey:@"WebKit2UseXPCServiceForWebProcess"]; + launchOptions.useXPC = shouldUseXPC(); #endif } diff --git a/Source/WebKit2/UIProcess/qt/PageViewportControllerClientQt.cpp b/Source/WebKit2/UIProcess/qt/PageViewportControllerClientQt.cpp index 9e2531f57..cbc26e68b 100644 --- a/Source/WebKit2/UIProcess/qt/PageViewportControllerClientQt.cpp +++ b/Source/WebKit2/UIProcess/qt/PageViewportControllerClientQt.cpp @@ -322,8 +322,6 @@ void PageViewportControllerClientQt::setContentsScale(float localScale, bool tre setContentRectVisiblePositionAtScale(QPointF(), localScale); } else scaleContent(localScale); - - updateViewportController(); } void PageViewportControllerClientQt::setContentsRectToNearestValidBounds() @@ -335,6 +333,7 @@ void PageViewportControllerClientQt::setContentsRectToNearestValidBounds() void PageViewportControllerClientQt::didResumeContent() { + // Make sure that tiles all around the viewport will be requested. updateViewportController(); } @@ -468,8 +467,10 @@ void PageViewportControllerClientQt::pinchGestureCancelled() m_scaleUpdateDeferrer.reset(); } -void PageViewportControllerClientQt::didChangeContentsSize() +void PageViewportControllerClientQt::didChangeContentsSize(const IntSize& newSize) { + m_pageItem->setContentsSize(QSizeF(newSize)); + // Emit for testing purposes, so that it can be verified that // we didn't do scale adjustment. emit m_viewportItem->experimental()->test()->contentsScaleCommitted(); @@ -492,18 +493,14 @@ void PageViewportControllerClientQt::didChangeVisibleContents() void PageViewportControllerClientQt::didChangeViewportAttributes() { - // Make sure we apply the new initial scale when deferring ends. - ViewportUpdateDeferrer guard(m_controller); - emit m_viewportItem->experimental()->test()->devicePixelRatioChanged(); emit m_viewportItem->experimental()->test()->viewportChanged(); } -void PageViewportControllerClientQt::updateViewportController(const QPointF& trajectory, qreal scale) +void PageViewportControllerClientQt::updateViewportController(const QPointF& trajectory) { FloatPoint viewportPos = m_viewportItem->mapToWebContent(QPointF()); - float viewportScale = (scale < 0) ? m_pageItem->contentsScale() : scale; - m_controller->didChangeContentsVisibility(viewportPos, viewportScale, trajectory); + m_controller->didChangeContentsVisibility(viewportPos, m_pageItem->contentsScale(), trajectory); } void PageViewportControllerClientQt::scaleContent(qreal itemScale, const QPointF& centerInCSSCoordinates) diff --git a/Source/WebKit2/UIProcess/qt/PageViewportControllerClientQt.h b/Source/WebKit2/UIProcess/qt/PageViewportControllerClientQt.h index bd0e1731b..7c5ceea58 100644 --- a/Source/WebKit2/UIProcess/qt/PageViewportControllerClientQt.h +++ b/Source/WebKit2/UIProcess/qt/PageViewportControllerClientQt.h @@ -51,7 +51,7 @@ public: virtual void setContentsScale(float scale, bool treatAsInitialValue); virtual void didResumeContent(); - virtual void didChangeContentsSize(); + virtual void didChangeContentsSize(const WebCore::IntSize&); virtual void didChangeVisibleContents(); virtual void didChangeViewportAttributes(); @@ -124,7 +124,7 @@ private: QRectF nearestValidVisibleContentsRect() const; void setContentsRectToNearestValidBounds(); - void updateViewportController(const QPointF& trajectory = QPointF(), qreal scale = -1); + void updateViewportController(const QPointF& trajectory = QPointF()); void setContentRectVisiblePositionAtScale(const QPointF& location, qreal itemScale); void animateContentRectVisible(const QRectF& contentRect); void scaleContent(qreal itemScale, const QPointF& centerInCSSCoordinates = QPointF()); diff --git a/Source/WebKit2/UIProcess/qt/QtPageClient.cpp b/Source/WebKit2/UIProcess/qt/QtPageClient.cpp index d5a5f7ece..7737f6529 100644 --- a/Source/WebKit2/UIProcess/qt/QtPageClient.cpp +++ b/Source/WebKit2/UIProcess/qt/QtPageClient.cpp @@ -73,6 +73,16 @@ void QtPageClient::setViewNeedsDisplay(const WebCore::IntRect& rect) QQuickWebViewPrivate::get(m_webView)->setNeedsDisplay(); } +void QtPageClient::didRenderFrame(const WebCore::IntSize& contentsSize, const WebCore::IntRect& coveredRect) +{ + // The viewport has to be notified first so that the viewport position + // is adjusted before the loadVisuallyCommitted() signal. + PageViewportController* pvc = QQuickWebViewPrivate::get(m_webView)->viewportController(); + if (pvc) + pvc->didRenderFrame(contentsSize, coveredRect); + QQuickWebViewPrivate::get(m_webView)->didRenderFrame(); +} + void QtPageClient::pageDidRequestScroll(const IntPoint& pos) { QQuickWebViewPrivate::get(m_webView)->pageDidRequestScroll(pos); @@ -90,7 +100,9 @@ void QtPageClient::didRelaunchProcess() void QtPageClient::didChangeContentsSize(const IntSize& newSize) { - QQuickWebViewPrivate::get(m_webView)->didChangeContentsSize(newSize); + PageViewportController* pvc = QQuickWebViewPrivate::get(m_webView)->viewportController(); + if (pvc) + pvc->didChangeContentsSize(newSize); } void QtPageClient::didChangeViewportProperties(const WebCore::ViewportAttributes& attr) @@ -220,6 +232,13 @@ void QtPageClient::flashBackingStoreUpdates(const Vector<IntRect>&) notImplemented(); } +void QtPageClient::pageTransitionViewportReady() +{ + PageViewportController* pvc = QQuickWebViewPrivate::get(m_webView)->viewportController(); + if (pvc) + pvc->pageTransitionViewportReady(); +} + void QtPageClient::didFindZoomableArea(const IntPoint& target, const IntRect& area) { ASSERT(m_eventHandler); diff --git a/Source/WebKit2/UIProcess/qt/QtPageClient.h b/Source/WebKit2/UIProcess/qt/QtPageClient.h index 2e367570a..e493ce8ad 100644 --- a/Source/WebKit2/UIProcess/qt/QtPageClient.h +++ b/Source/WebKit2/UIProcess/qt/QtPageClient.h @@ -43,6 +43,7 @@ public: // QQuickWebView. virtual void setViewNeedsDisplay(const WebCore::IntRect&); + virtual void didRenderFrame(const WebCore::IntSize& contentsSize, const WebCore::IntRect& coveredRect); virtual WebCore::IntSize viewSize(); virtual bool isViewFocused(); virtual bool isViewVisible(); @@ -99,6 +100,7 @@ public: virtual void flashBackingStoreUpdates(const Vector<WebCore::IntRect>& updateRects); virtual void findStringInCustomRepresentation(const String&, WebKit::FindOptions, unsigned maxMatchCount) { } virtual void countStringMatchesInCustomRepresentation(const String&, WebKit::FindOptions, unsigned maxMatchCount) { } + virtual void pageTransitionViewportReady(); virtual void didFindZoomableArea(const WebCore::IntPoint&, const WebCore::IntRect&); virtual void updateTextInputState(); virtual void doneWithGestureEvent(const WebGestureEvent&, bool wasEventHandled); diff --git a/Source/WebKit2/UIProcess/qt/QtPanGestureRecognizer.cpp b/Source/WebKit2/UIProcess/qt/QtPanGestureRecognizer.cpp index 0aaa06690..a9c4e7a00 100644 --- a/Source/WebKit2/UIProcess/qt/QtPanGestureRecognizer.cpp +++ b/Source/WebKit2/UIProcess/qt/QtPanGestureRecognizer.cpp @@ -38,9 +38,6 @@ QtPanGestureRecognizer::QtPanGestureRecognizer(QtWebPageEventHandler* eventHandl bool QtPanGestureRecognizer::update(const QTouchEvent::TouchPoint& touchPoint, qint64 eventTimestampMillis) { - if (!viewportController()) - return false; - m_lastPosition = touchPoint.pos(); m_lastEventTimestampMillis = eventTimestampMillis; @@ -48,7 +45,8 @@ bool QtPanGestureRecognizer::update(const QTouchEvent::TouchPoint& touchPoint, q case NoGesture: m_state = GestureRecognitionStarted; m_firstScreenPosition = touchPoint.screenPos(); - viewportController()->cancelScrollAnimation(); + if (viewportController()) + viewportController()->cancelScrollAnimation(); return false; case GestureRecognitionStarted: { // To start the gesture, the delta from start in screen coordinates @@ -58,11 +56,13 @@ bool QtPanGestureRecognizer::update(const QTouchEvent::TouchPoint& touchPoint, q return false; m_state = GestureRecognized; - viewportController()->panGestureStarted(touchPoint.pos(), eventTimestampMillis); + if (viewportController()) + viewportController()->panGestureStarted(touchPoint.pos(), eventTimestampMillis); return true; } case GestureRecognized: - viewportController()->panGestureRequestUpdate(touchPoint.pos(), eventTimestampMillis); + if (viewportController()) + viewportController()->panGestureRequestUpdate(touchPoint.pos(), eventTimestampMillis); return true; default: ASSERT_NOT_REACHED(); @@ -75,8 +75,8 @@ void QtPanGestureRecognizer::finish(const QTouchEvent::TouchPoint& touchPoint, q if (m_state == NoGesture) return; - ASSERT(viewportController()); - viewportController()->panGestureEnded(touchPoint.pos(), eventTimestampMillis); + if (viewportController()) + viewportController()->panGestureEnded(touchPoint.pos(), eventTimestampMillis); reset(); } @@ -85,8 +85,10 @@ void QtPanGestureRecognizer::cancel() if (m_state == NoGesture) return; - viewportController()->panGestureEnded(m_lastPosition, m_lastEventTimestampMillis); - viewportController()->panGestureCancelled(); + if (viewportController()) { + viewportController()->panGestureEnded(m_lastPosition, m_lastEventTimestampMillis); + viewportController()->panGestureCancelled(); + } reset(); } diff --git a/Source/WebKit2/UIProcess/qt/QtPinchGestureRecognizer.cpp b/Source/WebKit2/UIProcess/qt/QtPinchGestureRecognizer.cpp index a10367a40..7fa58014f 100644 --- a/Source/WebKit2/UIProcess/qt/QtPinchGestureRecognizer.cpp +++ b/Source/WebKit2/UIProcess/qt/QtPinchGestureRecognizer.cpp @@ -48,7 +48,6 @@ QtPinchGestureRecognizer::QtPinchGestureRecognizer(QtWebPageEventHandler* eventH bool QtPinchGestureRecognizer::update(const QTouchEvent::TouchPoint& point1, const QTouchEvent::TouchPoint& point2) { - ASSERT(viewportController()); const qreal currentFingerDistance = QLineF(point1.screenPos(), point2.screenPos()).length(); switch (m_state) { case NoGesture: @@ -60,7 +59,8 @@ bool QtPinchGestureRecognizer::update(const QTouchEvent::TouchPoint& point1, con if (pinchDistance < pinchInitialTriggerDistanceThreshold) return false; m_state = GestureRecognized; - viewportController()->pinchGestureStarted(computePinchCenter(point1, point2)); + if (viewportController()) + viewportController()->pinchGestureStarted(computePinchCenter(point1, point2)); // We reset the initial span distance to the current distance of the // touch points in order to avoid the jump caused by the events which @@ -72,7 +72,8 @@ bool QtPinchGestureRecognizer::update(const QTouchEvent::TouchPoint& point1, con case GestureRecognized: const qreal totalScaleFactor = currentFingerDistance / m_initialFingerDistance; const QPointF touchCenterInViewCoordinates = computePinchCenter(point1, point2); - viewportController()->pinchGestureRequestUpdate(touchCenterInViewCoordinates, totalScaleFactor); + if (viewportController()) + viewportController()->pinchGestureRequestUpdate(touchCenterInViewCoordinates, totalScaleFactor); return true; break; } @@ -86,8 +87,8 @@ void QtPinchGestureRecognizer::finish() if (m_state == NoGesture) return; - ASSERT(viewportController()); - viewportController()->pinchGestureEnded(); + if (viewportController()) + viewportController()->pinchGestureEnded(); reset(); } @@ -96,8 +97,8 @@ void QtPinchGestureRecognizer::cancel() if (m_state == NoGesture) return; - ASSERT(viewportController()); - viewportController()->pinchGestureCancelled(); + if (viewportController()) + viewportController()->pinchGestureCancelled(); reset(); } diff --git a/Source/WebKit2/UIProcess/qt/QtWebIconDatabaseClient.cpp b/Source/WebKit2/UIProcess/qt/QtWebIconDatabaseClient.cpp index afdfa6fcd..592bb371c 100644 --- a/Source/WebKit2/UIProcess/qt/QtWebIconDatabaseClient.cpp +++ b/Source/WebKit2/UIProcess/qt/QtWebIconDatabaseClient.cpp @@ -90,11 +90,11 @@ QImage QtWebIconDatabaseClient::iconImageForPageURL(const WTF::String& pageURL, WebCore::IntSize size(iconSize.width(), iconSize.height()); - QImage* nativeImage = m_iconDatabase->nativeImageForPageURL(pageURL, size); + QPixmap* nativeImage = m_iconDatabase->nativeImageForPageURL(pageURL, size); if (!nativeImage) return QImage(); - return *nativeImage; + return nativeImage->toImage(); } void QtWebIconDatabaseClient::retainIconForPageURL(const String& pageURL) diff --git a/Source/WebKit2/UIProcess/qt/QtWebPageEventHandler.cpp b/Source/WebKit2/UIProcess/qt/QtWebPageEventHandler.cpp index 819d4a0a2..fdc92355f 100644 --- a/Source/WebKit2/UIProcess/qt/QtWebPageEventHandler.cpp +++ b/Source/WebKit2/UIProcess/qt/QtWebPageEventHandler.cpp @@ -167,18 +167,18 @@ void QtWebPageEventHandler::handleHoverLeaveEvent(QHoverEvent* ev) { // To get the correct behavior of mouseout, we need to turn the Leave event of our webview into a mouse move // to a very far region. - QTransform fromItemTransform = m_webPage->transformFromItem(); - QHoverEvent fakeEvent(QEvent::HoverMove, QPoint(INT_MIN, INT_MIN), fromItemTransform.map(ev->oldPosF())); + QHoverEvent fakeEvent(QEvent::HoverMove, QPoint(INT_MIN, INT_MIN), ev->oldPosF()); fakeEvent.setTimestamp(ev->timestamp()); + // This will apply the transform on the event. handleHoverMoveEvent(&fakeEvent); } void QtWebPageEventHandler::handleHoverMoveEvent(QHoverEvent* ev) { - QTransform fromItemTransform = m_webPage->transformFromItem(); - QMouseEvent me(QEvent::MouseMove, fromItemTransform.map(ev->posF()), Qt::NoButton, Qt::NoButton, Qt::NoModifier); + QMouseEvent me(QEvent::MouseMove, ev->posF(), Qt::NoButton, Qt::NoButton, Qt::NoModifier); me.setAccepted(ev->isAccepted()); me.setTimestamp(ev->timestamp()); + // This will apply the transform on the event. handleMouseMoveEvent(&me); } @@ -450,7 +450,38 @@ void QtWebPageEventHandler::doneWithGestureEvent(const WebGestureEvent& event, b void QtWebPageEventHandler::handleInputEvent(const QInputEvent* event) { - ASSERT(m_viewportController); + if (m_viewportController) { + switch (event->type()) { + case QEvent::MouseButtonPress: + case QEvent::TouchBegin: + ASSERT(!m_viewportController->panGestureActive()); + ASSERT(!m_viewportController->pinchGestureActive()); + m_viewportController->touchBegin(); + + // The page viewport controller might still be animating kinetic scrolling or a scale animation + // such as double-tap to zoom or the bounce back effect. A touch stops the kinetic scrolling + // where as it does not stop the scale animation. + // The gesture recognizer stops the kinetic scrolling animation if needed. + break; + case QEvent::MouseMove: + case QEvent::TouchUpdate: + // The scale animation can only be interrupted by a pinch gesture, which will then take over. + if (m_viewportController->scaleAnimationActive() && m_pinchGestureRecognizer.isRecognized()) + m_viewportController->interruptScaleAnimation(); + break; + case QEvent::MouseButtonRelease: + case QEvent::TouchEnd: + m_viewportController->touchEnd(); + break; + default: + break; + } + + // If the scale animation is active we don't pass the event to the recognizers. In the future + // we would want to queue the event here and repost then when the animation ends. + if (m_viewportController->scaleAnimationActive()) + return; + } bool isMouseEvent = false; @@ -458,45 +489,22 @@ void QtWebPageEventHandler::handleInputEvent(const QInputEvent* event) case QEvent::MouseButtonPress: isMouseEvent = true; m_isMouseButtonPressed = true; - // Fall through. - case QEvent::TouchBegin: - ASSERT(!m_viewportController->panGestureActive()); - ASSERT(!m_viewportController->pinchGestureActive()); - m_viewportController->touchBegin(); - - // The interaction engine might still be animating kinetic scrolling or a scale animation - // such as double-tap to zoom or the bounce back effect. A touch stops the kinetic scrolling - // where as it does not stop the scale animation. - // The gesture recognizer stops the kinetic scrolling animation if needed. break; case QEvent::MouseMove: if (!m_isMouseButtonPressed) return; - isMouseEvent = true; - // Fall through. - case QEvent::TouchUpdate: - // The scale animation can only be interrupted by a pinch gesture, which will then take over. - if (m_viewportController->scaleAnimationActive() && m_pinchGestureRecognizer.isRecognized()) - m_viewportController->interruptScaleAnimation(); break; case QEvent::MouseButtonRelease: isMouseEvent = true; m_isMouseButtonPressed = false; - // Fall through. - case QEvent::TouchEnd: - m_viewportController->touchEnd(); break; - default: - ASSERT(event->type() == QEvent::MouseButtonDblClick); + case QEvent::MouseButtonDblClick: return; + default: + break; } - // If the scale animation is active we don't pass the event to the recognizers. In the future - // we would want to queue the event here and repost then when the animation ends. - if (m_viewportController->scaleAnimationActive()) - return; - QList<QTouchEvent::TouchPoint> activeTouchPoints; QTouchEvent::TouchPoint currentTouchPoint; qint64 eventTimestampMillis = event->timestamp(); @@ -568,9 +576,6 @@ void QtWebPageEventHandler::handleInputEvent(const QInputEvent* event) #if ENABLE(TOUCH_EVENTS) void QtWebPageEventHandler::doneWithTouchEvent(const NativeWebTouchEvent& event, bool wasEventHandled) { - if (!m_viewportController) - return; - if (wasEventHandled || event.type() == WebEvent::TouchCancel) { m_panGestureRecognizer.cancel(); m_pinchGestureRecognizer.cancel(); diff --git a/Source/WebKit2/UIProcess/qt/QtWebPageLoadClient.cpp b/Source/WebKit2/UIProcess/qt/QtWebPageLoadClient.cpp index 0e9c5cfb4..b877ca8df 100644 --- a/Source/WebKit2/UIProcess/qt/QtWebPageLoadClient.cpp +++ b/Source/WebKit2/UIProcess/qt/QtWebPageLoadClient.cpp @@ -62,6 +62,9 @@ void QtWebPageLoadClient::didReceiveServerRedirectForProvisionalLoad(const WTF:: void QtWebPageLoadClient::didCommitLoad() { + PageViewportController* pvc = m_webView->d_func()->viewportController(); + if (pvc) + pvc->didCommitLoad(); m_webView->d_func()->loadDidCommit(); } diff --git a/Source/WebKit2/UIProcess/qt/WebPageProxyQt.cpp b/Source/WebKit2/UIProcess/qt/WebPageProxyQt.cpp index ef6d5477d..e5a7829c0 100644 --- a/Source/WebKit2/UIProcess/qt/WebPageProxyQt.cpp +++ b/Source/WebKit2/UIProcess/qt/WebPageProxyQt.cpp @@ -85,6 +85,11 @@ void WebPageProxy::cancelComposition() process()->send(Messages::WebPage::CancelComposition(), m_pageID); } +void WebPageProxy::didRenderFrame(const WebCore::IntSize& contentsSize, const WebCore::IntRect& coveredRect) +{ + m_pageClient->didRenderFrame(contentsSize, coveredRect); +} + void WebPageProxy::registerApplicationScheme(const String& scheme) { process()->send(Messages::WebPage::RegisterApplicationScheme(scheme), m_pageID); @@ -116,6 +121,44 @@ void WebPageProxy::setUserScripts(const Vector<String>& scripts) process()->send(Messages::WebPage::SetUserScripts(scripts), m_pageID); } +void WebPageProxy::pageTransitionViewportReady() +{ + m_pageClient->pageTransitionViewportReady(); +} + +void WebPageProxy::didFindZoomableArea(const IntPoint& target, const IntRect& area) +{ + m_pageClient->didFindZoomableArea(target, area); +} + +void WebPageProxy::findZoomableAreaForPoint(const IntPoint& point, const IntSize& area) +{ + if (!isValid()) + return; + + m_process->send(Messages::WebPage::FindZoomableAreaForPoint(point, area), m_pageID); +} + +void WebPageProxy::didReceiveMessageFromNavigatorQtObject(const String& contents) +{ + m_pageClient->didReceiveMessageFromNavigatorQtObject(contents); +} + +void WebPageProxy::authenticationRequiredRequest(const String& hostname, const String& realm, const String& prefilledUsername, String& username, String& password) +{ + m_pageClient->handleAuthenticationRequiredRequest(hostname, realm, prefilledUsername, username, password); +} + +void WebPageProxy::proxyAuthenticationRequiredRequest(const String& hostname, uint16_t port, const String& prefilledUsername, String& username, String& password) +{ + m_pageClient->handleProxyAuthenticationRequiredRequest(hostname, port, prefilledUsername, username, password); +} + +void WebPageProxy::certificateVerificationRequest(const String& hostname, bool& ignoreErrors) +{ + m_pageClient->handleCertificateVerificationRequest(hostname, ignoreErrors); +} + #if PLUGIN_ARCHITECTURE(X11) void WebPageProxy::createPluginContainer(uint64_t& windowID) { diff --git a/Source/WebKit2/UIProcess/soup/WebSoupRequestManagerClient.cpp b/Source/WebKit2/UIProcess/soup/WebSoupRequestManagerClient.cpp index be2c6cc66..c5d7e3bf7 100644 --- a/Source/WebKit2/UIProcess/soup/WebSoupRequestManagerClient.cpp +++ b/Source/WebKit2/UIProcess/soup/WebSoupRequestManagerClient.cpp @@ -24,12 +24,12 @@ namespace WebKit { -bool WebSoupRequestManagerClient::didReceiveURIRequest(WebSoupRequestManagerProxy* soupRequestManager, WebURL* url, uint64_t requestID) +bool WebSoupRequestManagerClient::didReceiveURIRequest(WebSoupRequestManagerProxy* soupRequestManager, WebURL* url, WebPageProxy* initiaingPage, uint64_t requestID) { if (!m_client.didReceiveURIRequest) return false; - m_client.didReceiveURIRequest(toAPI(soupRequestManager), toAPI(url), requestID, m_client.clientInfo); + m_client.didReceiveURIRequest(toAPI(soupRequestManager), toAPI(url), toAPI(initiaingPage), requestID, m_client.clientInfo); return true; } diff --git a/Source/WebKit2/UIProcess/soup/WebSoupRequestManagerClient.h b/Source/WebKit2/UIProcess/soup/WebSoupRequestManagerClient.h index dc1755e5a..e247fecd7 100644 --- a/Source/WebKit2/UIProcess/soup/WebSoupRequestManagerClient.h +++ b/Source/WebKit2/UIProcess/soup/WebSoupRequestManagerClient.h @@ -30,7 +30,7 @@ class WebURL; class WebSoupRequestManagerClient : public APIClient<WKSoupRequestManagerClient, kWKSoupRequestManagerClientCurrentVersion> { public: - bool didReceiveURIRequest(WebSoupRequestManagerProxy*, WebURL*, uint64_t requestID); + bool didReceiveURIRequest(WebSoupRequestManagerProxy*, WebURL*, WebPageProxy*, uint64_t requestID); void didFailToLoadURIRequest(WebSoupRequestManagerProxy*, uint64_t requestID); }; diff --git a/Source/WebKit2/UIProcess/soup/WebSoupRequestManagerProxy.cpp b/Source/WebKit2/UIProcess/soup/WebSoupRequestManagerProxy.cpp index c766b0adb..e2bf3423d 100644 --- a/Source/WebKit2/UIProcess/soup/WebSoupRequestManagerProxy.cpp +++ b/Source/WebKit2/UIProcess/soup/WebSoupRequestManagerProxy.cpp @@ -35,6 +35,7 @@ WebSoupRequestManagerProxy::WebSoupRequestManagerProxy(WebContext* context) : m_webContext(context) , m_loadFailed(false) { + m_webContext->addMessageReceiver(CoreIPC::MessageClassWebSoupRequestManagerProxy, this); } WebSoupRequestManagerProxy::~WebSoupRequestManagerProxy() @@ -76,9 +77,9 @@ void WebSoupRequestManagerProxy::didReceiveURIRequestData(const WebData* request m_webContext->sendToAllProcesses(Messages::WebSoupRequestManager::DidReceiveURIRequestData(requestData->dataReference(), requestID)); } -void WebSoupRequestManagerProxy::didReceiveURIRequest(const String& uriString, uint64_t requestID) +void WebSoupRequestManagerProxy::didReceiveURIRequest(const String& uriString, WebPageProxy* initiaingPage, uint64_t requestID) { - if (!m_client.didReceiveURIRequest(this, WebURL::create(uriString).get(), requestID)) + if (!m_client.didReceiveURIRequest(this, WebURL::create(uriString).get(), initiaingPage, requestID)) didHandleURIRequest(WebData::create(0, 0).get(), 0, String(), requestID); } diff --git a/Source/WebKit2/UIProcess/soup/WebSoupRequestManagerProxy.h b/Source/WebKit2/UIProcess/soup/WebSoupRequestManagerProxy.h index 92bd63e1e..6a3d6e826 100644 --- a/Source/WebKit2/UIProcess/soup/WebSoupRequestManagerProxy.h +++ b/Source/WebKit2/UIProcess/soup/WebSoupRequestManagerProxy.h @@ -21,23 +21,18 @@ #define WebSoupRequestManagerProxy_h #include "APIObject.h" +#include "MessageReceiver.h" #include "WebSoupRequestManagerClient.h" #include <wtf/PassRefPtr.h> #include <wtf/RefPtr.h> #include <wtf/text/WTFString.h> -namespace CoreIPC { -class ArgumentDecoder; -class Connection; -class MessageID; -} - namespace WebKit { class WebContext; class WebData; -class WebSoupRequestManagerProxy : public APIObject { +class WebSoupRequestManagerProxy : public APIObject, private CoreIPC::MessageReceiver { public: static const Type APIType = TypeSoupRequestManager; @@ -54,15 +49,15 @@ public: void didReceiveURIRequestData(const WebData*, uint64_t requestID); void didFailToLoadURIRequest(uint64_t requestID); - void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); + void didReceiveURIRequest(const String& uriString, WebPageProxy*, uint64_t requestID); private: WebSoupRequestManagerProxy(WebContext*); virtual Type type() const { return APIType; } - void didReceiveURIRequest(const String& uriString, uint64_t requestID); - + // CoreIPC::MessageReceiver + virtual void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*) OVERRIDE; void didReceiveWebSoupRequestManagerProxyMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); WebContext* m_webContext; diff --git a/Source/WebKit2/UIProcess/soup/WebSoupRequestManagerProxy.messages.in b/Source/WebKit2/UIProcess/soup/WebSoupRequestManagerProxy.messages.in index 81591a493..18058f5c7 100644 --- a/Source/WebKit2/UIProcess/soup/WebSoupRequestManagerProxy.messages.in +++ b/Source/WebKit2/UIProcess/soup/WebSoupRequestManagerProxy.messages.in @@ -21,6 +21,5 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. messages -> WebSoupRequestManagerProxy { - DidReceiveURIRequest(WTF::String uriString, uint64_t requestID); DidFailToLoadURIRequest(uint64_t requestID); } diff --git a/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj b/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj index b64a8edb8..99dfade33 100644 --- a/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj +++ b/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj @@ -18,6 +18,7 @@ dependencies = ( 1A50DB3C110A3C19000D3FE5 /* PBXTargetDependency */, BCDE0AC113272712001259FB /* PBXTargetDependency */, + 510CC8481613C85300D03ED3 /* PBXTargetDependency */, BCAE9DFD160C0AB000A33217 /* PBXTargetDependency */, BCA8D46815BCE0D6009DC1F1 /* PBXTargetDependency */, ); @@ -73,6 +74,8 @@ 1A186EEA12EF7618008E5F37 /* LayerTreeHost.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A186EE812EF7618008E5F37 /* LayerTreeHost.h */; }; 1A186EEB12EF7618008E5F37 /* LayerTreeHost.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A186EE912EF7618008E5F37 /* LayerTreeHost.cpp */; }; 1A1C649B11F4174200553C19 /* WebContextMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1A1C648611F415B700553C19 /* WebContextMac.mm */; }; + 1A1FEC1C1627B45700700F6D /* WebConnectionMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A1FEC1A1627B45600700F6D /* WebConnectionMessageReceiver.cpp */; }; + 1A1FEC1D1627B45700700F6D /* WebConnectionMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A1FEC1B1627B45700700F6D /* WebConnectionMessages.h */; }; 1A2161B011F37664008AD0F5 /* NPRuntimeObjectMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A2161AE11F37664008AD0F5 /* NPRuntimeObjectMap.h */; }; 1A2161B111F37664008AD0F5 /* NPRuntimeObjectMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A2161AF11F37664008AD0F5 /* NPRuntimeObjectMap.cpp */; }; 1A2162B011F38971008AD0F5 /* NPRuntimeUtilities.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A2162AE11F38971008AD0F5 /* NPRuntimeUtilities.cpp */; }; @@ -115,6 +118,9 @@ 1A3DD206125E5A2F004515E6 /* APIClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A3DD205125E5A2F004515E6 /* APIClient.h */; }; 1A3E736111CC2659007BD539 /* WebPlatformStrategies.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A3E735F11CC2659007BD539 /* WebPlatformStrategies.h */; }; 1A3E736211CC2659007BD539 /* WebPlatformStrategies.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3E736011CC2659007BD539 /* WebPlatformStrategies.cpp */; }; + 1A3EED0E161A535400AEB4F5 /* MessageReceiverMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3EED0C161A535300AEB4F5 /* MessageReceiverMap.cpp */; }; + 1A3EED0F161A535400AEB4F5 /* MessageReceiverMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A3EED0D161A535300AEB4F5 /* MessageReceiverMap.h */; }; + 1A3EED12161A53D600AEB4F5 /* MessageReceiver.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A3EED11161A53D600AEB4F5 /* MessageReceiver.h */; }; 1A433F0D113C53DD00FACDE9 /* WebErrors.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A433F0C113C53DD00FACDE9 /* WebErrors.h */; }; 1A4A9AA812B7E796008FE984 /* WKTextInputWindowController.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A4A9AA612B7E796008FE984 /* WKTextInputWindowController.h */; }; 1A4A9AA912B7E796008FE984 /* WKTextInputWindowController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1A4A9AA712B7E796008FE984 /* WKTextInputWindowController.mm */; }; @@ -247,10 +253,16 @@ 1CA8B945127C882A00576C2B /* WebInspectorProxyMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1CA8B943127C882A00576C2B /* WebInspectorProxyMessageReceiver.cpp */; }; 1CA8B946127C882A00576C2B /* WebInspectorProxyMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CA8B944127C882A00576C2B /* WebInspectorProxyMessages.h */; }; 1CA8B954127C891500576C2B /* WebInspectorMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1C8E2DAD1278C5B200BC7BD0 /* WebInspectorMac.mm */; }; + 293EBEAB1627D9C9005F89F1 /* WKDOMText.h in Headers */ = {isa = PBXBuildFile; fileRef = 293EBEA91627D9C9005F89F1 /* WKDOMText.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 293EBEAC1627D9C9005F89F1 /* WKDOMText.mm in Sources */ = {isa = PBXBuildFile; fileRef = 293EBEAA1627D9C9005F89F1 /* WKDOMText.mm */; }; + 29501724162A4504004A9D71 /* WKWebProcessPlugInBrowserContextControllerPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 29501723162A4504004A9D71 /* WKWebProcessPlugInBrowserContextControllerPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; 296BD85D15019BC30071F424 /* StringUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 296BD85B15019BC30071F424 /* StringUtilities.h */; }; 296BD85E15019BC30071F424 /* StringUtilities.mm in Sources */ = {isa = PBXBuildFile; fileRef = 296BD85C15019BC30071F424 /* StringUtilities.mm */; }; 29CD55AA128E294F00133C85 /* WKAccessibilityWebPageObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 29CD55A8128E294F00133C85 /* WKAccessibilityWebPageObject.h */; }; 29CD55AB128E294F00133C85 /* WKAccessibilityWebPageObject.mm in Sources */ = {isa = PBXBuildFile; fileRef = 29CD55A9128E294F00133C85 /* WKAccessibilityWebPageObject.mm */; }; + 29D55DF1161BF9F10031A2E3 /* WebPageGroupProxyMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 29D55DEF161BF9F10031A2E3 /* WebPageGroupProxyMessageReceiver.cpp */; }; + 29D55DF2161BF9F10031A2E3 /* WebPageGroupProxyMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = 29D55DF0161BF9F10031A2E3 /* WebPageGroupProxyMessages.h */; }; + 2D870D1016234FFE000A3F20 /* PDFPlugin.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2D870D0E1622B7F9000A3F20 /* PDFPlugin.mm */; }; 31099973146C75A20029DEB9 /* WebNotificationClient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 31099971146C759B0029DEB9 /* WebNotificationClient.cpp */; }; 310999C7146C9E3D0029DEB9 /* WebNotificationClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 31099968146C71F50029DEB9 /* WebNotificationClient.h */; }; 312C0C4A146DDC8A0016C911 /* WKNotificationProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 312C0C49146DDC8A0016C911 /* WKNotificationProvider.h */; settings = {ATTRIBUTES = (Private, ); }; }; @@ -331,6 +343,8 @@ 3F87B9C0158940D80090FF62 /* WebColorChooserProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F87B9BF158940D80090FF62 /* WebColorChooserProxy.h */; }; 4F601432155C5AA2001FBDE0 /* BlockingResponseMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F601430155C5A32001FBDE0 /* BlockingResponseMap.h */; }; 51021E9C12B16788005C033C /* WebContextMenuClientMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 51021E9B12B16788005C033C /* WebContextMenuClientMac.mm */; }; + 510CC8491613C85C00D03ED3 /* NetworkProcess.app in CopyFiles */ = {isa = PBXBuildFile; fileRef = 510CC80E1613C79900D03ED3 /* NetworkProcess.app */; }; + 510CC84F1613C92C00D03ED3 /* MainMacProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A6FA31011E3921E00DB1371 /* MainMacProcess.cpp */; }; 510FBB9A1288C95E00AFFDF4 /* WebContextMenuItemData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 510FBB981288C95E00AFFDF4 /* WebContextMenuItemData.cpp */; }; 510FBB9B1288C95E00AFFDF4 /* WebContextMenuItemData.h in Headers */ = {isa = PBXBuildFile; fileRef = 510FBB991288C95E00AFFDF4 /* WebContextMenuItemData.h */; }; 5110AE0C133C16CB0072717A /* WKIconDatabase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5110AE0A133C16CB0072717A /* WKIconDatabase.cpp */; }; @@ -391,7 +405,19 @@ 5153569D1291B1D2000749DC /* WebPageContextMenuClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 5153569B1291B1D2000749DC /* WebPageContextMenuClient.h */; }; 51578B831209ECEF00A37C4A /* WebData.h in Headers */ = {isa = PBXBuildFile; fileRef = 51578B821209ECEF00A37C4A /* WebData.h */; }; 5160BFE113381DF900918999 /* Logging.mac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5160BFE013381DF900918999 /* Logging.mac.mm */; }; + 516319921628980A00E22F00 /* NetworkProcessProxyMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 516319911628980A00E22F00 /* NetworkProcessProxyMac.mm */; }; + 5163199416289A6000E22F00 /* NetworkProcessMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51ACC9341628064800342550 /* NetworkProcessMessageReceiver.cpp */; }; + 5163199516289A6300E22F00 /* NetworkProcessMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = 51ACC9351628064800342550 /* NetworkProcessMessages.h */; }; 516A4A5D120A2CCD00C05B7F /* WebError.h in Headers */ = {isa = PBXBuildFile; fileRef = 516A4A5B120A2CCD00C05B7F /* WebError.h */; }; + 51795565162876C500FA43B6 /* NetworkProcessMainMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 510CC7DD16138E2900D03ED3 /* NetworkProcessMainMac.mm */; }; + 51795567162876CB00FA43B6 /* NetworkProcessMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 51A8A6151627F3F9000D90E9 /* NetworkProcessMac.mm */; }; + 51795568162876CF00FA43B6 /* NetworkProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 510CC7DF16138E2900D03ED3 /* NetworkProcess.cpp */; }; + 51795569162876EE00FA43B6 /* NetworkProcessMain.h in Headers */ = {isa = PBXBuildFile; fileRef = 510CC7E116138E2900D03ED3 /* NetworkProcessMain.h */; }; + 5179556A162876F300FA43B6 /* NetworkProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 510CC7E016138E2900D03ED3 /* NetworkProcess.h */; }; + 5179556D162877B100FA43B6 /* NetworkProcessProxy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 510CC7EA16138E7200D03ED3 /* NetworkProcessProxy.cpp */; }; + 5179556E162877B300FA43B6 /* NetworkProcessProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 510CC7EB16138E7200D03ED3 /* NetworkProcessProxy.h */; }; + 51795570162877CF00FA43B6 /* NetworkProcessCreationParameters.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51A8A6121627F325000D90E9 /* NetworkProcessCreationParameters.cpp */; }; + 51795571162877D200FA43B6 /* NetworkProcessCreationParameters.h in Headers */ = {isa = PBXBuildFile; fileRef = 51A8A60F1627F2BD000D90E9 /* NetworkProcessCreationParameters.h */; }; 51834592134532E90092B696 /* WebIconDatabaseClient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51834590134532E80092B696 /* WebIconDatabaseClient.cpp */; }; 51834593134532E90092B696 /* WebIconDatabaseClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 51834591134532E80092B696 /* WebIconDatabaseClient.h */; }; 5183B3921379F7B800E8754E /* WebProcessShim.dylib in Copy Web Process Shim */ = {isa = PBXBuildFile; fileRef = 510031F61379CACB00C8DFE4 /* WebProcessShim.dylib */; }; @@ -480,6 +506,16 @@ B878B615133428DC006888E9 /* CorrectionPanel.h in Headers */ = {isa = PBXBuildFile; fileRef = B878B613133428DC006888E9 /* CorrectionPanel.h */; }; B878B616133428DC006888E9 /* CorrectionPanel.mm in Sources */ = {isa = PBXBuildFile; fileRef = B878B614133428DC006888E9 /* CorrectionPanel.mm */; }; BC0092F8115837A300E0AE2A /* WorkQueueMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC0092F6115837A300E0AE2A /* WorkQueueMac.cpp */; }; + BC017D0716260FF4007054F5 /* WKDOMDocument.h in Headers */ = {isa = PBXBuildFile; fileRef = BC017CFF16260FF4007054F5 /* WKDOMDocument.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BC017D0816260FF4007054F5 /* WKDOMDocument.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC017D0016260FF4007054F5 /* WKDOMDocument.mm */; }; + BC017D0916260FF4007054F5 /* WKDOMElement.h in Headers */ = {isa = PBXBuildFile; fileRef = BC017D0116260FF4007054F5 /* WKDOMElement.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BC017D0A16260FF4007054F5 /* WKDOMElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC017D0216260FF4007054F5 /* WKDOMElement.mm */; }; + BC017D0B16260FF4007054F5 /* WKDOMInternals.h in Headers */ = {isa = PBXBuildFile; fileRef = BC017D0316260FF4007054F5 /* WKDOMInternals.h */; }; + BC017D0C16260FF4007054F5 /* WKDOMInternals.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC017D0416260FF4007054F5 /* WKDOMInternals.mm */; }; + BC017D0D16260FF4007054F5 /* WKDOMNode.h in Headers */ = {isa = PBXBuildFile; fileRef = BC017D0516260FF4007054F5 /* WKDOMNode.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BC017D0E16260FF4007054F5 /* WKDOMNode.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC017D0616260FF4007054F5 /* WKDOMNode.mm */; }; + BC017D2016263308007054F5 /* WKDOMTextIterator.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC017D1E16263308007054F5 /* WKDOMTextIterator.mm */; }; + BC017D2116263308007054F5 /* WKDOMTextIterator.h in Headers */ = {isa = PBXBuildFile; fileRef = BC017D1F16263308007054F5 /* WKDOMTextIterator.h */; settings = {ATTRIBUTES = (Public, ); }; }; BC032D7510F4378D0058C15A /* WebChromeClient.h in Headers */ = {isa = PBXBuildFile; fileRef = BC032D6010F4378D0058C15A /* WebChromeClient.h */; }; BC032D7710F4378D0058C15A /* WebContextMenuClient.h in Headers */ = {isa = PBXBuildFile; fileRef = BC032D6210F4378D0058C15A /* WebContextMenuClient.h */; }; BC032D7B10F4378D0058C15A /* WebDragClient.h in Headers */ = {isa = PBXBuildFile; fileRef = BC032D6610F4378D0058C15A /* WebDragClient.h */; }; @@ -560,7 +596,7 @@ BC1DFEA412B31F87005DF730 /* WebOpenPanelResultListenerProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = BC1DFEA212B31F87005DF730 /* WebOpenPanelResultListenerProxy.h */; }; BC204EE211C83E98008F3375 /* InjectedBundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC204EE011C83E98008F3375 /* InjectedBundle.cpp */; }; BC204EE311C83E98008F3375 /* InjectedBundle.h in Headers */ = {isa = PBXBuildFile; fileRef = BC204EE111C83E98008F3375 /* InjectedBundle.h */; }; - BC204EE611C83EA9008F3375 /* InjectedBundleMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC204EE511C83EA9008F3375 /* InjectedBundleMac.cpp */; }; + BC204EE611C83EA9008F3375 /* InjectedBundleMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC204EE511C83EA9008F3375 /* InjectedBundleMac.mm */; }; BC204EEE11C83EC8008F3375 /* WKBundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC204EE911C83EC8008F3375 /* WKBundle.cpp */; }; BC204EEF11C83EC8008F3375 /* WKBundle.h in Headers */ = {isa = PBXBuildFile; fileRef = BC204EEA11C83EC8008F3375 /* WKBundle.h */; settings = {ATTRIBUTES = (Private, ); }; }; BC204EF011C83EC8008F3375 /* WKBundleAPICast.h in Headers */ = {isa = PBXBuildFile; fileRef = BC204EEB11C83EC8008F3375 /* WKBundleAPICast.h */; }; @@ -583,6 +619,8 @@ BC33DD681238464600360F3F /* WebNumber.h in Headers */ = {isa = PBXBuildFile; fileRef = BC33DD671238464600360F3F /* WebNumber.h */; }; BC33E0D112408E8600360F3F /* InjectedBundleRangeHandle.h in Headers */ = {isa = PBXBuildFile; fileRef = BC33E0CF12408E8600360F3F /* InjectedBundleRangeHandle.h */; }; BC33E0D212408E8600360F3F /* InjectedBundleRangeHandle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC33E0D012408E8600360F3F /* InjectedBundleRangeHandle.cpp */; }; + BC39C4351626366F008BC689 /* WKDOMRange.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC39C4331626366F008BC689 /* WKDOMRange.mm */; }; + BC39C4361626366F008BC689 /* WKDOMRange.h in Headers */ = {isa = PBXBuildFile; fileRef = BC39C4341626366F008BC689 /* WKDOMRange.h */; settings = {ATTRIBUTES = (Public, ); }; }; BC4075F3124FF0270068F20A /* WKArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC4075D7124FF0270068F20A /* WKArray.cpp */; }; BC4075F4124FF0270068F20A /* WKArray.h in Headers */ = {isa = PBXBuildFile; fileRef = BC4075D8124FF0270068F20A /* WKArray.h */; settings = {ATTRIBUTES = (Private, ); }; }; BC4075F5124FF0270068F20A /* WKCertificateInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC4075D9124FF0270068F20A /* WKCertificateInfo.cpp */; }; @@ -702,6 +740,9 @@ BC8699B7116AADAA002A925B /* WKViewInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = BC8699B4116AADAA002A925B /* WKViewInternal.h */; }; BC8780FC1161C2B800CC2768 /* PlatformProcessIdentifier.h in Headers */ = {isa = PBXBuildFile; fileRef = BC8780FB1161C2B800CC2768 /* PlatformProcessIdentifier.h */; }; BC8A501511765F5600757573 /* WKRetainPtr.h in Headers */ = {isa = PBXBuildFile; fileRef = BC8A501411765F5600757573 /* WKRetainPtr.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC8F2F2A16273A2C005FACB5 /* WKWebProcessPlugInBrowserContextController.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC8F2F2816273A2B005FACB5 /* WKWebProcessPlugInBrowserContextController.mm */; }; + BC8F2F2B16273A2C005FACB5 /* WKWebProcessPlugInBrowserContextController.h in Headers */ = {isa = PBXBuildFile; fileRef = BC8F2F2916273A2C005FACB5 /* WKWebProcessPlugInBrowserContextController.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BC8F2F2E16273ACC005FACB5 /* WKWebProcessPlugInBrowserContextControllerInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = BC8F2F2D16273ACB005FACB5 /* WKWebProcessPlugInBrowserContextControllerInternal.h */; }; BC9099801256A98200083756 /* WKStringPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = BC90997F1256A98200083756 /* WKStringPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; BC90A1D2122DD55E00CC8C50 /* WebURLResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = BC90A1D0122DD55E00CC8C50 /* WebURLResponse.h */; }; BC90A1D3122DD55E00CC8C50 /* WebURLResponse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC90A1D1122DD55E00CC8C50 /* WebURLResponse.cpp */; }; @@ -709,6 +750,9 @@ BC9585C812F095B800755821 /* WebGestureEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC9585C712F095B800755821 /* WebGestureEvent.cpp */; }; BC963D6B113DD19200574BE2 /* WebPage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC963D6A113DD19200574BE2 /* WebPage.cpp */; }; BC963D6E113DD1A500574BE2 /* WebPageMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC963D6D113DD1A500574BE2 /* WebPageMac.mm */; }; + BC989D81161A7E5D000D46D3 /* WKWebProcessPlugIn.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC989D7F161A7E5B000D46D3 /* WKWebProcessPlugIn.mm */; }; + BC989D82161A7E5D000D46D3 /* WKWebProcessPlugIn.h in Headers */ = {isa = PBXBuildFile; fileRef = BC989D80161A7E5C000D46D3 /* WKWebProcessPlugIn.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC989D85161A9890000D46D3 /* WKWebProcessPlugInInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = BC989D84161A988F000D46D3 /* WKWebProcessPlugInInternal.h */; }; BC9B38A110F538BE00443A15 /* WebFrameProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = BC9B389F10F538BE00443A15 /* WebFrameProxy.h */; }; BC9FA520160D3B430054DF9A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BC3DE46815A91763008D26FC /* Foundation.framework */; }; BC9FA522160D4A0C0054DF9A /* com.apple.WebKit.PluginProcess.sb in Resources */ = {isa = PBXBuildFile; fileRef = E1967E35150AB5D500C73169 /* com.apple.WebKit.PluginProcess.sb */; }; @@ -743,7 +787,6 @@ BCB0B0DC12305A2500B1341E /* WebContextUserMessageCoders.h in Headers */ = {isa = PBXBuildFile; fileRef = BCB0B0DB12305A2500B1341E /* WebContextUserMessageCoders.h */; }; BCB0B0DE12305A8C00B1341E /* InjectedBundleUserMessageCoders.h in Headers */ = {isa = PBXBuildFile; fileRef = BCB0B0DD12305A8C00B1341E /* InjectedBundleUserMessageCoders.h */; }; BCB0B0E012305AB100B1341E /* UserMessageCoders.h in Headers */ = {isa = PBXBuildFile; fileRef = BCB0B0DF12305AB100B1341E /* UserMessageCoders.h */; }; - BCB28CC0120233D9007D99BC /* InjectedBundleMessageKinds.h in Headers */ = {isa = PBXBuildFile; fileRef = BCB28CBF120233D9007D99BC /* InjectedBundleMessageKinds.h */; }; BCB63478116BF10600603215 /* WebKit2_C.h in Headers */ = {isa = PBXBuildFile; fileRef = BCB63477116BF10600603215 /* WebKit2_C.h */; settings = {ATTRIBUTES = (Private, ); }; }; BCB9E2431120DACA00A137E0 /* WebContext.h in Headers */ = {isa = PBXBuildFile; fileRef = BCB9E2411120DACA00A137E0 /* WebContext.h */; }; BCB9E2441120DACA00A137E0 /* WebContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCB9E2421120DACA00A137E0 /* WebContext.cpp */; }; @@ -913,7 +956,7 @@ E19582D6153CC05400B60875 /* PDFKitImports.mm in Sources */ = {isa = PBXBuildFile; fileRef = E19582D4153CC05300B60875 /* PDFKitImports.mm */; }; E1967E36150AB5D500C73169 /* com.apple.WebKit.PluginProcess.sb in Resources */ = {isa = PBXBuildFile; fileRef = E1967E35150AB5D500C73169 /* com.apple.WebKit.PluginProcess.sb */; }; E1967E38150AB5E200C73169 /* com.apple.WebProcess.sb in Resources */ = {isa = PBXBuildFile; fileRef = E1967E37150AB5E200C73169 /* com.apple.WebProcess.sb */; }; - E199875E142C045400BB2DE7 /* BuiltInPDFView.mm in Sources */ = {isa = PBXBuildFile; fileRef = E199875C142BFC9700BB2DE7 /* BuiltInPDFView.mm */; }; + E199875E142C045400BB2DE7 /* SimplePDFPlugin.mm in Sources */ = {isa = PBXBuildFile; fileRef = E199875C142BFC9700BB2DE7 /* SimplePDFPlugin.mm */; }; E1A31732134CEA6C007C9A4F /* AttributedString.h in Headers */ = {isa = PBXBuildFile; fileRef = E1A31731134CEA6C007C9A4F /* AttributedString.h */; }; E1A31735134CEA80007C9A4F /* AttributedString.mm in Sources */ = {isa = PBXBuildFile; fileRef = E1A31734134CEA80007C9A4F /* AttributedString.mm */; }; E1AEA22F14687BDB00804569 /* WKFullKeyboardAccessWatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = E1AEA22D14687BDB00804569 /* WKFullKeyboardAccessWatcher.h */; }; @@ -971,6 +1014,20 @@ remoteGlobalIDString = C0CE72851247E66800BC0EC4; remoteInfo = "Derived Sources"; }; + 510CC8471613C85300D03ED3 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 510CC80D1613C79900D03ED3; + remoteInfo = NetworkProcess; + }; + 510CC8501613C98D00D03ED3 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 8DC2EF4F0486A6940098B216; + remoteInfo = WebKit2; + }; 5183B38D1379F54600E8754E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; @@ -1024,6 +1081,7 @@ files = ( BCDE0ABF13272708001259FB /* PluginProcess.app in CopyFiles */, 1A50DB66110A3D57000D3FE5 /* WebProcess.app in CopyFiles */, + 510CC8491613C85C00D03ED3 /* NetworkProcess.app in CopyFiles */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1110,6 +1168,9 @@ 1A1FA284127A13BC0050E709 /* NPObjectProxy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NPObjectProxy.cpp; sourceTree = "<group>"; }; 1A1FA35B127A45BF0050E709 /* NPObjectMessageReceiver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NPObjectMessageReceiver.h; sourceTree = "<group>"; }; 1A1FA35C127A45BF0050E709 /* NPObjectMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NPObjectMessageReceiver.cpp; sourceTree = "<group>"; }; + 1A1FEC191627B3EF00700F6D /* WebConnection.messages.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = WebConnection.messages.in; sourceTree = "<group>"; }; + 1A1FEC1A1627B45600700F6D /* WebConnectionMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebConnectionMessageReceiver.cpp; sourceTree = "<group>"; }; + 1A1FEC1B1627B45700700F6D /* WebConnectionMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebConnectionMessages.h; sourceTree = "<group>"; }; 1A2161AE11F37664008AD0F5 /* NPRuntimeObjectMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NPRuntimeObjectMap.h; sourceTree = "<group>"; }; 1A2161AF11F37664008AD0F5 /* NPRuntimeObjectMap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NPRuntimeObjectMap.cpp; sourceTree = "<group>"; }; 1A2162AE11F38971008AD0F5 /* NPRuntimeUtilities.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NPRuntimeUtilities.cpp; sourceTree = "<group>"; }; @@ -1149,6 +1210,9 @@ 1A3DD205125E5A2F004515E6 /* APIClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APIClient.h; sourceTree = "<group>"; }; 1A3E735F11CC2659007BD539 /* WebPlatformStrategies.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebPlatformStrategies.h; sourceTree = "<group>"; }; 1A3E736011CC2659007BD539 /* WebPlatformStrategies.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebPlatformStrategies.cpp; sourceTree = "<group>"; }; + 1A3EED0C161A535300AEB4F5 /* MessageReceiverMap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MessageReceiverMap.cpp; sourceTree = "<group>"; }; + 1A3EED0D161A535300AEB4F5 /* MessageReceiverMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MessageReceiverMap.h; sourceTree = "<group>"; }; + 1A3EED11161A53D600AEB4F5 /* MessageReceiver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MessageReceiver.h; sourceTree = "<group>"; }; 1A433F0C113C53DD00FACDE9 /* WebErrors.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebErrors.h; sourceTree = "<group>"; }; 1A4A9AA612B7E796008FE984 /* WKTextInputWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKTextInputWindowController.h; sourceTree = "<group>"; }; 1A4A9AA712B7E796008FE984 /* WKTextInputWindowController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKTextInputWindowController.mm; sourceTree = "<group>"; }; @@ -1300,10 +1364,18 @@ 1CA8B935127C774E00576C2B /* WebInspectorProxyMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebInspectorProxyMac.mm; sourceTree = "<group>"; }; 1CA8B943127C882A00576C2B /* WebInspectorProxyMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebInspectorProxyMessageReceiver.cpp; sourceTree = "<group>"; }; 1CA8B944127C882A00576C2B /* WebInspectorProxyMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebInspectorProxyMessages.h; sourceTree = "<group>"; }; + 293EBEA91627D9C9005F89F1 /* WKDOMText.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKDOMText.h; sourceTree = "<group>"; }; + 293EBEAA1627D9C9005F89F1 /* WKDOMText.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKDOMText.mm; sourceTree = "<group>"; }; + 29501723162A4504004A9D71 /* WKWebProcessPlugInBrowserContextControllerPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKWebProcessPlugInBrowserContextControllerPrivate.h; sourceTree = "<group>"; }; 296BD85B15019BC30071F424 /* StringUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StringUtilities.h; sourceTree = "<group>"; }; 296BD85C15019BC30071F424 /* StringUtilities.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = StringUtilities.mm; sourceTree = "<group>"; }; 29CD55A8128E294F00133C85 /* WKAccessibilityWebPageObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKAccessibilityWebPageObject.h; sourceTree = "<group>"; }; 29CD55A9128E294F00133C85 /* WKAccessibilityWebPageObject.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKAccessibilityWebPageObject.mm; sourceTree = "<group>"; }; + 29D55DEE161BF8780031A2E3 /* WebPageGroupProxy.messages.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = WebPageGroupProxy.messages.in; sourceTree = "<group>"; }; + 29D55DEF161BF9F10031A2E3 /* WebPageGroupProxyMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebPageGroupProxyMessageReceiver.cpp; sourceTree = "<group>"; }; + 29D55DF0161BF9F10031A2E3 /* WebPageGroupProxyMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebPageGroupProxyMessages.h; sourceTree = "<group>"; }; + 2D870D0D1622B7F9000A3F20 /* PDFPlugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PDFPlugin.h; path = PDF/PDFPlugin.h; sourceTree = "<group>"; }; + 2D870D0E1622B7F9000A3F20 /* PDFPlugin.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = PDFPlugin.mm; path = PDF/PDFPlugin.mm; sourceTree = "<group>"; }; 31099968146C71F50029DEB9 /* WebNotificationClient.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WebNotificationClient.h; sourceTree = "<group>"; }; 31099971146C759B0029DEB9 /* WebNotificationClient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebNotificationClient.cpp; sourceTree = "<group>"; }; 312C0C49146DDC8A0016C911 /* WKNotificationProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKNotificationProvider.h; sourceTree = "<group>"; }; @@ -1393,6 +1465,15 @@ 4F601430155C5A32001FBDE0 /* BlockingResponseMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BlockingResponseMap.h; sourceTree = "<group>"; }; 510031F61379CACB00C8DFE4 /* WebProcessShim.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = WebProcessShim.dylib; sourceTree = BUILT_PRODUCTS_DIR; }; 51021E9B12B16788005C033C /* WebContextMenuClientMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebContextMenuClientMac.mm; sourceTree = "<group>"; }; + 510CC7DD16138E2900D03ED3 /* NetworkProcessMainMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = NetworkProcessMainMac.mm; sourceTree = "<group>"; }; + 510CC7DF16138E2900D03ED3 /* NetworkProcess.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = NetworkProcess.cpp; path = NetworkProcess/NetworkProcess.cpp; sourceTree = "<group>"; }; + 510CC7E016138E2900D03ED3 /* NetworkProcess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NetworkProcess.h; path = NetworkProcess/NetworkProcess.h; sourceTree = "<group>"; }; + 510CC7E116138E2900D03ED3 /* NetworkProcessMain.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NetworkProcessMain.h; path = NetworkProcess/NetworkProcessMain.h; sourceTree = "<group>"; }; + 510CC7EA16138E7200D03ED3 /* NetworkProcessProxy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NetworkProcessProxy.cpp; sourceTree = "<group>"; }; + 510CC7EB16138E7200D03ED3 /* NetworkProcessProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NetworkProcessProxy.h; sourceTree = "<group>"; }; + 510CC80E1613C79900D03ED3 /* NetworkProcess.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = NetworkProcess.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 510CC8191613C79900D03ED3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = NetworkProcess/Info.plist; sourceTree = "<group>"; }; + 510CC8461613C7C600D03ED3 /* NetworkProcess.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = NetworkProcess.xcconfig; sourceTree = "<group>"; }; 510FBB981288C95E00AFFDF4 /* WebContextMenuItemData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebContextMenuItemData.cpp; sourceTree = "<group>"; }; 510FBB991288C95E00AFFDF4 /* WebContextMenuItemData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebContextMenuItemData.h; sourceTree = "<group>"; }; 5110AE0A133C16CB0072717A /* WKIconDatabase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKIconDatabase.cpp; sourceTree = "<group>"; }; @@ -1454,6 +1535,7 @@ 5153569B1291B1D2000749DC /* WebPageContextMenuClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebPageContextMenuClient.h; sourceTree = "<group>"; }; 51578B821209ECEF00A37C4A /* WebData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebData.h; sourceTree = "<group>"; }; 5160BFE013381DF900918999 /* Logging.mac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = Logging.mac.mm; sourceTree = "<group>"; }; + 516319911628980A00E22F00 /* NetworkProcessProxyMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = NetworkProcessProxyMac.mm; path = mac/NetworkProcessProxyMac.mm; sourceTree = "<group>"; }; 516A4A5B120A2CCD00C05B7F /* WebError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebError.h; sourceTree = "<group>"; }; 517A33B3130B308C00F80CB5 /* WKApplicationCacheManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKApplicationCacheManager.cpp; sourceTree = "<group>"; }; 517A33B4130B308C00F80CB5 /* WKApplicationCacheManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKApplicationCacheManager.h; sourceTree = "<group>"; }; @@ -1475,6 +1557,10 @@ 51A7F2F2125BF820008AEB1D /* Logging.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Logging.h; sourceTree = "<group>"; }; 51A7F2F4125BF8D4008AEB1D /* Logging.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Logging.cpp; sourceTree = "<group>"; }; 51A84CE2127F386B00CA6EA4 /* WebContextMenuProxy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebContextMenuProxy.cpp; sourceTree = "<group>"; }; + 51A8A60F1627F2BD000D90E9 /* NetworkProcessCreationParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NetworkProcessCreationParameters.h; path = Network/NetworkProcessCreationParameters.h; sourceTree = "<group>"; }; + 51A8A6121627F325000D90E9 /* NetworkProcessCreationParameters.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = NetworkProcessCreationParameters.cpp; path = Network/NetworkProcessCreationParameters.cpp; sourceTree = "<group>"; }; + 51A8A6151627F3F9000D90E9 /* NetworkProcessMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = NetworkProcessMac.mm; sourceTree = "<group>"; }; + 51A8A6171627F5BB000D90E9 /* NetworkProcess.messages.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = NetworkProcess.messages.in; path = NetworkProcess/NetworkProcess.messages.in; sourceTree = "<group>"; }; 51A9E0FC1315CCDE009E7031 /* WebKeyValueStorageManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebKeyValueStorageManager.cpp; path = KeyValueStorage/WebKeyValueStorageManager.cpp; sourceTree = "<group>"; }; 51A9E0FD1315CCDE009E7031 /* WebKeyValueStorageManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebKeyValueStorageManager.h; path = KeyValueStorage/WebKeyValueStorageManager.h; sourceTree = "<group>"; }; 51A9E0FE1315CCDE009E7031 /* WebKeyValueStorageManager.messages.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = WebKeyValueStorageManager.messages.in; path = KeyValueStorage/WebKeyValueStorageManager.messages.in; sourceTree = "<group>"; }; @@ -1490,6 +1576,8 @@ 51ACBB81127A8BAD00D203B9 /* WebContextMenuProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebContextMenuProxy.h; sourceTree = "<group>"; }; 51ACBB9E127A8F2C00D203B9 /* WebContextMenuProxyMac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebContextMenuProxyMac.h; sourceTree = "<group>"; }; 51ACBB9F127A8F2C00D203B9 /* WebContextMenuProxyMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebContextMenuProxyMac.mm; sourceTree = "<group>"; }; + 51ACC9341628064800342550 /* NetworkProcessMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NetworkProcessMessageReceiver.cpp; sourceTree = "<group>"; }; + 51ACC9351628064800342550 /* NetworkProcessMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NetworkProcessMessages.h; sourceTree = "<group>"; }; 51B15A8213843A3900321AD8 /* EnvironmentUtilities.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = EnvironmentUtilities.cpp; path = unix/EnvironmentUtilities.cpp; sourceTree = "<group>"; }; 51B15A8313843A3900321AD8 /* EnvironmentUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = EnvironmentUtilities.h; path = unix/EnvironmentUtilities.h; sourceTree = "<group>"; }; 51B3004E12529D0E000B5CA0 /* WebBackForwardListCF.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebBackForwardListCF.cpp; path = cf/WebBackForwardListCF.cpp; sourceTree = "<group>"; }; @@ -1557,6 +1645,16 @@ B878B613133428DC006888E9 /* CorrectionPanel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CorrectionPanel.h; sourceTree = "<group>"; }; B878B614133428DC006888E9 /* CorrectionPanel.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = CorrectionPanel.mm; sourceTree = "<group>"; }; BC0092F6115837A300E0AE2A /* WorkQueueMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WorkQueueMac.cpp; sourceTree = "<group>"; }; + BC017CFF16260FF4007054F5 /* WKDOMDocument.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKDOMDocument.h; sourceTree = "<group>"; }; + BC017D0016260FF4007054F5 /* WKDOMDocument.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKDOMDocument.mm; sourceTree = "<group>"; }; + BC017D0116260FF4007054F5 /* WKDOMElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKDOMElement.h; sourceTree = "<group>"; }; + BC017D0216260FF4007054F5 /* WKDOMElement.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKDOMElement.mm; sourceTree = "<group>"; }; + BC017D0316260FF4007054F5 /* WKDOMInternals.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKDOMInternals.h; sourceTree = "<group>"; }; + BC017D0416260FF4007054F5 /* WKDOMInternals.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKDOMInternals.mm; sourceTree = "<group>"; }; + BC017D0516260FF4007054F5 /* WKDOMNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKDOMNode.h; sourceTree = "<group>"; }; + BC017D0616260FF4007054F5 /* WKDOMNode.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKDOMNode.mm; sourceTree = "<group>"; }; + BC017D1E16263308007054F5 /* WKDOMTextIterator.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKDOMTextIterator.mm; sourceTree = "<group>"; }; + BC017D1F16263308007054F5 /* WKDOMTextIterator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKDOMTextIterator.h; sourceTree = "<group>"; }; BC032D6010F4378D0058C15A /* WebChromeClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebChromeClient.h; sourceTree = "<group>"; }; BC032D6210F4378D0058C15A /* WebContextMenuClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebContextMenuClient.h; sourceTree = "<group>"; }; BC032D6610F4378D0058C15A /* WebDragClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebDragClient.h; sourceTree = "<group>"; }; @@ -1643,7 +1741,7 @@ BC1DFEA312B31F87005DF730 /* WebOpenPanelResultListenerProxy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebOpenPanelResultListenerProxy.cpp; sourceTree = "<group>"; }; BC204EE011C83E98008F3375 /* InjectedBundle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InjectedBundle.cpp; sourceTree = "<group>"; }; BC204EE111C83E98008F3375 /* InjectedBundle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InjectedBundle.h; sourceTree = "<group>"; }; - BC204EE511C83EA9008F3375 /* InjectedBundleMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InjectedBundleMac.cpp; sourceTree = "<group>"; }; + BC204EE511C83EA9008F3375 /* InjectedBundleMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = InjectedBundleMac.mm; sourceTree = "<group>"; }; BC204EE911C83EC8008F3375 /* WKBundle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKBundle.cpp; sourceTree = "<group>"; }; BC204EEA11C83EC8008F3375 /* WKBundle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKBundle.h; sourceTree = "<group>"; }; BC204EEB11C83EC8008F3375 /* WKBundleAPICast.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKBundleAPICast.h; sourceTree = "<group>"; }; @@ -1667,6 +1765,8 @@ BC33DD671238464600360F3F /* WebNumber.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebNumber.h; sourceTree = "<group>"; }; BC33E0CF12408E8600360F3F /* InjectedBundleRangeHandle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InjectedBundleRangeHandle.h; sourceTree = "<group>"; }; BC33E0D012408E8600360F3F /* InjectedBundleRangeHandle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InjectedBundleRangeHandle.cpp; sourceTree = "<group>"; }; + BC39C4331626366F008BC689 /* WKDOMRange.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKDOMRange.mm; sourceTree = "<group>"; }; + BC39C4341626366F008BC689 /* WKDOMRange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKDOMRange.h; sourceTree = "<group>"; }; BC3DE46615A91763008D26FC /* com.apple.WebKit2.WebProcessService.xpc */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = com.apple.WebKit2.WebProcessService.xpc; sourceTree = BUILT_PRODUCTS_DIR; }; BC3DE46815A91763008D26FC /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; BC4075D7124FF0270068F20A /* WKArray.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKArray.cpp; sourceTree = "<group>"; }; @@ -1787,6 +1887,9 @@ BC87DFA91018101400564216 /* libicucore.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libicucore.dylib; path = /usr/lib/libicucore.dylib; sourceTree = "<absolute>"; }; BC8A501011765AF700757573 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = WebProcess/Info.plist; sourceTree = "<group>"; }; BC8A501411765F5600757573 /* WKRetainPtr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKRetainPtr.h; sourceTree = "<group>"; }; + BC8F2F2816273A2B005FACB5 /* WKWebProcessPlugInBrowserContextController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKWebProcessPlugInBrowserContextController.mm; sourceTree = "<group>"; }; + BC8F2F2916273A2C005FACB5 /* WKWebProcessPlugInBrowserContextController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKWebProcessPlugInBrowserContextController.h; sourceTree = "<group>"; }; + BC8F2F2D16273ACB005FACB5 /* WKWebProcessPlugInBrowserContextControllerInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKWebProcessPlugInBrowserContextControllerInternal.h; sourceTree = "<group>"; }; BC90997F1256A98200083756 /* WKStringPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKStringPrivate.h; sourceTree = "<group>"; }; BC90A1D0122DD55E00CC8C50 /* WebURLResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebURLResponse.h; sourceTree = "<group>"; }; BC90A1D1122DD55E00CC8C50 /* WebURLResponse.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebURLResponse.cpp; sourceTree = "<group>"; }; @@ -1794,6 +1897,9 @@ BC9585C712F095B800755821 /* WebGestureEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebGestureEvent.cpp; sourceTree = "<group>"; }; BC963D6A113DD19200574BE2 /* WebPage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebPage.cpp; sourceTree = "<group>"; }; BC963D6D113DD1A500574BE2 /* WebPageMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebPageMac.mm; sourceTree = "<group>"; }; + BC989D7F161A7E5B000D46D3 /* WKWebProcessPlugIn.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKWebProcessPlugIn.mm; sourceTree = "<group>"; }; + BC989D80161A7E5C000D46D3 /* WKWebProcessPlugIn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKWebProcessPlugIn.h; sourceTree = "<group>"; }; + BC989D84161A988F000D46D3 /* WKWebProcessPlugInInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKWebProcessPlugInInternal.h; sourceTree = "<group>"; }; BC9B389F10F538BE00443A15 /* WebFrameProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebFrameProxy.h; sourceTree = "<group>"; }; BCA0EF7D12331E78007D3CFB /* WebUndoStep.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebUndoStep.h; sourceTree = "<group>"; }; BCA0EF7E12331E78007D3CFB /* WebUndoStep.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebUndoStep.cpp; sourceTree = "<group>"; }; @@ -1826,7 +1932,6 @@ BCB0B0DB12305A2500B1341E /* WebContextUserMessageCoders.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebContextUserMessageCoders.h; sourceTree = "<group>"; }; BCB0B0DD12305A8C00B1341E /* InjectedBundleUserMessageCoders.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InjectedBundleUserMessageCoders.h; sourceTree = "<group>"; }; BCB0B0DF12305AB100B1341E /* UserMessageCoders.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UserMessageCoders.h; sourceTree = "<group>"; }; - BCB28CBF120233D9007D99BC /* InjectedBundleMessageKinds.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InjectedBundleMessageKinds.h; sourceTree = "<group>"; }; BCB63477116BF10600603215 /* WebKit2_C.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebKit2_C.h; sourceTree = "<group>"; }; BCB86F4B116AAACD00CE20B7 /* WebKit2.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = WebKit2.xcconfig; sourceTree = "<group>"; }; BCB9E2411120DACA00A137E0 /* WebContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebContext.h; sourceTree = "<group>"; }; @@ -2023,8 +2128,8 @@ E19582D4153CC05300B60875 /* PDFKitImports.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PDFKitImports.mm; sourceTree = "<group>"; }; E1967E35150AB5D500C73169 /* com.apple.WebKit.PluginProcess.sb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = com.apple.WebKit.PluginProcess.sb; sourceTree = "<group>"; }; E1967E37150AB5E200C73169 /* com.apple.WebProcess.sb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = com.apple.WebProcess.sb; sourceTree = "<group>"; }; - E199875A142BF9B800BB2DE7 /* BuiltInPDFView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BuiltInPDFView.h; path = PDF/BuiltInPDFView.h; sourceTree = "<group>"; }; - E199875C142BFC9700BB2DE7 /* BuiltInPDFView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = BuiltInPDFView.mm; path = PDF/BuiltInPDFView.mm; sourceTree = "<group>"; }; + E199875A142BF9B800BB2DE7 /* SimplePDFPlugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SimplePDFPlugin.h; path = PDF/SimplePDFPlugin.h; sourceTree = "<group>"; }; + E199875C142BFC9700BB2DE7 /* SimplePDFPlugin.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = SimplePDFPlugin.mm; path = PDF/SimplePDFPlugin.mm; sourceTree = "<group>"; }; E1A31731134CEA6C007C9A4F /* AttributedString.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AttributedString.h; sourceTree = "<group>"; }; E1A31734134CEA80007C9A4F /* AttributedString.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = AttributedString.mm; sourceTree = "<group>"; }; E1AEA22D14687BDB00804569 /* WKFullKeyboardAccessWatcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKFullKeyboardAccessWatcher.h; sourceTree = "<group>"; }; @@ -2119,6 +2224,7 @@ 510031F61379CACB00C8DFE4 /* WebProcessShim.dylib */, BC3DE46615A91763008D26FC /* com.apple.WebKit2.WebProcessService.xpc */, BCAE9DE9160C097400A33217 /* com.apple.WebKit2.WebProcessServiceForWebKitDevelopment.xpc */, + 510CC80E1613C79900D03ED3 /* NetworkProcess.app */, ); name = Products; sourceTree = "<group>"; @@ -2135,6 +2241,7 @@ 1AADDF4B10D82AF000D3D63D /* Shared */, BC032DC310F438260058C15A /* UIProcess */, BC032D5C10F436D50058C15A /* WebProcess */, + 510CC7DA16138E0100D03ED3 /* NetworkProcess */, 1A0EC6B0124BBD36007EF4A5 /* PluginProcess */, 32C88DFF0371C24200C91783 /* Other Sources */, C0CE729D1247E71D00BC0EC4 /* Derived Sources */, @@ -2161,6 +2268,7 @@ 089C1665FE841158C02AAC07 /* Resources */ = { isa = PBXGroup; children = ( + 510CC84A1613C8AB00D03ED3 /* NetworkProcess */, BC122FA51327085D00F7EAC1 /* PluginProcess */, BC8A500E11765AD400757573 /* WebKit2 */, BC8A500F11765AE300757573 /* WebProcess */, @@ -2263,6 +2371,7 @@ BCAE9DFF160C0B4100A33217 /* CompilerVersion.xcconfig */, 1A4F976B100E7B6600637A18 /* DebugRelease.xcconfig */, 1A4F976C100E7B6600637A18 /* FeatureDefines.xcconfig */, + 510CC8461613C7C600D03ED3 /* NetworkProcess.xcconfig */, BC122FA3132707F300F7EAC1 /* PluginProcess.xcconfig */, 5183B3931379F85C00E8754E /* Shim.xcconfig */, 1A4F976E100E7B6600637A18 /* Version.xcconfig */, @@ -2414,6 +2523,7 @@ C01A25FF12662F2100C9ED55 /* cg */, BC111B5F112F635E00337BAB /* CoreIPCSupport */, BC111B5A112F628200337BAB /* mac */, + 51A8A60D1627F2AC000D90E9 /* Network */, 1AAE058C1279DCD400852418 /* Plugins */, 1A3DD205125E5A2F004515E6 /* APIClient.h */, 5D51845313BCF9CC00C7FF4A /* APIClientTraits.cpp */, @@ -2477,6 +2587,7 @@ BCF50726124329AA005955AE /* WebCertificateInfo.h */, BC4A628B147312BE006C681A /* WebConnection.cpp */, BC4A628C147312BE006C681A /* WebConnection.h */, + 1A1FEC191627B3EF00700F6D /* WebConnection.messages.in */, BC4A628D147312BE006C681A /* WebConnectionClient.cpp */, BC4A628E147312BE006C681A /* WebConnectionClient.h */, 512935D51288D19400A4B695 /* WebContextMenuItem.cpp */, @@ -2600,6 +2711,9 @@ 1A8EFDF91253CAA200F7067F /* DataReference.h */, C0CE72AC1247E78D00BC0EC4 /* HandleMessage.h */, BC032DA410F437D10058C15A /* MessageID.h */, + 1A3EED11161A53D600AEB4F5 /* MessageReceiver.h */, + 1A3EED0C161A535300AEB4F5 /* MessageReceiverMap.cpp */, + 1A3EED0D161A535300AEB4F5 /* MessageReceiverMap.h */, 1A119A94127B796200A9ECB1 /* MessageSender.h */, ); path = CoreIPC; @@ -2722,6 +2836,46 @@ name = cf; sourceTree = "<group>"; }; + 510CC7DA16138E0100D03ED3 /* NetworkProcess */ = { + isa = PBXGroup; + children = ( + 510CC7DC16138E2900D03ED3 /* mac */, + 510CC7DF16138E2900D03ED3 /* NetworkProcess.cpp */, + 510CC7E016138E2900D03ED3 /* NetworkProcess.h */, + 51A8A6171627F5BB000D90E9 /* NetworkProcess.messages.in */, + 510CC7E116138E2900D03ED3 /* NetworkProcessMain.h */, + ); + name = NetworkProcess; + sourceTree = "<group>"; + }; + 510CC7DC16138E2900D03ED3 /* mac */ = { + isa = PBXGroup; + children = ( + 51A8A6151627F3F9000D90E9 /* NetworkProcessMac.mm */, + 510CC7DD16138E2900D03ED3 /* NetworkProcessMainMac.mm */, + ); + name = mac; + path = NetworkProcess/mac; + sourceTree = "<group>"; + }; + 510CC7E716138E7200D03ED3 /* Network */ = { + isa = PBXGroup; + children = ( + 516319931628980E00E22F00 /* mac */, + 510CC7EA16138E7200D03ED3 /* NetworkProcessProxy.cpp */, + 510CC7EB16138E7200D03ED3 /* NetworkProcessProxy.h */, + ); + path = Network; + sourceTree = "<group>"; + }; + 510CC84A1613C8AB00D03ED3 /* NetworkProcess */ = { + isa = PBXGroup; + children = ( + 510CC8191613C79900D03ED3 /* Info.plist */, + ); + name = NetworkProcess; + sourceTree = "<group>"; + }; 5123CF18133D25E60056F800 /* cg */ = { isa = PBXGroup; children = ( @@ -2767,6 +2921,23 @@ path = Authentication; sourceTree = "<group>"; }; + 516319931628980E00E22F00 /* mac */ = { + isa = PBXGroup; + children = ( + 516319911628980A00E22F00 /* NetworkProcessProxyMac.mm */, + ); + name = mac; + sourceTree = "<group>"; + }; + 51A8A60D1627F2AC000D90E9 /* Network */ = { + isa = PBXGroup; + children = ( + 51A8A6121627F325000D90E9 /* NetworkProcessCreationParameters.cpp */, + 51A8A60F1627F2BD000D90E9 /* NetworkProcessCreationParameters.h */, + ); + name = Network; + sourceTree = "<group>"; + }; 51A9E0FB1315CC0E009E7031 /* KeyValueStorage */ = { isa = PBXGroup; children = ( @@ -2824,6 +2995,27 @@ name = mac; sourceTree = "<group>"; }; + BC017D1016260FFD007054F5 /* DOM */ = { + isa = PBXGroup; + children = ( + BC017CFF16260FF4007054F5 /* WKDOMDocument.h */, + BC017D0016260FF4007054F5 /* WKDOMDocument.mm */, + BC017D0116260FF4007054F5 /* WKDOMElement.h */, + BC017D0216260FF4007054F5 /* WKDOMElement.mm */, + BC017D0316260FF4007054F5 /* WKDOMInternals.h */, + BC017D0416260FF4007054F5 /* WKDOMInternals.mm */, + BC017D0516260FF4007054F5 /* WKDOMNode.h */, + BC017D0616260FF4007054F5 /* WKDOMNode.mm */, + BC39C4341626366F008BC689 /* WKDOMRange.h */, + BC39C4331626366F008BC689 /* WKDOMRange.mm */, + 293EBEA91627D9C9005F89F1 /* WKDOMText.h */, + 293EBEAA1627D9C9005F89F1 /* WKDOMText.mm */, + BC017D1F16263308007054F5 /* WKDOMTextIterator.h */, + BC017D1E16263308007054F5 /* WKDOMTextIterator.mm */, + ); + name = DOM; + sourceTree = "<group>"; + }; BC032D5C10F436D50058C15A /* WebProcess */ = { isa = PBXGroup; children = ( @@ -2934,6 +3126,7 @@ C0CE72581247E4DA00BC0EC4 /* WebPage.messages.in */, BC7B621412A4219A00D174A4 /* WebPageGroupProxy.cpp */, BC7B621312A4219A00D174A4 /* WebPageGroupProxy.h */, + 29D55DEE161BF8780031A2E3 /* WebPageGroupProxy.messages.in */, BCA0EF7E12331E78007D3CFB /* WebUndoStep.cpp */, BCA0EF7D12331E78007D3CFB /* WebUndoStep.h */, ); @@ -2949,6 +3142,7 @@ 1AB7D4C71288AA9A00CFD08C /* Downloads */, BC111B18112F5FB400337BAB /* Launcher */, BCCF085C113F3B7500C650C5 /* mac */, + 510CC7E716138E7200D03ED3 /* Network */, 31A2EC401489973700810D71 /* Notifications */, 1AEFCC0511D01F34008219D3 /* Plugins */, 1A64256712DE42EC00CAAE2C /* BackingStore.cpp */, @@ -3296,7 +3490,6 @@ BC111B5F112F635E00337BAB /* CoreIPCSupport */ = { isa = PBXGroup; children = ( - BCB28CBF120233D9007D99BC /* InjectedBundleMessageKinds.h */, BCE9C0B61484714700E33D61 /* WebConnectionMessageKinds.h */, BCCB75C51203A1CE00222D1B /* WebContextMessageKinds.h */, ); @@ -3359,7 +3552,7 @@ BC204EE411C83E9C008F3375 /* mac */ = { isa = PBXGroup; children = ( - BC204EE511C83EA9008F3375 /* InjectedBundleMac.cpp */, + BC204EE511C83EA9008F3375 /* InjectedBundleMac.mm */, ); path = mac; sourceTree = "<group>"; @@ -3368,6 +3561,7 @@ isa = PBXGroup; children = ( BC204EE811C83EB7008F3375 /* c */, + BC989D4516181691000D46D3 /* mac */, ); path = API; sourceTree = "<group>"; @@ -3518,6 +3712,21 @@ path = mac; sourceTree = "<group>"; }; + BC989D4516181691000D46D3 /* mac */ = { + isa = PBXGroup; + children = ( + BC017D1016260FFD007054F5 /* DOM */, + BC989D80161A7E5C000D46D3 /* WKWebProcessPlugIn.h */, + BC989D7F161A7E5B000D46D3 /* WKWebProcessPlugIn.mm */, + BC989D84161A988F000D46D3 /* WKWebProcessPlugInInternal.h */, + BC8F2F2916273A2C005FACB5 /* WKWebProcessPlugInBrowserContextController.h */, + BC8F2F2816273A2B005FACB5 /* WKWebProcessPlugInBrowserContextController.mm */, + BC8F2F2D16273ACB005FACB5 /* WKWebProcessPlugInBrowserContextControllerInternal.h */, + 29501723162A4504004A9D71 /* WKWebProcessPlugInBrowserContextControllerPrivate.h */, + ); + path = mac; + sourceTree = "<group>"; + }; BCAE9DED160C097400A33217 /* WebProcessServiceForWebKitDevelopment */ = { isa = PBXGroup; children = ( @@ -3697,6 +3906,8 @@ children = ( 512F58A012A883AD00629530 /* AuthenticationManagerMessageReceiver.cpp */, 512F58A112A883AD00629530 /* AuthenticationManagerMessages.h */, + E1967E35150AB5D500C73169 /* com.apple.WebKit.PluginProcess.sb */, + E1967E37150AB5E200C73169 /* com.apple.WebProcess.sb */, 1AB7D6171288B9D900CFD08C /* DownloadProxyMessageReceiver.cpp */, 1AB7D6181288B9D900CFD08C /* DownloadProxyMessages.h */, 1A64229712DD029200CAAE2C /* DrawingAreaMessageReceiver.cpp */, @@ -3705,6 +3916,8 @@ 1A64230712DD09EB00CAAE2C /* DrawingAreaProxyMessages.h */, 1AA575FF1496B7C000A4EE06 /* EventDispatcherMessageReceiver.cpp */, 1AA576001496B7C000A4EE06 /* EventDispatcherMessages.h */, + 51ACC9341628064800342550 /* NetworkProcessMessageReceiver.cpp */, + 51ACC9351628064800342550 /* NetworkProcessMessages.h */, 1A2D8437127F65D5001EB962 /* NPObjectMessageReceiverMessageReceiver.cpp */, 1A2D8438127F65D5001EB962 /* NPObjectMessageReceiverMessages.h */, 1A8EF96C1252AF6B00F7067F /* PluginControllerProxyMessageReceiver.cpp */, @@ -3721,6 +3934,8 @@ 512E3569130B57F000ABD19A /* WebApplicationCacheManagerMessages.h */, 512E35F6130B642E00ABD19A /* WebApplicationCacheManagerProxyMessageReceiver.cpp */, 512E35F7130B642E00ABD19A /* WebApplicationCacheManagerProxyMessages.h */, + 1A1FEC1A1627B45600700F6D /* WebConnectionMessageReceiver.cpp */, + 1A1FEC1B1627B45700700F6D /* WebConnectionMessages.h */, BCEE7D0B12846F69009827DA /* WebContextMessageReceiver.cpp */, BCEE7D0C12846F69009827DA /* WebContextMessages.h */, 330934431315B9220097A7BC /* WebCookieManagerMessageReceiver.cpp */, @@ -3759,6 +3974,8 @@ 31BA9249148830810062EDB5 /* WebNotificationManagerMessages.h */, 318BE1651473433700A8FBB2 /* WebNotificationManagerProxyMessageReceiver.cpp */, 318BE1661473433700A8FBB2 /* WebNotificationManagerProxyMessages.h */, + 29D55DEF161BF9F10031A2E3 /* WebPageGroupProxyMessageReceiver.cpp */, + 29D55DF0161BF9F10031A2E3 /* WebPageGroupProxyMessages.h */, C0CE729E1247E71D00BC0EC4 /* WebPageMessageReceiver.cpp */, C0CE729F1247E71D00BC0EC4 /* WebPageMessages.h */, BCBD3912125BB1A800D2C29F /* WebPageProxyMessageReceiver.cpp */, @@ -3773,8 +3990,6 @@ 33367652130C9ECA006C9DE2 /* WebResourceCacheManagerMessages.h */, 33367653130C9ECA006C9DE2 /* WebResourceCacheManagerProxyMessageReceiver.cpp */, 33367654130C9ECA006C9DE2 /* WebResourceCacheManagerProxyMessages.h */, - E1967E35150AB5D500C73169 /* com.apple.WebKit.PluginProcess.sb */, - E1967E37150AB5E200C73169 /* com.apple.WebProcess.sb */, ); name = "Derived Sources"; path = DerivedSources/WebKit2; @@ -3816,8 +4031,10 @@ E199875B142BF9CF00BB2DE7 /* PDF */ = { isa = PBXGroup; children = ( - E199875C142BFC9700BB2DE7 /* BuiltInPDFView.mm */, - E199875A142BF9B800BB2DE7 /* BuiltInPDFView.h */, + 2D870D0D1622B7F9000A3F20 /* PDFPlugin.h */, + 2D870D0E1622B7F9000A3F20 /* PDFPlugin.mm */, + E199875C142BFC9700BB2DE7 /* SimplePDFPlugin.mm */, + E199875A142BF9B800BB2DE7 /* SimplePDFPlugin.h */, ); name = PDF; sourceTree = "<group>"; @@ -3916,7 +4133,6 @@ 935EEBA4127761D6003322B8 /* InjectedBundleBackForwardListItem.h in Headers */, BCEE7DC5128B645D009827DA /* InjectedBundleClient.h in Headers */, BC498618124D10E200D834E1 /* InjectedBundleHitTestResult.h in Headers */, - BCB28CC0120233D9007D99BC /* InjectedBundleMessageKinds.h in Headers */, BC8147D512F66D31007B2C32 /* InjectedBundleNavigationAction.h in Headers */, BC4BEEAB120A0A5F00FBA0C7 /* InjectedBundleNodeHandle.h in Headers */, 512935E41288D97800A4B695 /* InjectedBundlePageContextMenuClient.h in Headers */, @@ -4299,6 +4515,27 @@ BC59548915C7868500FD1E3E /* WebKit2.h in Headers */, BCDC308815FD6A8B006B6695 /* WebProcessInitialization.h in Headers */, BCDC308C15FD6CD1006B6695 /* WebProcessServiceEntryPoints.h in Headers */, + BC989D82161A7E5D000D46D3 /* WKWebProcessPlugIn.h in Headers */, + BC989D85161A9890000D46D3 /* WKWebProcessPlugInInternal.h in Headers */, + 1A3EED0F161A535400AEB4F5 /* MessageReceiverMap.h in Headers */, + 1A3EED12161A53D600AEB4F5 /* MessageReceiver.h in Headers */, + 29D55DF2161BF9F10031A2E3 /* WebPageGroupProxyMessages.h in Headers */, + BC017D0716260FF4007054F5 /* WKDOMDocument.h in Headers */, + BC017D0916260FF4007054F5 /* WKDOMElement.h in Headers */, + BC017D0B16260FF4007054F5 /* WKDOMInternals.h in Headers */, + BC017D0D16260FF4007054F5 /* WKDOMNode.h in Headers */, + BC017D2116263308007054F5 /* WKDOMTextIterator.h in Headers */, + BC39C4361626366F008BC689 /* WKDOMRange.h in Headers */, + BC8F2F2B16273A2C005FACB5 /* WKWebProcessPlugInBrowserContextController.h in Headers */, + BC8F2F2E16273ACC005FACB5 /* WKWebProcessPlugInBrowserContextControllerInternal.h in Headers */, + 1A1FEC1D1627B45700700F6D /* WebConnectionMessages.h in Headers */, + 293EBEAB1627D9C9005F89F1 /* WKDOMText.h in Headers */, + 51795569162876EE00FA43B6 /* NetworkProcessMain.h in Headers */, + 5179556A162876F300FA43B6 /* NetworkProcess.h in Headers */, + 5179556E162877B300FA43B6 /* NetworkProcessProxy.h in Headers */, + 51795571162877D200FA43B6 /* NetworkProcessCreationParameters.h in Headers */, + 5163199516289A6300E22F00 /* NetworkProcessMessages.h in Headers */, + 29501724162A4504004A9D71 /* WKWebProcessPlugInBrowserContextControllerPrivate.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -4358,6 +4595,23 @@ productReference = 510031F61379CACB00C8DFE4 /* WebProcessShim.dylib */; productType = "com.apple.product-type.library.dynamic"; }; + 510CC80D1613C79900D03ED3 /* NetworkProcess */ = { + isa = PBXNativeTarget; + buildConfigurationList = 510CC8431613C79900D03ED3 /* Build configuration list for PBXNativeTarget "NetworkProcess" */; + buildPhases = ( + 510CC80A1613C79900D03ED3 /* Sources */, + 510CC80C1613C79900D03ED3 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 510CC8511613C98D00D03ED3 /* PBXTargetDependency */, + ); + name = NetworkProcess; + productName = NetworkProcess; + productReference = 510CC80E1613C79900D03ED3 /* NetworkProcess.app */; + productType = "com.apple.product-type.application"; + }; 8DC2EF4F0486A6940098B216 /* WebKit2 */ = { isa = PBXNativeTarget; buildConfigurationList = 1DEB91AD08733DA50010E9CD /* Build configuration list for PBXNativeTarget "WebKit2" */; @@ -4468,6 +4722,7 @@ 8DC2EF4F0486A6940098B216 /* WebKit2 */, 1A50DB1D110A3BDC000D3FE5 /* WebProcess */, BCDE093313272496001259FB /* PluginProcess */, + 510CC80D1613C79900D03ED3 /* NetworkProcess */, C0CE72851247E66800BC0EC4 /* Derived Sources */, 1AC25FAF12A48EA700BD2671 /* PluginProcessShim */, 510031EA1379CACB00C8DFE4 /* WebProcessShim */, @@ -4487,6 +4742,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 510CC80C1613C79900D03ED3 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 8DC2EF520486A6940098B216 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -4639,7 +4901,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "ln -sf ${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/WebKit2.framework/Versions/Current/XPCServices \"${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/WebKit2.framework/XPCServices\"\n"; + shellScript = "ln -sf Versions/Current/XPCServices \"${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/WebKit2.framework/XPCServices\"\n"; }; BCFFCA8B160D6E7B003DF315 /* Copy XPC services for engineering builds */ = { isa = PBXShellScriptBuildPhase; @@ -4715,11 +4977,20 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 510CC80A1613C79900D03ED3 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 510CC84F1613C92C00D03ED3 /* MainMacProcess.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 8DC2EF540486A6940098B216 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 5D51845513BCF9CC00C7FF4A /* APIClientTraits.cpp in Sources */, + 2D870D1016234FFE000A3F20 /* PDFPlugin.mm in Sources */, B63403F914910D57001070B5 /* APIObject.cpp in Sources */, 1A3D610513A7F03A00F95D4E /* ArgumentCoders.cpp in Sources */, 1AAF0C4B12B16334008E49E2 /* ArgumentCodersCF.cpp in Sources */, @@ -4736,7 +5007,7 @@ 1A64256912DE42EC00CAAE2C /* BackingStore.cpp in Sources */, 1A64292D12DE5F9800CAAE2C /* BackingStoreMac.mm in Sources */, 1AC41AC81263C88300054E94 /* BinarySemaphore.cpp in Sources */, - E199875E142C045400BB2DE7 /* BuiltInPDFView.mm in Sources */, + E199875E142C045400BB2DE7 /* SimplePDFPlugin.mm in Sources */, 1AA2E51E12E4C05E00BC4966 /* CGUtilities.cpp in Sources */, 1A2D957012848564001EB962 /* ChildProcess.cpp in Sources */, 1A6F9FB711E1408500DB1371 /* CommandLineMac.cpp in Sources */, @@ -4778,7 +5049,7 @@ 935EEBA3127761D3003322B8 /* InjectedBundleBackForwardListItem.cpp in Sources */, BCEE7DC6128B645D009827DA /* InjectedBundleClient.cpp in Sources */, BC498619124D10E200D834E1 /* InjectedBundleHitTestResult.cpp in Sources */, - BC204EE611C83EA9008F3375 /* InjectedBundleMac.cpp in Sources */, + BC204EE611C83EA9008F3375 /* InjectedBundleMac.mm in Sources */, BC8147D612F66D31007B2C32 /* InjectedBundleNavigationAction.cpp in Sources */, BC4BEEAC120A0A5F00FBA0C7 /* InjectedBundleNodeHandle.cpp in Sources */, 512935E31288D97800A4B695 /* InjectedBundlePageContextMenuClient.cpp in Sources */, @@ -5155,6 +5426,25 @@ CD67D30E15C08F9A00843ADF /* InjectedBundlePageDiagnosticLoggingClient.cpp in Sources */, BCDC308715FD6A8B006B6695 /* WebProcessInitialization.mm in Sources */, BCDC308B15FD6CD1006B6695 /* WebProcessServiceEntryPoints.mm in Sources */, + BC989D81161A7E5D000D46D3 /* WKWebProcessPlugIn.mm in Sources */, + 1A3EED0E161A535400AEB4F5 /* MessageReceiverMap.cpp in Sources */, + 29D55DF1161BF9F10031A2E3 /* WebPageGroupProxyMessageReceiver.cpp in Sources */, + BC017D0816260FF4007054F5 /* WKDOMDocument.mm in Sources */, + BC017D0A16260FF4007054F5 /* WKDOMElement.mm in Sources */, + BC017D0C16260FF4007054F5 /* WKDOMInternals.mm in Sources */, + BC017D0E16260FF4007054F5 /* WKDOMNode.mm in Sources */, + BC017D2016263308007054F5 /* WKDOMTextIterator.mm in Sources */, + BC39C4351626366F008BC689 /* WKDOMRange.mm in Sources */, + BC8F2F2A16273A2C005FACB5 /* WKWebProcessPlugInBrowserContextController.mm in Sources */, + 1A1FEC1C1627B45700700F6D /* WebConnectionMessageReceiver.cpp in Sources */, + 293EBEAC1627D9C9005F89F1 /* WKDOMText.mm in Sources */, + 51795565162876C500FA43B6 /* NetworkProcessMainMac.mm in Sources */, + 51795567162876CB00FA43B6 /* NetworkProcessMac.mm in Sources */, + 51795568162876CF00FA43B6 /* NetworkProcess.cpp in Sources */, + 5179556D162877B100FA43B6 /* NetworkProcessProxy.cpp in Sources */, + 51795570162877CF00FA43B6 /* NetworkProcessCreationParameters.cpp in Sources */, + 516319921628980A00E22F00 /* NetworkProcessProxyMac.mm in Sources */, + 5163199416289A6000E22F00 /* NetworkProcessMessageReceiver.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -5200,6 +5490,16 @@ target = C0CE72851247E66800BC0EC4 /* Derived Sources */; targetProxy = 37F7407812721F740093869B /* PBXContainerItemProxy */; }; + 510CC8481613C85300D03ED3 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 510CC80D1613C79900D03ED3 /* NetworkProcess */; + targetProxy = 510CC8471613C85300D03ED3 /* PBXContainerItemProxy */; + }; + 510CC8511613C98D00D03ED3 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 8DC2EF4F0486A6940098B216 /* WebKit2 */; + targetProxy = 510CC8501613C98D00D03ED3 /* PBXContainerItemProxy */; + }; 5183B38E1379F54600E8754E /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 510031EA1379CACB00C8DFE4 /* WebProcessShim */; @@ -5372,6 +5672,27 @@ }; name = Production; }; + 510CC83D1613C79900D03ED3 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 510CC8461613C7C600D03ED3 /* NetworkProcess.xcconfig */; + buildSettings = { + }; + name = Debug; + }; + 510CC83E1613C79900D03ED3 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 510CC8461613C7C600D03ED3 /* NetworkProcess.xcconfig */; + buildSettings = { + }; + name = Release; + }; + 510CC83F1613C79900D03ED3 /* Production */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 510CC8461613C7C600D03ED3 /* NetworkProcess.xcconfig */; + buildSettings = { + }; + name = Production; + }; 5D22D69B11A7534600BF30E5 /* Production */ = { isa = XCBuildConfiguration; baseConfigurationReference = 1A4F976A100E7B6600637A18 /* Base.xcconfig */; @@ -5559,6 +5880,16 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Production; }; + 510CC8431613C79900D03ED3 /* Build configuration list for PBXNativeTarget "NetworkProcess" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 510CC83D1613C79900D03ED3 /* Debug */, + 510CC83E1613C79900D03ED3 /* Release */, + 510CC83F1613C79900D03ED3 /* Production */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Production; + }; BC3DE47615A91764008D26FC /* Build configuration list for PBXNativeTarget "WebProcessService" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/Source/WebKit2/WebKit2Prefix.h b/Source/WebKit2/WebKit2Prefix.h index 4deb6299a..1edf3269e 100644 --- a/Source/WebKit2/WebKit2Prefix.h +++ b/Source/WebKit2/WebKit2Prefix.h @@ -40,6 +40,8 @@ #define ENABLE_PLUGIN_PROCESS 1 #endif +#define ENABLE_NETWORK_PROCESS 1 + #define ENABLE_MEMORY_SAMPLER 1 #include <CoreFoundation/CoreFoundation.h> diff --git a/Source/WebKit2/WebProcess.pro b/Source/WebKit2/WebProcess.pro index a876534b7..5eba7ac42 100644 --- a/Source/WebKit2/WebProcess.pro +++ b/Source/WebKit2/WebProcess.pro @@ -11,7 +11,7 @@ DESTDIR = $${ROOT_BUILD_DIR}/bin SOURCES += qt/MainQt.cpp -QT += network webkit widgets +QT += network webkitwidgets widgets macx: QT += xml contains(QT_CONFIG, opengl) { diff --git a/Source/WebKit2/WebProcess/Authentication/AuthenticationManager.cpp b/Source/WebKit2/WebProcess/Authentication/AuthenticationManager.cpp index 44e8306e0..a6858ac28 100644 --- a/Source/WebKit2/WebProcess/Authentication/AuthenticationManager.cpp +++ b/Source/WebKit2/WebProcess/Authentication/AuthenticationManager.cpp @@ -55,6 +55,7 @@ AuthenticationManager& AuthenticationManager::shared() AuthenticationManager::AuthenticationManager() { + WebProcess::shared().connection()->addMessageReceiver(CoreIPC::MessageClassAuthenticationManager, this); } void AuthenticationManager::didReceiveMessage(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::ArgumentDecoder* arguments) diff --git a/Source/WebKit2/WebProcess/Authentication/AuthenticationManager.h b/Source/WebKit2/WebProcess/Authentication/AuthenticationManager.h index 192c91aef..93afe446b 100644 --- a/Source/WebKit2/WebProcess/Authentication/AuthenticationManager.h +++ b/Source/WebKit2/WebProcess/Authentication/AuthenticationManager.h @@ -26,6 +26,7 @@ #ifndef AuthenticationManager_h #define AuthenticationManager_h +#include "MessageReceiver.h" #include <wtf/HashMap.h> namespace CoreIPC { @@ -45,14 +46,12 @@ class Download; class PlatformCertificateInfo; class WebFrame; -class AuthenticationManager { +class AuthenticationManager : private CoreIPC::MessageReceiver { WTF_MAKE_NONCOPYABLE(AuthenticationManager); public: static AuthenticationManager& shared(); - void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); - void didReceiveAuthenticationChallenge(WebFrame*, const WebCore::AuthenticationChallenge&); void didReceiveAuthenticationChallenge(Download*, const WebCore::AuthenticationChallenge&); @@ -63,6 +62,8 @@ public: private: AuthenticationManager(); + // CoreIPC::MessageReceiver + virtual void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*) OVERRIDE; void didReceiveAuthenticationManagerMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); bool tryUsePlatformCertificateInfoForChallenge(const WebCore::AuthenticationChallenge&, const PlatformCertificateInfo&); diff --git a/Source/WebKit2/WebProcess/Downloads/soup/DownloadSoup.cpp b/Source/WebKit2/WebProcess/Downloads/soup/DownloadSoup.cpp index 38117ebb3..ab4b6eee4 100644 --- a/Source/WebKit2/WebProcess/Downloads/soup/DownloadSoup.cpp +++ b/Source/WebKit2/WebProcess/Downloads/soup/DownloadSoup.cpp @@ -49,9 +49,16 @@ class DownloadClient : public ResourceHandleClient { public: DownloadClient(Download* download) : m_download(download) + , m_handleResponseLaterID(0) { } + ~DownloadClient() + { + if (m_handleResponseLaterID) + g_source_remove(m_handleResponseLaterID); + } + void downloadFailed(const ResourceError& error) { m_download->didFail(error, CoreIPC::DataReference()); @@ -96,11 +103,20 @@ public: return; } + GRefPtr<GFileInfo> info = adoptGRef(g_file_info_new()); + g_file_info_set_attribute_string(info.get(), "metadata::download-uri", response.url().string().utf8().data()); + g_file_set_attributes_async(file.get(), info.get(), G_FILE_QUERY_INFO_NONE, G_PRIORITY_DEFAULT, 0, 0, 0); + m_download->didCreateDestination(destinationURI); } void didReceiveData(ResourceHandle*, const char* data, int length, int /*encodedDataLength*/) { + if (m_handleResponseLaterID) { + g_source_remove(m_handleResponseLaterID); + handleResponse(); + } + gsize bytesWritten; GOwnPtr<GError> error; g_output_stream_write_all(G_OUTPUT_STREAM(m_outputStream.get()), data, length, &bytesWritten, 0, &error.outPtr()); @@ -132,9 +148,35 @@ public: notImplemented(); } + void handleResponse() + { + m_handleResponseLaterID = 0; + didReceiveResponse(0, m_delayedResponse); + } + + static gboolean handleResponseLaterCallback(DownloadClient* downloadClient) + { + downloadClient->handleResponse(); + return FALSE; + } + + void handleResponseLater(const ResourceResponse& response) + { + ASSERT(!m_response); + ASSERT(!m_handleResponseLaterID); + + m_delayedResponse = response; + + // Call didReceiveResponse in an idle to make sure the download is added + // to the DownloadManager downloads map. + m_handleResponseLaterID = g_idle_add_full(G_PRIORITY_DEFAULT, reinterpret_cast<GSourceFunc>(handleResponseLaterCallback), this, 0); + } + Download* m_download; GRefPtr<GFileOutputStream> m_outputStream; GRefPtr<SoupMessage> m_response; + ResourceResponse m_delayedResponse; + unsigned m_handleResponseLaterID; }; void Download::start(WebPage*) @@ -146,7 +188,7 @@ void Download::start(WebPage*) didStart(); } -void Download::startWithHandle(WebPage*, ResourceHandle* resourceHandle, const ResourceResponse&) +void Download::startWithHandle(WebPage*, ResourceHandle* resourceHandle, const ResourceResponse& response) { ASSERT(!m_downloadClient); ASSERT(!m_resourceHandle); @@ -154,10 +196,7 @@ void Download::startWithHandle(WebPage*, ResourceHandle* resourceHandle, const R resourceHandle->setClient(m_downloadClient.get()); m_resourceHandle = resourceHandle; didStart(); - // If the handle already got a response, make sure the download client is notified. - ResourceHandleInternal* handleInternal = m_resourceHandle->getInternal(); - if (!handleInternal->m_response.isNull()) - m_downloadClient->didReceiveResponse(m_resourceHandle.get(), handleInternal->m_response); + static_cast<DownloadClient*>(m_downloadClient.get())->handleResponseLater(response); } void Download::cancel() diff --git a/Source/WebKit2/WebProcess/FullScreen/WebFullScreenManager.cpp b/Source/WebKit2/WebProcess/FullScreen/WebFullScreenManager.cpp index c5fc81a9e..1c7a78db0 100644 --- a/Source/WebKit2/WebProcess/FullScreen/WebFullScreenManager.cpp +++ b/Source/WebKit2/WebProcess/FullScreen/WebFullScreenManager.cpp @@ -52,7 +52,7 @@ static IntRect screenRectOfContents(Element* element) #if USE(ACCELERATED_COMPOSITING) if (element->renderer() && element->renderer()->hasLayer() && element->renderer()->enclosingLayer()->isComposited()) { FloatQuad contentsBox = static_cast<FloatRect>(element->renderer()->enclosingLayer()->backing()->contentsBox()); - contentsBox = element->renderer()->localToAbsoluteQuad(contentsBox); + contentsBox = element->renderer()->localToAbsoluteQuad(contentsBox, SnapOffsetForTransforms); return element->renderer()->view()->frameView()->contentsToScreen(contentsBox.enclosingBoundingBox()); } #endif diff --git a/Source/WebKit2/WebProcess/Geolocation/GeolocationPermissionRequestManager.cpp b/Source/WebKit2/WebProcess/Geolocation/GeolocationPermissionRequestManager.cpp index 7013fcdc6..0d110c53a 100644 --- a/Source/WebKit2/WebProcess/Geolocation/GeolocationPermissionRequestManager.cpp +++ b/Source/WebKit2/WebProcess/Geolocation/GeolocationPermissionRequestManager.cpp @@ -73,7 +73,7 @@ void GeolocationPermissionRequestManager::cancelRequestForGeolocation(Geolocatio if (it == m_geolocationToIDMap.end()) return; - uint64_t geolocationID = it->second; + uint64_t geolocationID = it->value; m_geolocationToIDMap.remove(it); m_idToGeolocationMap.remove(geolocationID); } @@ -84,7 +84,7 @@ void GeolocationPermissionRequestManager::didReceiveGeolocationPermissionDecisio if (it == m_idToGeolocationMap.end()) return; - Geolocation* geolocation = it->second; + Geolocation* geolocation = it->value; geolocation->setIsAllowed(allowed); m_idToGeolocationMap.remove(it); diff --git a/Source/WebKit2/WebProcess/Geolocation/WebGeolocationManager.cpp b/Source/WebKit2/WebProcess/Geolocation/WebGeolocationManager.cpp index f07c4060d..2aec5a727 100644 --- a/Source/WebKit2/WebProcess/Geolocation/WebGeolocationManager.cpp +++ b/Source/WebKit2/WebProcess/Geolocation/WebGeolocationManager.cpp @@ -41,6 +41,7 @@ namespace WebKit { WebGeolocationManager::WebGeolocationManager(WebProcess* process) : m_process(process) + , m_didAddMessageReceiver(false) { } @@ -55,6 +56,11 @@ void WebGeolocationManager::didReceiveMessage(CoreIPC::Connection* connection, C void WebGeolocationManager::registerWebPage(WebPage* page) { + if (!m_didAddMessageReceiver) { + m_process->connection()->addMessageReceiver(CoreIPC::MessageClassWebGeolocationManager, this); + m_didAddMessageReceiver = true; + } + bool wasEmpty = m_pageSet.isEmpty(); m_pageSet.add(page); @@ -74,7 +80,7 @@ void WebGeolocationManager::unregisterWebPage(WebPage* page) void WebGeolocationManager::didChangePosition(const WebGeolocationPosition::Data& data) { #if ENABLE(GEOLOCATION) - RefPtr<GeolocationPosition> position = GeolocationPosition::create(data.timestamp, data.latitude, data.longitude, data.accuracy); + RefPtr<GeolocationPosition> position = GeolocationPosition::create(data.timestamp, data.latitude, data.longitude, data.accuracy, data.canProvideAltitude, data.altitude, data.canProvideAltitudeAccuracy, data.altitudeAccuracy, data.canProvideHeading, data.heading, data.canProvideSpeed, data.speed); Vector<RefPtr<WebPage> > webPageCopy; copyToVector(m_pageSet, webPageCopy); diff --git a/Source/WebKit2/WebProcess/Geolocation/WebGeolocationManager.h b/Source/WebKit2/WebProcess/Geolocation/WebGeolocationManager.h index 5c3dfae93..8a1405d14 100644 --- a/Source/WebKit2/WebProcess/Geolocation/WebGeolocationManager.h +++ b/Source/WebKit2/WebProcess/Geolocation/WebGeolocationManager.h @@ -26,31 +26,23 @@ #ifndef WebGeolocationManager_h #define WebGeolocationManager_h -#include "MessageID.h" +#include "MessageReceiver.h" #include "WebGeolocationPosition.h" -#include <wtf/HashSet.h> +#include <wtf/Forward.h> #include <wtf/HashMap.h> +#include <wtf/HashSet.h> #include <wtf/Noncopyable.h> -namespace CoreIPC { -class ArgumentDecoder; -class Connection; -} - namespace WebCore { class Geolocation; } -namespace WTF { -class String; -} - namespace WebKit { class WebProcess; class WebPage; -class WebGeolocationManager { +class WebGeolocationManager : private CoreIPC::MessageReceiver { WTF_MAKE_NONCOPYABLE(WebGeolocationManager); public: explicit WebGeolocationManager(WebProcess*); @@ -61,16 +53,18 @@ public: void requestPermission(WebCore::Geolocation*); - void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); - private: + // CoreIPC::MessageReceiver + virtual void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*) OVERRIDE; + // Implemented in generated WebGeolocationManagerMessageReceiver.cpp void didReceiveWebGeolocationManagerMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); void didChangePosition(const WebGeolocationPosition::Data&); - void didFailToDeterminePosition(const WTF::String& errorMessage); + void didFailToDeterminePosition(const String& errorMessage); WebProcess* m_process; + bool m_didAddMessageReceiver; HashSet<WebPage*> m_pageSet; }; diff --git a/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundle.cpp b/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundle.cpp index 2085253ba..7210a9d9e 100644 --- a/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundle.cpp +++ b/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundle.cpp @@ -46,13 +46,13 @@ void WKBundleSetClient(WKBundleRef bundleRef, WKBundleClient * wkClient) void WKBundlePostMessage(WKBundleRef bundleRef, WKStringRef messageNameRef, WKTypeRef messageBodyRef) { - toImpl(bundleRef)->postMessage(toImpl(messageNameRef)->string(), toImpl(messageBodyRef)); + toImpl(bundleRef)->postMessage(toWTFString(messageNameRef), toImpl(messageBodyRef)); } void WKBundlePostSynchronousMessage(WKBundleRef bundleRef, WKStringRef messageNameRef, WKTypeRef messageBodyRef, WKTypeRef* returnDataRef) { RefPtr<APIObject> returnData; - toImpl(bundleRef)->postSynchronousMessage(toImpl(messageNameRef)->string(), toImpl(messageBodyRef), returnData); + toImpl(bundleRef)->postSynchronousMessage(toWTFString(messageNameRef), toImpl(messageBodyRef), returnData); if (returnDataRef) *returnDataRef = toAPI(returnData.release().leakRef()); } @@ -134,7 +134,7 @@ void WKBundleRemoveAllUserContent(WKBundleRef bundleRef, WKBundlePageGroupRef pa void WKBundleOverrideBoolPreferenceForTestRunner(WKBundleRef bundleRef, WKBundlePageGroupRef pageGroupRef, WKStringRef preference, bool enabled) { - toImpl(bundleRef)->overrideBoolPreferenceForTestRunner(toImpl(pageGroupRef), toImpl(preference)->string(), enabled); + toImpl(bundleRef)->overrideBoolPreferenceForTestRunner(toImpl(pageGroupRef), toWTFString(preference), enabled); } void WKBundleSetAllowUniversalAccessFromFileURLs(WKBundleRef bundleRef, WKBundlePageGroupRef pageGroupRef, bool enabled) @@ -194,12 +194,12 @@ void WKBundleSetSpatialNavigationEnabled(WKBundleRef bundleRef, WKBundlePageGrou void WKBundleAddOriginAccessWhitelistEntry(WKBundleRef bundleRef, WKStringRef sourceOrigin, WKStringRef destinationProtocol, WKStringRef destinationHost, bool allowDestinationSubdomains) { - toImpl(bundleRef)->addOriginAccessWhitelistEntry(toImpl(sourceOrigin)->string(), toImpl(destinationProtocol)->string(), toImpl(destinationHost)->string(), allowDestinationSubdomains); + toImpl(bundleRef)->addOriginAccessWhitelistEntry(toWTFString(sourceOrigin), toWTFString(destinationProtocol), toWTFString(destinationHost), allowDestinationSubdomains); } void WKBundleRemoveOriginAccessWhitelistEntry(WKBundleRef bundleRef, WKStringRef sourceOrigin, WKStringRef destinationProtocol, WKStringRef destinationHost, bool allowDestinationSubdomains) { - toImpl(bundleRef)->removeOriginAccessWhitelistEntry(toImpl(sourceOrigin)->string(), toImpl(destinationProtocol)->string(), toImpl(destinationHost)->string(), allowDestinationSubdomains); + toImpl(bundleRef)->removeOriginAccessWhitelistEntry(toWTFString(sourceOrigin), toWTFString(destinationProtocol), toWTFString(destinationHost), allowDestinationSubdomains); } void WKBundleResetOriginAccessWhitelists(WKBundleRef bundleRef) @@ -229,7 +229,7 @@ void WKBundleClearApplicationCache(WKBundleRef bundleRef) void WKBundleClearApplicationCacheForOrigin(WKBundleRef bundleRef, WKStringRef origin) { - toImpl(bundleRef)->clearApplicationCacheForOrigin(toImpl(origin)->string()); + toImpl(bundleRef)->clearApplicationCacheForOrigin(toWTFString(origin)); } void WKBundleSetAppCacheMaximumSize(WKBundleRef bundleRef, uint64_t size) @@ -239,17 +239,17 @@ void WKBundleSetAppCacheMaximumSize(WKBundleRef bundleRef, uint64_t size) uint64_t WKBundleGetAppCacheUsageForOrigin(WKBundleRef bundleRef, WKStringRef origin) { - return toImpl(bundleRef)->appCacheUsageForOrigin(toImpl(origin)->string()); + return toImpl(bundleRef)->appCacheUsageForOrigin(toWTFString(origin)); } void WKBundleSetApplicationCacheOriginQuota(WKBundleRef bundleRef, WKStringRef origin, uint64_t bytes) { - toImpl(bundleRef)->setApplicationCacheOriginQuota(toImpl(origin)->string(), bytes); + toImpl(bundleRef)->setApplicationCacheOriginQuota(toWTFString(origin), bytes); } void WKBundleResetApplicationCacheOriginQuota(WKBundleRef bundleRef, WKStringRef origin) { - toImpl(bundleRef)->resetApplicationCacheOriginQuota(toImpl(origin)->string()); + toImpl(bundleRef)->resetApplicationCacheOriginQuota(toWTFString(origin)); } WKArrayRef WKBundleCopyOriginsWithApplicationCache(WKBundleRef bundleRef) @@ -270,7 +270,7 @@ int WKBundleNumberOfPages(WKBundleRef bundleRef, WKBundleFrameRef frameRef, doub int WKBundlePageNumberForElementById(WKBundleRef bundleRef, WKBundleFrameRef frameRef, WKStringRef idRef, double pageWidthInPixels, double pageHeightInPixels) { - return toImpl(bundleRef)->pageNumberForElementById(toImpl(frameRef), toImpl(idRef)->string(), pageWidthInPixels, pageHeightInPixels); + return toImpl(bundleRef)->pageNumberForElementById(toImpl(frameRef), toWTFString(idRef), pageWidthInPixels, pageHeightInPixels); } WKStringRef WKBundlePageSizeAndMarginsInPixels(WKBundleRef bundleRef, WKBundleFrameRef frameRef, int pageIndex, int width, int height, int marginTop, int marginRight, int marginBottom, int marginLeft) @@ -301,12 +301,12 @@ size_t WKBundleGetWorkerThreadCount(WKBundleRef) void WKBundleSetUserStyleSheetLocation(WKBundleRef bundleRef, WKBundlePageGroupRef pageGroupRef, WKStringRef location) { - toImpl(bundleRef)->setUserStyleSheetLocation(toImpl(pageGroupRef), toImpl(location)->string()); + toImpl(bundleRef)->setUserStyleSheetLocation(toImpl(pageGroupRef), toWTFString(location)); } void WKBundleSetWebNotificationPermission(WKBundleRef bundleRef, WKBundlePageRef pageRef, WKStringRef originStringRef, bool allowed) { - toImpl(bundleRef)->setWebNotificationPermission(toImpl(pageRef), toImpl(originStringRef)->string(), allowed); + toImpl(bundleRef)->setWebNotificationPermission(toImpl(pageRef), toWTFString(originStringRef), allowed); } void WKBundleRemoveAllWebNotificationPermissions(WKBundleRef bundleRef, WKBundlePageRef pageRef) @@ -323,3 +323,13 @@ void WKBundleSetTabKeyCyclesThroughElements(WKBundleRef bundleRef, WKBundlePageR { toImpl(bundleRef)->setTabKeyCyclesThroughElements(toImpl(pageRef), enabled); } + +void WKBundleSetSerialLoadingEnabled(WKBundleRef bundleRef, bool enabled) +{ + toImpl(bundleRef)->setSerialLoadingEnabled(enabled); +} + +void WKBundleDispatchPendingLoadRequests(WKBundleRef bundleRef) +{ + toImpl(bundleRef)->dispatchPendingLoadRequests(); +} diff --git a/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleAPICast.h b/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleAPICast.h index 018ef7970..59c3570bd 100644 --- a/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleAPICast.h +++ b/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleAPICast.h @@ -32,8 +32,6 @@ #include "WKBundlePrivate.h" #include <WebCore/EditorInsertAction.h> #include <WebCore/TextAffinity.h> -#include <WebCore/UserContentTypes.h> -#include <WebCore/UserScriptTypes.h> namespace WebCore { class CSSStyleDeclaration; @@ -107,32 +105,6 @@ inline WKAffinityType toAPI(WebCore::EAffinity affinity) return kWKAffinityUpstream; } -inline WebCore::UserScriptInjectionTime toUserScriptInjectionTime(WKUserScriptInjectionTime wkInjectedTime) -{ - switch (wkInjectedTime) { - case kWKInjectAtDocumentStart: - return WebCore::InjectAtDocumentStart; - case kWKInjectAtDocumentEnd: - return WebCore::InjectAtDocumentEnd; - } - - ASSERT_NOT_REACHED(); - return WebCore::InjectAtDocumentStart; -} - -inline WebCore::UserContentInjectedFrames toUserContentInjectedFrames(WKUserContentInjectedFrames wkInjectedFrames) -{ - switch (wkInjectedFrames) { - case kWKInjectInAllFrames: - return WebCore::InjectInAllFrames; - case kWKInjectInTopFrameOnly: - return WebCore::InjectInTopFrameOnly; - } - - ASSERT_NOT_REACHED(); - return WebCore::InjectInAllFrames; -} - } // namespace WebKit #endif // WKBundleAPICast_h diff --git a/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleFrame.cpp b/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleFrame.cpp index 9a2b9fc00..fe6d79ed8 100644 --- a/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleFrame.cpp +++ b/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleFrame.cpp @@ -97,12 +97,12 @@ unsigned WKBundleFrameGetNumberOfActiveAnimations(WKBundleFrameRef frameRef) bool WKBundleFramePauseAnimationOnElementWithId(WKBundleFrameRef frameRef, WKStringRef animationName, WKStringRef elementID, double time) { - return toImpl(frameRef)->pauseAnimationOnElementWithId(toImpl(animationName)->string(), toImpl(elementID)->string(), time); + return toImpl(frameRef)->pauseAnimationOnElementWithId(toWTFString(animationName), toWTFString(elementID), time); } bool WKBundleFramePauseTransitionOnElementWithId(WKBundleFrameRef frameRef, WKStringRef propertyName, WKStringRef elementID, double time) { - return toImpl(frameRef)->pauseTransitionOnElementWithId(toImpl(propertyName)->string(), toImpl(elementID)->string(), time); + return toImpl(frameRef)->pauseTransitionOnElementWithId(toWTFString(propertyName), toWTFString(elementID), time); } void WKBundleFrameSuspendAnimations(WKBundleFrameRef frameRef) @@ -194,7 +194,7 @@ WKStringRef WKBundleFrameCopyLayerTreeAsText(WKBundleFrameRef frameRef) bool WKBundleFrameAllowsFollowingLink(WKBundleFrameRef frameRef, WKURLRef urlRef) { - return toImpl(frameRef)->allowsFollowingLink(WebCore::KURL(WebCore::KURL(), toImpl(urlRef)->string())); + return toImpl(frameRef)->allowsFollowingLink(WebCore::KURL(WebCore::KURL(), toWTFString(urlRef))); } WKRect WKBundleFrameGetContentBounds(WKBundleFrameRef frameRef) @@ -234,12 +234,12 @@ bool WKBundleFrameGetDocumentBackgroundColor(WKBundleFrameRef frameRef, double* WKStringRef WKBundleFrameCopySuggestedFilenameForResourceWithURL(WKBundleFrameRef frameRef, WKURLRef urlRef) { - return toCopiedAPI(toImpl(frameRef)->suggestedFilenameForResourceWithURL(WebCore::KURL(WebCore::KURL(), toImpl(urlRef)->string()))); + return toCopiedAPI(toImpl(frameRef)->suggestedFilenameForResourceWithURL(WebCore::KURL(WebCore::KURL(), toWTFString(urlRef)))); } WKStringRef WKBundleFrameCopyMIMETypeForResourceWithURL(WKBundleFrameRef frameRef, WKURLRef urlRef) { - return toCopiedAPI(toImpl(frameRef)->mimeTypeForResourceWithURL(WebCore::KURL(WebCore::KURL(), toImpl(urlRef)->string()))); + return toCopiedAPI(toImpl(frameRef)->mimeTypeForResourceWithURL(WebCore::KURL(WebCore::KURL(), toWTFString(urlRef)))); } bool WKBundleFrameContainsAnyFormElements(WKBundleFrameRef frameRef) @@ -249,7 +249,7 @@ bool WKBundleFrameContainsAnyFormElements(WKBundleFrameRef frameRef) void WKBundleFrameSetTextDirection(WKBundleFrameRef frameRef, WKStringRef directionRef) { - toImpl(frameRef)->setTextDirection(toImpl(directionRef)->string()); + toImpl(frameRef)->setTextDirection(toWTFString(directionRef)); } WKDataRef WKBundleFrameCopyWebArchive(WKBundleFrameRef frameRef) diff --git a/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleInspector.cpp b/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleInspector.cpp index ae69a5394..cc22499a0 100644 --- a/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleInspector.cpp +++ b/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleInspector.cpp @@ -52,7 +52,7 @@ void WKBundleInspectorClose(WKBundleInspectorRef inspectorRef) void WKBundleInspectorEvaluateScriptForTest(WKBundleInspectorRef inspectorRef, long callID, WKStringRef script) { - return toImpl(inspectorRef)->evaluateScriptForTest(callID, toImpl(script)->string()); + return toImpl(inspectorRef)->evaluateScriptForTest(callID, toWTFString(script)); } void WKBundleInspectorSetPageProfilingEnabled(WKBundleInspectorRef inspectorRef, bool enabled) diff --git a/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleIntent.cpp b/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleIntent.cpp index dc13c57fc..66bee90b0 100644 --- a/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleIntent.cpp +++ b/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleIntent.cpp @@ -64,7 +64,7 @@ WKBundleIntentRef WKBundleIntentCreate(WKDictionaryRef dictionaryRef) MessagePortArray dummyPorts; ExceptionCode ec; - RefPtr<Intent> coreIntent = Intent::create(toImpl(action)->string(), toImpl(type)->string(), data ? static_cast<SerializedScriptValue*>(toImpl(data)->internalRepresentation()) : 0, dummyPorts, ec); + RefPtr<Intent> coreIntent = Intent::create(toWTFString(action), toWTFString(type), data ? static_cast<SerializedScriptValue*>(toImpl(data)->internalRepresentation()) : 0, dummyPorts, ec); return toAPI(InjectedBundleIntent::create(coreIntent.get()).leakRef()); #else diff --git a/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp b/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp index 15088e7d6..53ddf6107 100644 --- a/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp +++ b/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp @@ -212,12 +212,12 @@ WKStringRef WKBundlePageCopyRenderTreeExternalRepresentation(WKBundlePageRef pag void WKBundlePageExecuteEditingCommand(WKBundlePageRef pageRef, WKStringRef name, WKStringRef argument) { - toImpl(pageRef)->executeEditingCommand(toImpl(name)->string(), toImpl(argument)->string()); + toImpl(pageRef)->executeEditingCommand(toWTFString(name), toWTFString(argument)); } bool WKBundlePageIsEditingCommandEnabled(WKBundlePageRef pageRef, WKStringRef name) { - return toImpl(pageRef)->isEditingCommandEnabled(toImpl(name)->string()); + return toImpl(pageRef)->isEditingCommandEnabled(toWTFString(name)); } void WKBundlePageClearMainFrameName(WKBundlePageRef pageRef) @@ -277,7 +277,7 @@ void WKBundlePageUninstallPageOverlay(WKBundlePageRef pageRef, WKBundlePageOverl bool WKBundlePageHasLocalDataForURL(WKBundlePageRef pageRef, WKURLRef urlRef) { - return toImpl(pageRef)->hasLocalDataForURL(WebCore::KURL(WebCore::KURL(), toImpl(urlRef)->string())); + return toImpl(pageRef)->hasLocalDataForURL(WebCore::KURL(WebCore::KURL(), toWTFString(urlRef))); } bool WKBundlePageCanHandleRequest(WKURLRequestRef requestRef) @@ -287,7 +287,7 @@ bool WKBundlePageCanHandleRequest(WKURLRequestRef requestRef) bool WKBundlePageFindString(WKBundlePageRef pageRef, WKStringRef target, WKFindOptions findOptions) { - return toImpl(pageRef)->findStringFromInjectedBundle(toImpl(target)->string(), toFindOptions(findOptions)); + return toImpl(pageRef)->findStringFromInjectedBundle(toWTFString(target), toFindOptions(findOptions)); } WKImageRef WKBundlePageCreateSnapshotWithOptions(WKBundlePageRef pageRef, WKRect rect, WKSnapshotOptions options) @@ -403,7 +403,7 @@ WKArrayRef WKBundlePageCopyTrackedRepaintRects(WKBundlePageRef pageRef) void WKBundlePageSetComposition(WKBundlePageRef pageRef, WKStringRef text, int from, int length) { - toImpl(pageRef)->setCompositionForTesting(toImpl(text)->string(), from, length); + toImpl(pageRef)->setCompositionForTesting(toWTFString(text), from, length); } bool WKBundlePageHasComposition(WKBundlePageRef pageRef) @@ -418,26 +418,12 @@ void WKBundlePageConfirmComposition(WKBundlePageRef pageRef) void WKBundlePageConfirmCompositionWithText(WKBundlePageRef pageRef, WKStringRef text) { - toImpl(pageRef)->confirmCompositionForTesting(toImpl(text)->string()); + toImpl(pageRef)->confirmCompositionForTesting(toWTFString(text)); } bool WKBundlePageCanShowMIMEType(WKBundlePageRef, WKStringRef mimeTypeRef) { - using WebCore::MIMETypeRegistry; + const String mimeType = toWTFString(mimeTypeRef); - const WTF::String mimeType = toImpl(mimeTypeRef)->string(); - - if (MIMETypeRegistry::isSupportedNonImageMIMEType(mimeType)) - return true; - - if (MIMETypeRegistry::isSupportedImageMIMEType(mimeType)) - return true; - - if (MIMETypeRegistry::isSupportedMediaMIMEType(mimeType)) - return true; - - if (mimeType.startsWith("text/", false)) - return !MIMETypeRegistry::isUnsupportedTextMIMEType(mimeType); - - return false; + return WebCore::MIMETypeRegistry::canShowMIMEType(mimeType); } diff --git a/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.h b/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.h index dce7cf862..c2b37894a 100644 --- a/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.h +++ b/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.h @@ -154,11 +154,13 @@ struct WKBundlePageLoaderClient { // Version 3 WKBundlePageDidReceiveIntentForFrameCallback didReceiveIntentForFrame; WKBundlePageRegisterIntentServiceForFrameCallback registerIntentServiceForFrame; + + // Version 4 WKBundlePageDidLayoutCallback didLayout; }; typedef struct WKBundlePageLoaderClient WKBundlePageLoaderClient; -enum { kWKBundlePageLoaderClientCurrentVersion = 3 }; +enum { kWKBundlePageLoaderClientCurrentVersion = 4 }; enum { WKBundlePagePolicyActionPassThrough, diff --git a/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePrivate.h b/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePrivate.h index f032c6222..369c4302f 100644 --- a/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePrivate.h +++ b/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePrivate.h @@ -36,18 +36,6 @@ extern "C" { #endif -enum WKUserScriptInjectionTime { - kWKInjectAtDocumentStart, - kWKInjectAtDocumentEnd -}; -typedef enum WKUserScriptInjectionTime WKUserScriptInjectionTime; - -enum WKUserContentInjectedFrames { - kWKInjectInAllFrames, - kWKInjectInTopFrameOnly -}; -typedef enum WKUserContentInjectedFrames WKUserContentInjectedFrames; - // TestRunner only SPI WK_EXPORT void WKBundleSetShouldTrackVisitedLinks(WKBundleRef bundle, bool shouldTrackVisitedLinks); WK_EXPORT void WKBundleSetAlwaysAcceptCookies(WKBundleRef bundle, bool); @@ -113,6 +101,8 @@ WK_EXPORT void WKBundleSetPageVisibilityState(WKBundleRef bundle, WKBundlePageRe WK_EXPORT size_t WKBundleGetWorkerThreadCount(WKBundleRef bundle); WK_EXPORT void WKBundleSetTabKeyCyclesThroughElements(WKBundleRef bundle, WKBundlePageRef page, bool enabled); +WK_EXPORT void WKBundleSetSerialLoadingEnabled(WKBundleRef bundle, bool enabled); +WK_EXPORT void WKBundleDispatchPendingLoadRequests(WKBundleRef bundle); #ifdef __cplusplus } diff --git a/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKDOMDocument.h b/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKDOMDocument.h new file mode 100644 index 000000000..4495055cb --- /dev/null +++ b/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKDOMDocument.h @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2012 Apple Inc. 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. + */ + +#if defined(__LP64__) && defined(__clang__) + +#import <WebKit2/WKDOMNode.h> + +@class WKDOMElement; +@class WKDOMText; + +WK_EXPORT +@interface WKDOMDocument : WKDOMNode + +- (WKDOMElement *)createElement:(NSString *)tagName; +- (WKDOMText *)createTextNode:(NSString *)data; + +@property(readonly) WKDOMElement *body; + +@end + +#endif // defined(__LP64__) && defined(__clang__) + diff --git a/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKDOMDocument.mm b/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKDOMDocument.mm new file mode 100644 index 000000000..99f515021 --- /dev/null +++ b/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKDOMDocument.mm @@ -0,0 +1,64 @@ +/* + * Copyright (C) 2012 Apple Inc. 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. + */ + +#import "config.h" + +#if defined(__LP64__) && defined(__clang__) + +#import "WKDOMDocument.h" + +#import "WKDOMInternals.h" +#import <WebCore/Document.h> +#import <WebCore/HTMLElement.h> +#import <WebCore/Text.h> + +static inline WebCore::Document* toDocument(WebCore::Node* node) +{ + ASSERT(!node || node->isDocumentNode()); + return static_cast<WebCore::Document*>(node); +} + +@implementation WKDOMDocument + +- (WKDOMElement *)createElement:(NSString *)tagName +{ + // FIXME: Do something about the exception. + WebCore::ExceptionCode ec = 0; + return WebKit::toWKDOMElement(toDocument(_impl.get())->createElement(tagName, ec).get()); +} + +- (WKDOMText *)createTextNode:(NSString *)data +{ + return WebKit::toWKDOMText(toDocument(_impl.get())->createTextNode(data).get()); +} + +- (WKDOMElement *)body +{ + return WebKit::toWKDOMElement(toDocument(_impl.get())->body()); +} + +@end + +#endif // defined(__LP64__) && defined(__clang__) diff --git a/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKDOMElement.h b/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKDOMElement.h new file mode 100644 index 000000000..aa03cd4d9 --- /dev/null +++ b/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKDOMElement.h @@ -0,0 +1,41 @@ +/* + * Copyright (C) 2012 Apple Inc. 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. + */ + +#if defined(__LP64__) && defined(__clang__) + +#import <WebKit2/WKDOMNode.h> + +WK_EXPORT +@interface WKDOMElement : WKDOMNode + +- (BOOL)hasAttribute:(NSString *)attribute; +- (NSString *)getAttribute:(NSString *)attribute; +- (void)setAttribute:(NSString *)name value:(NSString *)value; + +@property(readonly) NSString *tagName; + +@end + +#endif // defined(__LP64__) && defined(__clang__) diff --git a/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKDOMElement.mm b/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKDOMElement.mm new file mode 100644 index 000000000..72cf5ab40 --- /dev/null +++ b/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKDOMElement.mm @@ -0,0 +1,61 @@ +/* + * Copyright (C) 2012 Apple Inc. 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. + */ + +#import "config.h" + +#if defined(__LP64__) && defined(__clang__) + +#import "WKDOMElement.h" + +#import "WKDOMInternals.h" +#import <WebCore/Element.h> + +@implementation WKDOMElement + +- (BOOL)hasAttribute:(NSString *)attribute +{ + return WebCore::toElement(_impl.get())->hasAttribute(attribute); +} + +- (NSString *)getAttribute:(NSString *)attribute +{ + return WebCore::toElement(_impl.get())->getAttribute(attribute); +} + +- (void)setAttribute:(NSString *)name value:(NSString *)value +{ + // FIXME: Do something about the exception. + WebCore::ExceptionCode ec; + WebCore::toElement(_impl.get())->setAttribute(name, value, ec); +} + +- (NSString *)tagName +{ + return WebCore::toElement(_impl.get())->tagName(); +} + +@end + +#endif // defined(__LP64__) && defined(__clang__) diff --git a/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKDOMInternals.h b/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKDOMInternals.h new file mode 100644 index 000000000..f33e454cd --- /dev/null +++ b/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKDOMInternals.h @@ -0,0 +1,116 @@ +/* + * Copyright (C) 2012 Apple Inc. 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. + */ + +#if defined(__LP64__) && defined(__clang__) + +#import "WKDOMNode.h" +#import "WKDOMRange.h" +#import <WebCore/Node.h> +#import <WebCore/Range.h> +#import <wtf/HashMap.h> + +namespace WebCore { +class Element; +class Document; +} + +@class WKDOMElement; +@class WKDOMDocument; +@class WKDOMText; + +@interface WKDOMNode () { +@public + RefPtr<WebCore::Node> _impl; +} + +- (id)_initWithImpl:(WebCore::Node*)impl; +@end + +@interface WKDOMRange () { +@public + RefPtr<WebCore::Range> _impl; +} + +- (id)_initWithImpl:(WebCore::Range*)impl; +@end + +namespace WebKit { + +template<typename WebCoreType, typename WKDOMType> +class DOMCache { +public: + DOMCache() + { + } + + void add(WebCoreType core, WKDOMType kit) + { + m_map.add(core, kit); + } + + WKDOMType get(WebCoreType core) + { + return m_map.get(core); + } + + void remove(WebCoreType core) + { + m_map.remove(core); + } + +private: + // This class should only ever be used as a singleton. + ~DOMCache() = delete; + + HashMap<WebCoreType, WKDOMType> m_map; +}; + +// -- Caches -- + +DOMCache<WebCore::Node*, WKDOMNode *>& WKDOMNodeCache(); +DOMCache<WebCore::Range*, WKDOMRange *>& WKDOMRangeCache(); + +// -- Node and classes derived from Node. -- + +WebCore::Node* toWebCoreNode(WKDOMNode *); +WKDOMNode *toWKDOMNode(WebCore::Node*); + +WebCore::Element* toWebCoreElement(WKDOMElement *); +WKDOMElement *toWKDOMElement(WebCore::Element*); + +WebCore::Document* toWebCoreDocument(WKDOMDocument *); +WKDOMDocument *toWKDOMDocument(WebCore::Document*); + +WebCore::Text* toWebCoreText(WKDOMText *); +WKDOMText *toWKDOMText(WebCore::Text*); + +// -- Range. -- + +WebCore::Range* toWebCoreRange(WKDOMRange *); +WKDOMRange *toWKDOMRange(WebCore::Range*); + +} // namespace WebKit + +#endif // defined(__LP64__) && defined(__clang__) diff --git a/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKDOMInternals.mm b/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKDOMInternals.mm new file mode 100644 index 000000000..ab9046613 --- /dev/null +++ b/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKDOMInternals.mm @@ -0,0 +1,170 @@ +/* + * Copyright (C) 2012 Apple Inc. 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. + */ + +#import "config.h" + +#if defined(__LP64__) && defined(__clang__) + +#import "WKDOMInternals.h" + +#import <WebCore/Document.h> +#import <WebCore/Element.h> +#import <WebCore/Node.h> +#import <WebCore/Range.h> +#import <WebCore/Text.h> + +// Classes to instantiate. +#import "WKDOMElement.h" +#import "WKDOMDocument.h" +#import "WKDOMText.h" + +namespace WebKit { + +template<typename WebCoreType, typename WKDOMType> +static WKDOMType toWKDOMType(WebCoreType impl, DOMCache<WebCoreType, WKDOMType>& cache); + +// -- Caches -- + +DOMCache<WebCore::Node*, WKDOMNode *>& WKDOMNodeCache() +{ + typedef DOMCache<WebCore::Node*, WKDOMNode *> Cache; + DEFINE_STATIC_LOCAL(Cache, cache, ()); + return cache; +} + +DOMCache<WebCore::Range*, WKDOMRange *>& WKDOMRangeCache() +{ + typedef DOMCache<WebCore::Range*, WKDOMRange *> Cache; + DEFINE_STATIC_LOCAL(Cache, cache, ()); + return cache; +} + +// -- Node and classes derived from Node. -- + +static Class WKDOMNodeClass(WebCore::Node* impl) +{ + switch (impl->nodeType()) { + case WebCore::Node::ELEMENT_NODE: + return [WKDOMElement class]; + case WebCore::Node::DOCUMENT_NODE: + return [WKDOMDocument class]; + case WebCore::Node::TEXT_NODE: + return [WKDOMText class]; + case WebCore::Node::ATTRIBUTE_NODE: + case WebCore::Node::CDATA_SECTION_NODE: + case WebCore::Node::ENTITY_REFERENCE_NODE: + case WebCore::Node::ENTITY_NODE: + case WebCore::Node::PROCESSING_INSTRUCTION_NODE: + case WebCore::Node::COMMENT_NODE: + case WebCore::Node::DOCUMENT_TYPE_NODE: + case WebCore::Node::DOCUMENT_FRAGMENT_NODE: + case WebCore::Node::NOTATION_NODE: + case WebCore::Node::XPATH_NAMESPACE_NODE: + break; + } + ASSERT_NOT_REACHED(); + return nil; +} + +static WKDOMNode *initWithImpl(WebCore::Node* impl) +{ + return [[WKDOMNodeClass(impl) alloc] _initWithImpl:impl]; +} + +WebCore::Node* toWebCoreNode(WKDOMNode *wrapper) +{ + return wrapper ? wrapper->_impl.get() : 0; +} + +WKDOMNode *toWKDOMNode(WebCore::Node* impl) +{ + return toWKDOMType<WebCore::Node*, WKDOMNode *>(impl, WKDOMNodeCache()); +} + +WebCore::Element* toWebCoreElement(WKDOMElement *wrapper) +{ + return wrapper ? reinterpret_cast<WebCore::Element*>(wrapper->_impl.get()) : 0; +} + +WKDOMElement *toWKDOMElement(WebCore::Element* impl) +{ + return static_cast<WKDOMElement*>(toWKDOMNode(static_cast<WebCore::Node*>(impl))); +} + +WebCore::Document* toWebCoreDocument(WKDOMDocument *wrapper) +{ + return wrapper ? reinterpret_cast<WebCore::Document*>(wrapper->_impl.get()) : 0; +} + +WKDOMDocument *toWKDOMDocument(WebCore::Document* impl) +{ + return static_cast<WKDOMDocument*>(toWKDOMNode(static_cast<WebCore::Node*>(impl))); +} + +WebCore::Text* toWebCoreText(WKDOMText *wrapper) +{ + return wrapper ? reinterpret_cast<WebCore::Text*>(wrapper->_impl.get()) : 0; +} + +WKDOMText *toWKDOMText(WebCore::Text* impl) +{ + return static_cast<WKDOMText*>(toWKDOMNode(static_cast<WebCore::Node*>(impl))); +} + +// -- Range. -- + +static WKDOMRange *initWithImpl(WebCore::Range* impl) +{ + return [[WKDOMRange alloc] _initWithImpl:impl]; +} + +WebCore::Range* toWebCoreRange(WKDOMRange * wrapper) +{ + return wrapper ? wrapper->_impl.get() : 0; +} + +WKDOMRange *toWKDOMRange(WebCore::Range* impl) +{ + return toWKDOMType<WebCore::Range*, WKDOMRange *>(impl, WKDOMRangeCache()); +} + +// -- Helpers -- + +template<typename WebCoreType, typename WKDOMType> +static WKDOMType toWKDOMType(WebCoreType impl, DOMCache<WebCoreType, WKDOMType>& cache) +{ + if (!impl) + return nil; + if (WKDOMType wrapper = cache.get(impl)) + return [[wrapper retain] autorelease]; + WKDOMType wrapper = initWithImpl(impl); + if (!wrapper) + return nil; + return [wrapper autorelease]; +} + +} // namespace WebKit + +#endif // defined(__LP64__) && defined(__clang__) diff --git a/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKDOMNode.h b/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKDOMNode.h new file mode 100644 index 000000000..c0e03937c --- /dev/null +++ b/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKDOMNode.h @@ -0,0 +1,48 @@ +/* + * Copyright (C) 2012 Apple Inc. 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. + */ + +#if defined(__LP64__) && defined(__clang__) + +#import <Foundation/Foundation.h> +#import <WebKit2/WKBase.h> + +@class WKDOMDocument; + +WK_EXPORT +@interface WKDOMNode : NSObject + +- (void)insertNode:(WKDOMNode *)node before:(WKDOMNode *)refNode; +- (void)appendChild:(WKDOMNode *)node; + +@property(readonly) WKDOMDocument *document; +@property(readonly) WKDOMNode *parentNode; +@property(readonly) WKDOMNode *firstChild; +@property(readonly) WKDOMNode *lastChild; +@property(readonly) WKDOMNode *previousSibling; +@property(readonly) WKDOMNode *nextSibling; + +@end + +#endif // defined(__LP64__) && defined(__clang__) diff --git a/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKDOMNode.mm b/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKDOMNode.mm new file mode 100644 index 000000000..4308ff3ab --- /dev/null +++ b/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKDOMNode.mm @@ -0,0 +1,100 @@ +/* + * Copyright (C) 2012 Apple Inc. 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. + */ + +#import "config.h" + +#if defined(__LP64__) && defined(__clang__) + +#import "WKDOMNode.h" + +#import "WKDOMInternals.h" + +@implementation WKDOMNode + +- (id)_initWithImpl:(WebCore::Node*)impl +{ + self = [super init]; + if (!self) + return nil; + + _impl = impl; + WebKit::WKDOMNodeCache().add(impl, self); + + return self; +} + +- (void)dealloc +{ + WebKit::WKDOMNodeCache().remove(_impl.get()); + [super dealloc]; +} + +- (void)insertNode:(WKDOMNode *)node before:(WKDOMNode *)refNode +{ + // FIXME: Do something about the exception. + WebCore::ExceptionCode ec; + _impl->insertBefore(WebKit::toWebCoreNode(node), WebKit::toWebCoreNode(refNode), ec); +} + +- (void)appendChild:(WKDOMNode *)node +{ + // FIXME: Do something about the exception. + WebCore::ExceptionCode ec; + _impl->appendChild(WebKit::toWebCoreNode(node), ec); +} + +- (WKDOMDocument *)document +{ + return WebKit::toWKDOMDocument(_impl->document()); +} + +- (WKDOMNode *)parentNode +{ + return WebKit::toWKDOMNode(_impl->parentNode()); +} + +- (WKDOMNode *)firstChild +{ + return WebKit::toWKDOMNode(_impl->firstChild()); +} + +- (WKDOMNode *)lastChild +{ + return WebKit::toWKDOMNode(_impl->lastChild()); +} + +- (WKDOMNode *)previousSibling +{ + return WebKit::toWKDOMNode(_impl->previousSibling()); +} + +- (WKDOMNode *)nextSibling +{ + return WebKit::toWKDOMNode(_impl->nextSibling()); +} + +@end + +#endif // defined(__LP64__) && defined(__clang__) diff --git a/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKDOMRange.h b/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKDOMRange.h new file mode 100644 index 000000000..64ed00ce2 --- /dev/null +++ b/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKDOMRange.h @@ -0,0 +1,53 @@ +/* + * Copyright (C) 2012 Apple Inc. 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. + */ + +#if defined(__LP64__) && defined(__clang__) + +#import <Foundation/Foundation.h> +#import <WebKit2/WKBase.h> + +@class WKDOMNode, WKDOMDocument; + +WK_EXPORT +@interface WKDOMRange : NSObject + +- (id)initWithDocument:(WKDOMDocument *)document; + +- (void)setStart:(WKDOMNode *)node offset:(int)offset; +- (void)setEnd:(WKDOMNode *)node offset:(int)offset; +- (void)collapse:(BOOL)toStart; +- (void)selectNode:(WKDOMNode *)node; +- (void)selectNodeContents:(WKDOMNode *)node; + +@property(readonly, retain) WKDOMNode *startContainer; +@property(readonly) NSInteger startOffset; +@property(readonly, retain) WKDOMNode *endContainer; +@property(readonly) NSInteger endOffset; +@property(readonly, copy) NSString *text; +@property(readonly) BOOL isCollapsed; + +@end + +#endif // defined(__LP64__) && defined(__clang__) diff --git a/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKDOMRange.mm b/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKDOMRange.mm new file mode 100644 index 000000000..1cc408408 --- /dev/null +++ b/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKDOMRange.mm @@ -0,0 +1,142 @@ +/* + * Copyright (C) 2012 Apple Inc. 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. + */ + +#import "config.h" + +#if defined(__LP64__) && defined(__clang__) + +#import "WKDOMRange.h" + +#import "WKDOMInternals.h" +#import <WebCore/Document.h> + +@implementation WKDOMRange + +- (id)_initWithImpl:(WebCore::Range*)impl +{ + self = [super init]; + if (!self) + return nil; + + _impl = impl; + WebKit::WKDOMRangeCache().add(impl, self); + + return self; +} + +- (id)initWithDocument:(WKDOMDocument *)document +{ + RefPtr<WebCore::Range> range = WebCore::Range::create(WebKit::toWebCoreDocument(document)); + self = [self _initWithImpl:range.get()]; + if (!self) + return nil; + + return self; +} + +- (void)dealloc +{ + WebKit::WKDOMRangeCache().remove(_impl.get()); + [super dealloc]; +} + +- (void)setStart:(WKDOMNode *)node offset:(int)offset +{ + // FIXME: Do something about the exception. + WebCore::ExceptionCode ec = 0; + _impl->setStart(WebKit::toWebCoreNode(node), offset, ec); +} + +- (void)setEnd:(WKDOMNode *)node offset:(int)offset +{ + // FIXME: Do something about the exception. + WebCore::ExceptionCode ec = 0; + _impl->setEnd(WebKit::toWebCoreNode(node), offset, ec); +} + +- (void)collapse:(BOOL)toStart +{ + // FIXME: Do something about the exception. + WebCore::ExceptionCode ec = 0; + _impl->collapse(toStart, ec); +} + +- (void)selectNode:(WKDOMNode *)node +{ + // FIXME: Do something about the exception. + WebCore::ExceptionCode ec = 0; + _impl->selectNode(WebKit::toWebCoreNode(node), ec); +} + +- (void)selectNodeContents:(WKDOMNode *)node +{ + // FIXME: Do something about the exception. + WebCore::ExceptionCode ec = 0; + _impl->selectNodeContents(WebKit::toWebCoreNode(node), ec); +} + +- (WKDOMNode *)startContainer +{ + // FIXME: Do something about the exception. + WebCore::ExceptionCode ec = 0; + return WebKit::toWKDOMNode(_impl->startContainer(ec)); +} + +- (NSInteger)startOffset +{ + // FIXME: Do something about the exception. + WebCore::ExceptionCode ec = 0; + return _impl->startOffset(ec); +} + +- (WKDOMNode *)endContainer +{ + // FIXME: Do something about the exception. + WebCore::ExceptionCode ec = 0; + return WebKit::toWKDOMNode(_impl->endContainer(ec)); +} + +- (NSInteger)endOffset +{ + // FIXME: Do something about the exception. + WebCore::ExceptionCode ec = 0; + return _impl->endOffset(ec); +} + +- (NSString *)text +{ + return _impl->text(); +} + +- (BOOL)isCollapsed +{ + // FIXME: Do something about the exception. + WebCore::ExceptionCode ec = 0; + return _impl->collapsed(ec); +} + +@end + +#endif // defined(__LP64__) && defined(__clang__) diff --git a/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKDOMText.h b/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKDOMText.h new file mode 100644 index 000000000..eb8552e3f --- /dev/null +++ b/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKDOMText.h @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2012 Apple Inc. 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. + */ + +#if defined(__LP64__) && defined(__clang__) + +#import <WebKit2/WKDOMNode.h> + +WK_EXPORT +@interface WKDOMText : WKDOMNode + +@property(readonly) NSString *data; + +@end + +#endif // defined(__LP64__) && defined(__clang__) diff --git a/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKDOMText.mm b/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKDOMText.mm new file mode 100644 index 000000000..4f4f627ab --- /dev/null +++ b/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKDOMText.mm @@ -0,0 +1,43 @@ +/* + * Copyright (C) 2012 Apple Inc. 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. + */ + +#import "config.h" +#import "WKDOMText.h" + +#if defined(__LP64__) && defined(__clang__) + +#import "WKDOMInternals.h" +#import <WebCore/Text.h> + +@implementation WKDOMText + +- (NSString *)data +{ + return WebCore::toText(_impl.get())->data(); +} + +@end + +#endif // defined(__LP64__) && defined(__clang__) diff --git a/Source/WebKit2/Shared/CoreIPCSupport/InjectedBundleMessageKinds.h b/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKDOMTextIterator.h index a1afd6987..e34c18e44 100644 --- a/Source/WebKit2/Shared/CoreIPCSupport/InjectedBundleMessageKinds.h +++ b/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKDOMTextIterator.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Apple Inc. All rights reserved. + * Copyright (C) 2012 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -23,28 +23,25 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ -#ifndef InjectedBundleMessageKinds_h -#define InjectedBundleMessageKinds_h +#if defined(__LP64__) && defined(__clang__) -// Messages sent from WebKit to the injected bundle. +#import <Foundation/Foundation.h> +#import <WebKit2/WKBase.h> -#include "MessageID.h" +@class WKDOMRange; -namespace InjectedBundleMessage { +WK_EXPORT +@interface WKDOMTextIterator : NSObject -enum Kind { - PostMessage, - PostMessageToPage -}; +- (id)initWithRange:(WKDOMRange *)range; -} +- (void)advance; -namespace CoreIPC { +@property (readonly) BOOL atEnd; +@property (readonly) WKDOMRange *currentRange; +@property (readonly) NSUInteger currentTextLength; +@property (readonly) const unichar *currentTextPointer; -template<> struct MessageKindTraits<InjectedBundleMessage::Kind> { - static const MessageClass messageClass = MessageClassInjectedBundle; -}; +@end -} - -#endif // InjectedBundleMessageKinds_h +#endif // defined(__LP64__) && defined(__clang__) diff --git a/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKDOMTextIterator.mm b/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKDOMTextIterator.mm new file mode 100644 index 000000000..0f9ae6191 --- /dev/null +++ b/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKDOMTextIterator.mm @@ -0,0 +1,83 @@ +/* + * Copyright (C) 2012 Apple Inc. 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. + */ + +#import "config.h" + +#if defined(__LP64__) && defined(__clang__) + +#import "WKDOMTextIterator.h" + +#import "WKDOMInternals.h" +#import "WKDOMRange.h" +#import <WebCore/TextIterator.h> +#import <wtf/OwnPtr.h> + +@interface WKDOMTextIterator () { +@public + OwnPtr<WebCore::TextIterator> _textIterator; +} +@end + +@implementation WKDOMTextIterator + +- (id)initWithRange:(WKDOMRange *)range +{ + self = [super init]; + if (!self) + return nil; + + _textIterator = adoptPtr(new WebCore::TextIterator(WebKit::toWebCoreRange(range))); + + return self; +} + +- (void)advance +{ + _textIterator->advance(); +} + +- (BOOL)atEnd +{ + return _textIterator->atEnd(); +} + +- (WKDOMRange *)currentRange +{ + return WebKit::toWKDOMRange(_textIterator->range().get()); +} + +- (const unichar *)currentTextPointer +{ + return _textIterator->characters(); +} + +- (NSUInteger)currentTextLength +{ + return _textIterator->length(); +} + +@end + +#endif // defined(__LP64__) && defined(__clang__) diff --git a/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.h b/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.h new file mode 100644 index 000000000..4a7cc50a6 --- /dev/null +++ b/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.h @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2012 Apple Inc. 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. + */ + +#if defined(__LP64__) && defined(__clang__) + +#import <Foundation/Foundation.h> +#import <WebKit2/WKBase.h> + +@class WKWebProcessPlugInController; +@class WKWebProcessPlugInBrowserContextController; + +@protocol WKWebProcessPlugIn <NSObject> +@optional +- (void)webProcessPlugInInitialize:(WKWebProcessPlugInController *)plugInController; +- (void)webProcessPlugIn:(WKWebProcessPlugInController *)plugInController didCreateBrowserContextController:(WKWebProcessPlugInBrowserContextController *)browserContextController; +- (void)webProcessPlugIn:(WKWebProcessPlugInController *)plugInController willDestroyBrowserContextController:(WKWebProcessPlugInBrowserContextController *)browserContextController; +@end + +WK_EXPORT +@interface WKWebProcessPlugInController : NSObject +@end + +#endif // defined(__LP64__) && defined(__clang__) diff --git a/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.mm b/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.mm new file mode 100644 index 000000000..d967ec29b --- /dev/null +++ b/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.mm @@ -0,0 +1,129 @@ +/* + * Copyright (C) 2012 Apple Inc. 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. + */ + +#import "config.h" + +#if defined(__LP64__) && defined(__clang__) + +#import "WKWebProcessPlugIn.h" +#import "WKWebProcessPlugInInternal.h" + +#import "InjectedBundle.h" +#import "WKBundle.h" +#import "WKBundleAPICast.h" +#import "WKRetainPtr.h" +#import "WKWebProcessPlugInBrowserContextControllerInternal.h" +#import <wtf/RetainPtr.h> + +typedef HashMap<WKBundlePageRef, RetainPtr<WKWebProcessPlugInBrowserContextController *> > BundlePageWrapperCache; + +@interface WKWebProcessPlugInController () { + RetainPtr<id<WKWebProcessPlugIn> > _principalClassInstance; + WKRetainPtr<WKBundleRef> _bundleRef; + BundlePageWrapperCache _bundlePageWrapperCache; +} +@end + +@implementation WKWebProcessPlugInController (Internal) + +static void didCreatePage(WKBundleRef bundle, WKBundlePageRef page, const void* clientInfo) +{ + WKWebProcessPlugInController *plugInController = (WKWebProcessPlugInController *)clientInfo; + id<WKWebProcessPlugIn> principalClassInstance = plugInController->_principalClassInstance.get(); + + if ([principalClassInstance respondsToSelector:@selector(webProcessPlugIn:didCreateBrowserContextController:)]) { + ASSERT(!plugInController->_bundlePageWrapperCache.contains(page)); + + WKWebProcessPlugInBrowserContextController* browserContextController = [[WKWebProcessPlugInBrowserContextController alloc] _initWithBundlePageRef:page]; + plugInController->_bundlePageWrapperCache.set(page, browserContextController); + + [principalClassInstance webProcessPlugIn:plugInController didCreateBrowserContextController:browserContextController]; + } +} + +static void willDestroyPage(WKBundleRef bundle, WKBundlePageRef page, const void* clientInfo) +{ + WKWebProcessPlugInController *plugInController = (WKWebProcessPlugInController *)clientInfo; + id<WKWebProcessPlugIn> principalClassInstance = plugInController->_principalClassInstance.get(); + + // If we never added the bundle page to the cache, which can happen if webProcessPlugIn:didCreateBrowserContextController: is not implemented, + // there is no reason to call webProcessPlugIn:willDestroyBrowserContextController:, so don't. + BundlePageWrapperCache::iterator it = plugInController->_bundlePageWrapperCache.find(page); + if (it == plugInController->_bundlePageWrapperCache.end()) { + ASSERT(![principalClassInstance respondsToSelector:@selector(webProcessPlugIn:didCreateBrowserContextController:)]); + return; + } + + if ([principalClassInstance respondsToSelector:@selector(webProcessPlugIn:willDestroyBrowserContextController:)]) + [principalClassInstance webProcessPlugIn:plugInController willDestroyBrowserContextController:it->value.get()]; + + plugInController->_bundlePageWrapperCache.remove(it); +} + +static void setUpBundleClient(WKWebProcessPlugInController *plugInController, WKBundleRef bundleRef) +{ + WKBundleClient bundleClient; + memset(&bundleClient, 0, sizeof(bundleClient)); + + bundleClient.version = kWKBundleClientCurrentVersion; + bundleClient.clientInfo = plugInController; + bundleClient.didCreatePage = didCreatePage; + bundleClient.willDestroyPage = willDestroyPage; + + WKBundleSetClient(bundleRef, &bundleClient); +} + +static WKWebProcessPlugInController *sharedInstance; + ++ (WKWebProcessPlugInController *)_shared +{ + ASSERT_WITH_MESSAGE(sharedInstance, "+[WKWebProcessPlugIn _shared] called without first initializing it."); + return sharedInstance; +} + +- (id)_initWithPrincipalClassInstance:(id<WKWebProcessPlugIn>)principalClassInstance bundleRef:(WKBundleRef)bundleRef +{ + self = [super init]; + if (!self) + return nil; + + _principalClassInstance = principalClassInstance; + _bundleRef = bundleRef; + + ASSERT_WITH_MESSAGE(!sharedInstance, "WKWebProcessPlugInController initialized multiple times."); + sharedInstance = self; + + setUpBundleClient(self, bundleRef); + + return self; +} + +@end + +@implementation WKWebProcessPlugInController + +@end + +#endif // defined(__LP64__) && defined(__clang__) diff --git a/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.h b/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.h new file mode 100644 index 000000000..5a0db8d05 --- /dev/null +++ b/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.h @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2012 Apple Inc. 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. + */ + +#if defined(__LP64__) && defined(__clang__) + +#import <Foundation/Foundation.h> +#import <WebKit2/WKBase.h> + +@class WKDOMDocument; + +WK_EXPORT +@interface WKWebProcessPlugInBrowserContextController : NSObject + +@property(readonly) WKDOMDocument *mainFrameDocument; + +@end + +#endif // defined(__LP64__) && defined(__clang__) diff --git a/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm b/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm new file mode 100644 index 000000000..3d39be033 --- /dev/null +++ b/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm @@ -0,0 +1,86 @@ +/* + * Copyright (C) 2012 Apple Inc. 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. + */ + +#import "config.h" + +#if defined(__LP64__) && defined(__clang__) + +#import "WKWebProcessPlugInBrowserContextController.h" +#import "WKWebProcessPlugInBrowserContextControllerInternal.h" +#import "WKWebProcessPlugInBrowserContextControllerPrivate.h" + +#import "WKBundleAPICast.h" +#import "WKBundlePage.h" +#import "WKBundlePagePrivate.h" +#import "WKDOMInternals.h" +#import "WKRetainPtr.h" +#import "WebPage.h" +#import <WebCore/Document.h> +#import <WebCore/Frame.h> + +@interface WKWebProcessPlugInBrowserContextController () { + // Underlying WKBundlePageRef. + WKRetainPtr<WKBundlePageRef> _bundlePageRef; +} +@end + +@implementation WKWebProcessPlugInBrowserContextController (Internal) + +- (id)_initWithBundlePageRef:(WKBundlePageRef)bundlePageRef +{ + self = [super init]; + if (!self) + return nil; + + _bundlePageRef = bundlePageRef; + + return self; +} + +@end + +@implementation WKWebProcessPlugInBrowserContextController + +- (WKDOMDocument *)mainFrameDocument +{ + WebCore::Frame* webCoreMainFrame = WebKit::toImpl(self._bundlePageRef)->mainFrame(); + if (!webCoreMainFrame) + return nil; + + return WebKit::toWKDOMDocument(webCoreMainFrame->document()); +} + +@end + +@implementation WKWebProcessPlugInBrowserContextController (Private) + +- (WKBundlePageRef)_bundlePageRef +{ + return _bundlePageRef.get(); +} + +@end + +#endif // defined(__LP64__) && defined(__clang__) diff --git a/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextControllerInternal.h b/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextControllerInternal.h new file mode 100644 index 000000000..62f06238a --- /dev/null +++ b/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextControllerInternal.h @@ -0,0 +1,36 @@ +/* + * Copyright (C) 2012 Apple Inc. 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. + */ + +#if defined(__LP64__) && defined(__clang__) + +#import "WKWebProcessPlugInBrowserContextController.h" + +@interface WKWebProcessPlugInBrowserContextController (Internal) + +- (id)_initWithBundlePageRef:(WKBundlePageRef)bundlePageRef; + +@end + +#endif // defined(__LP64__) && defined(__clang__) diff --git a/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextControllerPrivate.h b/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextControllerPrivate.h new file mode 100644 index 000000000..59aac108c --- /dev/null +++ b/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextControllerPrivate.h @@ -0,0 +1,36 @@ +/* + * Copyright (C) 2012 Apple Inc. 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. + */ + +#if defined(__LP64__) && defined(__clang__) + +#import <WebKit2/WKWebProcessPlugInBrowserContextController.h> + +@interface WKWebProcessPlugInBrowserContextController (Private) + +@property(readonly) WKBundlePageRef _bundlePageRef; + +@end + +#endif // defined(__LP64__) && defined(__clang__) diff --git a/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInInternal.h b/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInInternal.h new file mode 100644 index 000000000..58b3cc3f7 --- /dev/null +++ b/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInInternal.h @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2012 Apple Inc. 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. + */ + +#if defined(__LP64__) && defined(__clang__) + +#import "WKWebProcessPlugIn.h" + +@interface WKWebProcessPlugInController (Internal) + ++ (WKWebProcessPlugInController *)_shared; +- (id)_initWithPrincipalClassInstance:(id<WKWebProcessPlugIn>)principalClassInstance bundleRef:(WKBundleRef)bundleRef; + +@end + +#endif // defined(__LP64__) && defined(__clang__) diff --git a/Source/WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp b/Source/WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp index 0c4295e61..77e03093d 100644 --- a/Source/WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp +++ b/Source/WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp @@ -69,10 +69,10 @@ PassRefPtr<InjectedBundleNodeHandle> InjectedBundleNodeHandle::getOrCreate(Node* DOMHandleCache::AddResult result = domHandleCache().add(node, 0); if (!result.isNewEntry) - return PassRefPtr<InjectedBundleNodeHandle>(result.iterator->second); + return PassRefPtr<InjectedBundleNodeHandle>(result.iterator->value); RefPtr<InjectedBundleNodeHandle> nodeHandle = InjectedBundleNodeHandle::create(node); - result.iterator->second = nodeHandle.get(); + result.iterator->value = nodeHandle.get(); return nodeHandle.release(); } diff --git a/Source/WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp b/Source/WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp index 1b74f0124..d6000ab91 100644 --- a/Source/WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp +++ b/Source/WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp @@ -48,10 +48,10 @@ PassRefPtr<InjectedBundleRangeHandle> InjectedBundleRangeHandle::getOrCreate(Ran DOMHandleCache::AddResult result = domHandleCache().add(range, 0); if (!result.isNewEntry) - return PassRefPtr<InjectedBundleRangeHandle>(result.iterator->second); + return PassRefPtr<InjectedBundleRangeHandle>(result.iterator->value); RefPtr<InjectedBundleRangeHandle> rangeHandle = InjectedBundleRangeHandle::create(range); - result.iterator->second = rangeHandle.get(); + result.iterator->value = rangeHandle.get(); return rangeHandle.release(); } diff --git a/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp b/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp index 44d9a10ab..458b1c169 100644 --- a/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp +++ b/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp @@ -28,7 +28,6 @@ #include "Arguments.h" #include "ImmutableArray.h" -#include "InjectedBundleMessageKinds.h" #include "InjectedBundleScriptWorld.h" #include "InjectedBundleUserMessageCoders.h" #include "LayerTreeHost.h" @@ -61,6 +60,7 @@ #include <WebCore/PageVisibilityState.h> #include <WebCore/PrintContext.h> #include <WebCore/ResourceHandle.h> +#include <WebCore/ResourceLoadScheduler.h> #include <WebCore/ScriptController.h> #include <WebCore/SecurityOrigin.h> #include <WebCore/SecurityPolicy.h> @@ -426,23 +426,24 @@ bool InjectedBundle::isProcessingUserGesture() return ScriptController::processingUserGesture(); } -static PassOwnPtr<Vector<String> > toStringVector(ImmutableArray* patterns) +static Vector<String> toStringVector(ImmutableArray* patterns) { + Vector<String> patternsVector; + if (!patterns) - return nullptr; + return patternsVector; - size_t size = patterns->size(); + size_t size = patterns->size(); if (!size) - return nullptr; + return patternsVector; - OwnPtr<Vector<String> > patternsVector = adoptPtr(new Vector<String>); - patternsVector->reserveInitialCapacity(size); + patternsVector.reserveInitialCapacity(size); for (size_t i = 0; i < size; ++i) { WebString* entry = patterns->at<WebString>(i); if (entry) - patternsVector->uncheckedAppend(entry->string()); + patternsVector.uncheckedAppend(entry->string()); } - return patternsVector.release(); + return patternsVector; } void InjectedBundle::addUserScript(WebPageGroupProxy* pageGroup, InjectedBundleScriptWorld* scriptWorld, const String& source, const String& url, ImmutableArray* whitelist, ImmutableArray* blacklist, WebCore::UserScriptInjectionTime injectionTime, WebCore::UserContentInjectedFrames injectedFrames) @@ -540,46 +541,9 @@ void InjectedBundle::didReceiveMessageToPage(WebPage* page, const String& messag m_client.didReceiveMessageToPage(this, page, messageName, messageBody); } -void InjectedBundle::didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID messageID, CoreIPC::ArgumentDecoder* arguments) -{ - switch (messageID.get<InjectedBundleMessage::Kind>()) { - case InjectedBundleMessage::PostMessage: { - String messageName; - RefPtr<APIObject> messageBody; - InjectedBundleUserMessageDecoder messageDecoder(messageBody); - if (!arguments->decode(CoreIPC::Out(messageName, messageDecoder))) - return; - - didReceiveMessage(messageName, messageBody.get()); - return; - } - - case InjectedBundleMessage::PostMessageToPage: { - uint64_t pageID = arguments->destinationID(); - if (!pageID) - return; - - WebPage* page = WebProcess::shared().webPage(pageID); - if (!page) - return; - - String messageName; - RefPtr<APIObject> messageBody; - InjectedBundleUserMessageDecoder messageDecoder(messageBody); - if (!arguments->decode(CoreIPC::Out(messageName, messageDecoder))) - return; - - didReceiveMessageToPage(page, messageName, messageBody.get()); - return; - } - } - - ASSERT_NOT_REACHED(); -} - void InjectedBundle::setPageVisibilityState(WebPage* page, int state, bool isInitialState) { -#if ENABLE(PAGE_VISIBILITY_API) +#if ENABLE(PAGE_VISIBILITY_API) || ENABLE(HIDDEN_PAGE_DOM_TIMER_THROTTLING) page->corePage()->setVisibilityState(static_cast<PageVisibilityState>(state), isInitialState); #endif } @@ -646,4 +610,14 @@ void InjectedBundle::setTabKeyCyclesThroughElements(WebPage* page, bool enabled) page->corePage()->setTabKeyCyclesThroughElements(enabled); } +void InjectedBundle::setSerialLoadingEnabled(bool enabled) +{ + resourceLoadScheduler()->setSerialLoadingEnabled(enabled); +} + +void InjectedBundle::dispatchPendingLoadRequests() +{ + resourceLoadScheduler()->servePendingRequests(); +} + } // namespace WebKit diff --git a/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.h b/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.h index 1197256d5..754b13320 100644 --- a/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.h +++ b/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.h @@ -47,6 +47,10 @@ typedef struct _GModule GModule; #include <Eina.h> #endif +#if PLATFORM(MAC) +OBJC_CLASS NSBundle; +#endif + namespace CoreIPC { class ArgumentDecoder; class Connection; @@ -56,7 +60,7 @@ namespace CoreIPC { namespace WebKit { #if PLATFORM(MAC) -typedef CFBundleRef PlatformBundle; +typedef NSBundle *PlatformBundle; #elif PLATFORM(WIN) typedef HMODULE PlatformBundle; #elif PLATFORM(QT) @@ -164,8 +168,6 @@ public: void didReceiveMessage(const String&, APIObject*); void didReceiveMessageToPage(WebPage*, const String&, APIObject*); - void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); - static void reportException(JSContextRef, JSValueRef exception); static bool isProcessingUserGesture(); @@ -175,6 +177,8 @@ public: static size_t workerThreadCount(); void setTabKeyCyclesThroughElements(WebPage*, bool enabled); + void setSerialLoadingEnabled(bool); + void dispatchPendingLoadRequests(); private: explicit InjectedBundle(const String&); diff --git a/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleIntent.cpp b/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleIntent.cpp index 92de61c6c..d8ac3a25d 100644 --- a/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleIntent.cpp +++ b/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleIntent.cpp @@ -79,7 +79,7 @@ PassRefPtr<ImmutableDictionary> InjectedBundleIntent::extras() const ImmutableDictionary::MapType wkExtras; HashMap<String, String>::const_iterator end = extras.end(); for (HashMap<String, String>::const_iterator it = extras.begin(); it != end; ++it) - wkExtras.set(it->first, WebString::create(it->second)); + wkExtras.set(it->key, WebString::create(it->value)); return ImmutableDictionary::adopt(wkExtras); } diff --git a/Source/WebKit2/WebProcess/InjectedBundle/mac/InjectedBundleMac.cpp b/Source/WebKit2/WebProcess/InjectedBundle/mac/InjectedBundleMac.mm index cb59192a9..de5eaf7de 100644 --- a/Source/WebKit2/WebProcess/InjectedBundle/mac/InjectedBundleMac.cpp +++ b/Source/WebKit2/WebProcess/InjectedBundle/mac/InjectedBundleMac.mm @@ -23,18 +23,25 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ -#include "config.h" -#include "InjectedBundle.h" +#import "config.h" +#import "InjectedBundle.h" -#include "WKBundleAPICast.h" -#include "WKBundleInitialize.h" -#include <stdio.h> -#include <wtf/RetainPtr.h> -#include <wtf/text/CString.h> -#include <wtf/text/WTFString.h> +#import "WKBundleAPICast.h" +#import "WKBundleInitialize.h" +#import "WKWebProcessPlugInInternal.h" + +#import <Foundation/NSBundle.h> +#import <stdio.h> +#import <wtf/RetainPtr.h> +#import <wtf/text/CString.h> +#import <wtf/text/WTFString.h> using namespace WebCore; +@interface NSBundle (WKAppDetails) +- (CFBundleRef)_cfBundle; +@end + namespace WebKit { bool InjectedBundle::load(APIObject* initializationUserData) @@ -60,25 +67,53 @@ bool InjectedBundle::load(APIObject* initializationUserData) return false; } - m_platformBundle = CFBundleCreate(0, bundleURL.get()); + m_platformBundle = [[NSBundle alloc] initWithURL:(NSURL *)bundleURL.get()]; if (!m_platformBundle) { WTFLogAlways("InjectedBundle::load failed - Could not create the bundle.\n"); return false; } - if (!CFBundleLoadExecutable(m_platformBundle)) { + if (![m_platformBundle load]) { WTFLogAlways("InjectedBundle::load failed - Could not load the executable from the bundle.\n"); return false; } - WKBundleInitializeFunctionPtr initializeFunction = reinterpret_cast<WKBundleInitializeFunctionPtr>(CFBundleGetFunctionPointerForName(m_platformBundle, CFSTR("WKBundleInitialize"))); - if (!initializeFunction) { - WTFLogAlways("InjectedBundle::load failed - Could not find the initialize function in the bundle executable.\n"); + // First check to see if the bundle has a WKBundleInitialize function. + WKBundleInitializeFunctionPtr initializeFunction = reinterpret_cast<WKBundleInitializeFunctionPtr>(CFBundleGetFunctionPointerForName([m_platformBundle _cfBundle], CFSTR("WKBundleInitialize"))); + if (initializeFunction) { + initializeFunction(toAPI(this), toAPI(initializationUserData)); + return true; + } + +#if defined(__LP64__) && defined(__clang__) + // Otherwise, look to see if the bundle has a principal class + Class principalClass = [m_platformBundle principalClass]; + if (!principalClass) { + WTFLogAlways("InjectedBundle::load failed - No initialize function or principal class found in the bundle executable.\n"); + return false; + } + + if (![principalClass conformsToProtocol:@protocol(WKWebProcessPlugIn)]) { + WTFLogAlways("InjectedBundle::load failed - Principal class does not conform to the WKWebProcessPlugIn protocol.\n"); + return false; + } + + id<WKWebProcessPlugIn> instance = (id<WKWebProcessPlugIn>)[[principalClass alloc] init]; + if (!instance) { + WTFLogAlways("InjectedBundle::load failed - Could not initialize an instance of the principal class.\n"); return false; } - initializeFunction(toAPI(this), toAPI(initializationUserData)); + // Create the shared WKWebProcessPlugInController. + [[WKWebProcessPlugInController alloc] _initWithPrincipalClassInstance:instance bundleRef:toAPI(this)]; + + if ([instance respondsToSelector:@selector(webProcessPlugInInitialize:)]) + [instance webProcessPlugInInitialize:[WKWebProcessPlugInController _shared]]; + return true; +#else + return false; +#endif } void InjectedBundle::activateMacFontAscentHack() diff --git a/Source/WebKit2/WebProcess/Notifications/NotificationPermissionRequestManager.cpp b/Source/WebKit2/WebProcess/Notifications/NotificationPermissionRequestManager.cpp index 44b97eb4e..c7788ae0f 100644 --- a/Source/WebKit2/WebProcess/Notifications/NotificationPermissionRequestManager.cpp +++ b/Source/WebKit2/WebProcess/Notifications/NotificationPermissionRequestManager.cpp @@ -84,7 +84,8 @@ void NotificationPermissionRequestManager::startRequest(SecurityOrigin* origin, { NotificationClient::Permission permission = permissionLevel(origin); if (permission != NotificationClient::PermissionNotAllowed) { - callback->handleEvent(); + if (callback) + callback->handleEvent(); return; } diff --git a/Source/WebKit2/WebProcess/Notifications/WebNotificationManager.cpp b/Source/WebKit2/WebProcess/Notifications/WebNotificationManager.cpp index 5ac2cdc3e..7b68912fe 100644 --- a/Source/WebKit2/WebProcess/Notifications/WebNotificationManager.cpp +++ b/Source/WebKit2/WebProcess/Notifications/WebNotificationManager.cpp @@ -107,7 +107,7 @@ NotificationClient::Permission WebNotificationManager::policyForOrigin(WebCore:: ASSERT(!origin->isUnique()); HashMap<String, bool>::const_iterator it = m_permissionsMap.find(origin->toRawString()); if (it != m_permissionsMap.end()) - return it->second ? NotificationClient::PermissionAllowed : NotificationClient::PermissionDenied; + return it->value ? NotificationClient::PermissionAllowed : NotificationClient::PermissionDenied; #else UNUSED_PARAM(origin); #endif @@ -145,7 +145,7 @@ bool WebNotificationManager::show(Notification* notification, WebPage* page) m_notificationIDMap.set(notificationID, notification); NotificationContextMap::iterator it = m_notificationContextMap.add(notification->scriptExecutionContext(), Vector<uint64_t>()).iterator; - it->second.append(notificationID); + it->value.append(notificationID); #if ENABLE(NOTIFICATIONS) m_process->connection()->send(Messages::WebPageProxy::ShowNotification(notification->title(), notification->body(), notification->iconURL().string(), notification->tag(), notification->lang(), notification->dir(), notification->scriptExecutionContext()->securityOrigin()->toString(), notificationID), page->pageID()); @@ -184,7 +184,7 @@ void WebNotificationManager::clearNotifications(WebCore::ScriptExecutionContext* if (it == m_notificationContextMap.end()) return; - Vector<uint64_t>& notificationIDs = it->second; + Vector<uint64_t>& notificationIDs = it->value; m_process->connection()->send(Messages::WebNotificationManagerProxy::ClearNotifications(notificationIDs), page->pageID()); size_t count = notificationIDs.size(); for (size_t i = 0; i < count; ++i) { @@ -281,10 +281,10 @@ void WebNotificationManager::removeNotificationFromContextMap(uint64_t notificat // This is a helper function for managing the hash maps. NotificationContextMap::iterator it = m_notificationContextMap.find(notification->scriptExecutionContext()); ASSERT(it != m_notificationContextMap.end()); - size_t index = it->second.find(notificationID); + size_t index = it->value.find(notificationID); ASSERT(index != notFound); - it->second.remove(index); - if (it->second.isEmpty()) + it->value.remove(index); + if (it->value.isEmpty()) m_notificationContextMap.remove(it); } #endif diff --git a/Source/WebKit2/WebProcess/Plugins/Netscape/JSNPObject.cpp b/Source/WebKit2/WebProcess/Plugins/Netscape/JSNPObject.cpp index 56e1a1097..51fb15d8e 100644 --- a/Source/WebKit2/WebProcess/Plugins/Netscape/JSNPObject.cpp +++ b/Source/WebKit2/WebProcess/Plugins/Netscape/JSNPObject.cpp @@ -54,10 +54,10 @@ static NPIdentifier npIdentifierFromIdentifier(PropertyName propertyName) return static_cast<NPIdentifier>(IdentifierRep::get(name.utf8().data())); } -const ClassInfo JSNPObject::s_info = { "NPObject", &JSNonFinalObject::s_info, 0, 0, CREATE_METHOD_TABLE(JSNPObject) }; +const ClassInfo JSNPObject::s_info = { "NPObject", &Base::s_info, 0, 0, CREATE_METHOD_TABLE(JSNPObject) }; JSNPObject::JSNPObject(JSGlobalObject* globalObject, Structure* structure, NPRuntimeObjectMap* objectMap, NPObject* npObject) - : JSNonFinalObject(globalObject->globalData(), structure) + : JSDestructibleObject(globalObject->globalData(), structure) , m_objectMap(objectMap) , m_npObject(npObject) { @@ -404,7 +404,7 @@ bool JSNPObject::deleteProperty(ExecState* exec, NPIdentifier propertyName) return true; } -void JSNPObject::getOwnPropertyNames(JSObject* object, ExecState* exec, PropertyNameArray& propertyNameArray, EnumerationMode mode) +void JSNPObject::getOwnPropertyNames(JSObject* object, ExecState* exec, PropertyNameArray& propertyNameArray, EnumerationMode) { JSNPObject* thisObject = jsCast<JSNPObject*>(object); ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); diff --git a/Source/WebKit2/WebProcess/Plugins/Netscape/JSNPObject.h b/Source/WebKit2/WebProcess/Plugins/Netscape/JSNPObject.h index 5723baa92..662d6c637 100644 --- a/Source/WebKit2/WebProcess/Plugins/Netscape/JSNPObject.h +++ b/Source/WebKit2/WebProcess/Plugins/Netscape/JSNPObject.h @@ -41,9 +41,9 @@ class NPRuntimeObjectMap; // JSNPObject is a JSObject that wraps an NPObject. -class JSNPObject : public JSC::JSNonFinalObject { +class JSNPObject : public JSC::JSDestructibleObject { public: - typedef JSC::JSNonFinalObject Base; + typedef JSC::JSDestructibleObject Base; static JSNPObject* create(JSC::JSGlobalObject* globalObject, NPRuntimeObjectMap* objectMap, NPObject* npObject) { diff --git a/Source/WebKit2/WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp b/Source/WebKit2/WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp index 9dcd91669..fca8909d6 100644 --- a/Source/WebKit2/WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp +++ b/Source/WebKit2/WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp @@ -212,7 +212,7 @@ void NPRuntimeObjectMap::invalidate() Vector<NPObject*> objects; for (HashMap<NPObject*, JSC::Weak<JSNPObject> >::iterator ptr = m_jsNPObjects.begin(), end = m_jsNPObjects.end(); ptr != end; ++ptr) { - JSNPObject* jsNPObject = ptr->second.get(); + JSNPObject* jsNPObject = ptr->value.get(); if (!jsNPObject) // Skip zombies. continue; objects.append(jsNPObject->leakNPObject()); diff --git a/Source/WebKit2/WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp b/Source/WebKit2/WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp index 3a428e63a..27b10e726 100644 --- a/Source/WebKit2/WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp +++ b/Source/WebKit2/WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp @@ -306,19 +306,19 @@ static NPError NPN_PostURL(NPP npp, const char* url, const char* target, uint32_ return NPERR_NO_ERROR; } -static NPError NPN_RequestRead(NPStream* stream, NPByteRange* rangeList) +static NPError NPN_RequestRead(NPStream*, NPByteRange*) { notImplemented(); return NPERR_GENERIC_ERROR; } -static NPError NPN_NewStream(NPP instance, NPMIMEType type, const char* target, NPStream** stream) +static NPError NPN_NewStream(NPP, NPMIMEType, const char*, NPStream**) { notImplemented(); return NPERR_GENERIC_ERROR; } -static int32_t NPN_Write(NPP instance, NPStream* stream, int32_t len, void* buffer) +static int32_t NPN_Write(NPP, NPStream*, int32_t, void*) { notImplemented(); return -1; @@ -358,12 +358,12 @@ static void NPN_MemFree(void* ptr) npnMemFree(ptr); } -static uint32_t NPN_MemFlush(uint32_t size) +static uint32_t NPN_MemFlush(uint32_t) { return 0; } -static void NPN_ReloadPlugins(NPBool reloadPages) +static void NPN_ReloadPlugins(NPBool) { notImplemented(); } @@ -374,7 +374,7 @@ static JRIEnv* NPN_GetJavaEnv(void) return 0; } -static jref NPN_GetJavaPeer(NPP instance) +static jref NPN_GetJavaPeer(NPP) { notImplemented(); return 0; @@ -612,14 +612,14 @@ static void NPN_InvalidateRect(NPP npp, NPRect* invalidRect) plugin->invalidate(invalidRect); } -static void NPN_InvalidateRegion(NPP npp, NPRegion invalidRegion) +static void NPN_InvalidateRegion(NPP npp, NPRegion) { // FIXME: We could at least figure out the bounding rectangle of the invalid region. RefPtr<NetscapePlugin> plugin = NetscapePlugin::fromNPP(npp); plugin->invalidate(0); } -static void NPN_ForceRedraw(NPP instance) +static void NPN_ForceRedraw(NPP) { notImplemented(); } diff --git a/Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.cpp b/Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.cpp index d67ac9511..5af072515 100644 --- a/Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.cpp +++ b/Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.cpp @@ -198,8 +198,8 @@ NPError NetscapePlugin::destroyStream(NPStream* stream, NPReason reason) NetscapePluginStream* pluginStream = 0; for (StreamsMap::const_iterator it = m_streams.begin(), end = m_streams.end(); it != end; ++it) { - if (it->second->npStream() == stream) { - pluginStream = it->second.get(); + if (it->value->npStream() == stream) { + pluginStream = it->value.get(); break; } } @@ -768,8 +768,8 @@ void NetscapePlugin::frameDidFinishLoading(uint64_t requestID) if (it == m_pendingURLNotifications.end()) return; - String url = it->second.first; - void* notificationData = it->second.second; + String url = it->value.first; + void* notificationData = it->value.second; m_pendingURLNotifications.remove(it); @@ -784,8 +784,8 @@ void NetscapePlugin::frameDidFail(uint64_t requestID, bool wasCancelled) if (it == m_pendingURLNotifications.end()) return; - String url = it->second.first; - void* notificationData = it->second.second; + String url = it->value.first; + void* notificationData = it->value.second; m_pendingURLNotifications.remove(it); @@ -913,6 +913,21 @@ bool NetscapePlugin::handleKeyboardEvent(const WebKeyboardEvent& keyboardEvent) return platformHandleKeyboardEvent(keyboardEvent); } +bool NetscapePlugin::handleEditingCommand(const String& commandName, const String& argument) +{ + return false; +} + +bool NetscapePlugin::isEditingCommandEnabled(const String& commandName) +{ + return false; +} + +bool NetscapePlugin::handlesPageScaleFactor() +{ + return false; +} + void NetscapePlugin::setFocus(bool hasFocus) { ASSERT(m_isStarted); @@ -943,6 +958,8 @@ void NetscapePlugin::contentsScaleFactorChanged(float scaleFactor) #if PLUGIN_ARCHITECTURE(MAC) double contentsScaleFactor = scaleFactor; NPP_SetValue(NPNVcontentsScaleFactor, &contentsScaleFactor); +#else + UNUSED_PARAM(scaleFactor); #endif } diff --git a/Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.h b/Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.h index 61e2bb798..1f6168aad 100644 --- a/Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.h +++ b/Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.h @@ -203,6 +203,12 @@ private: virtual bool handleContextMenuEvent(const WebMouseEvent&); virtual bool handleKeyboardEvent(const WebKeyboardEvent&); virtual void setFocus(bool); + + virtual bool handleEditingCommand(const String& commandName, const String& argument) OVERRIDE; + virtual bool isEditingCommandEnabled(const String&) OVERRIDE; + + virtual bool handlesPageScaleFactor() OVERRIDE; + virtual NPObject* pluginScriptableNPObject(); #if PLATFORM(MAC) diff --git a/Source/WebKit2/WebProcess/Plugins/Netscape/mac/NetscapeSandboxFunctions.mm b/Source/WebKit2/WebProcess/Plugins/Netscape/mac/NetscapeSandboxFunctions.mm index 07cd2e708..e9474495a 100644 --- a/Source/WebKit2/WebProcess/Plugins/Netscape/mac/NetscapeSandboxFunctions.mm +++ b/Source/WebKit2/WebProcess/Plugins/Netscape/mac/NetscapeSandboxFunctions.mm @@ -109,6 +109,10 @@ NPError enterSandbox(const char* sandboxProfile, const char* readOnlyPaths[], co exit(EX_NOPERM); } setenv("TMPDIR", temporaryDirectory, 1); + if (chdir(temporaryDirectory) == -1) { + WTFLogAlways("PluginProcess: couldn't change working directory to temporary path: %s, errno %d\n", temporaryDirectory, errno); + exit(EX_OSERR); + } #endif diff --git a/Source/WebKit2/WebProcess/Plugins/Netscape/gtk/PluginProxyGtk.cpp b/Source/WebKit2/WebProcess/Plugins/Netscape/unix/PluginProxyUnix.cpp index 996af20ca..996af20ca 100644 --- a/Source/WebKit2/WebProcess/Plugins/Netscape/gtk/PluginProxyGtk.cpp +++ b/Source/WebKit2/WebProcess/Plugins/Netscape/unix/PluginProxyUnix.cpp diff --git a/Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp b/Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp index 5c9e67872..30a0e86cd 100644 --- a/Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp +++ b/Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp @@ -37,15 +37,20 @@ #if PLATFORM(QT) #include <WebCore/QtX11ImageConversion.h> #elif PLATFORM(GTK) -#include "PlatformContextCairo.h" -#include "RefPtrCairo.h" -#include <cairo-xlib.h> #include <gtk/gtk.h> #ifndef GTK_API_VERSION_2 #include <gtk/gtkx.h> #endif #include <gdk/gdkx.h> #include <WebCore/GtkVersioning.h> +#elif PLATFORM(EFL) && defined(HAVE_ECORE_X) +#include <Ecore_X.h> +#endif + +#if USE(CAIRO) && !PLATFORM(WIN_CAIRO) +#include "PlatformContextCairo.h" +#include "RefPtrCairo.h" +#include <cairo/cairo-xlib.h> #endif using namespace WebCore; @@ -84,6 +89,8 @@ static Display* getPluginDisplay() // Since we're a gdk/gtk app, we'll (probably?) have the same X connection as any gdk-based // plugins, so we can return that. We might want to add other implementations here later. return GDK_DISPLAY_XDISPLAY(gdk_display_get_default()); +#elif PLATFORM(EFL) && defined(HAVE_ECORE_X) + return static_cast<Display*>(ecore_x_display_get()); #else return 0; #endif @@ -95,6 +102,8 @@ static inline int x11Screen() return XDefaultScreen(NetscapePlugin::x11HostDisplay()); #elif PLATFORM(GTK) return gdk_screen_get_number(gdk_screen_get_default()); +#elif PLATFORM(EFL) && defined(HAVE_ECORE_X) + return ecore_x_screen_index_get(ecore_x_default_screen_get()); #else return 0; #endif @@ -106,6 +115,8 @@ static inline int displayDepth() return XDefaultDepth(NetscapePlugin::x11HostDisplay(), x11Screen()); #elif PLATFORM(GTK) return gdk_visual_get_depth(gdk_screen_get_system_visual(gdk_screen_get_default())); +#elif PLATFORM(EFL) && defined(HAVE_ECORE_X) + return ecore_x_default_depth_get(NetscapePlugin::x11HostDisplay(), ecore_x_default_screen_get()); #else return 0; #endif @@ -117,6 +128,8 @@ static inline unsigned long rootWindowID() return XDefaultRootWindow(NetscapePlugin::x11HostDisplay()); #elif PLATFORM(GTK) return GDK_ROOT_WINDOW(); +#elif PLATFORM(EFL) && defined(HAVE_ECORE_X) + return ecore_x_window_root_first_get(); #else return 0; #endif @@ -144,6 +157,8 @@ Display* NetscapePlugin::x11HostDisplay() return dedicatedDisplay; #elif PLATFORM(GTK) return GDK_DISPLAY_XDISPLAY(gdk_display_get_default()); +#elif PLATFORM(EFL) && defined(HAVE_ECORE_X) + return static_cast<Display*>(ecore_x_display_get()); #else return 0; #endif @@ -188,6 +203,8 @@ bool NetscapePlugin::platformPostInitializeWindowed(bool needsXEmbed, uint64_t w callbackStruct->visual = GDK_VISUAL_XVISUAL(gdk_window_get_visual(window)); callbackStruct->depth = gdk_visual_get_depth(gdk_window_get_visual(window)); callbackStruct->colormap = XCreateColormap(display, GDK_ROOT_WINDOW(), callbackStruct->visual, AllocNone); +#else + UNUSED_PARAM(windowID); #endif XFlush(display); @@ -357,7 +374,7 @@ void NetscapePlugin::platformPaint(GraphicsContext* context, const IntRect& dirt painter->drawImage(QPoint(exposedRect.x(), exposedRect.y()), qimageFromXImage(xImage), exposedRect); XDestroyImage(xImage); -#elif PLATFORM(GTK) +#elif PLATFORM(GTK) || (PLATFORM(EFL) && USE(CAIRO)) RefPtr<cairo_surface_t> drawableSurface = adoptRef(cairo_xlib_surface_create(m_pluginDisplay, m_drawable, static_cast<NPSetWindowCallbackStruct*>(m_npWindow.ws_info)->visual, diff --git a/Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.h b/Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.h new file mode 100644 index 000000000..cd58d8721 --- /dev/null +++ b/Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.h @@ -0,0 +1,104 @@ +/* + * Copyright (C) 2011, 2012 Apple Inc. 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. + */ + +#ifndef PDFPlugin_h +#define PDFPlugin_h + +#if ENABLE(PDFKIT_PLUGIN) + +#include "Plugin.h" +#include "SimplePDFPlugin.h" +#include <WebCore/AffineTransform.h> +#include <WebCore/ScrollableArea.h> +#include <wtf/RetainPtr.h> + +typedef const struct OpaqueJSContext* JSContextRef; +typedef struct OpaqueJSValue* JSObjectRef; +typedef const struct OpaqueJSValue* JSValueRef; + +OBJC_CLASS PDFLayerController; +OBJC_CLASS WKPDFLayerControllerDelegate; + +namespace WebCore { +struct PluginInfo; +} + +namespace WebKit { + +class PluginView; +class WebFrame; + +class PDFPlugin : public SimplePDFPlugin { +public: + static PassRefPtr<PDFPlugin> create(WebFrame*); + ~PDFPlugin(); + + void paintControlForLayerInContext(CALayer *, CGContextRef); + + using ScrollableArea::notifyScrollPositionChanged; + +private: + explicit PDFPlugin(WebFrame*); + + virtual void updateScrollbars() OVERRIDE; + virtual PassRefPtr<WebCore::Scrollbar> createScrollbar(WebCore::ScrollbarOrientation) OVERRIDE; + virtual void destroyScrollbar(WebCore::ScrollbarOrientation) OVERRIDE; + virtual void pdfDocumentDidLoad() OVERRIDE; + virtual void calculateSizes() OVERRIDE; + + virtual void destroy() OVERRIDE; + virtual void paint(WebCore::GraphicsContext*, const WebCore::IntRect& dirtyRectInWindowCoordinates) OVERRIDE; + virtual PassRefPtr<ShareableBitmap> snapshot() OVERRIDE; + virtual PlatformLayer* pluginLayer() OVERRIDE; + virtual void geometryDidChange(const WebCore::IntSize& pluginSize, const WebCore::IntRect& clipRect, const WebCore::AffineTransform& pluginToRootViewTransform) OVERRIDE; + virtual bool handleMouseEvent(const WebMouseEvent&) OVERRIDE; + virtual bool handleKeyboardEvent(const WebKeyboardEvent&) OVERRIDE; + virtual bool handleEditingCommand(const String& commandName, const String& argument) OVERRIDE; + virtual bool isEditingCommandEnabled(const String&) OVERRIDE; + virtual bool handlesPageScaleFactor() OVERRIDE { return true; } + + // ScrollableArea functions. + virtual void setScrollOffset(const WebCore::IntPoint&) OVERRIDE; + virtual void invalidateScrollbarRect(WebCore::Scrollbar*, const WebCore::IntRect&) OVERRIDE; + virtual void invalidateScrollCornerRect(const WebCore::IntRect&) OVERRIDE; + + RetainPtr<CALayer> m_containerLayer; + RetainPtr<CALayer> m_contentLayer; + RetainPtr<CALayer> m_horizontalScrollbarLayer; + RetainPtr<CALayer> m_verticalScrollbarLayer; + RetainPtr<CALayer> m_scrollCornerLayer; + RetainPtr<PDFLayerController> m_pdfLayerController; + + WebCore::AffineTransform m_rootViewToPluginTransform; + WebCore::IntPoint m_lastMousePoint; + + RetainPtr<WKPDFLayerControllerDelegate> m_pdfLayerControllerDelegate; +}; + +} // namespace WebKit + +#endif // ENABLE(PDFKIT_PLUGIN) + +#endif // PDFPlugin_h diff --git a/Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm b/Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm new file mode 100644 index 000000000..c5a3469cd --- /dev/null +++ b/Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm @@ -0,0 +1,582 @@ +/* + * Copyright (C) 2009, 2011, 2012 Apple Inc. 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. + */ + +#if ENABLE(PDFKIT_PLUGIN) + +#import "config.h" +#import "PDFPlugin.h" + +#import "PDFKitImports.h" +#import "PluginView.h" +#import "ShareableBitmap.h" +#import "WebEvent.h" +#import "WebEventConversion.h" +#import <PDFKit/PDFKit.h> +#import <QuartzCore/QuartzCore.h> +#import <WebCore/ArchiveResource.h> +#import <WebCore/Chrome.h> +#import <WebCore/DocumentLoader.h> +#import <WebCore/FocusController.h> +#import <WebCore/Frame.h> +#import <WebCore/FrameView.h> +#import <WebCore/GraphicsContext.h> +#import <WebCore/HTTPHeaderMap.h> +#import <WebCore/LocalizedStrings.h> +#import <WebCore/Page.h> +#import <WebCore/Pasteboard.h> +#import <WebCore/PluginData.h> +#import <WebCore/RenderBoxModelObject.h> +#import <WebCore/ScrollAnimator.h> +#import <WebCore/ScrollbarTheme.h> + +@protocol PDFLayerControllerDelegate <NSObject> + +- (void)updateScrollPosition:(CGPoint)newPosition; +- (void)writeItemsToPasteboard:(NSArray *)items withTypes:(NSArray *)types; +- (void)showDefinitionForAttributedString:(NSAttributedString *)string atPoint:(CGPoint)point; +- (void)performWebSearch:(NSString *)string; +- (void)openWithPreview; +- (void)saveToPDF; + +@end + +@interface PDFLayerController : NSObject +@end + +@interface PDFLayerController (Details) + +@property (retain) CALayer *parentLayer; +@property (retain) PDFDocument *document; +@property (retain) id<PDFLayerControllerDelegate> delegate; + +- (void)setFrameSize:(CGSize)size; + +- (void)setDisplayMode:(int)mode; +- (void)setDisplaysPageBreaks:(BOOL)pageBreaks; + +- (CGFloat)tileScaleFactor; +- (void)setTileScaleFactor:(CGFloat)scaleFactor; + +- (CGSize)contentSize; +- (CGSize)contentSizeRespectingZoom; + +- (void)snapshotInContext:(CGContextRef)context; + +- (void)magnifyWithMagnification:(CGFloat)magnification atPoint:(CGPoint)point immediately:(BOOL)immediately; + +- (CGPoint)scrollPosition; +- (void)setScrollPosition:(CGPoint)newPosition; +- (void)scrollWithDelta:(CGSize)delta; + +- (void)mouseDown:(NSEvent *)event; +- (void)mouseMoved:(NSEvent *)event; +- (void)mouseUp:(NSEvent *)event; +- (void)mouseDragged:(NSEvent *)event; +- (void)mouseEntered:(NSEvent *)event; +- (void)mouseExited:(NSEvent *)event; + +- (NSArray *)findString:(NSString *)string caseSensitive:(BOOL)isCaseSensitive highlightMatches:(BOOL)shouldHighlightMatches; + +- (id)currentSelection; +- (void)copySelection; +- (void)selectAll; + +- (bool)keyDown:(NSEvent *)event; + +- (void)setHUDEnabled:(BOOL)enabled; +- (BOOL)hudEnabled; + +@end + +using namespace WebCore; + +@interface WKPDFPluginScrollbarLayer : CALayer +{ + WebKit::PDFPlugin* _pdfPlugin; +} + +@property (assign) WebKit::PDFPlugin* pdfPlugin; + +@end + +@implementation WKPDFPluginScrollbarLayer + +@synthesize pdfPlugin=_pdfPlugin; + +- (id)initWithPDFPlugin:(WebKit::PDFPlugin *)plugin +{ + if (!(self = [super init])) + return nil; + + _pdfPlugin = plugin; + + return self; +} + +- (id<CAAction>)actionForKey:(NSString *)key +{ + return nil; +} + +- (void)drawInContext:(CGContextRef)ctx +{ + _pdfPlugin->paintControlForLayerInContext(self, ctx); +} + +@end + +@interface WKPDFLayerControllerDelegate : NSObject<PDFLayerControllerDelegate> +{ + WebKit::PDFPlugin* _pdfPlugin; +} + +@property (assign) WebKit::PDFPlugin* pdfPlugin; + +@end + +@implementation WKPDFLayerControllerDelegate + +@synthesize pdfPlugin=_pdfPlugin; + +- (id)initWithPDFPlugin:(WebKit::PDFPlugin *)plugin +{ + if (!(self = [super init])) + return nil; + + _pdfPlugin = plugin; + + return self; +} + +- (void)updateScrollPosition:(CGPoint)newPosition +{ + _pdfPlugin->notifyScrollPositionChanged(IntPoint(newPosition)); +} + +- (void)writeItemsToPasteboard:(NSArray *)items withTypes:(NSArray *)types +{ + // FIXME: Handle types other than plain text. + + for (NSUInteger i = 0, count = items.count; i < count; ++i) { + NSString *type = [types objectAtIndex:i]; + if ([type isEqualToString:NSStringPboardType] || [type isEqualToString:NSPasteboardTypeString]) { + RetainPtr<NSString> plainTextString(AdoptNS, [[NSString alloc] initWithData:[items objectAtIndex:i] encoding:NSUTF8StringEncoding]); + Pasteboard::generalPasteboard()->writePlainText(plainTextString.get(), Pasteboard::CannotSmartReplace); + } + } +} + +- (void)showDefinitionForAttributedString:(NSAttributedString *)string atPoint:(CGPoint)point +{ + // FIXME: Implement. +} + +- (void)performWebSearch:(NSString *)string +{ + // FIXME: Implement. +} + +- (void)openWithPreview +{ + // FIXME: Implement. +} + +- (void)saveToPDF +{ + // FIXME: Implement. +} + +@end + +namespace WebKit { + +PassRefPtr<PDFPlugin> PDFPlugin::create(WebFrame* frame) +{ + return adoptRef(new PDFPlugin(frame)); +} + +PDFPlugin::PDFPlugin(WebFrame* frame) + : SimplePDFPlugin(frame) + , m_containerLayer(AdoptNS, [[CALayer alloc] init]) + , m_contentLayer(AdoptNS, [[CALayer alloc] init]) + , m_scrollCornerLayer(AdoptNS, [[WKPDFPluginScrollbarLayer alloc] initWithPDFPlugin:this]) + , m_pdfLayerController(AdoptNS, [[pdfLayerControllerClass() alloc] init]) + , m_pdfLayerControllerDelegate(AdoptNS, [[WKPDFLayerControllerDelegate alloc] initWithPDFPlugin:this]) +{ + m_pdfLayerController.get().delegate = m_pdfLayerControllerDelegate.get(); + m_pdfLayerController.get().parentLayer = m_contentLayer.get(); + + [m_containerLayer.get() addSublayer:m_contentLayer.get()]; + [m_containerLayer.get() addSublayer:m_scrollCornerLayer.get()]; +} + +PDFPlugin::~PDFPlugin() +{ +} + +void PDFPlugin::updateScrollbars() +{ + SimplePDFPlugin::updateScrollbars(); + + if (m_verticalScrollbarLayer) { + m_verticalScrollbarLayer.get().frame = verticalScrollbar()->frameRect(); + [m_verticalScrollbarLayer.get() setNeedsDisplay]; + } + + if (m_horizontalScrollbarLayer) { + m_horizontalScrollbarLayer.get().frame = horizontalScrollbar()->frameRect(); + [m_horizontalScrollbarLayer.get() setNeedsDisplay]; + } + + if (m_scrollCornerLayer) { + m_scrollCornerLayer.get().frame = scrollCornerRect(); + [m_scrollCornerLayer.get() setNeedsDisplay]; + } +} + +PassRefPtr<Scrollbar> PDFPlugin::createScrollbar(ScrollbarOrientation orientation) +{ + RefPtr<Scrollbar> widget = Scrollbar::createNativeScrollbar(this, orientation, RegularScrollbar); + if (orientation == HorizontalScrollbar) { + m_horizontalScrollbarLayer.adoptNS([[WKPDFPluginScrollbarLayer alloc] initWithPDFPlugin:this]); + [m_containerLayer.get() addSublayer:m_horizontalScrollbarLayer.get()]; + + didAddHorizontalScrollbar(widget.get()); + } else { + m_verticalScrollbarLayer.adoptNS([[WKPDFPluginScrollbarLayer alloc] initWithPDFPlugin:this]); + [m_containerLayer.get() addSublayer:m_verticalScrollbarLayer.get()]; + + didAddVerticalScrollbar(widget.get()); + } + pluginView()->frame()->view()->addChild(widget.get()); + return widget.release(); +} + +void PDFPlugin::destroyScrollbar(ScrollbarOrientation orientation) +{ + SimplePDFPlugin::destroyScrollbar(orientation); + + if (orientation == HorizontalScrollbar) { + [m_horizontalScrollbarLayer.get() removeFromSuperlayer]; + m_horizontalScrollbarLayer = 0; + } else { + [m_verticalScrollbarLayer.get() removeFromSuperlayer]; + m_verticalScrollbarLayer = 0; + } +} + +void PDFPlugin::pdfDocumentDidLoad() +{ + addArchiveResource(); + + RetainPtr<PDFDocument> document(AdoptNS, [[pdfDocumentClass() alloc] initWithData:(NSData *)data().get()]); + + setPDFDocument(document); + + [m_pdfLayerController.get() setFrameSize:size()]; + m_pdfLayerController.get().document = document.get(); + + pluginView()->setPageScaleFactor([m_pdfLayerController.get() tileScaleFactor], IntPoint()); + + calculateSizes(); + updateScrollbars(); + + controller()->invalidate(IntRect(IntPoint(), size())); + + runScriptsInPDFDocument(); +} + +void PDFPlugin::calculateSizes() +{ + // FIXME: This should come straight from PDFKit. + computePageBoxes(); + + setPDFDocumentSize(IntSize([m_pdfLayerController.get() contentSizeRespectingZoom])); +} + +void PDFPlugin::destroy() +{ + m_pdfLayerController.get().delegate = 0; + + if (webFrame()) { + if (FrameView* frameView = webFrame()->coreFrame()->view()) + frameView->removeScrollableArea(this); + } + + destroyScrollbar(HorizontalScrollbar); + destroyScrollbar(VerticalScrollbar); + + [m_scrollCornerLayer.get() removeFromSuperlayer]; + [m_contentLayer.get() removeFromSuperlayer]; +} + +void PDFPlugin::paint(GraphicsContext* graphicsContext, const IntRect& dirtyRect) +{ +} + +void PDFPlugin::paintControlForLayerInContext(CALayer *layer, CGContextRef context) +{ + GraphicsContext graphicsContext(context); + GraphicsContextStateSaver stateSaver(graphicsContext); + + graphicsContext.setIsCALayerContext(true); + + if (layer == m_scrollCornerLayer) { + IntRect scrollCornerRect = this->scrollCornerRect(); + graphicsContext.translate(-scrollCornerRect.x(), -scrollCornerRect.y()); + ScrollbarTheme::theme()->paintScrollCorner(0, &graphicsContext, scrollCornerRect); + return; + } + + Scrollbar* scrollbar = 0; + + if (layer == m_verticalScrollbarLayer) + scrollbar = verticalScrollbar(); + else if (layer == m_horizontalScrollbarLayer) + scrollbar = horizontalScrollbar(); + + if (!scrollbar) + return; + + graphicsContext.translate(-scrollbar->x(), -scrollbar->y()); + scrollbar->paint(&graphicsContext, scrollbar->frameRect()); +} + +PassRefPtr<ShareableBitmap> PDFPlugin::snapshot() +{ + if (size().isEmpty()) + return 0; + + // FIXME: Support non-1 page/deviceScaleFactor. + IntSize backingStoreSize = size(); + + RefPtr<ShareableBitmap> bitmap = ShareableBitmap::createShareable(backingStoreSize, ShareableBitmap::SupportsAlpha); + OwnPtr<GraphicsContext> context = bitmap->createGraphicsContext(); + + context->scale(FloatSize(1, -1)); + context->translate(0, -size().height()); + + [m_pdfLayerController.get() snapshotInContext:context->platformContext()]; + + return bitmap.release(); +} + +PlatformLayer* PDFPlugin::pluginLayer() +{ + return m_containerLayer.get(); +} + +void PDFPlugin::geometryDidChange(const IntSize& pluginSize, const IntRect&, const AffineTransform& pluginToRootViewTransform) +{ + if (size() == pluginSize && pluginView()->pageScaleFactor() == [m_pdfLayerController.get() tileScaleFactor]) + return; + + setSize(pluginSize); + m_rootViewToPluginTransform = pluginToRootViewTransform.inverse(); + [m_pdfLayerController.get() setFrameSize:pluginSize]; + + [CATransaction begin]; + [CATransaction setDisableActions:YES]; + CATransform3D transform = CATransform3DMakeScale(1, -1, 1); + + CGFloat magnification = pluginView()->pageScaleFactor() - [m_pdfLayerController.get() tileScaleFactor]; + + // FIXME: Instead of m_lastMousePoint, we should use the zoom origin from PluginView::setPageScaleFactor. + [m_pdfLayerController.get() magnifyWithMagnification:magnification atPoint:m_lastMousePoint immediately:YES]; + [m_contentLayer.get() setSublayerTransform:CATransform3DTranslate(transform, 0, -pluginSize.height(), 0)]; + [CATransaction commit]; + + calculateSizes(); + updateScrollbars(); +} + +static NSUInteger modifierFlagsFromWebEvent(const WebEvent& event) +{ + return (event.shiftKey() ? NSShiftKeyMask : 0) + | (event.controlKey() ? NSControlKeyMask : 0) + | (event.altKey() ? NSAlternateKeyMask : 0) + | (event.metaKey() ? NSCommandKeyMask : 0); +} + +static NSEventType eventTypeFromWebEvent(const WebEvent& event, bool mouseButtonIsDown) +{ + switch (event.type()) { + case WebEvent::KeyDown: + return NSKeyDown; + case WebEvent::KeyUp: + return NSKeyUp; + + case WebEvent::MouseDown: + switch (static_cast<const WebMouseEvent&>(event).button()) { + case WebMouseEvent::LeftButton: + return NSLeftMouseDown; + case WebMouseEvent::RightButton: + return NSRightMouseDown; + default: + return 0; + } + break; + case WebEvent::MouseUp: + switch (static_cast<const WebMouseEvent&>(event).button()) { + case WebMouseEvent::LeftButton: + return NSLeftMouseUp; + case WebMouseEvent::RightButton: + return NSRightMouseUp; + default: + return 0; + } + break; + case WebEvent::MouseMove: + if (mouseButtonIsDown) { + switch (static_cast<const WebMouseEvent&>(event).button()) { + case WebMouseEvent::LeftButton: + return NSLeftMouseDragged; + case WebMouseEvent::RightButton: + return NSRightMouseDragged; + default: + return 0; + } + } else + return NSMouseMoved; + break; + + default: + return 0; + } +} + +bool PDFPlugin::handleMouseEvent(const WebMouseEvent& event) +{ + static bool mouseButtonIsDown; + + IntPoint mousePosition = event.position(); + + // FIXME: Forward mouse events to the appropriate scrollbar. + if (IntRect(m_verticalScrollbarLayer.get().frame).contains(mousePosition) + || IntRect(m_horizontalScrollbarLayer.get().frame).contains(mousePosition) + || IntRect(m_scrollCornerLayer.get().frame).contains(mousePosition)) + return false; + + IntPoint positionInPDFView(mousePosition); + positionInPDFView = m_rootViewToPluginTransform.mapPoint(positionInPDFView); + positionInPDFView.setY(size().height() - positionInPDFView.y()); + + m_lastMousePoint = positionInPDFView; + + NSEventType eventType = eventTypeFromWebEvent(event, mouseButtonIsDown); + + if (!eventType) + return false; + + NSUInteger modifierFlags = modifierFlagsFromWebEvent(event); + + NSEvent *fakeEvent = [NSEvent mouseEventWithType:eventType location:positionInPDFView modifierFlags:modifierFlags timestamp:0 windowNumber:0 context:nil eventNumber:0 clickCount:event.clickCount() pressure:0]; + + switch (event.type()) { + case WebEvent::MouseMove: + if (mouseButtonIsDown) + [m_pdfLayerController.get() mouseDragged:fakeEvent]; + else + [m_pdfLayerController.get() mouseMoved:fakeEvent]; + mouseMovedInContentArea(); + return true; + case WebEvent::MouseDown: { + mouseButtonIsDown = true; + [m_pdfLayerController.get() mouseDown:fakeEvent]; + return true; + } + case WebEvent::MouseUp: { + [m_pdfLayerController.get() mouseUp:fakeEvent]; + mouseButtonIsDown = false; + PlatformMouseEvent platformEvent = platform(event); + return true; + } + default: + break; + } + + return false; +} + +bool PDFPlugin::handleKeyboardEvent(const WebKeyboardEvent& event) +{ + NSEventType eventType = eventTypeFromWebEvent(event, false); + NSUInteger modifierFlags = modifierFlagsFromWebEvent(event); + + NSEvent *fakeEvent = [NSEvent keyEventWithType:eventType location:NSZeroPoint modifierFlags:modifierFlags timestamp:0 windowNumber:0 context:0 characters:event.text() charactersIgnoringModifiers:event.unmodifiedText() isARepeat:event.isAutoRepeat() keyCode:event.nativeVirtualKeyCode()]; + + switch (event.type()) { + case WebEvent::KeyDown: + return [m_pdfLayerController.get() keyDown:fakeEvent]; + default: + return false; + } + + return false; +} + +bool PDFPlugin::handleEditingCommand(const String& commandName, const String& argument) +{ + if (commandName == "copy") + [m_pdfLayerController.get() copySelection]; + else if (commandName == "selectAll") + [m_pdfLayerController.get() selectAll]; + + return true; +} + +bool PDFPlugin::isEditingCommandEnabled(const String& commandName) +{ + if (commandName == "copy") + return [m_pdfLayerController.get() currentSelection]; + + if (commandName == "selectAll") + return true; + + return false; +} + +void PDFPlugin::setScrollOffset(const IntPoint& offset) +{ + SimplePDFPlugin::setScrollOffset(offset); + [m_pdfLayerController.get() setScrollPosition:offset]; +} + +void PDFPlugin::invalidateScrollbarRect(Scrollbar* scrollbar, const IntRect& rect) +{ + if (scrollbar == horizontalScrollbar()) + [m_horizontalScrollbarLayer.get() setNeedsDisplay]; + else if (scrollbar == verticalScrollbar()) + [m_verticalScrollbarLayer.get() setNeedsDisplay]; +} + +void PDFPlugin::invalidateScrollCornerRect(const IntRect& rect) +{ + [m_scrollCornerLayer.get() setNeedsDisplay]; +} + +} // namespace WebKit + +#endif // ENABLE(PDFKIT_PLUGIN) diff --git a/Source/WebKit2/WebProcess/Plugins/PDF/BuiltInPDFView.h b/Source/WebKit2/WebProcess/Plugins/PDF/SimplePDFPlugin.h index 1c8829d2b..6b8a93e04 100644 --- a/Source/WebKit2/WebProcess/Plugins/PDF/BuiltInPDFView.h +++ b/Source/WebKit2/WebProcess/Plugins/PDF/SimplePDFPlugin.h @@ -23,8 +23,8 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ -#ifndef BuiltInPDFView_h -#define BuiltInPDFView_h +#ifndef SimplePDFPlugin_h +#define SimplePDFPlugin_h #include "Plugin.h" #include <WebCore/ScrollableArea.h> @@ -35,7 +35,7 @@ typedef struct OpaqueJSValue* JSObjectRef; typedef const struct OpaqueJSValue* JSValueRef; namespace WebCore { - struct PluginInfo; +struct PluginInfo; } namespace WebKit { @@ -43,32 +43,48 @@ namespace WebKit { class PluginView; class WebFrame; -class BuiltInPDFView : public Plugin, private WebCore::ScrollableArea { +class SimplePDFPlugin : public Plugin, protected WebCore::ScrollableArea { public: - static PassRefPtr<BuiltInPDFView> create(WebFrame*); - ~BuiltInPDFView(); + static PassRefPtr<SimplePDFPlugin> create(WebFrame*); + ~SimplePDFPlugin(); static WebCore::PluginInfo pluginInfo(); // In-process PDFViews don't support asynchronous initialization. virtual bool isBeingAsynchronouslyInitialized() const { return false; } -private: - explicit BuiltInPDFView(WebFrame*); +protected: + explicit SimplePDFPlugin(WebFrame*); + + WebFrame* webFrame() const { return m_frame; } + + WebCore::IntSize size() const { return m_size; } + void setSize(WebCore::IntSize size) { m_size = size; } + + RetainPtr<PDFDocument> pdfDocument() const { return m_pdfDocument; } + void setPDFDocument(RetainPtr<PDFDocument> document) { m_pdfDocument = document; } + + WebCore::IntSize pdfDocumentSize() const { return m_pdfDocumentSize; } + void setPDFDocumentSize(WebCore::IntSize size) { m_pdfDocumentSize = size; } + + RetainPtr<CFMutableDataRef> data() const { return m_data; } // Regular plug-ins don't need access to view, but we add scrollbars to embedding FrameView for proper event handling. PluginView* pluginView(); const PluginView* pluginView() const; - void updateScrollbars(); - PassRefPtr<WebCore::Scrollbar> createScrollbar(WebCore::ScrollbarOrientation); - void destroyScrollbar(WebCore::ScrollbarOrientation); - void addArchiveResource(); - void pdfDocumentDidLoad(); - void calculateSizes(); + virtual void updateScrollbars(); + virtual PassRefPtr<WebCore::Scrollbar> createScrollbar(WebCore::ScrollbarOrientation); + virtual void destroyScrollbar(WebCore::ScrollbarOrientation); + virtual void addArchiveResource(); + virtual void pdfDocumentDidLoad(); + virtual void computePageBoxes(); + virtual void calculateSizes(); void paintBackground(WebCore::GraphicsContext*, const WebCore::IntRect& dirtyRect); void paintContent(WebCore::GraphicsContext*, const WebCore::IntRect& dirtyRect); void paintControls(WebCore::GraphicsContext*, const WebCore::IntRect& dirtyRect); + + void runScriptsInPDFDocument(); // Plug-in methods virtual bool initialize(const Parameters&); @@ -143,18 +159,27 @@ private: virtual bool scrollbarsCanBeActive() const OVERRIDE; virtual bool shouldSuspendScrollAnimations() const OVERRIDE { return false; } // If we return true, ScrollAnimatorMac will keep cycling a timer forever, waiting for a good time to animate. virtual void scrollbarStyleChanged(int newStyle, bool forceUpdate) OVERRIDE; - // FIXME: Implement the other conversion functions; this one is enough to get scrollbar hit testing working. + + virtual WebCore::IntRect convertFromScrollbarToContainingView(const WebCore::Scrollbar*, const WebCore::IntRect& scrollbarRect) const OVERRIDE; + virtual WebCore::IntRect convertFromContainingViewToScrollbar(const WebCore::Scrollbar*, const WebCore::IntRect& parentRect) const OVERRIDE; + virtual WebCore::IntPoint convertFromScrollbarToContainingView(const WebCore::Scrollbar*, const WebCore::IntPoint& scrollbarPoint) const OVERRIDE; virtual WebCore::IntPoint convertFromContainingViewToScrollbar(const WebCore::Scrollbar*, const WebCore::IntPoint& parentPoint) const OVERRIDE; + + virtual bool isEditingCommandEnabled(const String&) OVERRIDE; + virtual bool handleEditingCommand(const String&, const String&) OVERRIDE; + virtual bool handlesPageScaleFactor() OVERRIDE; + +private: JSObjectRef makeJSPDFDoc(JSContextRef); static JSValueRef jsPDFDocPrint(JSContextRef, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception); - WebCore::IntSize m_pluginSize; + WebCore::IntSize m_size; WebCore::KURL m_sourceURL; String m_suggestedFilename; - RetainPtr<CFMutableDataRef> m_dataBuffer; + RetainPtr<CFMutableDataRef> m_data; RetainPtr<PDFDocument> m_pdfDocument; Vector<WebCore::IntRect> m_pageBoxes; @@ -170,4 +195,4 @@ private: } // namespace WebKit -#endif // BuiltInPDFView_h +#endif // SimplePDFPlugin_h diff --git a/Source/WebKit2/WebProcess/Plugins/PDF/BuiltInPDFView.mm b/Source/WebKit2/WebProcess/Plugins/PDF/SimplePDFPlugin.mm index 8dcaea96c..98a73b2b1 100644 --- a/Source/WebKit2/WebProcess/Plugins/PDF/BuiltInPDFView.mm +++ b/Source/WebKit2/WebProcess/Plugins/PDF/SimplePDFPlugin.mm @@ -24,7 +24,7 @@ */ #import "config.h" -#import "BuiltInPDFView.h" +#import "SimplePDFPlugin.h" #import "PDFKitImports.h" #import "PluginView.h" @@ -156,21 +156,21 @@ const int shadowOffsetX = 0; const int shadowOffsetY = -2; const int shadowSize = 7; -PassRefPtr<BuiltInPDFView> BuiltInPDFView::create(WebFrame* frame) +PassRefPtr<SimplePDFPlugin> SimplePDFPlugin::create(WebFrame* frame) { - return adoptRef(new BuiltInPDFView(frame)); + return adoptRef(new SimplePDFPlugin(frame)); } -BuiltInPDFView::BuiltInPDFView(WebFrame* frame) +SimplePDFPlugin::SimplePDFPlugin(WebFrame* frame) : m_frame(frame) { } -BuiltInPDFView::~BuiltInPDFView() +SimplePDFPlugin::~SimplePDFPlugin() { } -PluginInfo BuiltInPDFView::pluginInfo() +PluginInfo SimplePDFPlugin::pluginInfo() { PluginInfo info; info.name = builtInPDFPluginName(); @@ -184,30 +184,30 @@ PluginInfo BuiltInPDFView::pluginInfo() return info; } -PluginView* BuiltInPDFView::pluginView() +PluginView* SimplePDFPlugin::pluginView() { return static_cast<PluginView*>(controller()); } -const PluginView* BuiltInPDFView::pluginView() const +const PluginView* SimplePDFPlugin::pluginView() const { return static_cast<const PluginView*>(controller()); } -void BuiltInPDFView::updateScrollbars() +void SimplePDFPlugin::updateScrollbars() { bool hadScrollbars = m_horizontalScrollbar || m_verticalScrollbar; if (m_horizontalScrollbar) { - if (m_pluginSize.width() >= m_pdfDocumentSize.width()) + if (m_size.width() >= m_pdfDocumentSize.width()) destroyScrollbar(HorizontalScrollbar); - } else if (m_pluginSize.width() < m_pdfDocumentSize.width()) + } else if (m_size.width() < m_pdfDocumentSize.width()) m_horizontalScrollbar = createScrollbar(HorizontalScrollbar); if (m_verticalScrollbar) { - if (m_pluginSize.height() >= m_pdfDocumentSize.height()) + if (m_size.height() >= m_pdfDocumentSize.height()) destroyScrollbar(VerticalScrollbar); - } else if (m_pluginSize.height() < m_pdfDocumentSize.height()) + } else if (m_size.height() < m_pdfDocumentSize.height()) m_verticalScrollbar = createScrollbar(VerticalScrollbar); int horizontalScrollbarHeight = (m_horizontalScrollbar && !m_horizontalScrollbar->isOverlayScrollbar()) ? m_horizontalScrollbar->height() : 0; @@ -217,16 +217,16 @@ void BuiltInPDFView::updateScrollbars() if (m_horizontalScrollbar) { m_horizontalScrollbar->setSteps(Scrollbar::pixelsPerLineStep(), pageStep); - m_horizontalScrollbar->setProportion(m_pluginSize.width() - verticalScrollbarWidth, m_pdfDocumentSize.width()); - IntRect scrollbarRect(pluginView()->x(), pluginView()->y() + m_pluginSize.height() - m_horizontalScrollbar->height(), m_pluginSize.width(), m_horizontalScrollbar->height()); + m_horizontalScrollbar->setProportion(m_size.width() - verticalScrollbarWidth, m_pdfDocumentSize.width()); + IntRect scrollbarRect(pluginView()->x(), pluginView()->y() + m_size.height() - m_horizontalScrollbar->height(), m_size.width(), m_horizontalScrollbar->height()); if (m_verticalScrollbar) scrollbarRect.contract(m_verticalScrollbar->width(), 0); m_horizontalScrollbar->setFrameRect(scrollbarRect); } if (m_verticalScrollbar) { m_verticalScrollbar->setSteps(Scrollbar::pixelsPerLineStep(), pageStep); - m_verticalScrollbar->setProportion(m_pluginSize.height() - horizontalScrollbarHeight, m_pdfDocumentSize.height()); - IntRect scrollbarRect(IntRect(pluginView()->x() + m_pluginSize.width() - m_verticalScrollbar->width(), pluginView()->y(), m_verticalScrollbar->width(), m_pluginSize.height())); + m_verticalScrollbar->setProportion(m_size.height() - horizontalScrollbarHeight, m_pdfDocumentSize.height()); + IntRect scrollbarRect(IntRect(pluginView()->x() + m_size.width() - m_verticalScrollbar->width(), pluginView()->y(), m_verticalScrollbar->width(), m_size.height())); if (m_horizontalScrollbar) scrollbarRect.contract(0, m_horizontalScrollbar->height()); m_verticalScrollbar->setFrameRect(scrollbarRect); @@ -247,7 +247,7 @@ void BuiltInPDFView::updateScrollbars() } } -PassRefPtr<Scrollbar> BuiltInPDFView::createScrollbar(ScrollbarOrientation orientation) +PassRefPtr<Scrollbar> SimplePDFPlugin::createScrollbar(ScrollbarOrientation orientation) { RefPtr<Scrollbar> widget = Scrollbar::createNativeScrollbar(this, orientation, RegularScrollbar); if (orientation == HorizontalScrollbar) @@ -258,7 +258,7 @@ PassRefPtr<Scrollbar> BuiltInPDFView::createScrollbar(ScrollbarOrientation orien return widget.release(); } -void BuiltInPDFView::destroyScrollbar(ScrollbarOrientation orientation) +void SimplePDFPlugin::destroyScrollbar(ScrollbarOrientation orientation) { RefPtr<Scrollbar>& scrollbar = orientation == HorizontalScrollbar ? m_horizontalScrollbar : m_verticalScrollbar; if (!scrollbar) @@ -274,7 +274,7 @@ void BuiltInPDFView::destroyScrollbar(ScrollbarOrientation orientation) scrollbar = 0; } -void BuiltInPDFView::addArchiveResource() +void SimplePDFPlugin::addArchiveResource() { // FIXME: It's a hack to force add a resource to DocumentLoader. PDF documents should just be fetched as CachedResources. @@ -284,21 +284,81 @@ void BuiltInPDFView::addArchiveResource() synthesizedResponse.setURL(m_sourceURL); // Needs to match the HitTestResult::absolutePDFURL. synthesizedResponse.setMimeType("application/pdf"); - RefPtr<ArchiveResource> resource = ArchiveResource::create(SharedBuffer::wrapCFData(m_dataBuffer.get()), m_sourceURL, "application/pdf", String(), String(), synthesizedResponse); + RefPtr<ArchiveResource> resource = ArchiveResource::create(SharedBuffer::wrapCFData(m_data.get()), m_sourceURL, "application/pdf", String(), String(), synthesizedResponse); pluginView()->frame()->document()->loader()->addArchiveResource(resource.release()); } -void BuiltInPDFView::pdfDocumentDidLoad() +static void jsPDFDocInitialize(JSContextRef ctx, JSObjectRef object) +{ + SimplePDFPlugin* pdfView = static_cast<SimplePDFPlugin*>(JSObjectGetPrivate(object)); + pdfView->ref(); +} + +static void jsPDFDocFinalize(JSObjectRef object) +{ + SimplePDFPlugin* pdfView = static_cast<SimplePDFPlugin*>(JSObjectGetPrivate(object)); + pdfView->deref(); +} + +JSValueRef SimplePDFPlugin::jsPDFDocPrint(JSContextRef ctx, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) +{ + SimplePDFPlugin* pdfView = static_cast<SimplePDFPlugin*>(JSObjectGetPrivate(thisObject)); + + WebFrame* frame = pdfView->m_frame; + if (!frame) + return JSValueMakeUndefined(ctx); + + Frame* coreFrame = frame->coreFrame(); + if (!coreFrame) + return JSValueMakeUndefined(ctx); + + Page* page = coreFrame->page(); + if (!page) + return JSValueMakeUndefined(ctx); + + page->chrome()->print(coreFrame); + + return JSValueMakeUndefined(ctx); +} + +JSObjectRef SimplePDFPlugin::makeJSPDFDoc(JSContextRef ctx) +{ + static JSStaticFunction jsPDFDocStaticFunctions[] = { + { "print", jsPDFDocPrint, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, + { 0, 0, 0 }, + }; + + static JSClassDefinition jsPDFDocClassDefinition = { + 0, + kJSClassAttributeNone, + "Doc", + 0, + 0, + jsPDFDocStaticFunctions, + jsPDFDocInitialize, jsPDFDocFinalize, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }; + + static JSClassRef jsPDFDocClass = JSClassCreate(&jsPDFDocClassDefinition); + + return JSObjectMake(ctx, jsPDFDocClass, this); +} + +void SimplePDFPlugin::pdfDocumentDidLoad() { addArchiveResource(); - m_pdfDocument.adoptNS([[pdfDocumentClass() alloc] initWithData:(NSData *)m_dataBuffer.get()]); + m_pdfDocument.adoptNS([[pdfDocumentClass() alloc] initWithData:(NSData *)m_data.get()]); calculateSizes(); updateScrollbars(); - controller()->invalidate(IntRect(0, 0, m_pluginSize.width(), m_pluginSize.height())); + controller()->invalidate(IntRect(0, 0, m_size.width(), m_size.height())); + runScriptsInPDFDocument(); +} + +void SimplePDFPlugin::runScriptsInPDFDocument() +{ Vector<RetainPtr<CFStringRef> > scripts; getAllScriptsInPDFDocument([m_pdfDocument.get() documentRef], scripts); @@ -317,8 +377,22 @@ void BuiltInPDFView::pdfDocumentDidLoad() JSGlobalContextRelease(ctx); } + +void SimplePDFPlugin::computePageBoxes() +{ + size_t pageCount = CGPDFDocumentGetNumberOfPages([m_pdfDocument.get() documentRef]); + for (size_t i = 0; i < pageCount; ++i) { + CGPDFPageRef pdfPage = CGPDFDocumentGetPage([m_pdfDocument.get() documentRef], i + 1); + ASSERT(pdfPage); + + CGRect box = CGPDFPageGetBoxRect(pdfPage, kCGPDFCropBox); + if (CGRectIsEmpty(box)) + box = CGPDFPageGetBoxRect(pdfPage, kCGPDFMediaBox); + m_pageBoxes.append(IntRect(box)); + } +} -void BuiltInPDFView::calculateSizes() +void SimplePDFPlugin::calculateSizes() { size_t pageCount = CGPDFDocumentGetNumberOfPages([m_pdfDocument.get() documentRef]); for (size_t i = 0; i < pageCount; ++i) { @@ -335,7 +409,7 @@ void BuiltInPDFView::calculateSizes() m_pdfDocumentSize.expand(0, gutterHeight * (m_pageBoxes.size() - 1)); } -bool BuiltInPDFView::initialize(const Parameters& parameters) +bool SimplePDFPlugin::initialize(const Parameters& parameters) { // Load the src URL if needed. m_sourceURL = parameters.url; @@ -346,7 +420,7 @@ bool BuiltInPDFView::initialize(const Parameters& parameters) return true; } -void BuiltInPDFView::destroy() +void SimplePDFPlugin::destroy() { if (m_frame) { if (FrameView* frameView = m_frame->coreFrame()->view()) @@ -357,7 +431,7 @@ void BuiltInPDFView::destroy() destroyScrollbar(VerticalScrollbar); } -void BuiltInPDFView::paint(GraphicsContext* graphicsContext, const IntRect& dirtyRect) +void SimplePDFPlugin::paint(GraphicsContext* graphicsContext, const IntRect& dirtyRect) { contentAreaWillPaint(); @@ -370,14 +444,14 @@ void BuiltInPDFView::paint(GraphicsContext* graphicsContext, const IntRect& dirt paintControls(graphicsContext, dirtyRect); } -void BuiltInPDFView::paintBackground(GraphicsContext* graphicsContext, const IntRect& dirtyRect) +void SimplePDFPlugin::paintBackground(GraphicsContext* graphicsContext, const IntRect& dirtyRect) { GraphicsContextStateSaver stateSaver(*graphicsContext); graphicsContext->setFillColor(Color::gray, ColorSpaceDeviceRGB); graphicsContext->fillRect(dirtyRect); } -void BuiltInPDFView::paintContent(GraphicsContext* graphicsContext, const IntRect& dirtyRect) +void SimplePDFPlugin::paintContent(GraphicsContext* graphicsContext, const IntRect& dirtyRect) { GraphicsContextStateSaver stateSaver(*graphicsContext); CGContextRef context = graphicsContext->platformContext(); @@ -397,8 +471,8 @@ void BuiltInPDFView::paintContent(GraphicsContext* graphicsContext, const IntRec int pageTop = 0; for (size_t i = 0; i < m_pageBoxes.size(); ++i) { IntRect pageBox = m_pageBoxes[i]; - float extraOffsetForCenteringX = max(roundf((m_pluginSize.width() - pageBox.width()) / 2.0f), 0.0f); - float extraOffsetForCenteringY = (m_pageBoxes.size() == 1) ? max(roundf((m_pluginSize.height() - pageBox.height() + shadowOffsetY) / 2.0f), 0.0f) : 0; + float extraOffsetForCenteringX = max(roundf((m_size.width() - pageBox.width()) / 2.0f), 0.0f); + float extraOffsetForCenteringY = (m_pageBoxes.size() == 1) ? max(roundf((m_size.height() - pageBox.height() + shadowOffsetY) / 2.0f), 0.0f) : 0; if (pageTop > contentRect.maxY()) break; @@ -422,7 +496,7 @@ void BuiltInPDFView::paintContent(GraphicsContext* graphicsContext, const IntRec } } -void BuiltInPDFView::paintControls(GraphicsContext* graphicsContext, const IntRect& dirtyRect) +void SimplePDFPlugin::paintControls(GraphicsContext* graphicsContext, const IntRect& dirtyRect) { { GraphicsContextStateSaver stateSaver(*graphicsContext); @@ -441,7 +515,7 @@ void BuiltInPDFView::paintControls(GraphicsContext* graphicsContext, const IntRe ScrollbarTheme::theme()->paintScrollCorner(0, graphicsContext, dirtyCornerRect); } -void BuiltInPDFView::updateControlTints(GraphicsContext* graphicsContext) +void SimplePDFPlugin::updateControlTints(GraphicsContext* graphicsContext) { ASSERT(graphicsContext->updatingControlTints()); @@ -452,116 +526,116 @@ void BuiltInPDFView::updateControlTints(GraphicsContext* graphicsContext) invalidateScrollCorner(scrollCornerRect()); } -PassRefPtr<ShareableBitmap> BuiltInPDFView::snapshot() +PassRefPtr<ShareableBitmap> SimplePDFPlugin::snapshot() { return 0; } #if PLATFORM(MAC) -PlatformLayer* BuiltInPDFView::pluginLayer() +PlatformLayer* SimplePDFPlugin::pluginLayer() { return 0; } #endif -bool BuiltInPDFView::isTransparent() +bool SimplePDFPlugin::isTransparent() { // This should never be called from the web process. ASSERT_NOT_REACHED(); return false; } -bool BuiltInPDFView::wantsWheelEvents() +bool SimplePDFPlugin::wantsWheelEvents() { return true; } -void BuiltInPDFView::geometryDidChange(const IntSize& pluginSize, const IntRect& clipRect, const AffineTransform& pluginToRootViewTransform) +void SimplePDFPlugin::geometryDidChange(const IntSize& size, const IntRect& clipRect, const AffineTransform& pluginToRootViewTransform) { - if (m_pluginSize == pluginSize) { + if (m_size == size) { // Nothing to do. return; } - m_pluginSize = pluginSize; + m_size = size; updateScrollbars(); } -void BuiltInPDFView::visibilityDidChange() +void SimplePDFPlugin::visibilityDidChange() { } -void BuiltInPDFView::frameDidFinishLoading(uint64_t) +void SimplePDFPlugin::frameDidFinishLoading(uint64_t) { ASSERT_NOT_REACHED(); } -void BuiltInPDFView::frameDidFail(uint64_t, bool) +void SimplePDFPlugin::frameDidFail(uint64_t, bool) { ASSERT_NOT_REACHED(); } -void BuiltInPDFView::didEvaluateJavaScript(uint64_t, const WTF::String&) +void SimplePDFPlugin::didEvaluateJavaScript(uint64_t, const WTF::String&) { ASSERT_NOT_REACHED(); } -void BuiltInPDFView::streamDidReceiveResponse(uint64_t streamID, const KURL&, uint32_t, uint32_t, const String&, const String&, const String& suggestedFilename) +void SimplePDFPlugin::streamDidReceiveResponse(uint64_t streamID, const KURL&, uint32_t, uint32_t, const String&, const String&, const String& suggestedFilename) { ASSERT_UNUSED(streamID, streamID == pdfDocumentRequestID); m_suggestedFilename = suggestedFilename; } -void BuiltInPDFView::streamDidReceiveData(uint64_t streamID, const char* bytes, int length) +void SimplePDFPlugin::streamDidReceiveData(uint64_t streamID, const char* bytes, int length) { ASSERT_UNUSED(streamID, streamID == pdfDocumentRequestID); - if (!m_dataBuffer) - m_dataBuffer.adoptCF(CFDataCreateMutable(0, 0)); + if (!m_data) + m_data.adoptCF(CFDataCreateMutable(0, 0)); - CFDataAppendBytes(m_dataBuffer.get(), reinterpret_cast<const UInt8*>(bytes), length); + CFDataAppendBytes(m_data.get(), reinterpret_cast<const UInt8*>(bytes), length); } -void BuiltInPDFView::streamDidFinishLoading(uint64_t streamID) +void SimplePDFPlugin::streamDidFinishLoading(uint64_t streamID) { ASSERT_UNUSED(streamID, streamID == pdfDocumentRequestID); pdfDocumentDidLoad(); } -void BuiltInPDFView::streamDidFail(uint64_t streamID, bool wasCancelled) +void SimplePDFPlugin::streamDidFail(uint64_t streamID, bool wasCancelled) { ASSERT_UNUSED(streamID, streamID == pdfDocumentRequestID); - m_dataBuffer.clear(); + m_data.clear(); } -void BuiltInPDFView::manualStreamDidReceiveResponse(const KURL& responseURL, uint32_t streamLength, uint32_t lastModifiedTime, const String& mimeType, const String& headers, const String& suggestedFilename) +void SimplePDFPlugin::manualStreamDidReceiveResponse(const KURL& responseURL, uint32_t streamLength, uint32_t lastModifiedTime, const String& mimeType, const String& headers, const String& suggestedFilename) { m_suggestedFilename = suggestedFilename; } -void BuiltInPDFView::manualStreamDidReceiveData(const char* bytes, int length) +void SimplePDFPlugin::manualStreamDidReceiveData(const char* bytes, int length) { - if (!m_dataBuffer) - m_dataBuffer.adoptCF(CFDataCreateMutable(0, 0)); + if (!m_data) + m_data.adoptCF(CFDataCreateMutable(0, 0)); - CFDataAppendBytes(m_dataBuffer.get(), reinterpret_cast<const UInt8*>(bytes), length); + CFDataAppendBytes(m_data.get(), reinterpret_cast<const UInt8*>(bytes), length); } -void BuiltInPDFView::manualStreamDidFinishLoading() +void SimplePDFPlugin::manualStreamDidFinishLoading() { pdfDocumentDidLoad(); } -void BuiltInPDFView::manualStreamDidFail(bool) +void SimplePDFPlugin::manualStreamDidFail(bool) { - m_dataBuffer.clear(); + m_data.clear(); } -bool BuiltInPDFView::handleMouseEvent(const WebMouseEvent& event) +bool SimplePDFPlugin::handleMouseEvent(const WebMouseEvent& event) { switch (event.type()) { case WebEvent::MouseMove: @@ -589,106 +663,106 @@ bool BuiltInPDFView::handleMouseEvent(const WebMouseEvent& event) return false; } -bool BuiltInPDFView::handleWheelEvent(const WebWheelEvent& event) +bool SimplePDFPlugin::handleWheelEvent(const WebWheelEvent& event) { PlatformWheelEvent platformEvent = platform(event); return ScrollableArea::handleWheelEvent(platformEvent); } -bool BuiltInPDFView::handleMouseEnterEvent(const WebMouseEvent&) +bool SimplePDFPlugin::handleMouseEnterEvent(const WebMouseEvent&) { mouseEnteredContentArea(); return false; } -bool BuiltInPDFView::handleMouseLeaveEvent(const WebMouseEvent&) +bool SimplePDFPlugin::handleMouseLeaveEvent(const WebMouseEvent&) { mouseExitedContentArea(); return false; } -bool BuiltInPDFView::handleContextMenuEvent(const WebMouseEvent&) +bool SimplePDFPlugin::handleContextMenuEvent(const WebMouseEvent&) { // Use default WebKit context menu. return false; } -bool BuiltInPDFView::handleKeyboardEvent(const WebKeyboardEvent&) +bool SimplePDFPlugin::handleKeyboardEvent(const WebKeyboardEvent&) { return false; } -void BuiltInPDFView::setFocus(bool hasFocus) +void SimplePDFPlugin::setFocus(bool hasFocus) { } -NPObject* BuiltInPDFView::pluginScriptableNPObject() +NPObject* SimplePDFPlugin::pluginScriptableNPObject() { return 0; } #if PLATFORM(MAC) -void BuiltInPDFView::windowFocusChanged(bool) +void SimplePDFPlugin::windowFocusChanged(bool) { } -void BuiltInPDFView::windowAndViewFramesChanged(const WebCore::IntRect& windowFrameInScreenCoordinates, const WebCore::IntRect& viewFrameInWindowCoordinates) +void SimplePDFPlugin::windowAndViewFramesChanged(const WebCore::IntRect& windowFrameInScreenCoordinates, const WebCore::IntRect& viewFrameInWindowCoordinates) { } -void BuiltInPDFView::windowVisibilityChanged(bool) +void SimplePDFPlugin::windowVisibilityChanged(bool) { } -void BuiltInPDFView::contentsScaleFactorChanged(float) +void SimplePDFPlugin::contentsScaleFactorChanged(float) { } -uint64_t BuiltInPDFView::pluginComplexTextInputIdentifier() const +uint64_t SimplePDFPlugin::pluginComplexTextInputIdentifier() const { return 0; } -void BuiltInPDFView::sendComplexTextInput(const String&) +void SimplePDFPlugin::sendComplexTextInput(const String&) { } -void BuiltInPDFView::setLayerHostingMode(LayerHostingMode) +void SimplePDFPlugin::setLayerHostingMode(LayerHostingMode) { } #endif -void BuiltInPDFView::storageBlockingStateChanged(bool) +void SimplePDFPlugin::storageBlockingStateChanged(bool) { } -void BuiltInPDFView::privateBrowsingStateChanged(bool) +void SimplePDFPlugin::privateBrowsingStateChanged(bool) { } -bool BuiltInPDFView::getFormValue(String&) +bool SimplePDFPlugin::getFormValue(String&) { return false; } -bool BuiltInPDFView::handleScroll(ScrollDirection direction, ScrollGranularity granularity) +bool SimplePDFPlugin::handleScroll(ScrollDirection direction, ScrollGranularity granularity) { return scroll(direction, granularity); } -Scrollbar* BuiltInPDFView::horizontalScrollbar() +Scrollbar* SimplePDFPlugin::horizontalScrollbar() { return m_horizontalScrollbar.get(); } -Scrollbar* BuiltInPDFView::verticalScrollbar() +Scrollbar* SimplePDFPlugin::verticalScrollbar() { return m_verticalScrollbar.get(); } -IntRect BuiltInPDFView::scrollCornerRect() const +IntRect SimplePDFPlugin::scrollCornerRect() const { if (!m_horizontalScrollbar || !m_verticalScrollbar) return IntRect(); @@ -699,31 +773,31 @@ IntRect BuiltInPDFView::scrollCornerRect() const return IntRect(pluginView()->width() - m_verticalScrollbar->width(), pluginView()->height() - m_horizontalScrollbar->height(), m_verticalScrollbar->width(), m_horizontalScrollbar->height()); } -ScrollableArea* BuiltInPDFView::enclosingScrollableArea() const +ScrollableArea* SimplePDFPlugin::enclosingScrollableArea() const { // FIXME: Walk up the frame tree and look for a scrollable parent frame or RenderLayer. return 0; } -IntRect BuiltInPDFView::scrollableAreaBoundingBox() const +IntRect SimplePDFPlugin::scrollableAreaBoundingBox() const { return pluginView()->frameRect(); } -void BuiltInPDFView::setScrollOffset(const IntPoint& offset) +void SimplePDFPlugin::setScrollOffset(const IntPoint& offset) { m_scrollOffset = IntSize(offset.x(), offset.y()); // FIXME: It would be better for performance to blit parts that remain visible. - controller()->invalidate(IntRect(0, 0, m_pluginSize.width(), m_pluginSize.height())); + controller()->invalidate(IntRect(0, 0, m_size.width(), m_size.height())); } -int BuiltInPDFView::scrollSize(ScrollbarOrientation orientation) const +int SimplePDFPlugin::scrollSize(ScrollbarOrientation orientation) const { Scrollbar* scrollbar = ((orientation == HorizontalScrollbar) ? m_horizontalScrollbar : m_verticalScrollbar).get(); return scrollbar ? (scrollbar->totalSize() - scrollbar->visibleSize()) : 0; } -bool BuiltInPDFView::isActive() const +bool SimplePDFPlugin::isActive() const { if (Frame* coreFrame = m_frame->coreFrame()) { if (Page* page = coreFrame->page()) @@ -733,7 +807,7 @@ bool BuiltInPDFView::isActive() const return false; } -void BuiltInPDFView::invalidateScrollbarRect(Scrollbar* scrollbar, const IntRect& rect) +void SimplePDFPlugin::invalidateScrollbarRect(Scrollbar* scrollbar, const IntRect& rect) { IntRect dirtyRect = rect; dirtyRect.moveBy(scrollbar->location()); @@ -741,17 +815,17 @@ void BuiltInPDFView::invalidateScrollbarRect(Scrollbar* scrollbar, const IntRect controller()->invalidate(dirtyRect); } -void BuiltInPDFView::invalidateScrollCornerRect(const IntRect& rect) +void SimplePDFPlugin::invalidateScrollCornerRect(const IntRect& rect) { controller()->invalidate(rect); } -bool BuiltInPDFView::isScrollCornerVisible() const +bool SimplePDFPlugin::isScrollCornerVisible() const { return false; } -int BuiltInPDFView::scrollPosition(Scrollbar* scrollbar) const +int SimplePDFPlugin::scrollPosition(Scrollbar* scrollbar) const { if (scrollbar->orientation() == HorizontalScrollbar) return m_scrollOffset.width(); @@ -761,47 +835,47 @@ int BuiltInPDFView::scrollPosition(Scrollbar* scrollbar) const return 0; } -IntPoint BuiltInPDFView::scrollPosition() const +IntPoint SimplePDFPlugin::scrollPosition() const { return IntPoint(m_scrollOffset.width(), m_scrollOffset.height()); } -IntPoint BuiltInPDFView::minimumScrollPosition() const +IntPoint SimplePDFPlugin::minimumScrollPosition() const { return IntPoint(0, 0); } -IntPoint BuiltInPDFView::maximumScrollPosition() const +IntPoint SimplePDFPlugin::maximumScrollPosition() const { int horizontalScrollbarHeight = (m_horizontalScrollbar && !m_horizontalScrollbar->isOverlayScrollbar()) ? m_horizontalScrollbar->height() : 0; int verticalScrollbarWidth = (m_verticalScrollbar && !m_verticalScrollbar->isOverlayScrollbar()) ? m_verticalScrollbar->width() : 0; - IntPoint maximumOffset(m_pdfDocumentSize.width() - m_pluginSize.width() + verticalScrollbarWidth, m_pdfDocumentSize.height() - m_pluginSize.height() + horizontalScrollbarHeight); + IntPoint maximumOffset(m_pdfDocumentSize.width() - m_size.width() + verticalScrollbarWidth, m_pdfDocumentSize.height() - m_size.height() + horizontalScrollbarHeight); maximumOffset.clampNegativeToZero(); return maximumOffset; } -int BuiltInPDFView::visibleHeight() const +int SimplePDFPlugin::visibleHeight() const { - return m_pluginSize.height(); + return m_size.height(); } -int BuiltInPDFView::visibleWidth() const +int SimplePDFPlugin::visibleWidth() const { - return m_pluginSize.width(); + return m_size.width(); } -IntSize BuiltInPDFView::contentsSize() const +IntSize SimplePDFPlugin::contentsSize() const { return m_pdfDocumentSize; } -bool BuiltInPDFView::scrollbarsCanBeActive() const +bool SimplePDFPlugin::scrollbarsCanBeActive() const { return !pluginView()->frame()->document()->inPageCache(); } -void BuiltInPDFView::scrollbarStyleChanged(int, bool forceUpdate) +void SimplePDFPlugin::scrollbarStyleChanged(int, bool forceUpdate) { if (!forceUpdate) return; @@ -816,67 +890,51 @@ void BuiltInPDFView::scrollbarStyleChanged(int, bool forceUpdate) ScrollableArea::contentsResized(); } -IntPoint BuiltInPDFView::convertFromContainingViewToScrollbar(const Scrollbar* scrollbar, const IntPoint& parentPoint) const +IntRect SimplePDFPlugin::convertFromScrollbarToContainingView(const Scrollbar* scrollbar, const IntRect& scrollbarRect) const { - IntPoint point = pluginView()->frame()->view()->convertToRenderer(pluginView()->renderer(), parentPoint); - point.move(pluginView()->location() - scrollbar->location()); - - return point; + IntRect rect = scrollbarRect; + rect.move(scrollbar->location() - pluginView()->location()); + + return pluginView()->frame()->view()->convertFromRenderer(pluginView()->renderer(), rect); } -static void jsPDFDocInitialize(JSContextRef ctx, JSObjectRef object) +IntRect SimplePDFPlugin::convertFromContainingViewToScrollbar(const Scrollbar* scrollbar, const IntRect& parentRect) const { - BuiltInPDFView* pdfView = static_cast<BuiltInPDFView*>(JSObjectGetPrivate(object)); - pdfView->ref(); + IntRect rect = pluginView()->frame()->view()->convertToRenderer(pluginView()->renderer(), parentRect); + rect.move(pluginView()->location() - scrollbar->location()); + + return rect; } -static void jsPDFDocFinalize(JSObjectRef object) +IntPoint SimplePDFPlugin::convertFromScrollbarToContainingView(const Scrollbar* scrollbar, const IntPoint& scrollbarPoint) const { - BuiltInPDFView* pdfView = static_cast<BuiltInPDFView*>(JSObjectGetPrivate(object)); - pdfView->deref(); + IntPoint point = scrollbarPoint; + point.move(scrollbar->location() - pluginView()->location()); + + return pluginView()->frame()->view()->convertFromRenderer(pluginView()->renderer(), point); } -JSValueRef BuiltInPDFView::jsPDFDocPrint(JSContextRef ctx, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) +IntPoint SimplePDFPlugin::convertFromContainingViewToScrollbar(const Scrollbar* scrollbar, const IntPoint& parentPoint) const { - BuiltInPDFView* pdfView = static_cast<BuiltInPDFView*>(JSObjectGetPrivate(thisObject)); - - WebFrame* frame = pdfView->m_frame; - if (!frame) - return JSValueMakeUndefined(ctx); - - Frame* coreFrame = frame->coreFrame(); - if (!coreFrame) - return JSValueMakeUndefined(ctx); - - Page* page = coreFrame->page(); - if (!page) - return JSValueMakeUndefined(ctx); - - page->chrome()->print(coreFrame); - - return JSValueMakeUndefined(ctx); + IntPoint point = pluginView()->frame()->view()->convertToRenderer(pluginView()->renderer(), parentPoint); + point.move(pluginView()->location() - scrollbar->location()); + + return point; } -JSObjectRef BuiltInPDFView::makeJSPDFDoc(JSContextRef ctx) +bool SimplePDFPlugin::isEditingCommandEnabled(const String&) { - static JSStaticFunction jsPDFDocStaticFunctions[] = { - { "print", jsPDFDocPrint, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, - { 0, 0, 0 }, - }; - - static JSClassDefinition jsPDFDocClassDefinition = { - 0, - kJSClassAttributeNone, - "Doc", - 0, - 0, - jsPDFDocStaticFunctions, - jsPDFDocInitialize, jsPDFDocFinalize, 0, 0, 0, 0, 0, 0, 0, 0, 0 - }; - - static JSClassRef jsPDFDocClass = JSClassCreate(&jsPDFDocClassDefinition); + return false; +} - return JSObjectMake(ctx, jsPDFDocClass, this); +bool SimplePDFPlugin::handleEditingCommand(const String&, const String&) +{ + return false; +} + +bool SimplePDFPlugin::handlesPageScaleFactor() +{ + return false; } } // namespace WebKit diff --git a/Source/WebKit2/WebProcess/Plugins/Plugin.h b/Source/WebKit2/WebProcess/Plugins/Plugin.h index d197a6765..98f8770c1 100644 --- a/Source/WebKit2/WebProcess/Plugins/Plugin.h +++ b/Source/WebKit2/WebProcess/Plugins/Plugin.h @@ -188,6 +188,15 @@ public: // Tells the plug-in to handle the passed in keyboard event. The plug-in should return true if it processed the event. virtual bool handleKeyboardEvent(const WebKeyboardEvent&) = 0; + // Tells the plug-in to handle the passed in editing command. The plug-in should return true if it executed the command. + virtual bool handleEditingCommand(const String& commandName, const String& argument) = 0; + + // Ask the plug-in whether it will be able to handle the given editing command. + virtual bool isEditingCommandEnabled(const String&) = 0; + + // Ask the plug-in whether it wants to override full-page zoom. + virtual bool handlesPageScaleFactor() = 0; + // Tells the plug-in about focus changes. virtual void setFocus(bool) = 0; diff --git a/Source/WebKit2/WebProcess/Plugins/PluginProcessConnection.cpp b/Source/WebKit2/WebProcess/Plugins/PluginProcessConnection.cpp index 3fe4d0b6c..fdb7e5e1f 100644 --- a/Source/WebKit2/WebProcess/Plugins/PluginProcessConnection.cpp +++ b/Source/WebKit2/WebProcess/Plugins/PluginProcessConnection.cpp @@ -41,37 +41,6 @@ using namespace WebCore; namespace WebKit { -// The timeout, in seconds, when sending sync messages to the plug-in. -static const double syncMessageTimeout = 45; - -static double defaultSyncMessageTimeout(const String& pluginPath) -{ - // FIXME: We should key this off something other than the path. - - // We don't want a message timeout for the AppleConnect plug-in. - if (pathGetFileName(pluginPath) == "AppleConnect.plugin") - return CoreIPC::Connection::NoTimeout; - - // We don't want a message timeout for the Microsoft SharePoint plug-in - // since it can spin a nested run loop in response to an NPN_Invoke, making it seem like - // the plug-in process is hung. See <rdar://problem/9536303>. - // FIXME: Instead of changing the default sync message timeout, CoreIPC could send an - // asynchronous message which the other process would have to reply to on the main thread. - // This way we could check if the plug-in process is actually hung or not. - if (pathGetFileName(pluginPath) == "SharePointBrowserPlugin.plugin") - return CoreIPC::Connection::NoTimeout; - - // We don't want a message timeout for the BankID plug-in since it can spin a nested - // run loop when it's waiting for a reply to an AppleEvent. - if (pathGetFileName(pluginPath) == "PersonalPlugin.bundle") - return CoreIPC::Connection::NoTimeout; - - if (WebProcess::shared().disablePluginProcessMessageTimeout()) - return CoreIPC::Connection::NoTimeout; - - return syncMessageTimeout; -} - PluginProcessConnection::PluginProcessConnection(PluginProcessConnectionManager* pluginProcessConnectionManager, const String& pluginPath, CoreIPC::Connection::Identifier connectionIdentifier, bool supportsAsynchronousPluginInitialization) : m_pluginProcessConnectionManager(pluginProcessConnectionManager) , m_pluginPath(pluginPath) @@ -79,7 +48,6 @@ PluginProcessConnection::PluginProcessConnection(PluginProcessConnectionManager* { m_connection = CoreIPC::Connection::createClientConnection(connectionIdentifier, this, WebProcess::shared().runLoop()); - m_connection->setDefaultSyncMessageTimeout(defaultSyncMessageTimeout(m_pluginPath)); m_npRemoteObjectMap = NPRemoteObjectMap::create(m_connection.get()); m_connection->open(); @@ -165,11 +133,6 @@ void PluginProcessConnection::didReceiveInvalidMessage(CoreIPC::Connection*, Cor { } -void PluginProcessConnection::syncMessageSendTimedOut(CoreIPC::Connection*) -{ - WebProcess::shared().connection()->send(Messages::WebProcessProxy::PluginSyncMessageSendTimedOut(m_pluginPath), 0); -} - void PluginProcessConnection::setException(const String& exceptionString) { NPRuntimeObjectMap::setGlobalException(exceptionString); diff --git a/Source/WebKit2/WebProcess/Plugins/PluginProcessConnection.h b/Source/WebKit2/WebProcess/Plugins/PluginProcessConnection.h index bc866d10c..b9bf81c71 100644 --- a/Source/WebKit2/WebProcess/Plugins/PluginProcessConnection.h +++ b/Source/WebKit2/WebProcess/Plugins/PluginProcessConnection.h @@ -68,7 +68,6 @@ private: virtual void didReceiveSyncMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*, OwnPtr<CoreIPC::ArgumentEncoder>&); virtual void didClose(CoreIPC::Connection*); virtual void didReceiveInvalidMessage(CoreIPC::Connection*, CoreIPC::MessageID); - virtual void syncMessageSendTimedOut(CoreIPC::Connection*); // Message handlers. void didReceiveSyncPluginProcessConnectionMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*, OwnPtr<CoreIPC::ArgumentEncoder>&); diff --git a/Source/WebKit2/WebProcess/Plugins/PluginProxy.cpp b/Source/WebKit2/WebProcess/Plugins/PluginProxy.cpp index 9c30a5ef4..98f333963 100644 --- a/Source/WebKit2/WebProcess/Plugins/PluginProxy.cpp +++ b/Source/WebKit2/WebProcess/Plugins/PluginProxy.cpp @@ -403,6 +403,33 @@ void PluginProxy::setFocus(bool hasFocus) m_connection->connection()->send(Messages::PluginControllerProxy::SetFocus(hasFocus), m_pluginInstanceID); } +bool PluginProxy::handleEditingCommand(const String& commandName, const String& argument) +{ + bool handled = false; + if (!m_connection->connection()->sendSync(Messages::PluginControllerProxy::HandleEditingCommand(commandName, argument), Messages::PluginControllerProxy::HandleEditingCommand::Reply(handled), m_pluginInstanceID)) + return false; + + return handled; +} + +bool PluginProxy::isEditingCommandEnabled(const String& commandName) +{ + bool enabled = false; + if (!m_connection->connection()->sendSync(Messages::PluginControllerProxy::IsEditingCommandEnabled(commandName), Messages::PluginControllerProxy::IsEditingCommandEnabled::Reply(enabled), m_pluginInstanceID)) + return false; + + return enabled; +} + +bool PluginProxy::handlesPageScaleFactor() +{ + bool handled = false; + if (!m_connection->connection()->sendSync(Messages::PluginControllerProxy::HandlesPageScaleFactor(), Messages::PluginControllerProxy::HandlesPageScaleFactor::Reply(handled), m_pluginInstanceID)) + return false; + + return handled; +} + NPObject* PluginProxy::pluginScriptableNPObject() { // Sending the synchronous Messages::PluginControllerProxy::GetPluginScriptableNPObject message can cause us to dispatch an @@ -447,7 +474,7 @@ void PluginProxy::sendComplexTextInput(const String& textInput) } #endif -void PluginProxy::contentsScaleFactorChanged(float scaleFactor) +void PluginProxy::contentsScaleFactorChanged(float) { geometryDidChange(); } diff --git a/Source/WebKit2/WebProcess/Plugins/PluginProxy.h b/Source/WebKit2/WebProcess/Plugins/PluginProxy.h index 7a36c1afd..02fa1ab57 100644 --- a/Source/WebKit2/WebProcess/Plugins/PluginProxy.h +++ b/Source/WebKit2/WebProcess/Plugins/PluginProxy.h @@ -101,6 +101,11 @@ private: virtual bool handleContextMenuEvent(const WebMouseEvent&); virtual bool handleKeyboardEvent(const WebKeyboardEvent&); virtual void setFocus(bool); + virtual bool handleEditingCommand(const String& commandName, const String& argument) OVERRIDE; + virtual bool isEditingCommandEnabled(const String& commandName) OVERRIDE; + + virtual bool handlesPageScaleFactor(); + virtual NPObject* pluginScriptableNPObject(); #if PLATFORM(MAC) virtual void windowFocusChanged(bool); diff --git a/Source/WebKit2/WebProcess/Plugins/PluginView.cpp b/Source/WebKit2/WebProcess/Plugins/PluginView.cpp index e2a6e1f05..d0a5e1e2c 100644 --- a/Source/WebKit2/WebProcess/Plugins/PluginView.cpp +++ b/Source/WebKit2/WebProcess/Plugins/PluginView.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Apple Inc. All rights reserved. + * Copyright (C) 2010, 2012 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -67,6 +67,8 @@ using namespace WebCore; namespace WebKit { +static const double pluginSnapshotTimerDelay = 3; + class PluginView::URLRequest : public RefCounted<URLRequest> { public: static PassRefPtr<PluginView::URLRequest> create(uint64_t requestID, const FrameLoadRequest& request, bool allowPopups) @@ -170,9 +172,9 @@ static String buildHTTPHeaders(const ResourceResponse& response, long long& expe HTTPHeaderMap::const_iterator end = response.httpHeaderFields().end(); for (HTTPHeaderMap::const_iterator it = response.httpHeaderFields().begin(); it != end; ++it) { - stringBuilder.append(it->first.characters(), it->first.length()); + stringBuilder.append(it->key.characters(), it->key.length()); stringBuilder.append(separator.characters(), separator.length()); - stringBuilder.append(it->second.characters(), it->second.length()); + stringBuilder.append(it->value.characters(), it->value.length()); stringBuilder.append('\n'); } @@ -268,6 +270,8 @@ PluginView::PluginView(PassRefPtr<HTMLPlugInElement> pluginElement, PassRefPtr<P , m_npRuntimeObjectMap(this) #endif , m_manualStreamState(StreamStateInitial) + , m_pluginSnapshotTimer(this, &PluginView::pluginSnapshotTimerFired, pluginSnapshotTimerDelay) + , m_pageScaleFactor(1) { m_webPage->addPluginView(this); } @@ -282,9 +286,18 @@ PluginView::~PluginView() if (m_isWaitingUntilMediaCanStart) m_pluginElement->document()->removeMediaCanStartListener(this); + destroyPluginAndReset(); + + // Null out the plug-in element explicitly so we'll crash earlier if we try to use + // the plug-in view after it's been destroyed. + m_pluginElement = nullptr; +} + +void PluginView::destroyPluginAndReset() +{ // Cancel all pending frame loads. for (FrameLoadMap::iterator it = m_pendingFrameLoads.begin(), end = m_pendingFrameLoads.end(); it != end; ++it) - it->first->setLoadListener(0); + it->key->setLoadListener(0); if (m_plugin) { m_isBeingDestroyed = true; @@ -302,10 +315,26 @@ PluginView::~PluginView() #endif cancelAllStreams(); +} - // Null out the plug-in element explicitly so we'll crash earlier if we try to use - // the plug-in view after it's been destroyed. - m_pluginElement = nullptr; +void PluginView::recreateAndInitialize(PassRefPtr<Plugin> plugin) +{ + if (m_plugin) { + if (m_pluginSnapshotTimer.isActive()) + m_pluginSnapshotTimer.stop(); + destroyPluginAndReset(); + } + + // Reset member variables to initial values. + m_plugin = plugin; + m_isInitialized = false; + m_isWaitingForSynchronousInitialization = false; + m_isWaitingUntilMediaCanStart = false; + m_isBeingDestroyed = false; + m_manualStreamState = StreamStateInitial; + m_transientPaintingSnapshot = nullptr; + + initializePlugin(); } Frame* PluginView::frame() const @@ -399,6 +428,18 @@ void PluginView::pageScaleFactorDidChange() viewGeometryDidChange(); } +void PluginView::setPageScaleFactor(double scaleFactor, IntPoint) +{ + m_pageScaleFactor = scaleFactor; + m_webPage->send(Messages::WebPageProxy::PageScaleFactorDidChange(scaleFactor)); + pageScaleFactorDidChange(); +} + +double PluginView::pageScaleFactor() +{ + return m_pageScaleFactor; +} + void PluginView::webPageDestroyed() { m_webPage = 0; @@ -513,7 +554,9 @@ void PluginView::didInitializePlugin() redeliverManualStream(); #if PLATFORM(MAC) - if (m_plugin->pluginLayer()) { + if (m_pluginElement->displayState() < HTMLPlugInElement::Playing) + m_pluginSnapshotTimer.restart(); + else if (m_plugin->pluginLayer()) { if (frame()) { frame()->view()->enterCompositingMode(); m_pluginElement->setNeedsStyleRecalc(SyntheticStyleChange); @@ -643,7 +686,7 @@ void PluginView::setFrameRect(const WebCore::IntRect& rect) void PluginView::paint(GraphicsContext* context, const IntRect& /*dirtyRect*/) { - if (!m_plugin || !m_isInitialized) + if (!m_plugin || !m_isInitialized || m_pluginElement->displayState() < HTMLPlugInElement::Playing) return; if (context->paintingDisabled()) { @@ -658,8 +701,8 @@ void PluginView::paint(GraphicsContext* context, const IntRect& /*dirtyRect*/) if (paintRect.isEmpty()) return; - if (m_snapshot) { - m_snapshot->paint(*context, contentsScaleFactor(), frameRect().location(), m_snapshot->bounds()); + if (m_transientPaintingSnapshot) { + m_transientPaintingSnapshot->paint(*context, contentsScaleFactor(), frameRect().location(), m_transientPaintingSnapshot->bounds()); return; } @@ -730,16 +773,26 @@ void PluginView::handleEvent(Event* event) if (didHandleEvent) event->setDefaultHandled(); } + +bool PluginView::handleEditingCommand(const String& commandName, const String& argument) +{ + return m_plugin->handleEditingCommand(commandName, argument); +} + +bool PluginView::isEditingCommandEnabled(const String& commandName) +{ + return m_plugin->isEditingCommandEnabled(commandName); +} void PluginView::notifyWidget(WidgetNotification notification) { switch (notification) { case WillPaintFlattened: if (m_plugin && m_isInitialized) - m_snapshot = m_plugin->snapshot(); + m_transientPaintingSnapshot = m_plugin->snapshot(); break; case DidPaintFlattened: - m_snapshot = nullptr; + m_transientPaintingSnapshot = nullptr; break; } } @@ -1021,6 +1074,9 @@ void PluginView::invalidateRect(const IntRect& dirtyRect) return; #endif + if (m_pluginElement->displayState() < HTMLPlugInElement::Playing) + return; + RenderBoxModelObject* renderer = toRenderBoxModelObject(m_pluginElement->renderer()); if (!renderer) return; @@ -1176,6 +1232,8 @@ bool PluginView::isAcceleratedCompositingEnabled() if (!settings) return false; + if (m_pluginElement->displayState() < HTMLPlugInElement::Playing) + return false; return settings->acceleratedCompositingEnabled(); } @@ -1364,4 +1422,19 @@ void PluginView::windowedPluginGeometryDidChange(const WebCore::IntRect& frameRe } #endif +void PluginView::pluginSnapshotTimerFired(DeferrableOneShotTimer<PluginView>* timer) +{ + ASSERT_UNUSED(timer, timer == &m_pluginSnapshotTimer); + ASSERT(m_plugin); + + // Snapshot might be 0 if plugin size is 0x0. + RefPtr<ShareableBitmap> snapshot = m_plugin->snapshot(); + RefPtr<Image> snapshotImage; + if (snapshot) + snapshotImage = snapshot->createImage(); + m_pluginElement->updateSnapshot(snapshotImage.release()); + destroyPluginAndReset(); + m_plugin = 0; +} + } // namespace WebKit diff --git a/Source/WebKit2/WebProcess/Plugins/PluginView.h b/Source/WebKit2/WebProcess/Plugins/PluginView.h index 9cc257a98..0d0dfa344 100644 --- a/Source/WebKit2/WebProcess/Plugins/PluginView.h +++ b/Source/WebKit2/WebProcess/Plugins/PluginView.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Apple Inc. All rights reserved. + * Copyright (C) 2010, 2012 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -30,11 +30,13 @@ #include "Plugin.h" #include "PluginController.h" #include "WebFrame.h" +#include <WebCore/Image.h> #include <WebCore/MediaCanStartListener.h> #include <WebCore/PluginViewBase.h> #include <WebCore/ResourceError.h> #include <WebCore/ResourceResponse.h> #include <WebCore/RunLoop.h> +#include <WebCore/Timer.h> #include <wtf/Deque.h> // FIXME: Eventually this should move to WebCore. @@ -51,6 +53,8 @@ class PluginView : public WebCore::PluginViewBase, public PluginController, priv public: static PassRefPtr<PluginView> create(PassRefPtr<WebCore::HTMLPlugInElement>, PassRefPtr<Plugin>, const Plugin::Parameters&); + void recreateAndInitialize(PassRefPtr<Plugin>); + WebCore::Frame* frame() const; bool isBeingDestroyed() const { return m_isBeingDestroyed; } @@ -70,12 +74,22 @@ public: RetainPtr<PDFDocument> pdfDocumentForPrinting() const { return m_plugin->pdfDocumentForPrinting(); } #endif + WebCore::HTMLPlugInElement* pluginElement() const { return m_pluginElement.get(); } + const Plugin::Parameters& initialParameters() const { return m_parameters; } + // FIXME: Remove this; nobody should have to know about the plug-in view's renderer except the plug-in view itself. WebCore::RenderBoxModelObject* renderer() const; + + void setPageScaleFactor(double scaleFactor, WebCore::IntPoint origin); + double pageScaleFactor(); + bool handlesPageScaleFactor() { return m_plugin->handlesPageScaleFactor(); } void pageScaleFactorDidChange(); void webPageDestroyed(); + virtual bool handleEditingCommand(const String& commandName, const String& argument); + virtual bool isEditingCommandEnabled(const String& commandName); + private: PluginView(PassRefPtr<WebCore::HTMLPlugInElement>, PassRefPtr<Plugin>, const Plugin::Parameters& parameters); virtual ~PluginView(); @@ -104,6 +118,8 @@ private: void redeliverManualStream(); + void pluginSnapshotTimerFired(WebCore::DeferrableOneShotTimer<PluginView>*); + // WebCore::PluginViewBase #if PLATFORM(MAC) virtual PlatformLayer* platformLayer() const; @@ -177,6 +193,7 @@ private: virtual void didInitializePlugin(); virtual void didFailToInitializePlugin(); + void destroyPluginAndReset(); // WebFrame::LoadListener virtual void didFinishLoad(WebFrame*); @@ -222,7 +239,12 @@ private: WebCore::ResourceError m_manualStreamError; RefPtr<WebCore::SharedBuffer> m_manualStreamData; - RefPtr<ShareableBitmap> m_snapshot; + // This snapshot is used to avoid side effects should the plugin run JS during painting. + RefPtr<ShareableBitmap> m_transientPaintingSnapshot; + // This timer is used when plugin snapshotting is enabled, to capture a plugin placeholder. + WebCore::DeferrableOneShotTimer<PluginView> m_pluginSnapshotTimer; + + double m_pageScaleFactor; }; } // namespace WebKit diff --git a/Source/WebKit2/WebProcess/WebConnectionToUIProcess.cpp b/Source/WebKit2/WebProcess/WebConnectionToUIProcess.cpp index 5e7955d67..5e152ee98 100644 --- a/Source/WebKit2/WebProcess/WebConnectionToUIProcess.cpp +++ b/Source/WebKit2/WebProcess/WebConnectionToUIProcess.cpp @@ -40,47 +40,34 @@ PassRefPtr<WebConnectionToUIProcess> WebConnectionToUIProcess::create(WebProcess } WebConnectionToUIProcess::WebConnectionToUIProcess(WebProcess* process, CoreIPC::Connection::Identifier connectionIdentifier, RunLoop* runLoop) - : m_process(process) - , m_connection(CoreIPC::Connection::createClientConnection(connectionIdentifier, this, runLoop)) + : WebConnection(CoreIPC::Connection::createClientConnection(connectionIdentifier, this, runLoop)) + , m_process(process) { m_connection->setDidCloseOnConnectionWorkQueueCallback(ChildProcess::didCloseOnConnectionWorkQueue); m_connection->setShouldExitOnSyncMessageSendFailure(true); } -void WebConnectionToUIProcess::invalidate() +// WebConnection + +void WebConnectionToUIProcess::encodeMessageBody(CoreIPC::ArgumentEncoder* argumentEncoder, APIObject* messageBody) { - m_connection->invalidate(); - m_connection = nullptr; - m_process = 0; + argumentEncoder->encode(InjectedBundleUserMessageEncoder(messageBody)); } -// WebConnection - -void WebConnectionToUIProcess::postMessage(const String& messageName, APIObject* messageBody) +bool WebConnectionToUIProcess::decodeMessageBody(CoreIPC::ArgumentDecoder* argumentDecoder, RefPtr<APIObject>& messageBody) { - if (!m_process) - return; + if (!argumentDecoder->decode(InjectedBundleUserMessageDecoder(messageBody))) + return false; - m_connection->deprecatedSend(WebConnectionLegacyMessage::PostMessage, 0, CoreIPC::In(messageName, InjectedBundleUserMessageEncoder(messageBody))); + return true; } // CoreIPC::Connection::Client void WebConnectionToUIProcess::didReceiveMessage(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::ArgumentDecoder* arguments) { - if (messageID.is<CoreIPC::MessageClassWebConnectionLegacy>()) { - switch (messageID.get<WebConnectionLegacyMessage::Kind>()) { - case WebConnectionLegacyMessage::PostMessage: { - String messageName; - RefPtr<APIObject> messageBody; - InjectedBundleUserMessageDecoder messageDecoder(messageBody); - if (!arguments->decode(CoreIPC::Out(messageName, messageDecoder))) - return; - - forwardDidReceiveMessageToClient(messageName, messageBody.get()); - return; - } - } + if (messageID.is<CoreIPC::MessageClassWebConnection>()) { + didReceiveWebConnectionMessage(connection, messageID, arguments); return; } @@ -102,11 +89,6 @@ void WebConnectionToUIProcess::didReceiveInvalidMessage(CoreIPC::Connection* con m_process->didReceiveInvalidMessage(connection, messageID); } -void WebConnectionToUIProcess::syncMessageSendTimedOut(CoreIPC::Connection* connection) -{ - m_process->syncMessageSendTimedOut(connection); -} - #if PLATFORM(WIN) Vector<HWND> WebConnectionToUIProcess::windowsToReceiveSentMessagesWhileWaitingForSyncReply() { diff --git a/Source/WebKit2/WebProcess/WebConnectionToUIProcess.h b/Source/WebKit2/WebProcess/WebConnectionToUIProcess.h index 42b9cd716..cdff4ac27 100644 --- a/Source/WebKit2/WebProcess/WebConnectionToUIProcess.h +++ b/Source/WebKit2/WebProcess/WebConnectionToUIProcess.h @@ -37,28 +37,23 @@ class WebConnectionToUIProcess : public WebConnection, CoreIPC::Connection::Clie public: static PassRefPtr<WebConnectionToUIProcess> create(WebProcess*, CoreIPC::Connection::Identifier, WebCore::RunLoop*); - CoreIPC::Connection* connection() { return m_connection.get(); } - - void invalidate(); - private: WebConnectionToUIProcess(WebProcess*, CoreIPC::Connection::Identifier, WebCore::RunLoop*); // WebConnection - virtual void postMessage(const String&, APIObject*); + virtual void encodeMessageBody(CoreIPC::ArgumentEncoder*, APIObject*) OVERRIDE; + virtual bool decodeMessageBody(CoreIPC::ArgumentDecoder*, RefPtr<APIObject>&) OVERRIDE; // CoreIPC::Connection::Client virtual void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); virtual void didReceiveSyncMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*, OwnPtr<CoreIPC::ArgumentEncoder>&); virtual void didClose(CoreIPC::Connection*); virtual void didReceiveInvalidMessage(CoreIPC::Connection*, CoreIPC::MessageID); - virtual void syncMessageSendTimedOut(CoreIPC::Connection*); #if PLATFORM(WIN) virtual Vector<HWND> windowsToReceiveSentMessagesWhileWaitingForSyncReply(); #endif WebProcess* m_process; - RefPtr<CoreIPC::Connection> m_connection; }; } // namespace WebKit diff --git a/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp b/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp index dbcab8dbf..ac3daa908 100644 --- a/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp +++ b/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp @@ -314,7 +314,7 @@ void WebChromeClient::runJavaScriptAlert(Frame* frame, const String& alertText) m_page->injectedBundleUIClient().willRunJavaScriptAlert(m_page, alertText, webFrame); unsigned syncSendFlags = (WebCore::AXObjectCache::accessibilityEnabled()) ? CoreIPC::SpinRunLoopWhileWaitingForReply : 0; - WebProcess::shared().connection()->sendSync(Messages::WebPageProxy::RunJavaScriptAlert(webFrame->frameID(), alertText), Messages::WebPageProxy::RunJavaScriptAlert::Reply(), m_page->pageID(), CoreIPC::Connection::DefaultTimeout, syncSendFlags); + WebProcess::shared().connection()->sendSync(Messages::WebPageProxy::RunJavaScriptAlert(webFrame->frameID(), alertText), Messages::WebPageProxy::RunJavaScriptAlert::Reply(), m_page->pageID(), CoreIPC::Connection::NoTimeout, syncSendFlags); } bool WebChromeClient::runJavaScriptConfirm(Frame* frame, const String& message) @@ -326,7 +326,7 @@ bool WebChromeClient::runJavaScriptConfirm(Frame* frame, const String& message) unsigned syncSendFlags = (WebCore::AXObjectCache::accessibilityEnabled()) ? CoreIPC::SpinRunLoopWhileWaitingForReply : 0; bool result = false; - if (!WebProcess::shared().connection()->sendSync(Messages::WebPageProxy::RunJavaScriptConfirm(webFrame->frameID(), message), Messages::WebPageProxy::RunJavaScriptConfirm::Reply(result), m_page->pageID(), CoreIPC::Connection::DefaultTimeout, syncSendFlags)) + if (!WebProcess::shared().connection()->sendSync(Messages::WebPageProxy::RunJavaScriptConfirm(webFrame->frameID(), message), Messages::WebPageProxy::RunJavaScriptConfirm::Reply(result), m_page->pageID(), CoreIPC::Connection::NoTimeout, syncSendFlags)) return false; return result; @@ -340,7 +340,7 @@ bool WebChromeClient::runJavaScriptPrompt(Frame* frame, const String& message, c m_page->injectedBundleUIClient().willRunJavaScriptPrompt(m_page, message, defaultValue, webFrame); unsigned syncSendFlags = (WebCore::AXObjectCache::accessibilityEnabled()) ? CoreIPC::SpinRunLoopWhileWaitingForReply : 0; - if (!WebProcess::shared().connection()->sendSync(Messages::WebPageProxy::RunJavaScriptPrompt(webFrame->frameID(), message, defaultValue), Messages::WebPageProxy::RunJavaScriptPrompt::Reply(result), m_page->pageID(), CoreIPC::Connection::DefaultTimeout, syncSendFlags)) + if (!WebProcess::shared().connection()->sendSync(Messages::WebPageProxy::RunJavaScriptPrompt(webFrame->frameID(), message, defaultValue), Messages::WebPageProxy::RunJavaScriptPrompt::Reply(result), m_page->pageID(), CoreIPC::Connection::NoTimeout, syncSendFlags)) return false; return !result.isNull(); @@ -562,7 +562,7 @@ void WebChromeClient::reachedApplicationCacheOriginQuota(SecurityOrigin* origin, } #if ENABLE(DASHBOARD_SUPPORT) -void WebChromeClient::dashboardRegionsChanged() +void WebChromeClient::annotatedRegionsChanged() { notImplemented(); } @@ -691,6 +691,11 @@ PassRefPtr<WebCore::SearchPopupMenu> WebChromeClient::createSearchPopupMenu(WebC } #if USE(ACCELERATED_COMPOSITING) +GraphicsLayerFactory* WebChromeClient::graphicsLayerFactory() const +{ + return m_page->drawingArea()->graphicsLayerFactory(); +} + void WebChromeClient::attachRootGraphicsLayer(Frame*, GraphicsLayer* layer) { if (layer) @@ -704,10 +709,10 @@ void WebChromeClient::setNeedsOneShotDrawingSynchronization() notImplemented(); } -void WebChromeClient::scheduleCompositingLayerSync() +void WebChromeClient::scheduleCompositingLayerFlush() { if (m_page->drawingArea()) - m_page->drawingArea()->scheduleCompositingLayerSync(); + m_page->drawingArea()->scheduleCompositingLayerFlush(); } #endif diff --git a/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.h b/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.h index f40d4b174..1e62f7abd 100644 --- a/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.h +++ b/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.h @@ -139,7 +139,7 @@ private: virtual void reachedApplicationCacheOriginQuota(WebCore::SecurityOrigin*, int64_t spaceNeeded) OVERRIDE; #if ENABLE(DASHBOARD_SUPPORT) - virtual void dashboardRegionsChanged() OVERRIDE; + virtual void annotatedRegionsChanged() OVERRIDE; #endif virtual void populateVisitedLinks() OVERRIDE; @@ -177,9 +177,10 @@ private: virtual PassRefPtr<WebCore::SearchPopupMenu> createSearchPopupMenu(WebCore::PopupMenuClient*) const OVERRIDE; #if USE(ACCELERATED_COMPOSITING) + virtual WebCore::GraphicsLayerFactory* graphicsLayerFactory() const OVERRIDE; virtual void attachRootGraphicsLayer(WebCore::Frame*, WebCore::GraphicsLayer*) OVERRIDE; virtual void setNeedsOneShotDrawingSynchronization() OVERRIDE; - virtual void scheduleCompositingLayerSync() OVERRIDE; + virtual void scheduleCompositingLayerFlush() OVERRIDE; virtual CompositingTriggerFlags allowedCompositingTriggers() const { diff --git a/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp b/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp index e13908e63..c29463f46 100644 --- a/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp +++ b/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010, 2011 Apple Inc. All rights reserved. + * Copyright (C) 2010, 2011, 2012 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -44,6 +44,7 @@ #include "WebFrame.h" #include "WebFrameNetworkingContext.h" #include "WebFullScreenManager.h" +#include "WebIconDatabaseMessages.h" #include "WebNavigationDataStore.h" #include "WebPage.h" #include "WebPageProxyMessages.h" @@ -67,6 +68,7 @@ #include <WebCore/Page.h> #include <WebCore/PluginData.h> #include <WebCore/ProgressTracker.h> +#include <WebCore/ResourceBuffer.h> #include <WebCore/ResourceError.h> #include <WebCore/Settings.h> #include <WebCore/UIEventWithKeyState.h> @@ -91,6 +93,7 @@ namespace WebKit { WebFrameLoaderClient::WebFrameLoaderClient(WebFrame* frame) : m_frame(frame) , m_hasSentResponseToPluginView(false) + , m_didCompletePageTransitionAlready(false) , m_frameHasCustomRepresentation(false) , m_frameCameFromPageCache(false) { @@ -393,7 +396,7 @@ void WebFrameLoaderClient::dispatchWillClose() void WebFrameLoaderClient::dispatchDidReceiveIcon() { - notImplemented(); + WebProcess::shared().connection()->send(Messages::WebIconDatabase::DidReceiveIconForPageURL(m_frame->url()), 0); } void WebFrameLoaderClient::dispatchDidStartProvisionalLoad() @@ -562,8 +565,10 @@ void WebFrameLoaderClient::dispatchDidLayout(LayoutMilestones milestones) webPage->send(Messages::WebPageProxy::DidFirstLayoutForFrame(m_frame->frameID(), InjectedBundleUserMessageEncoder(userData.get()))); if (m_frame == m_frame->page()->mainWebFrame()) { - if (!webPage->corePage()->settings()->suppressesIncrementalRendering()) - webPage->drawingArea()->setLayerTreeStateIsFrozen(false); + if (!webPage->corePage()->settings()->suppressesIncrementalRendering() && !m_didCompletePageTransitionAlready) { + webPage->didCompletePageTransition(); + m_didCompletePageTransitionAlready = true; + } } #if USE(TILED_BACKING_STORE) @@ -894,7 +899,7 @@ void WebFrameLoaderClient::finishedLoading(DocumentLoader* loader) if (!webPage) return; - RefPtr<SharedBuffer> mainResourceData = loader->mainResourceData(); + RefPtr<ResourceBuffer> mainResourceData = loader->mainResourceData(); CoreIPC::DataReference dataReference(reinterpret_cast<const uint8_t*>(mainResourceData ? mainResourceData->data() : 0), mainResourceData ? mainResourceData->size() : 0); webPage->send(Messages::WebPageProxy::DidFinishLoadingDataForCustomRepresentation(loader->response().suggestedFilename(), dataReference)); @@ -1120,12 +1125,15 @@ String WebFrameLoaderClient::generatedMIMETypeForURLScheme(const String& /*URLSc void WebFrameLoaderClient::frameLoadCompleted() { + // Note: Can be called multiple times. WebPage* webPage = m_frame->page(); if (!webPage) return; - if (m_frame == m_frame->page()->mainWebFrame()) - webPage->drawingArea()->setLayerTreeStateIsFrozen(false); + if (m_frame == m_frame->page()->mainWebFrame() && !m_didCompletePageTransitionAlready) { + webPage->didCompletePageTransition(); + m_didCompletePageTransitionAlready = true; + } } void WebFrameLoaderClient::saveViewStateToItem(HistoryItem*) @@ -1138,10 +1146,9 @@ void WebFrameLoaderClient::restoreViewState() // Inform the UI process of the scale factor. double scaleFactor = m_frame->coreFrame()->loader()->history()->currentItem()->pageScaleFactor(); - // A scale factor of 0.0 means the history item actually has the "default scale factor" of 1.0. - if (!scaleFactor) - scaleFactor = 1.0; - m_frame->page()->send(Messages::WebPageProxy::PageScaleFactorDidChange(scaleFactor)); + // A scale factor of 0 means the history item has the default scale factor, thus we do not need to update it. + if (scaleFactor) + m_frame->page()->send(Messages::WebPageProxy::PageScaleFactorDidChange(scaleFactor)); // FIXME: This should not be necessary. WebCore should be correctly invalidating // the view on restores from the back/forward cache. @@ -1155,8 +1162,10 @@ void WebFrameLoaderClient::provisionalLoadStarted() if (!webPage) return; - if (m_frame == m_frame->page()->mainWebFrame()) - webPage->drawingArea()->setLayerTreeStateIsFrozen(true); + if (m_frame == m_frame->page()->mainWebFrame()) { + webPage->didStartPageTransition(); + m_didCompletePageTransitionAlready = false; + } } void WebFrameLoaderClient::didFinishLoad() @@ -1206,7 +1215,7 @@ void WebFrameLoaderClient::transitionToCommittedFromCachedFrame(CachedFrame*) bool isMainFrame = webPage->mainWebFrame() == m_frame; const ResourceResponse& response = m_frame->coreFrame()->loader()->documentLoader()->response(); - m_frameHasCustomRepresentation = isMainFrame && WebProcess::shared().shouldUseCustomRepresentationForResponse(response); + m_frameHasCustomRepresentation = isMainFrame && webPage->shouldUseCustomRepresentationForResponse(response); m_frameCameFromPageCache = true; } @@ -1220,7 +1229,7 @@ void WebFrameLoaderClient::transitionToCommittedForNewPage() IntRect currentVisibleContentBounds = m_frame->visibleContentBounds(); const ResourceResponse& response = m_frame->coreFrame()->loader()->documentLoader()->response(); - m_frameHasCustomRepresentation = isMainFrame && WebProcess::shared().shouldUseCustomRepresentationForResponse(response); + m_frameHasCustomRepresentation = isMainFrame && webPage->shouldUseCustomRepresentationForResponse(response); m_frameCameFromPageCache = false; m_frame->coreFrame()->createView(webPage->size(), backgroundColor, /* transparent */ false, IntSize(), shouldUseFixedLayout); @@ -1344,6 +1353,16 @@ PassRefPtr<Widget> WebFrameLoaderClient::createPlugin(const IntSize&, HTMLPlugIn return PluginView::create(pluginElement, plugin.release(), parameters); } +void WebFrameLoaderClient::recreatePlugin(Widget* widget) +{ + ASSERT(widget && widget->isPluginViewBase()); + ASSERT(m_frame->page()); + + PluginView* pluginView = static_cast<PluginView*>(widget); + RefPtr<Plugin> plugin = m_frame->page()->createPlugin(m_frame, pluginView->pluginElement(), pluginView->initialParameters()); + pluginView->recreateAndInitialize(plugin.release()); +} + void WebFrameLoaderClient::redirectDataToPlugin(Widget* pluginWidget) { m_pluginView = static_cast<PluginView*>(pluginWidget); @@ -1515,10 +1534,6 @@ RemoteAXObjectRef WebFrameLoaderClient::accessibilityRemoteObject() return m_frame->page()->accessibilityRemoteObject(); } -#if ENABLE(MAC_JAVA_BRIDGE) -jobject WebFrameLoaderClient::javaApplet(NSView*) { return 0; } -#endif - NSCachedURLResponse* WebFrameLoaderClient::willCacheResponse(DocumentLoader*, unsigned long identifier, NSCachedURLResponse* response) const { WebPage* webPage = m_frame->page(); diff --git a/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.h b/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.h index 213a2fea0..56e121f52 100644 --- a/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.h +++ b/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010, 2011 Apple Inc. All rights reserved. + * Copyright (C) 2010, 2011, 2012 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -188,6 +188,7 @@ private: const String& referrer, bool allowsScrolling, int marginWidth, int marginHeight) OVERRIDE; virtual PassRefPtr<WebCore::Widget> createPlugin(const WebCore::IntSize&, WebCore::HTMLPlugInElement*, const WebCore::KURL&, const Vector<String>&, const Vector<String>&, const String&, bool loadManually) OVERRIDE; + virtual void recreatePlugin(WebCore::Widget*) OVERRIDE; virtual void redirectDataToPlugin(WebCore::Widget* pluginWidget) OVERRIDE; virtual PassRefPtr<WebCore::Widget> createJavaAppletWidget(const WebCore::IntSize&, WebCore::HTMLAppletElement*, const WebCore::KURL& baseURL, const Vector<String>& paramNames, const Vector<String>& paramValues) OVERRIDE; @@ -216,9 +217,6 @@ private: #if PLATFORM(MAC) virtual RemoteAXObjectRef accessibilityRemoteObject() OVERRIDE; -#if ENABLE(MAC_JAVA_BRIDGE) - virtual jobject javaApplet(NSView*) OVERRIDE; -#endif virtual NSCachedURLResponse* willCacheResponse(WebCore::DocumentLoader*, unsigned long identifier, NSCachedURLResponse*) const OVERRIDE; #endif #if PLATFORM(WIN) && USE(CFNETWORK) @@ -244,6 +242,7 @@ private: WebFrame* m_frame; RefPtr<PluginView> m_pluginView; bool m_hasSentResponseToPluginView; + bool m_didCompletePageTransitionAlready; bool m_frameHasCustomRepresentation; bool m_frameCameFromPageCache; }; diff --git a/Source/WebKit2/WebProcess/WebCoreSupport/mac/WebSystemInterface.mm b/Source/WebKit2/WebProcess/WebCoreSupport/mac/WebSystemInterface.mm index 1897675dc..a004a8cc7 100644 --- a/Source/WebKit2/WebProcess/WebCoreSupport/mac/WebSystemInterface.mm +++ b/Source/WebKit2/WebProcess/WebCoreSupport/mac/WebSystemInterface.mm @@ -44,6 +44,9 @@ void InitWebCoreSystemInterface(void) INIT(CGContextGetShouldSmoothFonts); INIT(CGPatternCreateWithImageAndTransform); INIT(CGContextResetClip); +#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1080 + INIT(CGContextDrawsWithCorrectShadowOffsets); +#endif INIT(CopyCONNECTProxyResponse); INIT(CopyNSURLResponseStatusLine); INIT(CreateCTLineWithUniCharProvider); diff --git a/Source/WebKit2/WebProcess/WebCoreSupport/qt/WebDragClientQt.cpp b/Source/WebKit2/WebProcess/WebCoreSupport/qt/WebDragClientQt.cpp index d9e6d1d13..bbdb635b3 100644 --- a/Source/WebKit2/WebProcess/WebCoreSupport/qt/WebDragClientQt.cpp +++ b/Source/WebKit2/WebProcess/WebCoreSupport/qt/WebDragClientQt.cpp @@ -38,15 +38,15 @@ using namespace WebCore; namespace WebKit { -static PassRefPtr<ShareableBitmap> convertQImageToShareableBitmap(QImage* image) +static PassRefPtr<ShareableBitmap> convertQPixmapToShareableBitmap(QPixmap* pixmap) { - if (!image) + if (!pixmap) return 0; - RefPtr<ShareableBitmap> bitmap = ShareableBitmap::createShareable(IntSize(image->size()), ShareableBitmap::SupportsAlpha); + RefPtr<ShareableBitmap> bitmap = ShareableBitmap::createShareable(IntSize(pixmap->size()), ShareableBitmap::SupportsAlpha); OwnPtr<GraphicsContext> graphicsContext = bitmap->createGraphicsContext(); - graphicsContext->platformContext()->drawImage(0, 0, *image); + graphicsContext->platformContext()->drawPixmap(0, 0, *pixmap); return bitmap.release(); } @@ -57,7 +57,7 @@ void WebDragClient::startDrag(DragImageRef dragImage, const IntPoint& clientPosi static_cast<ClipboardQt*>(clipboard)->invalidateWritableData(); DragData dragData(clipboardData, clientPosition, globalPosition, dragOperationMask); - RefPtr<ShareableBitmap> bitmap = convertQImageToShareableBitmap(dragImage); + RefPtr<ShareableBitmap> bitmap = convertQPixmapToShareableBitmap(dragImage); ShareableBitmap::Handle handle; if (bitmap && !bitmap->createHandle(handle)) return; diff --git a/Source/WebKit2/WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.cpp b/Source/WebKit2/WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.cpp index 876de80a6..6e7b593bc 100644 --- a/Source/WebKit2/WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.cpp +++ b/Source/WebKit2/WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.cpp @@ -26,16 +26,31 @@ #include "config.h" #include "WebFrameNetworkingContext.h" +#include "WebFrame.h" +#include "WebPage.h" #include <WebCore/ResourceHandle.h> using namespace WebCore; namespace WebKit { +WebFrameNetworkingContext::WebFrameNetworkingContext(WebFrame* frame) + : FrameNetworkingContext(frame->coreFrame()) + , m_initiatingPageID(0) +{ + if (WebPage* page = frame->page()) + m_initiatingPageID = page->pageID(); +} + SoupSession* WebFrameNetworkingContext::soupSession() const { return ResourceHandle::defaultSession(); } +uint64_t WebFrameNetworkingContext::initiatingPageID() const +{ + return m_initiatingPageID; +} + } diff --git a/Source/WebKit2/WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.h b/Source/WebKit2/WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.h index 2a42d38d3..a06a69252 100644 --- a/Source/WebKit2/WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.h +++ b/Source/WebKit2/WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.h @@ -28,12 +28,12 @@ #ifndef WebFrameNetworkingContext_h #define WebFrameNetworkingContext_h -#include "WebFrame.h" - #include <WebCore/FrameNetworkingContext.h> namespace WebKit { +class WebFrame; + class WebFrameNetworkingContext : public WebCore::FrameNetworkingContext { public: static PassRefPtr<WebFrameNetworkingContext> create(WebFrame* frame) @@ -42,12 +42,12 @@ public: } private: - WebFrameNetworkingContext(WebFrame* frame) - : WebCore::FrameNetworkingContext(frame->coreFrame()) - { - } + WebFrameNetworkingContext(WebFrame*); virtual SoupSession* soupSession() const; + virtual uint64_t initiatingPageID() const; + + uint64_t m_initiatingPageID; }; } diff --git a/Source/WebKit2/WebProcess/WebKitMain.cpp b/Source/WebKit2/WebProcess/WebKitMain.cpp index 03a8cb5c5..1fd72561d 100644 --- a/Source/WebKit2/WebProcess/WebKitMain.cpp +++ b/Source/WebKit2/WebProcess/WebKitMain.cpp @@ -31,6 +31,10 @@ #include "WebProcessMain.h" #include <wtf/text/CString.h> +#if ENABLE(NETWORK_PROCESS) +#include "NetworkProcessMain.h" +#endif + #if PLATFORM(MAC) #include <objc/objc-auto.h> #elif PLATFORM(WIN) @@ -54,6 +58,12 @@ static int WebKitMain(const CommandLine& commandLine) #else break; #endif + case ProcessLauncher::NetworkProcess: +#if ENABLE(NETWORK_PROCESS) + return NetworkProcessMain(commandLine); +#else + break; +#endif } return EXIT_FAILURE; diff --git a/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp b/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp index f2afdb5fb..9798f3f05 100644 --- a/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp +++ b/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp @@ -53,7 +53,7 @@ CoordinatedGraphicsLayer* CoordinatedGraphicsLayer::layerByID(WebKit::WebLayerID HashMap<WebLayerID, CoordinatedGraphicsLayer*>::iterator it = table.find(id); if (it == table.end()) return 0; - return it->second; + return it->value; } static WebLayerID toWebLayerID(GraphicsLayer* layer) @@ -65,21 +65,21 @@ void CoordinatedGraphicsLayer::didChangeLayerState() { m_shouldSyncLayerState = true; if (client()) - client()->notifySyncRequired(this); + client()->notifyFlushRequired(this); } void CoordinatedGraphicsLayer::didChangeAnimatedProperties() { m_shouldSyncAnimatedProperties = true; if (client()) - client()->notifySyncRequired(this); + client()->notifyFlushRequired(this); } void CoordinatedGraphicsLayer::didChangeChildren() { m_shouldSyncChildren = true; if (client()) - client()->notifySyncRequired(this); + client()->notifyFlushRequired(this); } #if ENABLE(CSS_FILTERS) @@ -87,7 +87,7 @@ void CoordinatedGraphicsLayer::didChangeFilters() { m_shouldSyncFilters = true; if (client()) - client()->notifySyncRequired(this); + client()->notifyFlushRequired(this); } #endif @@ -340,7 +340,7 @@ void CoordinatedGraphicsLayer::setContentsNeedsDisplay() setContentsToImage(image.get()); m_canvasNeedsDisplay = true; if (client()) - client()->notifySyncRequired(this); + client()->notifyFlushRequired(this); } void CoordinatedGraphicsLayer::setContentsToCanvas(PlatformLayer* platformLayer) @@ -348,7 +348,7 @@ void CoordinatedGraphicsLayer::setContentsToCanvas(PlatformLayer* platformLayer) m_canvasPlatformLayer = platformLayer; m_canvasNeedsDisplay = true; if (client()) - client()->notifySyncRequired(this); + client()->notifyFlushRequired(this); } #if ENABLE(CSS_FILTERS) @@ -433,20 +433,20 @@ WebLayerID CoordinatedGraphicsLayer::id() const return m_id; } -void CoordinatedGraphicsLayer::syncCompositingState(const FloatRect& rect) +void CoordinatedGraphicsLayer::flushCompositingState(const FloatRect& rect) { if (CoordinatedGraphicsLayer* mask = toCoordinatedGraphicsLayer(maskLayer())) - mask->syncCompositingStateForThisLayerOnly(); + mask->flushCompositingStateForThisLayerOnly(); if (CoordinatedGraphicsLayer* replica = toCoordinatedGraphicsLayer(replicaLayer())) - replica->syncCompositingStateForThisLayerOnly(); + replica->flushCompositingStateForThisLayerOnly(); m_CoordinatedGraphicsLayerClient->syncFixedLayers(); - syncCompositingStateForThisLayerOnly(); + flushCompositingStateForThisLayerOnly(); for (size_t i = 0; i < children().size(); ++i) - children()[i]->syncCompositingState(rect); + children()[i]->flushCompositingState(rect); } CoordinatedGraphicsLayer* toCoordinatedGraphicsLayer(GraphicsLayer* layer) @@ -530,7 +530,7 @@ void CoordinatedGraphicsLayer::syncCanvas() #if USE(GRAPHICS_SURFACE) uint32_t frontBuffer = m_canvasPlatformLayer->copyToGraphicsSurface(); - uint64_t token = m_canvasPlatformLayer->graphicsSurfaceToken(); + GraphicsSurfaceToken token = m_canvasPlatformLayer->graphicsSurfaceToken(); m_CoordinatedGraphicsLayerClient->syncCanvas(m_id, IntSize(size().width(), size().height()), token, frontBuffer); #endif @@ -545,7 +545,7 @@ void CoordinatedGraphicsLayer::ensureImageBackingStore() m_layerInfo.imageBackingStoreID = m_CoordinatedGraphicsLayerClient->adoptImageBackingStore(m_image.get()); } -void CoordinatedGraphicsLayer::syncCompositingStateForThisLayerOnly() +void CoordinatedGraphicsLayer::flushCompositingStateForThisLayerOnly() { // The remote image might have been released by purgeBackingStores. ensureImageBackingStore(); diff --git a/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.h b/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.h index f4ea2fb92..049991070 100644 --- a/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.h +++ b/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.h @@ -1,4 +1,4 @@ - /* +/* Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) This library is free software; you can redistribute it and/or @@ -26,6 +26,7 @@ #include "GraphicsLayer.h" #include "GraphicsLayerAnimation.h" #include "GraphicsLayerTransform.h" +#include "GraphicsSurface.h" #include "Image.h" #include "IntSize.h" #include "ShareableBitmap.h" @@ -61,8 +62,8 @@ public: #if ENABLE(CSS_FILTERS) virtual void syncLayerFilters(WebLayerID, const WebCore::FilterOperations&) = 0; #endif -#if PLATFORM(QT) - virtual void syncCanvas(WebLayerID, const WebCore::IntSize& canvasSize, uint64_t graphicsSurfaceToken, uint32_t frontBuffer) = 0; +#if USE(GRAPHICS_SURFACE) + virtual void syncCanvas(WebLayerID, const WebCore::IntSize& canvasSize, const WebCore::GraphicsSurfaceToken&, uint32_t frontBuffer) = 0; #endif virtual void setLayerAnimatedOpacity(WebLayerID, float) = 0; @@ -115,8 +116,8 @@ public: void setContentsNeedsDisplay(); void setContentsScale(float); void setVisibleContentRectTrajectoryVector(const FloatPoint&); - virtual void syncCompositingState(const FloatRect&); - virtual void syncCompositingStateForThisLayerOnly(); + virtual void flushCompositingState(const FloatRect&); + virtual void flushCompositingStateForThisLayerOnly(); #if ENABLE(CSS_FILTERS) bool setFilters(const FilterOperations&); #endif @@ -133,6 +134,7 @@ public: GraphicsLayer* maskTarget() const { return m_maskTarget; } void setMaskTarget(GraphicsLayer* layer) { m_maskTarget = layer; } + IntRect coverRect() const { return m_mainBackingStore ? m_mainBackingStore->mapToContents(m_mainBackingStore->coverRect()) : IntRect(); } static void initFactory(); diff --git a/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp b/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp index d979ad71c..416cf00e0 100644 --- a/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp +++ b/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp @@ -83,7 +83,7 @@ LayerTreeCoordinator::LayerTreeCoordinator(WebPage* webPage) , m_forceRepaintAsyncCallbackID(0) { // Create a root layer. - m_rootLayer = GraphicsLayer::create(this); + m_rootLayer = GraphicsLayer::create(this, this); CoordinatedGraphicsLayer* webRootLayer = toCoordinatedGraphicsLayer(m_rootLayer.get()); webRootLayer->setRootLayer(true); #ifndef NDEBUG @@ -93,7 +93,7 @@ LayerTreeCoordinator::LayerTreeCoordinator(WebPage* webPage) m_rootLayer->setSize(m_webPage->size()); m_layerTreeContext.webLayerID = toCoordinatedGraphicsLayer(webRootLayer)->id(); - m_nonCompositedContentLayer = GraphicsLayer::create(this); + m_nonCompositedContentLayer = GraphicsLayer::create(this, this); toCoordinatedGraphicsLayer(m_rootLayer.get())->setCoordinatedGraphicsLayerClient(this); #ifndef NDEBUG m_nonCompositedContentLayer->setName("LayerTreeCoordinator non-composited content"); @@ -258,12 +258,12 @@ bool LayerTreeCoordinator::flushPendingLayerChanges() m_webPage->send(Messages::LayerTreeCoordinatorProxy::DeleteCompositingLayer(m_detachedLayers[i])); m_detachedLayers.clear(); - bool didSync = m_webPage->corePage()->mainFrame()->view()->syncCompositingStateIncludingSubframes(); - m_nonCompositedContentLayer->syncCompositingStateForThisLayerOnly(); + bool didSync = m_webPage->corePage()->mainFrame()->view()->flushCompositingStateIncludingSubframes(); + m_nonCompositedContentLayer->flushCompositingStateForThisLayerOnly(); if (m_pageOverlayLayer) - m_pageOverlayLayer->syncCompositingStateForThisLayerOnly(); + m_pageOverlayLayer->flushCompositingStateForThisLayerOnly(); - m_rootLayer->syncCompositingStateForThisLayerOnly(); + m_rootLayer->flushCompositingStateForThisLayerOnly(); if (m_shouldSyncRootLayer) { m_webPage->send(Messages::LayerTreeCoordinatorProxy::SetRootCompositingLayer(toCoordinatedGraphicsLayer(m_rootLayer.get())->id())); @@ -272,7 +272,10 @@ bool LayerTreeCoordinator::flushPendingLayerChanges() if (m_shouldSyncFrame) { didSync = true; - m_webPage->send(Messages::LayerTreeCoordinatorProxy::DidRenderFrame()); + + IntSize contentsSize = roundedIntSize(m_nonCompositedContentLayer->size()); + IntRect coveredRect = toCoordinatedGraphicsLayer(m_nonCompositedContentLayer.get())->coverRect(); + m_webPage->send(Messages::LayerTreeCoordinatorProxy::DidRenderFrame(contentsSize, coveredRect)); m_waitingForUIProcess = true; m_shouldSyncFrame = false; } @@ -302,11 +305,13 @@ void LayerTreeCoordinator::syncLayerChildren(WebLayerID id, const Vector<WebLaye m_webPage->send(Messages::LayerTreeCoordinatorProxy::SetCompositingLayerChildren(id, children)); } -void LayerTreeCoordinator::syncCanvas(WebLayerID id, const IntSize& canvasSize, uint64_t graphicsSurfaceToken, uint32_t frontBuffer) +#if USE(GRAPHICS_SURFACE) +void LayerTreeCoordinator::syncCanvas(WebLayerID id, const IntSize& canvasSize, const GraphicsSurfaceToken& token, uint32_t frontBuffer) { m_shouldSyncFrame = true; - m_webPage->send(Messages::LayerTreeCoordinatorProxy::SyncCanvas(id, canvasSize, graphicsSurfaceToken, frontBuffer)); + m_webPage->send(Messages::LayerTreeCoordinatorProxy::SyncCanvas(id, canvasSize, token, frontBuffer)); } +#endif #if ENABLE(CSS_FILTERS) void LayerTreeCoordinator::syncLayerFilters(WebLayerID id, const FilterOperations& filters) @@ -422,7 +427,7 @@ void LayerTreeCoordinator::createPageOverlayLayer() { ASSERT(!m_pageOverlayLayer); - m_pageOverlayLayer = GraphicsLayer::create(this); + m_pageOverlayLayer = GraphicsLayer::create(this, this); #ifndef NDEBUG m_pageOverlayLayer->setName("LayerTreeCoordinator page overlay content"); #endif @@ -448,18 +453,26 @@ int64_t LayerTreeCoordinator::adoptImageBackingStore(Image* image) int64_t key = 0; #if PLATFORM(QT) - QImage* nativeImage = image->nativeImageForCurrentFrame(); + QPixmap* nativeImage = image->nativeImageForCurrentFrame(); if (!nativeImage) return InvalidWebLayerID; key = nativeImage->cacheKey(); +#elif USE(CAIRO) + NativeImageCairo* nativeImage = image->nativeImageForCurrentFrame(); + if (!nativeImage) + return InvalidWebLayerID; + // This can be safely done since we own the reference. + // A corresponding cairo_surface_destroy() is ensured in releaseImageBackingStore(). + cairo_surface_t* cairoSurface = cairo_surface_reference(nativeImage->surface()); + key = reinterpret_cast<int64_t>(cairoSurface); #endif HashMap<int64_t, int>::iterator it = m_directlyCompositedImageRefCounts.find(key); if (it != m_directlyCompositedImageRefCounts.end()) { - ++(it->second); + ++(it->value); return key; } @@ -484,12 +497,17 @@ void LayerTreeCoordinator::releaseImageBackingStore(int64_t key) if (it == m_directlyCompositedImageRefCounts.end()) return; - it->second--; + it->value--; - if (it->second) + if (it->value) return; m_directlyCompositedImageRefCounts.remove(it); +#if USE(CAIRO) + // Complement the referencing in adoptImageBackingStore(). + cairo_surface_t* cairoSurface = reinterpret_cast<cairo_surface_t*>(key); + cairo_surface_destroy(cairoSurface); +#endif m_webPage->send(Messages::LayerTreeCoordinatorProxy::DestroyDirectlyCompositedImage(key)); } @@ -498,7 +516,7 @@ void LayerTreeCoordinator::notifyAnimationStarted(const WebCore::GraphicsLayer*, { } -void LayerTreeCoordinator::notifySyncRequired(const WebCore::GraphicsLayer*) +void LayerTreeCoordinator::notifyFlushRequired(const WebCore::GraphicsLayer*) { } @@ -527,6 +545,11 @@ bool LayerTreeCoordinator::showRepaintCounter(const WebCore::GraphicsLayer*) con return m_webPage->corePage()->settings()->showRepaintCounter(); } +PassOwnPtr<GraphicsLayer> LayerTreeCoordinator::createGraphicsLayer(GraphicsLayerClient* client) +{ + return adoptPtr(new CoordinatedGraphicsLayer(client)); +} + bool LayerTreeHost::supportsAcceleratedCompositing() { return true; @@ -596,6 +619,11 @@ void LayerTreeCoordinator::setVisibleContentsRect(const IntRect& rect, float sca m_shouldSendScrollPositionUpdate = true; } +GraphicsLayerFactory* LayerTreeCoordinator::graphicsLayerFactory() +{ + return this; +} + void LayerTreeCoordinator::scheduleAnimation() { scheduleLayerFlush(); diff --git a/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.h b/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.h index 6c61bb6b6..dbebd386a 100644 --- a/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.h +++ b/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.h @@ -28,6 +28,8 @@ #include "Timer.h" #include "UpdateAtlas.h" #include <WebCore/GraphicsLayerClient.h> +#include <WebCore/GraphicsLayerFactory.h> +#include <WebCore/GraphicsSurface.h> #include <wtf/OwnPtr.h> namespace WebKit { @@ -36,7 +38,8 @@ class UpdateInfo; class WebPage; class LayerTreeCoordinator : public LayerTreeHost, WebCore::GraphicsLayerClient - , public CoordinatedGraphicsLayerClient { + , public CoordinatedGraphicsLayerClient + , public WebCore::GraphicsLayerFactory { public: static PassRefPtr<LayerTreeCoordinator> create(WebPage*); virtual ~LayerTreeCoordinator(); @@ -77,6 +80,7 @@ public: virtual bool layerTreeTileUpdatesAllowed() const; virtual void setVisibleContentsRect(const WebCore::IntRect&, float scale, const WebCore::FloatPoint&); virtual void didReceiveLayerTreeCoordinatorMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); + virtual WebCore::GraphicsLayerFactory* graphicsLayerFactory() OVERRIDE; virtual void syncLayerState(WebLayerID, const WebLayerInfo&); virtual void syncLayerChildren(WebLayerID, const Vector<WebLayerID>&); @@ -85,7 +89,9 @@ public: #if ENABLE(CSS_FILTERS) virtual void syncLayerFilters(WebLayerID, const WebCore::FilterOperations&); #endif - virtual void syncCanvas(WebLayerID, const WebCore::IntSize& canvasSize, uint64_t graphicsSurfaceToken, uint32_t frontBuffer) OVERRIDE; +#if USE(GRAPHICS_SURFACE) + virtual void syncCanvas(WebLayerID, const WebCore::IntSize& canvasSize, const WebCore::GraphicsSurfaceToken&, uint32_t frontBuffer) OVERRIDE; +#endif virtual void attachLayer(WebCore::CoordinatedGraphicsLayer*); virtual void detachLayer(WebCore::CoordinatedGraphicsLayer*); virtual void syncFixedLayers(); @@ -99,11 +105,14 @@ protected: private: // GraphicsLayerClient virtual void notifyAnimationStarted(const WebCore::GraphicsLayer*, double time); - virtual void notifySyncRequired(const WebCore::GraphicsLayer*); + virtual void notifyFlushRequired(const WebCore::GraphicsLayer*); virtual void paintContents(const WebCore::GraphicsLayer*, WebCore::GraphicsContext&, WebCore::GraphicsLayerPaintingPhase, const WebCore::IntRect& clipRect); virtual bool showDebugBorders(const WebCore::GraphicsLayer*) const; virtual bool showRepaintCounter(const WebCore::GraphicsLayer*) const; + // GraphicsLayerFactory + virtual PassOwnPtr<WebCore::GraphicsLayer> createGraphicsLayer(WebCore::GraphicsLayerClient*) OVERRIDE; + // LayerTreeCoordinator void createPageOverlayLayer(); void destroyPageOverlayLayer(); diff --git a/Source/WebKit2/WebProcess/WebPage/DrawingArea.h b/Source/WebKit2/WebProcess/WebPage/DrawingArea.h index 6178e85bb..ca476179e 100644 --- a/Source/WebKit2/WebProcess/WebPage/DrawingArea.h +++ b/Source/WebKit2/WebProcess/WebPage/DrawingArea.h @@ -41,6 +41,7 @@ namespace CoreIPC { namespace WebCore { class GraphicsLayer; + class GraphicsLayerFactory; } namespace WebKit { @@ -87,8 +88,9 @@ public: virtual void updatePreferences(const WebPreferencesStore&) { } #if USE(ACCELERATED_COMPOSITING) + virtual WebCore::GraphicsLayerFactory* graphicsLayerFactory() { return 0; } virtual void setRootCompositingLayer(WebCore::GraphicsLayer*) = 0; - virtual void scheduleCompositingLayerSync() = 0; + virtual void scheduleCompositingLayerFlush() = 0; #endif #if USE(COORDINATED_GRAPHICS) diff --git a/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp b/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp index 2299bc3ea..d6cef142f 100644 --- a/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp +++ b/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp @@ -70,7 +70,11 @@ DrawingAreaImpl::DrawingAreaImpl(WebPage* webPage, const WebPageCreationParamete { if (webPage->corePage()->settings()->acceleratedDrawingEnabled() || webPage->corePage()->settings()->forceCompositingMode()) m_alwaysUseCompositing = true; - + +#if USE(COORDINATED_GRAPHICS) + m_alwaysUseCompositing = true; +#endif + if (m_alwaysUseCompositing) enterAcceleratedCompositingMode(0); } @@ -303,6 +307,14 @@ void DrawingAreaImpl::layerHostDidFlushLayers() #endif } +GraphicsLayerFactory* DrawingAreaImpl::graphicsLayerFactory() +{ + if (m_layerTreeHost) + return m_layerTreeHost->graphicsLayerFactory(); + + return 0; +} + void DrawingAreaImpl::setRootCompositingLayer(GraphicsLayer* graphicsLayer) { // FIXME: Instead of using nested if statements, we should keep a compositing state @@ -343,7 +355,7 @@ void DrawingAreaImpl::setRootCompositingLayer(GraphicsLayer* graphicsLayer) } } -void DrawingAreaImpl::scheduleCompositingLayerSync() +void DrawingAreaImpl::scheduleCompositingLayerFlush() { if (!m_layerTreeHost) return; diff --git a/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.h b/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.h index ffe3112c0..8babe0108 100644 --- a/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.h +++ b/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.h @@ -68,8 +68,9 @@ private: virtual void setPaintingEnabled(bool); virtual void updatePreferences(const WebPreferencesStore&) OVERRIDE; - virtual void setRootCompositingLayer(WebCore::GraphicsLayer*); - virtual void scheduleCompositingLayerSync(); + virtual WebCore::GraphicsLayerFactory* graphicsLayerFactory() OVERRIDE; + virtual void setRootCompositingLayer(WebCore::GraphicsLayer*) OVERRIDE; + virtual void scheduleCompositingLayerFlush() OVERRIDE; #if PLATFORM(WIN) virtual void scheduleChildWindowGeometryUpdate(const WindowGeometry&); diff --git a/Source/WebKit2/WebProcess/WebPage/LayerTreeHost.h b/Source/WebKit2/WebProcess/WebPage/LayerTreeHost.h index 8d3bb94ac..0e686b66f 100644 --- a/Source/WebKit2/WebProcess/WebPage/LayerTreeHost.h +++ b/Source/WebKit2/WebProcess/WebPage/LayerTreeHost.h @@ -41,6 +41,7 @@ class FloatPoint; class IntRect; class IntSize; class GraphicsLayer; +class GraphicsLayerFactory; #if PLATFORM(WIN) && USE(AVFOUNDATION) struct GraphicsDeviceAdapter; @@ -86,6 +87,8 @@ public: virtual void pauseRendering() { } virtual void resumeRendering() { } + virtual WebCore::GraphicsLayerFactory* graphicsLayerFactory() { return 0; } + #if USE(COORDINATED_GRAPHICS) virtual void setVisibleContentsRect(const WebCore::IntRect&, float scale, const WebCore::FloatPoint&) { } virtual void setVisibleContentsRectForLayer(int layerID, const WebCore::IntRect&) { } diff --git a/Source/WebKit2/WebProcess/WebPage/WebBackForwardListProxy.cpp b/Source/WebKit2/WebProcess/WebPage/WebBackForwardListProxy.cpp index 4ca4e5fdb..be82a197a 100644 --- a/Source/WebKit2/WebProcess/WebPage/WebBackForwardListProxy.cpp +++ b/Source/WebKit2/WebProcess/WebPage/WebBackForwardListProxy.cpp @@ -130,9 +130,9 @@ void WebBackForwardListProxy::removeItem(uint64_t itemID) if (it == idToHistoryItemMap().end()) return; - WebCore::pageCache()->remove(it->second.get()); + WebCore::pageCache()->remove(it->value.get()); - historyItemToIDMap().remove(it->second); + historyItemToIDMap().remove(it->value); idToHistoryItemMap().remove(it); } diff --git a/Source/WebKit2/WebProcess/WebPage/WebFrame.cpp b/Source/WebKit2/WebProcess/WebPage/WebFrame.cpp index d04f4db7f..8ae9ef028 100644 --- a/Source/WebKit2/WebProcess/WebPage/WebFrame.cpp +++ b/Source/WebKit2/WebProcess/WebPage/WebFrame.cpp @@ -54,6 +54,7 @@ #include <WebCore/JSRange.h> #include <WebCore/Page.h> #include <WebCore/RenderTreeAsText.h> +#include <WebCore/ResourceBuffer.h> #include <WebCore/SecurityOrigin.h> #include <WebCore/TextIterator.h> #include <WebCore/TextResourceDecoder.h> @@ -296,7 +297,7 @@ String WebFrame::source() const DocumentLoader* documentLoader = m_coreFrame->loader()->activeDocumentLoader(); if (!documentLoader) return String(); - RefPtr<SharedBuffer> mainResourceData = documentLoader->mainResourceData(); + RefPtr<ResourceBuffer> mainResourceData = documentLoader->mainResourceData(); if (!mainResourceData) return String(); return decoder->encoding().decode(mainResourceData->data(), mainResourceData->size()); @@ -513,7 +514,7 @@ String WebFrame::layerTreeAsText() const if (!m_coreFrame) return ""; - return m_coreFrame->layerTreeAsText(); + return m_coreFrame->layerTreeAsText(0); } unsigned WebFrame::pendingUnloadCount() const diff --git a/Source/WebKit2/WebProcess/WebPage/WebPage.cpp b/Source/WebKit2/WebProcess/WebPage/WebPage.cpp index 61e82b5d9..ea4712724 100644 --- a/Source/WebKit2/WebProcess/WebPage/WebPage.cpp +++ b/Source/WebKit2/WebProcess/WebPage/WebPage.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010, 2011 Apple Inc. All rights reserved. + * Copyright (C) 2010, 2011, 2012 Apple Inc. All rights reserved. * Copyright (C) 2012 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -33,6 +33,7 @@ #include "DrawingArea.h" #include "InjectedBundle.h" #include "InjectedBundleBackForwardList.h" +#include "InjectedBundleUserMessageCoders.h" #include "LayerTreeHost.h" #include "MessageID.h" #include "NetscapePlugin.h" @@ -104,7 +105,9 @@ #include <WebCore/RenderLayer.h> #include <WebCore/RenderTreeAsText.h> #include <WebCore/RenderView.h> +#include <WebCore/ResourceBuffer.h> #include <WebCore/ResourceRequest.h> +#include <WebCore/ResourceResponse.h> #include <WebCore/RunLoop.h> #include <WebCore/SchemeRegistry.h> #include <WebCore/ScriptValue.h> @@ -148,7 +151,10 @@ #endif #if PLATFORM(MAC) -#include "BuiltInPDFView.h" +#include "SimplePDFPlugin.h" +#if ENABLE(PDFKIT_PLUGIN) +#include "PDFPlugin.h" +#endif #endif #if PLATFORM(QT) @@ -217,6 +223,7 @@ WebPage::WebPage(uint64_t pageID, const WebPageCreationParameters& parameters) , m_artificialPluginInitializationDelayEnabled(false) , m_scrollingPerformanceLoggingEnabled(false) #if PLATFORM(MAC) + , m_pdfPluginEnabled(false) , m_windowIsVisible(false) , m_isSmartInsertDeleteEnabled(parameters.isSmartInsertDeleteEnabled) , m_layerHostingMode(parameters.layerHostingMode) @@ -245,6 +252,8 @@ WebPage::WebPage(uint64_t pageID, const WebPageCreationParameters& parameters) , m_isRunningModal(false) , m_cachedMainFrameIsPinnedToLeftSide(false) , m_cachedMainFrameIsPinnedToRightSide(false) + , m_cachedMainFrameIsPinnedToTopSide(false) + , m_cachedMainFrameIsPinnedToBottomSide(false) , m_canShortCircuitHorizontalWheelEvents(false) , m_numWheelEventHandlers(0) , m_cachedPageCount(0) @@ -464,8 +473,13 @@ PassRefPtr<Plugin> WebPage::createPlugin(WebFrame* frame, HTMLPlugInElement* plu if (pluginPath.isNull()) { #if PLATFORM(MAC) if (parameters.mimeType == "application/pdf" - || (parameters.mimeType.isEmpty() && parameters.url.path().lower().endsWith(".pdf"))) - return BuiltInPDFView::create(frame); + || (parameters.mimeType.isEmpty() && parameters.url.path().lower().endsWith(".pdf"))) { +#if ENABLE(PDFKIT_PLUGIN) + if (pdfPluginEnabled()) + return PDFPlugin::create(frame); +#endif + return SimplePDFPlugin::create(frame); + } #else UNUSED_PARAM(frame); #endif @@ -616,11 +630,27 @@ PassRefPtr<ImmutableArray> WebPage::trackedRepaintRects() return ImmutableArray::adopt(vector); } +static PluginView* pluginViewForFrame(Frame* frame) +{ + if (!frame->document()->isPluginDocument()) + return 0; + + PluginDocument* pluginDocument = static_cast<PluginDocument*>(frame->document()); + PluginView* pluginView = static_cast<PluginView*>(pluginDocument->pluginWidget()); + return pluginView; +} + void WebPage::executeEditingCommand(const String& commandName, const String& argument) { Frame* frame = m_page->focusController()->focusedOrMainFrame(); if (!frame) return; + + if (PluginView* pluginView = pluginViewForFrame(frame)) { + pluginView->handleEditingCommand(commandName, argument); + return; + } + frame->editor()->command(commandName).execute(argument); } @@ -629,6 +659,9 @@ bool WebPage::isEditingCommandEnabled(const String& commandName) Frame* frame = m_page->focusController()->focusedOrMainFrame(); if (!frame) return false; + + if (PluginView* pluginView = pluginViewForFrame(frame)) + return pluginView->isEditingCommandEnabled(commandName); Editor::Command command = frame->editor()->command(commandName); return command.isSupported() && command.isEnabled(); @@ -1069,6 +1102,12 @@ void WebPage::windowScreenDidChange(uint64_t displayID) void WebPage::scalePage(double scale, const IntPoint& origin) { + PluginView* pluginView = pluginViewForFrame(m_page->mainFrame()); + if (pluginView && pluginView->handlesPageScaleFactor()) { + pluginView->setPageScaleFactor(scale, origin); + return; + } + m_page->setPageScaleFactor(scale, origin); for (HashSet<PluginView*>::const_iterator it = m_pluginViews.begin(), end = m_pluginViews.end(); it != end; ++it) @@ -1079,6 +1118,10 @@ void WebPage::scalePage(double scale, const IntPoint& origin) double WebPage::pageScaleFactor() const { + PluginView* pluginView = pluginViewForFrame(m_page->mainFrame()); + if (pluginView && pluginView->handlesPageScaleFactor()) + return pluginView->pageScaleFactor(); + return m_page->pageScaleFactor(); } @@ -1172,6 +1215,19 @@ void WebPage::setGapBetweenPages(double gap) m_page->setPagination(pagination); } +void WebPage::postInjectedBundleMessage(const String& messageName, CoreIPC::ArgumentDecoder* argumentDecoder) +{ + InjectedBundle* injectedBundle = WebProcess::shared().injectedBundle(); + if (!injectedBundle) + return; + + RefPtr<APIObject> messageBody; + if (!argumentDecoder->decode(InjectedBundleUserMessageDecoder(messageBody))) + return; + + injectedBundle->didReceiveMessageToPage(this, messageName, messageBody.get()); +} + void WebPage::installPageOverlay(PassRefPtr<PageOverlay> pageOverlay) { bool shouldFadeIn = true; @@ -1364,21 +1420,11 @@ static bool handleMouseEvent(const WebMouseEvent& mouseEvent, WebPage* page, boo if (isContextClick(platformMouseEvent)) handled = handleContextMenuEvent(platformMouseEvent, page); #endif -#if PLATFORM(GTK) - bool gtkMouseButtonPressHandled = page->handleMousePressedEvent(platformMouseEvent); - handled = handled || gtkMouseButtonPressHandled; -#endif - - return handled; - } - case PlatformEvent::MouseReleased: { - bool handled = frame->eventHandler()->handleMouseReleaseEvent(platformMouseEvent); -#if PLATFORM(QT) - if (!handled) - handled = page->handleMouseReleaseEvent(platformMouseEvent); -#endif return handled; } + case PlatformEvent::MouseReleased: + return frame->eventHandler()->handleMouseReleaseEvent(platformMouseEvent); + case PlatformEvent::MouseMoved: if (onlyUpdateScrollbars) return frame->eventHandler()->passMouseMovedEventToScrollbars(platformMouseEvent); @@ -1520,9 +1566,13 @@ void WebPage::validateCommand(const String& commandName, uint64_t callbackID) int32_t state = 0; Frame* frame = m_page->focusController()->focusedOrMainFrame(); if (frame) { - Editor::Command command = frame->editor()->command(commandName); - state = command.state(); - isEnabled = command.isSupported() && command.isEnabled(); + if (PluginView* pluginView = pluginViewForFrame(frame)) + isEnabled = pluginView->isEditingCommandEnabled(commandName); + else { + Editor::Command command = frame->editor()->command(commandName); + state = command.state(); + isEnabled = command.isSupported() && command.isEnabled(); + } } send(Messages::WebPageProxy::ValidateCommandCallback(commandName, isEnabled, state, callbackID)); @@ -1790,6 +1840,22 @@ void WebPage::didReceivePolicyDecision(uint64_t frameID, uint64_t listenerID, ui frame->didReceivePolicyDecision(listenerID, static_cast<PolicyAction>(policyAction), downloadID); } +void WebPage::didStartPageTransition() +{ + m_drawingArea->setLayerTreeStateIsFrozen(true); +} + +void WebPage::didCompletePageTransition() +{ +#if PLATFORM(QT) + if (m_mainFrame->coreFrame()->view()->delegatesScrolling()) + // Wait until the UI process sent us the visible rect it wants rendered. + send(Messages::WebPageProxy::PageTransitionViewportReady()); + else +#endif + m_drawingArea->setLayerTreeStateIsFrozen(false); +} + void WebPage::show() { send(Messages::WebPageProxy::ShowPage()); @@ -1916,7 +1982,7 @@ void WebPage::getMainResourceDataOfFrame(uint64_t frameID, uint64_t callbackID) { CoreIPC::DataReference dataReference; - RefPtr<SharedBuffer> buffer; + RefPtr<ResourceBuffer> buffer; if (WebFrame* frame = WebProcess::shared().webFrame(frameID)) { if (DocumentLoader* loader = frame->coreFrame()->loader()->documentLoader()) { if ((buffer = loader->mainResourceData())) @@ -2025,6 +2091,10 @@ void WebPage::updatePreferences(const WebPreferencesStore& store) m_scrollingPerformanceLoggingEnabled = store.getBoolValueForKey(WebPreferencesKey::scrollingPerformanceLoggingEnabledKey()); +#if PLATFORM(MAC) + m_pdfPluginEnabled = store.getBoolValueForKey(WebPreferencesKey::pdfPluginEnabledKey()); +#endif + // FIXME: This should be generated from macro expansion for all preferences, // but we currently don't match the naming of WebCore exactly so we are // handrolling the boolean and integer preferences until that is fixed. @@ -2139,11 +2209,14 @@ void WebPage::updatePreferences(const WebPreferencesStore& store) settings->setShouldRespectImageOrientation(store.getBoolValueForKey(WebPreferencesKey::shouldRespectImageOrientationKey())); settings->setStorageBlockingPolicy(static_cast<SecurityOrigin::StorageBlockingPolicy>(store.getUInt32ValueForKey(WebPreferencesKey::storageBlockingPolicyKey()))); + settings->setCookieEnabled(store.getBoolValueForKey(WebPreferencesKey::cookieEnabledKey())); settings->setDiagnosticLoggingEnabled(store.getBoolValueForKey(WebPreferencesKey::diagnosticLoggingEnabledKey())); settings->setScrollingPerformanceLoggingEnabled(m_scrollingPerformanceLoggingEnabled); + settings->setPlugInSnapshottingEnabled(store.getBoolValueForKey(WebPreferencesKey::plugInSnapshottingEnabledKey())); + platformPreferencesDidChange(store); if (m_drawingArea) @@ -2610,12 +2683,16 @@ void WebPage::didChangeScrollOffsetForMainFrame() bool isPinnedToLeftSide = (scrollPosition.x() <= minimumScrollPosition.x()); bool isPinnedToRightSide = (scrollPosition.x() >= maximumScrollPosition.x()); + bool isPinnedToTopSide = (scrollPosition.y() <= minimumScrollPosition.y()); + bool isPinnedToBottomSide = (scrollPosition.y() >= maximumScrollPosition.y()); - if (isPinnedToLeftSide != m_cachedMainFrameIsPinnedToLeftSide || isPinnedToRightSide != m_cachedMainFrameIsPinnedToRightSide) { - send(Messages::WebPageProxy::DidChangeScrollOffsetPinningForMainFrame(isPinnedToLeftSide, isPinnedToRightSide)); + if (isPinnedToLeftSide != m_cachedMainFrameIsPinnedToLeftSide || isPinnedToRightSide != m_cachedMainFrameIsPinnedToRightSide || isPinnedToTopSide != m_cachedMainFrameIsPinnedToTopSide || isPinnedToBottomSide != m_cachedMainFrameIsPinnedToBottomSide) { + send(Messages::WebPageProxy::DidChangeScrollOffsetPinningForMainFrame(isPinnedToLeftSide, isPinnedToRightSide, isPinnedToTopSide, isPinnedToBottomSide)); m_cachedMainFrameIsPinnedToLeftSide = isPinnedToLeftSide; m_cachedMainFrameIsPinnedToRightSide = isPinnedToRightSide; + m_cachedMainFrameIsPinnedToTopSide = isPinnedToTopSide; + m_cachedMainFrameIsPinnedToBottomSide = isPinnedToBottomSide; } } @@ -3178,6 +3255,13 @@ bool WebPage::canHandleRequest(const WebCore::ResourceRequest& request) return platformCanHandleRequest(request); } +#if USE(TILED_BACKING_STORE) +void WebPage::commitPageTransitionViewport() +{ + m_drawingArea->setLayerTreeStateIsFrozen(false); +} +#endif + #if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1070 void WebPage::handleAlternativeTextUIResult(const String& result) { @@ -3307,7 +3391,7 @@ FrameView* WebPage::mainFrameView() const return 0; } -#if ENABLE(PAGE_VISIBILITY_API) +#if ENABLE(PAGE_VISIBILITY_API) || ENABLE(HIDDEN_PAGE_DOM_TIMER_THROTTLING) void WebPage::setVisibilityState(int visibilityState, bool isInitialState) { if (!m_page) @@ -3315,6 +3399,7 @@ void WebPage::setVisibilityState(int visibilityState, bool isInitialState) WebCore::PageVisibilityState state = static_cast<WebCore::PageVisibilityState>(visibilityState); +#if ENABLE(PAGE_VISIBILITY_API) if (m_visibilityState == state) return; @@ -3334,6 +3419,11 @@ void WebPage::setVisibilityState(int visibilityState, bool isInitialState) if (view) view->hide(); } +#endif + +#if ENABLE(HIDDEN_PAGE_DOM_TIMER_THROTTLING) && !ENABLE(PAGE_VISIBILITY_API) + m_page->setVisibilityState(state, isInitialState); +#endif } #endif @@ -3348,4 +3438,24 @@ void WebPage::setScrollingPerformanceLoggingEnabled(bool enabled) frameView->setScrollingPerformanceLoggingEnabled(enabled); } +static bool canPluginHandleResponse(const ResourceResponse& response) +{ + String pluginPath; + bool blocked; + + if (!WebProcess::shared().connection()->sendSync(Messages::WebProcessProxy::GetPluginPath(response.mimeType(), response.url().string()), Messages::WebProcessProxy::GetPluginPath::Reply(pluginPath, blocked), 0)) + return false; + + return !blocked && !pluginPath.isEmpty(); +} + +bool WebPage::shouldUseCustomRepresentationForResponse(const ResourceResponse& response) const +{ + if (!m_mimeTypesWithCustomRepresentations.contains(response.mimeType())) + return false; + + // If a plug-in exists that claims to support this response, it should take precedence over the custom representation. + return !canPluginHandleResponse(response); +} + } // namespace WebKit diff --git a/Source/WebKit2/WebProcess/WebPage/WebPage.h b/Source/WebKit2/WebProcess/WebPage/WebPage.h index fadd3bd7f..0a5f2bbb7 100644 --- a/Source/WebKit2/WebProcess/WebPage/WebPage.h +++ b/Source/WebKit2/WebProcess/WebPage/WebPage.h @@ -113,6 +113,7 @@ namespace WebCore { class Page; class PrintContext; class Range; + class ResourceResponse; class ResourceRequest; class SharedBuffer; class VisibleSelection; @@ -213,6 +214,8 @@ public: bool handleEditingKeyboardEvent(WebCore::KeyboardEvent*); #endif + void didStartPageTransition(); + void didCompletePageTransition(); void show(); String userAgent() const { return m_userAgent; } WebCore::IntRect windowResizerRect() const; @@ -317,6 +320,8 @@ public: void setPageLength(double); void setGapBetweenPages(double); + void postInjectedBundleMessage(const String& messageName, CoreIPC::ArgumentDecoder*); + bool drawsBackground() const { return m_drawsBackground; } bool drawsTransparentBackground() const { return m_drawsTransparentBackground; } @@ -415,6 +420,10 @@ public: void setThemePath(const String&); #endif +#if USE(TILED_BACKING_STORE) + void commitPageTransitionViewport(); +#endif + #if PLATFORM(QT) void setComposition(const String& text, Vector<WebCore::CompositionUnderline> underlines, uint64_t selectionStart, uint64_t selectionEnd, uint64_t replacementRangeStart, uint64_t replacementRangeEnd); void confirmComposition(const String& text, int64_t selectionStart, int64_t selectionLength); @@ -457,17 +466,11 @@ public: #elif PLATFORM(GTK) void updateAccessibilityTree(); - bool handleMousePressedEvent(const WebCore::PlatformMouseEvent&); #if USE(TEXTURE_MAPPER_GL) void setAcceleratedCompositingWindowId(int64_t nativeWindowHandle); - void invalidateWidget(); #endif #endif -#if PLATFORM(QT) - bool handleMouseReleaseEvent(const WebCore::PlatformMouseEvent&); -#endif - void setCompositionForTesting(const String& compositionString, uint64_t from, uint64_t length); bool hasCompositionForTesting(); void confirmCompositionForTesting(const String& compositionString); @@ -571,7 +574,7 @@ public: bool willGoToBackForwardItemCallbackEnabled() const { return m_willGoToBackForwardItemCallbackEnabled; } -#if ENABLE(PAGE_VISIBILITY_API) +#if ENABLE(PAGE_VISIBILITY_API) || ENABLE(HIDDEN_PAGE_DOM_TIMER_THROTTLING) void setVisibilityState(int visibilityState, bool isInitialState); #endif @@ -579,6 +582,8 @@ public: uint64_t nativeWindowHandle() { return m_nativeWindowHandle; } #endif + bool shouldUseCustomRepresentationForResponse(const WebCore::ResourceResponse&) const; + bool asynchronousPluginInitializationEnabled() const { return m_asynchronousPluginInitializationEnabled; } void setAsynchronousPluginInitializationEnabled(bool enabled) { m_asynchronousPluginInitializationEnabled = enabled; } bool asynchronousPluginInitializationEnabledForAllPlugins() const { return m_asynchronousPluginInitializationEnabledForAllPlugins; } @@ -591,6 +596,15 @@ public: bool scrollingPerformanceLoggingEnabled() const { return m_scrollingPerformanceLoggingEnabled; } void setScrollingPerformanceLoggingEnabled(bool); +#if PLATFORM(MAC) + bool pdfPluginEnabled() const { return m_pdfPluginEnabled; } + void setPDFPluginEnabled(bool enabled) { m_pdfPluginEnabled = enabled; } +#endif + +#if PLATFORM(MAC) + static HashSet<String, CaseFoldingHash> pdfAndPostScriptMIMETypes(); +#endif + private: WebPage(uint64_t pageID, const WebPageCreationParameters&); @@ -794,6 +808,8 @@ private: bool m_scrollingPerformanceLoggingEnabled; #if PLATFORM(MAC) + bool m_pdfPluginEnabled; + // Whether the containing window is visible or not. bool m_windowIsVisible; @@ -822,7 +838,7 @@ private: RefPtr<WebCore::Node> m_gestureTargetNode; #elif PLATFORM(GTK) - WebPageAccessibilityObject* m_accessibilityObject; + GRefPtr<WebPageAccessibilityObject> m_accessibilityObject; #if USE(TEXTURE_MAPPER_GL) // Our view's window in the UI process. @@ -900,6 +916,8 @@ private: bool m_cachedMainFrameIsPinnedToLeftSide; bool m_cachedMainFrameIsPinnedToRightSide; + bool m_cachedMainFrameIsPinnedToTopSide; + bool m_cachedMainFrameIsPinnedToBottomSide; bool m_canShortCircuitHorizontalWheelEvents; unsigned m_numWheelEventHandlers; @@ -921,6 +939,8 @@ private: WebCore::PageVisibilityState m_visibilityState; #endif WebInspectorClient* m_inspectorClient; + + HashSet<String, CaseFoldingHash> m_mimeTypesWithCustomRepresentations; }; } // namespace WebKit diff --git a/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in b/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in index f113fc24e..e891890ac 100644 --- a/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in +++ b/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in @@ -46,8 +46,8 @@ messages -> WebPage { #endif #if ENABLE(INPUT_TYPE_COLOR) - DidEndColorChooser(); - DidChooseColor(WebCore::Color color); + DidEndColorChooser() + DidChooseColor(WebCore::Color color) #endif #if ENABLE(CONTEXT_MENUS) @@ -62,7 +62,7 @@ messages -> WebPage { GoToBackForwardItem(uint64_t backForwardItemID) TryRestoreScrollPosition() LoadHTMLString(WTF::String htmlString, WTF::String baseURL) - LoadAlternateHTMLString(WTF::String htmlString, WTF::String baseURL, WTF::String unreachableURL); + LoadAlternateHTMLString(WTF::String htmlString, WTF::String baseURL, WTF::String unreachableURL) LoadPlainTextString(WTF::String string) LoadWebArchiveData(CoreIPC::DataReference webArchiveData) LoadURL(WTF::String url, WebKit::SandboxExtension::Handle sandboxExtensionHandle) @@ -142,10 +142,12 @@ messages -> WebPage { ListenForLayoutMilestones(uint32_t milestones) SetSuppressScrollbarAnimations(bool suppressAnimations) - SetPaginationMode(uint32_t mode); - SetPaginationBehavesLikeColumns(bool behavesLikeColumns); - SetPageLength(double pageLength); - SetGapBetweenPages(double gap); + SetPaginationMode(uint32_t mode) + SetPaginationBehavesLikeColumns(bool behavesLikeColumns) + SetPageLength(double pageLength) + SetGapBetweenPages(double gap) + + PostInjectedBundleMessage(WTF::String messageName, WebKit::WebContextUserMessageEncoder messageBody) Variadic # Find. FindString(WTF::String string, uint32_t findOptions, unsigned maxMatchCount) @@ -167,19 +169,19 @@ messages -> WebPage { #endif # Popup menu. - DidChangeSelectedIndexForActivePopupMenu(int32_t newIndex); - SetTextForActivePopupMenu(int32_t index); -#if PLATFORM(GTK) - FailedToShowPopupMenu(); + DidChangeSelectedIndexForActivePopupMenu(int32_t newIndex) + SetTextForActivePopupMenu(int32_t index) +#if PLATFORM(GTK) + FailedToShowPopupMenu() #endif #if PLATFORM(QT) - HidePopupMenu(); - SelectedIndex(int32_t newIndex); + HidePopupMenu() + SelectedIndex(int32_t newIndex) #endif #if ENABLE(CONTEXT_MENUS) # Context menu. - DidSelectItemFromActiveContextMenu(WebKit::WebContextMenuItemData menuItem); + DidSelectItemFromActiveContextMenu(WebKit::WebContextMenuItemData menuItem) #endif # Open panel. @@ -193,11 +195,11 @@ messages -> WebPage { AdvanceToNextMisspelling(bool startBeforeSelection) ChangeSpellingToWord(WTF::String word) #if USE(APPKIT) - UppercaseWord(); - LowercaseWord(); - CapitalizeWord(); + UppercaseWord() + LowercaseWord() + CapitalizeWord() - SetSmartInsertDeleteEnabled(bool isSmartInsertDeleteEnabled); + SetSmartInsertDeleteEnabled(bool isSmartInsertDeleteEnabled) #endif #if ENABLE(GEOLOCATION) @@ -212,7 +214,7 @@ messages -> WebPage { # Printing. BeginPrinting(uint64_t frameID, WebKit::PrintInfo printInfo) - EndPrinting(); + EndPrinting() ComputePagesForPrinting(uint64_t frameID, WebKit::PrintInfo printInfo, uint64_t callbackID) #if PLATFORM(MAC) || PLATFORM(WIN) DrawRectToPDF(uint64_t frameID, WebKit::PrintInfo printInfo, WebCore::IntRect rect, uint64_t callbackID) @@ -236,13 +238,17 @@ messages -> WebPage { # Web Intents #if ENABLE(WEB_INTENTS) - DeliverIntentToFrame(uint64_t frameID, WebKit::IntentData intentData); + DeliverIntentToFrame(uint64_t frameID, WebKit::IntentData intentData) #endif #if PLATFORM(EFL) SetThemePath(WTF::String themePath) #endif +#if USE(TILED_BACKING_STORE) + CommitPageTransitionViewport() +#endif + #if PLATFORM(QT) SetComposition(WTF::String text, WTF::Vector<WebCore::CompositionUnderline> underlines, uint64_t selectionStart, uint64_t selectionEnd, uint64_t replacementRangeStart, uint64_t replacementRangeEnd) ConfirmComposition(WTF::String text, int64_t selectionStart, int64_t selectionLength) @@ -294,8 +300,8 @@ messages -> WebPage { HandleAlternativeTextUIResult(String result) #endif -#if ENABLE(PAGE_VISIBILITY_API) - SetVisibilityState(int visibilityState, bool isInitialState); +#if ENABLE(PAGE_VISIBILITY_API) || ENABLE(HIDDEN_PAGE_DOM_TIMER_THROTTLING) + SetVisibilityState(int visibilityState, bool isInitialState) #endif #if PLATFORM(GTK) && USE(TEXTURE_MAPPER_GL) diff --git a/Source/WebKit2/WebProcess/WebPage/WebPageGroupProxy.cpp b/Source/WebKit2/WebProcess/WebPage/WebPageGroupProxy.cpp index 3bd20c8a6..25ef3296b 100644 --- a/Source/WebKit2/WebProcess/WebPage/WebPageGroupProxy.cpp +++ b/Source/WebKit2/WebProcess/WebPage/WebPageGroupProxy.cpp @@ -28,6 +28,8 @@ #include "WebProcess.h" #include "InjectedBundle.h" +#include <WebCore/DOMWrapperWorld.h> +#include <WebCore/PageGroup.h> namespace WebKit { @@ -44,5 +46,45 @@ PassRefPtr<WebPageGroupProxy> WebPageGroupProxy::create(const WebPageGroupData& WebPageGroupProxy::~WebPageGroupProxy() { } + +void WebPageGroupProxy::didReceiveMessage(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::ArgumentDecoder* arguments) +{ + didReceiveWebPageGroupProxyMessage(connection, messageID, arguments); +} + +WebPageGroupProxy::WebPageGroupProxy(const WebPageGroupData& data) + : m_data(data) + , m_pageGroup(WebCore::PageGroup::pageGroup(m_data.identifer)) +{ + for (size_t i = 0; i < data.userStyleSheets.size(); ++i) + addUserStyleSheet(data.userStyleSheets[i]); + for (size_t i = 0; i < data.userScripts.size(); ++i) + addUserScript(data.userScripts[i]); +} + +void WebPageGroupProxy::addUserStyleSheet(const WebCore::UserStyleSheet& userStyleSheet) +{ + m_pageGroup->addUserStyleSheetToWorld(WebCore::mainThreadNormalWorld(), userStyleSheet.source(), userStyleSheet.url(), userStyleSheet.whitelist(), userStyleSheet.blacklist(), userStyleSheet.injectedFrames(), userStyleSheet.level()); +} + +void WebPageGroupProxy::addUserScript(const WebCore::UserScript& userScript) +{ + m_pageGroup->addUserScriptToWorld(WebCore::mainThreadNormalWorld(), userScript.source(), userScript.url(), userScript.whitelist(), userScript.blacklist(), userScript.injectionTime(), userScript.injectedFrames()); +} + +void WebPageGroupProxy::removeAllUserStyleSheets() +{ + m_pageGroup->removeUserStyleSheetsFromWorld(WebCore::mainThreadNormalWorld()); +} + +void WebPageGroupProxy::removeAllUserScripts() +{ + m_pageGroup->removeUserStyleSheetsFromWorld(WebCore::mainThreadNormalWorld()); +} + +void WebPageGroupProxy::removeAllUserContent() +{ + m_pageGroup->removeAllUserContent(); +} } // namespace WebKit diff --git a/Source/WebKit2/WebProcess/WebPage/WebPageGroupProxy.h b/Source/WebKit2/WebProcess/WebPage/WebPageGroupProxy.h index 91e6c5cfd..cbb079421 100644 --- a/Source/WebKit2/WebProcess/WebPage/WebPageGroupProxy.h +++ b/Source/WebKit2/WebProcess/WebPage/WebPageGroupProxy.h @@ -30,6 +30,16 @@ #include "WebPageGroupData.h" #include <wtf/PassRefPtr.h> +namespace CoreIPC { +class ArgumentDecoder; +class Connection; +class MessageID; +} + +namespace WebCore { +class PageGroup; +} + namespace WebKit { class WebPageGroupProxy : public APIObject { @@ -43,16 +53,24 @@ public: uint64_t pageGroupID() const { return m_data.pageGroupID; } bool isVisibleToInjectedBundle() const { return m_data.visibleToInjectedBundle; } bool isVisibleToHistoryClient() const { return m_data.visibleToHistoryClient; } + + void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); private: - WebPageGroupProxy(const WebPageGroupData& data) - : m_data(data) - { - } + WebPageGroupProxy(const WebPageGroupData&); virtual Type type() const { return APIType; } + + void didReceiveWebPageGroupProxyMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); + + void addUserStyleSheet(const WebCore::UserStyleSheet&); + void addUserScript(const WebCore::UserScript&); + void removeAllUserStyleSheets(); + void removeAllUserScripts(); + void removeAllUserContent(); WebPageGroupData m_data; + WebCore::PageGroup* m_pageGroup; }; } // namespace WebKit diff --git a/Source/WebKit2/WebProcess/WebPage/WebPageGroupProxy.messages.in b/Source/WebKit2/WebProcess/WebPage/WebPageGroupProxy.messages.in new file mode 100644 index 000000000..8ba527a3d --- /dev/null +++ b/Source/WebKit2/WebProcess/WebPage/WebPageGroupProxy.messages.in @@ -0,0 +1,29 @@ +# Copyright (C) 2012 Apple Inc. 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. + +messages -> WebPageGroupProxy { + AddUserStyleSheet(WebCore::UserStyleSheet userStyleSheet); + AddUserScript(WebCore::UserScript userScript); + RemoveAllUserStyleSheets(); + RemoveAllUserScripts(); + RemoveAllUserContent(); +} diff --git a/Source/WebKit2/WebProcess/WebPage/ca/LayerTreeHostCA.cpp b/Source/WebKit2/WebProcess/WebPage/ca/LayerTreeHostCA.cpp index de3a2e38e..0872f4355 100644 --- a/Source/WebKit2/WebProcess/WebPage/ca/LayerTreeHostCA.cpp +++ b/Source/WebKit2/WebProcess/WebPage/ca/LayerTreeHostCA.cpp @@ -51,7 +51,7 @@ LayerTreeHostCA::LayerTreeHostCA(WebPage* webPage) void LayerTreeHostCA::initialize() { // Create a root layer. - m_rootLayer = GraphicsLayer::create(this); + m_rootLayer = GraphicsLayer::create(graphicsLayerFactory(), this); #ifndef NDEBUG m_rootLayer->setName("LayerTreeHost root layer"); #endif @@ -59,7 +59,7 @@ void LayerTreeHostCA::initialize() m_rootLayer->setSize(m_webPage->size()); static_cast<GraphicsLayerCA*>(m_rootLayer.get())->platformCALayer()->setGeometryFlipped(true); - m_nonCompositedContentLayer = GraphicsLayer::create(this); + m_nonCompositedContentLayer = GraphicsLayer::create(graphicsLayerFactory(), this); static_cast<GraphicsLayerCA*>(m_nonCompositedContentLayer.get())->setAllowTiledLayer(false); #ifndef NDEBUG m_nonCompositedContentLayer->setName("LayerTreeHost non-composited content"); @@ -186,7 +186,7 @@ void LayerTreeHostCA::notifyAnimationStarted(const WebCore::GraphicsLayer*, doub { } -void LayerTreeHostCA::notifySyncRequired(const WebCore::GraphicsLayer*) +void LayerTreeHostCA::notifyFlushRequired(const WebCore::GraphicsLayer*) { } @@ -245,19 +245,19 @@ void LayerTreeHostCA::didPerformScheduledLayerFlush() bool LayerTreeHostCA::flushPendingLayerChanges() { - m_rootLayer->syncCompositingStateForThisLayerOnly(); - m_nonCompositedContentLayer->syncCompositingStateForThisLayerOnly(); + m_rootLayer->flushCompositingStateForThisLayerOnly(); + m_nonCompositedContentLayer->flushCompositingStateForThisLayerOnly(); if (m_pageOverlayLayer) - m_pageOverlayLayer->syncCompositingStateForThisLayerOnly(); + m_pageOverlayLayer->flushCompositingStateForThisLayerOnly(); - return m_webPage->corePage()->mainFrame()->view()->syncCompositingStateIncludingSubframes(); + return m_webPage->corePage()->mainFrame()->view()->flushCompositingStateIncludingSubframes(); } void LayerTreeHostCA::createPageOverlayLayer() { ASSERT(!m_pageOverlayLayer); - m_pageOverlayLayer = GraphicsLayer::create(this); + m_pageOverlayLayer = GraphicsLayer::create(graphicsLayerFactory(), this); #ifndef NDEBUG m_pageOverlayLayer->setName("LayerTreeHost page overlay content"); #endif diff --git a/Source/WebKit2/WebProcess/WebPage/ca/LayerTreeHostCA.h b/Source/WebKit2/WebProcess/WebPage/ca/LayerTreeHostCA.h index 92ae72674..9cb8ca6a5 100644 --- a/Source/WebKit2/WebProcess/WebPage/ca/LayerTreeHostCA.h +++ b/Source/WebKit2/WebProcess/WebPage/ca/LayerTreeHostCA.h @@ -74,7 +74,7 @@ private: // GraphicsLayerClient virtual void notifyAnimationStarted(const WebCore::GraphicsLayer*, double time); - virtual void notifySyncRequired(const WebCore::GraphicsLayer*); + virtual void notifyFlushRequired(const WebCore::GraphicsLayer*); virtual void paintContents(const WebCore::GraphicsLayer*, WebCore::GraphicsContext&, WebCore::GraphicsLayerPaintingPhase, const WebCore::IntRect& clipRect); virtual bool showDebugBorders(const WebCore::GraphicsLayer*) const; virtual bool showRepaintCounter(const WebCore::GraphicsLayer*) const; diff --git a/Source/WebKit2/WebProcess/WebPage/gtk/LayerTreeHostGtk.cpp b/Source/WebKit2/WebProcess/WebPage/gtk/LayerTreeHostGtk.cpp index 098a4c716..af2ae89bf 100644 --- a/Source/WebKit2/WebProcess/WebPage/gtk/LayerTreeHostGtk.cpp +++ b/Source/WebKit2/WebProcess/WebPage/gtk/LayerTreeHostGtk.cpp @@ -36,7 +36,7 @@ #include <GL/gl.h> #include <WebCore/Frame.h> #include <WebCore/FrameView.h> -#include <WebCore/GLContextGLX.h> +#include <WebCore/GLContext.h> #include <WebCore/Page.h> #include <WebCore/Settings.h> @@ -84,12 +84,12 @@ GLContext* LayerTreeHostGtk::glContext() void LayerTreeHostGtk::initialize() { - m_rootLayer = GraphicsLayer::create(this); + m_rootLayer = GraphicsLayer::create(graphicsLayerFactory(), this); m_rootLayer->setDrawsContent(false); m_rootLayer->setSize(m_webPage->size()); // The non-composited contents are a child of the root layer. - m_nonCompositedContentLayer = GraphicsLayer::create(this); + m_nonCompositedContentLayer = GraphicsLayer::create(graphicsLayerFactory(), this); m_nonCompositedContentLayer->setDrawsContent(true); m_nonCompositedContentLayer->setContentsOpaque(m_webPage->drawsBackground() && !m_webPage->drawsTransparentBackground()); m_nonCompositedContentLayer->setSize(m_webPage->size()); @@ -241,7 +241,7 @@ void LayerTreeHostGtk::notifyAnimationStarted(const WebCore::GraphicsLayer*, dou { } -void LayerTreeHostGtk::notifySyncRequired(const WebCore::GraphicsLayer*) +void LayerTreeHostGtk::notifyFlushRequired(const WebCore::GraphicsLayer*) { } @@ -287,12 +287,12 @@ void LayerTreeHostGtk::layerFlushTimerFired() bool LayerTreeHostGtk::flushPendingLayerChanges() { - m_rootLayer->syncCompositingStateForThisLayerOnly(); - m_nonCompositedContentLayer->syncCompositingStateForThisLayerOnly(); + m_rootLayer->flushCompositingStateForThisLayerOnly(); + m_nonCompositedContentLayer->flushCompositingStateForThisLayerOnly(); if (m_pageOverlayLayer) - m_pageOverlayLayer->syncCompositingStateForThisLayerOnly(); + m_pageOverlayLayer->flushCompositingStateForThisLayerOnly(); - return m_webPage->corePage()->mainFrame()->view()->syncCompositingStateIncludingSubframes(); + return m_webPage->corePage()->mainFrame()->view()->flushCompositingStateIncludingSubframes(); } void LayerTreeHostGtk::compositeLayersToContext(CompositePurpose purpose) @@ -317,7 +317,6 @@ void LayerTreeHostGtk::compositeLayersToContext(CompositePurpose purpose) m_textureMapper->endPainting(); context->swapBuffers(); - m_webPage->invalidateWidget(); } void LayerTreeHostGtk::flushAndRenderLayers() @@ -351,7 +350,7 @@ void LayerTreeHostGtk::createPageOverlayLayer() { ASSERT(!m_pageOverlayLayer); - m_pageOverlayLayer = GraphicsLayer::create(this); + m_pageOverlayLayer = GraphicsLayer::create(graphicsLayerFactory(), this); #ifndef NDEBUG m_pageOverlayLayer->setName("LayerTreeHost page overlay content"); #endif diff --git a/Source/WebKit2/WebProcess/WebPage/gtk/LayerTreeHostGtk.h b/Source/WebKit2/WebProcess/WebPage/gtk/LayerTreeHostGtk.h index d9a816c2e..61b9fa671 100644 --- a/Source/WebKit2/WebProcess/WebPage/gtk/LayerTreeHostGtk.h +++ b/Source/WebKit2/WebProcess/WebPage/gtk/LayerTreeHostGtk.h @@ -75,7 +75,7 @@ private: // GraphicsLayerClient virtual void notifyAnimationStarted(const WebCore::GraphicsLayer*, double time); - virtual void notifySyncRequired(const WebCore::GraphicsLayer*); + virtual void notifyFlushRequired(const WebCore::GraphicsLayer*); virtual void paintContents(const WebCore::GraphicsLayer*, WebCore::GraphicsContext&, WebCore::GraphicsLayerPaintingPhase, const WebCore::IntRect& clipRect); virtual bool showDebugBorders(const WebCore::GraphicsLayer*) const; virtual bool showRepaintCounter(const WebCore::GraphicsLayer*) const; diff --git a/Source/WebKit2/WebProcess/WebPage/gtk/WebPageGtk.cpp b/Source/WebKit2/WebProcess/WebPage/gtk/WebPageGtk.cpp index d9dde81a2..8b0db6ecc 100644 --- a/Source/WebKit2/WebProcess/WebPage/gtk/WebPageGtk.cpp +++ b/Source/WebKit2/WebProcess/WebPage/gtk/WebPageGtk.cpp @@ -52,8 +52,8 @@ void WebPage::platformInitialize() // entry point to the Web process, and send a message to the UI // process to connect the two worlds through the accessibility // object there specifically placed for that purpose (the socket). - m_accessibilityObject = webPageAccessibilityObjectNew(this); - GOwnPtr<gchar> plugID(atk_plug_get_id(ATK_PLUG(m_accessibilityObject))); + m_accessibilityObject = adoptGRef(webPageAccessibilityObjectNew(this)); + GOwnPtr<gchar> plugID(atk_plug_get_id(ATK_PLUG(m_accessibilityObject.get()))); send(Messages::WebPageProxy::BindAccessibilityTree(String(plugID.get()))); #if USE(TEXTURE_MAPPER_GL) @@ -66,7 +66,7 @@ void WebPage::updateAccessibilityTree() if (!m_accessibilityObject) return; - webPageAccessibilityObjectRefresh(m_accessibilityObject); + webPageAccessibilityObjectRefresh(m_accessibilityObject.get()); } void WebPage::platformPreferencesDidChange(const WebPreferencesStore&) @@ -160,36 +160,6 @@ void WebPage::setAcceleratedCompositingWindowId(int64_t nativeWindowHandle) { m_nativeWindowHandle = nativeWindowHandle; } - -void WebPage::invalidateWidget() -{ - send(Messages::WebPageProxy::InvalidateWidget()); -} -#endif - -bool WebPage::handleMousePressedEvent(const PlatformMouseEvent& platformMouseEvent) -{ - bool returnValue = false; - if (platformMouseEvent.button() != WebCore::MiddleButton) - return returnValue; - -#if PLATFORM(X11) - Frame* frame = m_page->focusController()->focusedOrMainFrame(); - if (!frame) - return returnValue; - - PasteboardHelper* pasteboardHelper = PasteboardHelper::defaultPasteboardHelper(); - bool wasUsingPrimary = pasteboardHelper->usePrimarySelectionClipboard(); - pasteboardHelper->setUsePrimarySelectionClipboard(true); - - Editor* editor = frame->editor(); - returnValue = editor->canPaste() || editor->canDHTMLPaste(); - editor->paste(); - - pasteboardHelper->setUsePrimarySelectionClipboard(wasUsingPrimary); #endif - return returnValue; -} - } // namespace WebKit diff --git a/Source/WebKit2/WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp b/Source/WebKit2/WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp index 29f89324e..0f07d74bc 100644 --- a/Source/WebKit2/WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp +++ b/Source/WebKit2/WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp @@ -697,6 +697,7 @@ void WebPrintOperationGtk::print(cairo_surface_t* surface, double xDPI, double y OwnPtr<PrintPagesData> data = adoptPtr(new PrintPagesData(this)); if (!data->isValid) { + cairo_surface_finish(surface); printDone(invalidPageRangeToPrint(m_printContext)); return; } diff --git a/Source/WebKit2/WebProcess/WebPage/gtk/WebPrintOperationGtk.h b/Source/WebKit2/WebProcess/WebPage/gtk/WebPrintOperationGtk.h index 3d1f1086d..39593052e 100644 --- a/Source/WebKit2/WebProcess/WebPage/gtk/WebPrintOperationGtk.h +++ b/Source/WebKit2/WebProcess/WebPage/gtk/WebPrintOperationGtk.h @@ -48,7 +48,7 @@ class WebPage; class WebPrintOperationGtk : public RefCounted<WebPrintOperationGtk> { public: static PassRefPtr<WebPrintOperationGtk> create(WebPage*, const PrintInfo&); - ~WebPrintOperationGtk(); + virtual ~WebPrintOperationGtk(); WebCore::PrintContext* printContext() const { return m_printContext; } GtkPrintSettings* printSettings() const { return m_printSettings.get(); } diff --git a/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h b/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h index 22599edad..f5048a985 100644 --- a/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h +++ b/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h @@ -59,7 +59,7 @@ private: virtual void setLayerTreeStateIsFrozen(bool) OVERRIDE; virtual bool layerTreeStateIsFrozen() const OVERRIDE; virtual void setRootCompositingLayer(WebCore::GraphicsLayer*) OVERRIDE; - virtual void scheduleCompositingLayerSync() OVERRIDE; + virtual void scheduleCompositingLayerFlush() OVERRIDE; virtual void didInstallPageOverlay() OVERRIDE; virtual void didUninstallPageOverlay() OVERRIDE; @@ -70,7 +70,7 @@ private: // WebCore::GraphicsLayerClient virtual void notifyAnimationStarted(const WebCore::GraphicsLayer*, double time) OVERRIDE; - virtual void notifySyncRequired(const WebCore::GraphicsLayer*) OVERRIDE; + virtual void notifyFlushRequired(const WebCore::GraphicsLayer*) OVERRIDE; virtual void paintContents(const WebCore::GraphicsLayer*, WebCore::GraphicsContext&, WebCore::GraphicsLayerPaintingPhase, const WebCore::IntRect& clipRect) OVERRIDE; virtual bool showDebugBorders(const WebCore::GraphicsLayer*) const OVERRIDE; virtual bool showRepaintCounter(const WebCore::GraphicsLayer*) const OVERRIDE; diff --git a/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm b/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm index 43f6440a8..fcd72cac9 100644 --- a/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm +++ b/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm @@ -43,7 +43,6 @@ #import <WebCore/GraphicsContext.h> #import <WebCore/GraphicsLayerCA.h> #import <WebCore/Page.h> -#import <WebCore/RenderLayerCompositor.h> #import <WebCore/RenderView.h> #import <WebCore/ScrollingCoordinator.h> #import <WebCore/ScrollingThread.h> @@ -174,7 +173,7 @@ bool TiledCoreAnimationDrawingArea::layerTreeStateIsFrozen() const return m_layerTreeStateIsFrozen; } -void TiledCoreAnimationDrawingArea::scheduleCompositingLayerSync() +void TiledCoreAnimationDrawingArea::scheduleCompositingLayerFlush() { m_layerFlushScheduler.schedule(); } @@ -184,7 +183,7 @@ void TiledCoreAnimationDrawingArea::didInstallPageOverlay() m_webPage->corePage()->scrollingCoordinator()->setForceMainThreadScrollLayerPositionUpdates(true); createPageOverlayLayer(); - scheduleCompositingLayerSync(); + scheduleCompositingLayerFlush(); } void TiledCoreAnimationDrawingArea::didUninstallPageOverlay() @@ -193,14 +192,14 @@ void TiledCoreAnimationDrawingArea::didUninstallPageOverlay() page->scrollingCoordinator()->setForceMainThreadScrollLayerPositionUpdates(false); destroyPageOverlayLayer(); - scheduleCompositingLayerSync(); + scheduleCompositingLayerFlush(); } void TiledCoreAnimationDrawingArea::setPageOverlayNeedsDisplay(const IntRect& rect) { ASSERT(m_pageOverlayLayer); m_pageOverlayLayer->setNeedsDisplayInRect(rect); - scheduleCompositingLayerSync(); + scheduleCompositingLayerFlush(); } void TiledCoreAnimationDrawingArea::updatePreferences(const WebPreferencesStore&) @@ -263,7 +262,7 @@ void TiledCoreAnimationDrawingArea::notifyAnimationStarted(const GraphicsLayer*, { } -void TiledCoreAnimationDrawingArea::notifySyncRequired(const GraphicsLayer*) +void TiledCoreAnimationDrawingArea::notifyFlushRequired(const GraphicsLayer*) { } @@ -305,10 +304,10 @@ bool TiledCoreAnimationDrawingArea::flushLayers() if (m_pageOverlayLayer) { m_pageOverlayLayer->setNeedsDisplay(); - m_pageOverlayLayer->syncCompositingStateForThisLayerOnly(); + m_pageOverlayLayer->flushCompositingStateForThisLayerOnly(); } - bool returnValue = m_webPage->corePage()->mainFrame()->view()->syncCompositingStateIncludingSubframes(); + bool returnValue = m_webPage->corePage()->mainFrame()->view()->flushCompositingStateIncludingSubframes(); [pool drain]; return returnValue; @@ -442,7 +441,7 @@ void TiledCoreAnimationDrawingArea::createPageOverlayLayer() { ASSERT(!m_pageOverlayLayer); - m_pageOverlayLayer = GraphicsLayer::create(this); + m_pageOverlayLayer = GraphicsLayer::create(graphicsLayerFactory(), this); #ifndef NDEBUG m_pageOverlayLayer->setName("page overlay content"); #endif diff --git a/Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm b/Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm index c2f016537..2acf85b0e 100644 --- a/Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm +++ b/Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm @@ -94,6 +94,14 @@ void WebPage::platformPreferencesDidChange(const WebPreferencesStore& store) { if (WebInspector* inspector = this->inspector()) inspector->setInspectorUsesWebKitUserInterface(store.getBoolValueForKey(WebPreferencesKey::inspectorUsesWebKitUserInterfaceKey())); + + BOOL omitPDFSupport = [[NSUserDefaults standardUserDefaults] boolForKey:@"WebKitOmitPDFSupport"]; + if (!pdfPluginEnabled() && !omitPDFSupport) { + // We want to use a PDF view in the UI process for PDF MIME types. + HashSet<String, CaseFoldingHash> mimeTypes = pdfAndPostScriptMIMETypes(); + for (HashSet<String, CaseFoldingHash>::iterator it = mimeTypes.begin(); it != mimeTypes.end(); ++it) + m_mimeTypesWithCustomRepresentations.add(*it); + } } typedef HashMap<String, String> SelectorNameMap; @@ -121,7 +129,7 @@ static String commandNameForSelectorName(const String& selectorName) static const SelectorNameMap* exceptionMap = createSelectorExceptionMap(); SelectorNameMap::const_iterator it = exceptionMap->find(selectorName); if (it != exceptionMap->end()) - return it->second; + return it->value; // Remove the trailing colon. // No need to capitalize the command name since Editor command names are not case sensitive. @@ -866,4 +874,16 @@ void WebPage::drawPagesToPDFFromPDFDocument(CGContextRef context, PDFDocument *p } } +// FIXME: This is not the ideal place for this function (and now it's duplicated here and in WebContextMac). +HashSet<String, CaseFoldingHash> WebPage::pdfAndPostScriptMIMETypes() +{ + HashSet<String, CaseFoldingHash> mimeTypes; + + mimeTypes.add("application/pdf"); + mimeTypes.add("application/postscript"); + mimeTypes.add("text/pdf"); + + return mimeTypes; +} + } // namespace WebKit diff --git a/Source/WebKit2/WebProcess/WebPage/qt/WebPageQt.cpp b/Source/WebKit2/WebProcess/WebPage/qt/WebPageQt.cpp index e3f6034df..721be4603 100644 --- a/Source/WebKit2/WebProcess/WebPage/qt/WebPageQt.cpp +++ b/Source/WebKit2/WebProcess/WebPage/qt/WebPageQt.cpp @@ -423,7 +423,7 @@ void WebPage::setUserScripts(const Vector<String>& scripts) PageGroup* pageGroup = PageGroup::pageGroup(this->pageGroup()->identifier()); pageGroup->removeUserScriptsFromWorld(mainThreadNormalWorld()); for (unsigned i = 0; i < scripts.size(); ++i) - pageGroup->addUserScriptToWorld(mainThreadNormalWorld(), scripts.at(i), KURL(), nullptr, nullptr, InjectAtDocumentEnd, InjectInTopFrameOnly); + pageGroup->addUserScriptToWorld(mainThreadNormalWorld(), scripts.at(i), KURL(), Vector<String>(), Vector<String>(), InjectAtDocumentEnd, InjectInTopFrameOnly); } void WebPage::selectedIndex(int32_t newIndex) @@ -440,21 +440,4 @@ void WebPage::hidePopupMenu() m_activePopupMenu = 0; } -bool WebPage::handleMouseReleaseEvent(const PlatformMouseEvent& platformMouseEvent) -{ -#ifndef QT_NO_CLIPBOARD - if (platformMouseEvent.button() != WebCore::MiddleButton) - return false; - - if (qApp->clipboard()->supportsSelection()) { - WebCore::Frame* focusFrame = m_page->focusController()->focusedOrMainFrame(); - if (focusFrame) { - focusFrame->editor()->command(AtomicString("PasteGlobalSelection")).execute(); - return true; - } - } -#endif - return false; -} - } // namespace WebKit diff --git a/Source/WebKit2/WebProcess/WebProcess.cpp b/Source/WebKit2/WebProcess/WebProcess.cpp index de1832459..6f67ed022 100644 --- a/Source/WebKit2/WebProcess/WebProcess.cpp +++ b/Source/WebKit2/WebProcess/WebProcess.cpp @@ -26,10 +26,8 @@ #include "config.h" #include "WebProcess.h" -#include "AuthenticationManager.h" #include "DownloadManager.h" #include "InjectedBundle.h" -#include "InjectedBundleMessageKinds.h" #include "InjectedBundleUserMessageCoders.h" #include "SandboxExtension.h" #include "StatisticsData.h" @@ -160,9 +158,6 @@ WebProcess::WebProcess() , m_notificationManager(this) #endif , m_iconDatabaseProxy(this) -#if ENABLE(PLUGIN_PROCESS) - , m_disablePluginProcessMessageTimeout(false) -#endif #if USE(SOUP) , m_soupRequestManager(this) #endif @@ -251,9 +246,6 @@ void WebProcess::initializeWebProcess(const WebProcessCreationParameters& parame setDefaultRequestTimeoutInterval(parameters.defaultRequestTimeoutInterval); - for (size_t i = 0; i < parameters.mimeTypesWithCustomRepresentation.size(); ++i) - m_mimeTypesWithCustomRepresentations.add(parameters.mimeTypesWithCustomRepresentation[i]); - if (parameters.shouldAlwaysUseComplexTextCodePath) setAlwaysUsesComplexTextCodePath(true); @@ -264,10 +256,6 @@ void WebProcess::initializeWebProcess(const WebProcessCreationParameters& parame WebCore::ResourceHandle::setPrivateBrowsingStorageSessionIdentifierBase(parameters.uiProcessBundleIdentifier); #endif -#if ENABLE(PLUGIN_PROCESS) - m_disablePluginProcessMessageTimeout = parameters.disablePluginProcessMessageTimeout; -#endif - setTerminationTimeout(parameters.terminationTimeout); } @@ -354,7 +342,7 @@ void WebProcess::visitedLinkStateChanged(const Vector<WebCore::LinkHash>& linkHa HashMap<uint64_t, RefPtr<WebPageGroupProxy> >::const_iterator it = m_pageGroupMap.begin(); HashMap<uint64_t, RefPtr<WebPageGroupProxy> >::const_iterator end = m_pageGroupMap.end(); for (; it != end; ++it) - Page::visitedStateChanged(PageGroup::pageGroup(it->second->identifier()), linkHashes[i]); + Page::visitedStateChanged(PageGroup::pageGroup(it->value->identifier()), linkHashes[i]); } pageCache()->markPagesForVistedLinkStyleRecalc(); @@ -366,7 +354,7 @@ void WebProcess::allVisitedLinkStateChanged() HashMap<uint64_t, RefPtr<WebPageGroupProxy> >::const_iterator it = m_pageGroupMap.begin(); HashMap<uint64_t, RefPtr<WebPageGroupProxy> >::const_iterator end = m_pageGroupMap.end(); for (; it != end; ++it) - Page::allVisitedStateChanged(PageGroup::pageGroup(it->second->identifier())); + Page::allVisitedStateChanged(PageGroup::pageGroup(it->value->identifier())); pageCache()->markPagesForVistedLinkStyleRecalc(); } @@ -542,7 +530,7 @@ WebPage* WebProcess::focusedWebPage() const { HashMap<uint64_t, RefPtr<WebPage> >::const_iterator end = m_pageMap.end(); for (HashMap<uint64_t, RefPtr<WebPage> >::const_iterator it = m_pageMap.begin(); it != end; ++it) { - WebPage* page = (*it).second.get(); + WebPage* page = (*it).value.get(); if (page->windowAndWebPageAreFocused()) return page; } @@ -560,14 +548,14 @@ void WebProcess::createWebPage(uint64_t pageID, const WebPageCreationParameters& // link) the WebPage gets created both in the synchronous handler and through the normal way. HashMap<uint64_t, RefPtr<WebPage> >::AddResult result = m_pageMap.add(pageID, 0); if (result.isNewEntry) { - ASSERT(!result.iterator->second); - result.iterator->second = WebPage::create(pageID, parameters); + ASSERT(!result.iterator->value); + result.iterator->value = WebPage::create(pageID, parameters); // Balanced by an enableTermination in removeWebPage. disableTermination(); } - ASSERT(result.iterator->second); + ASSERT(result.iterator->value); } void WebProcess::removeWebPage(uint64_t pageID) @@ -638,11 +626,6 @@ void WebProcess::didReceiveMessage(CoreIPC::Connection* connection, CoreIPC::Mes return; } - if (messageID.is<CoreIPC::MessageClassAuthenticationManager>()) { - AuthenticationManager::shared().didReceiveMessage(connection, messageID, arguments); - return; - } - if (messageID.is<CoreIPC::MessageClassWebApplicationCacheManager>()) { WebApplicationCacheManager::shared().didReceiveMessage(connection, messageID, arguments); return; @@ -660,11 +643,6 @@ void WebProcess::didReceiveMessage(CoreIPC::Connection* connection, CoreIPC::Mes } #endif - if (messageID.is<CoreIPC::MessageClassWebGeolocationManager>()) { - m_geolocationManager.didReceiveMessage(connection, messageID, arguments); - return; - } - #if ENABLE(BATTERY_STATUS) if (messageID.is<CoreIPC::MessageClassWebBatteryManager>()) { m_batteryManager.didReceiveMessage(connection, messageID, arguments); @@ -712,12 +690,17 @@ void WebProcess::didReceiveMessage(CoreIPC::Connection* connection, CoreIPC::Mes return; } #endif - - if (messageID.is<CoreIPC::MessageClassInjectedBundle>()) { - if (!m_injectedBundle) + + if (messageID.is<CoreIPC::MessageClassWebPageGroupProxy>()) { + uint64_t pageGroupID = arguments->destinationID(); + if (!pageGroupID) return; - m_injectedBundle->didReceiveMessage(connection, messageID, arguments); - return; + + WebPageGroupProxy* pageGroupProxy = webPageGroup(pageGroupID); + if (!pageGroupProxy) + return; + + pageGroupProxy->didReceiveMessage(connection, messageID, arguments); } uint64_t pageID = arguments->destinationID(); @@ -760,10 +743,6 @@ void WebProcess::didReceiveInvalidMessage(CoreIPC::Connection*, CoreIPC::Message // we'll let it slide. } -void WebProcess::syncMessageSendTimedOut(CoreIPC::Connection*) -{ -} - void WebProcess::didReceiveMessageOnConnectionWorkQueue(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::ArgumentDecoder* arguments, bool& didHandleMessage) { if (messageID.is<CoreIPC::MessageClassWebProcess>()) { @@ -804,11 +783,11 @@ WebPageGroupProxy* WebProcess::webPageGroup(const WebPageGroupData& pageGroupDat { HashMap<uint64_t, RefPtr<WebPageGroupProxy> >::AddResult result = m_pageGroupMap.add(pageGroupData.pageGroupID, 0); if (result.isNewEntry) { - ASSERT(!result.iterator->second); - result.iterator->second = WebPageGroupProxy::create(pageGroupData); + ASSERT(!result.iterator->value); + result.iterator->value = WebPageGroupProxy::create(pageGroupData); } - return result.iterator->second.get(); + return result.iterator->value.get(); } #if ENABLE(WEB_INTENTS) @@ -831,26 +810,6 @@ void WebProcess::removeMessagePortChannel(uint64_t channelID) } #endif -static bool canPluginHandleResponse(const ResourceResponse& response) -{ - String pluginPath; - bool blocked; - - if (!WebProcess::shared().connection()->sendSync(Messages::WebProcessProxy::GetPluginPath(response.mimeType(), response.url().string()), Messages::WebProcessProxy::GetPluginPath::Reply(pluginPath, blocked), 0)) - return false; - - return !blocked && !pluginPath.isEmpty(); -} - -bool WebProcess::shouldUseCustomRepresentationForResponse(const ResourceResponse& response) const -{ - if (!m_mimeTypesWithCustomRepresentations.contains(response.mimeType())) - return false; - - // If a plug-in exists that claims to support this response, it should take precedence over the custom representation. - return !canPluginHandleResponse(response); -} - void WebProcess::clearResourceCaches(ResourceCachesToClear resourceCachesToClear) { platformClearResourceCaches(resourceCachesToClear); @@ -934,7 +893,7 @@ static void fromCountedSetToHashMap(TypeCountSet* countedSet, HashMap<String, ui { TypeCountSet::const_iterator end = countedSet->end(); for (TypeCountSet::const_iterator it = countedSet->begin(); it != end; ++it) - map.set(it->first, it->second); + map.set(it->key, it->value); } static void getWebCoreMemoryCacheStatistics(Vector<HashMap<String, uint64_t> >& result) @@ -1046,6 +1005,25 @@ void WebProcess::setJavaScriptGarbageCollectorTimerEnabled(bool flag) gcController().setJavaScriptGarbageCollectorTimerEnabled(flag); } +void WebProcess::postInjectedBundleMessage(const CoreIPC::DataReference& messageData) +{ + InjectedBundle* injectedBundle = WebProcess::shared().injectedBundle(); + if (!injectedBundle) + return; + + CoreIPC::ArgumentDecoder messageDecoder(messageData.data(), messageData.size()); + + String messageName; + if (!messageDecoder.decode(messageName)) + return; + + RefPtr<APIObject> messageBody; + if (!messageDecoder.decode(InjectedBundleUserMessageDecoder(messageBody))) + return; + + injectedBundle->didReceiveMessage(messageName, messageBody.get()); +} + #if ENABLE(PLUGIN_PROCESS) void WebProcess::pluginProcessCrashed(CoreIPC::Connection*, const String& pluginPath) { @@ -1107,7 +1085,7 @@ void WebProcess::setTextCheckerState(const TextCheckerState& textCheckerState) HashMap<uint64_t, RefPtr<WebPage> >::iterator end = m_pageMap.end(); for (HashMap<uint64_t, RefPtr<WebPage> >::iterator it = m_pageMap.begin(); it != end; ++it) { - WebPage* page = (*it).second.get(); + WebPage* page = (*it).value.get(); if (continuousSpellCheckingTurnedOff) page->unmarkAllMisspellings(); if (grammarCheckingTurnedOff) diff --git a/Source/WebKit2/WebProcess/WebProcess.h b/Source/WebKit2/WebProcess/WebProcess.h index e34d15f29..eccbb8d60 100644 --- a/Source/WebKit2/WebProcess/WebProcess.h +++ b/Source/WebKit2/WebProcess/WebProcess.h @@ -150,14 +150,12 @@ public: #if PLATFORM(MAC) pid_t presenterApplicationPid() const { return m_presenterApplicationPid; } bool shouldForceScreenFontSubstitution() const { return m_shouldForceScreenFontSubstitution; } -#endif +#endif #if PLATFORM(QT) QNetworkAccessManager* networkAccessManager() { return m_networkAccessManager; } #endif - bool shouldUseCustomRepresentationForResponse(const WebCore::ResourceResponse&) const; - // Text Checking const TextCheckerState& textCheckerState() const { return m_textCheckerState; } @@ -182,7 +180,6 @@ public: #if ENABLE(PLUGIN_PROCESS) PluginProcessConnectionManager& pluginProcessConnectionManager() { return m_pluginProcessConnectionManager; } - bool disablePluginProcessMessageTimeout() const { return m_disablePluginProcessMessageTimeout; } #endif EventDispatcher& eventDispatcher() { return m_eventDispatcher; } @@ -251,6 +248,8 @@ private: void garbageCollectJavaScriptObjects(); void setJavaScriptGarbageCollectorTimerEnabled(bool flag); + void postInjectedBundleMessage(const CoreIPC::DataReference& messageData); + #if USE(SECURITY_FRAMEWORK) void secItemResponse(CoreIPC::Connection*, uint64_t requestID, const SecItemResponseData&); void secKeychainItemResponse(CoreIPC::Connection*, uint64_t requestID, const SecKeychainItemResponseData&); @@ -266,7 +265,6 @@ private: virtual void didReceiveSyncMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*, OwnPtr<CoreIPC::ArgumentEncoder>&); virtual void didClose(CoreIPC::Connection*); virtual void didReceiveInvalidMessage(CoreIPC::Connection*, CoreIPC::MessageID); - virtual void syncMessageSendTimedOut(CoreIPC::Connection*); #if PLATFORM(WIN) virtual Vector<HWND> windowsToReceiveSentMessagesWhileWaitingForSyncReply(); #endif @@ -320,8 +318,6 @@ private: HashMap<uint64_t, RefPtr<WebCore::PlatformMessagePortChannel> > m_messagePortChannels; #endif - HashSet<String, CaseFoldingHash> m_mimeTypesWithCustomRepresentations; - TextCheckerState m_textCheckerState; WebGeolocationManager m_geolocationManager; #if ENABLE(BATTERY_STATUS) @@ -339,7 +335,6 @@ private: #if ENABLE(PLUGIN_PROCESS) PluginProcessConnectionManager m_pluginProcessConnectionManager; - bool m_disablePluginProcessMessageTimeout; #endif #if USE(SOUP) diff --git a/Source/WebKit2/WebProcess/WebProcess.messages.in b/Source/WebKit2/WebProcess/WebProcess.messages.in index 336ff8bfa..d10a7b536 100644 --- a/Source/WebKit2/WebProcess/WebProcess.messages.in +++ b/Source/WebKit2/WebProcess/WebProcess.messages.in @@ -22,7 +22,7 @@ messages -> WebProcess { # Initialize the WebProcess. - InitializeWebProcess(WebKit::WebProcessCreationParameters processCreationParameters, WebKit::WebContextUserMessageEncoder initializationUserData) + InitializeWebProcess(WebKit::WebProcessCreationParameters processCreationParameters, WebKit::WebContextUserMessageEncoder initializationUserData) Variadic # Create a new page. CreateWebPage(uint64_t newPageID, WebKit::WebPageCreationParameters pageCreationParameters) @@ -56,7 +56,6 @@ messages -> WebProcess { #endif # Plug-ins. - #if !ENABLE(PLUGIN_PROCESS) GetSitesWithPluginData(Vector<WTF::String> pluginPaths, uint64_t callbackID) ClearPluginSiteData(Vector<WTF::String> pluginPaths, Vector<WTF::String> sites, uint64_t flags, uint64_t maxAgeInSeconds, uint64_t callbackID) @@ -87,6 +86,8 @@ messages -> WebProcess { GarbageCollectJavaScriptObjects() SetJavaScriptGarbageCollectorTimerEnabled(bool enable) + PostInjectedBundleMessage(CoreIPC::DataReference messageData); + #if USE(SECURITY_FRAMEWORK) SecItemResponse(uint64_t requestID, WebKit::SecItemResponseData response) DispatchOnConnectionQueue SecKeychainItemResponse(uint64_t requestID, WebKit::SecKeychainItemResponseData response) DispatchOnConnectionQueue diff --git a/Source/WebKit2/WebProcess/mac/WebProcessMac.mm b/Source/WebKit2/WebProcess/mac/WebProcessMac.mm index ff75ceba5..519d62b95 100644 --- a/Source/WebKit2/WebProcess/mac/WebProcessMac.mm +++ b/Source/WebKit2/WebProcess/mac/WebProcessMac.mm @@ -33,6 +33,7 @@ #import "WebProcessCreationParameters.h" #import "WebProcessProxyMessages.h" #import <WebCore/FileSystem.h> +#import <WebCore/Font.h> #import <WebCore/LocalizedStrings.h> #import <WebCore/MemoryCache.h> #import <WebCore/PageCache.h> @@ -272,6 +273,7 @@ void WebProcess::platformInitializeWebProcess(const WebProcessCreationParameters } m_shouldForceScreenFontSubstitution = parameters.shouldForceScreenFontSubstitution; + Font::setDefaultTypesettingFeatures(parameters.shouldEnableKerningAndLigaturesByDefault ? Kerning | Ligatures : 0); m_compositingRenderServerPort = parameters.acceleratedCompositingPort.port(); diff --git a/Source/WebKit2/WebProcess/mac/WebProcessMainMac.mm b/Source/WebKit2/WebProcess/mac/WebProcessMainMac.mm index 3a8dee7f7..46b1b300d 100644 --- a/Source/WebKit2/WebProcess/mac/WebProcessMainMac.mm +++ b/Source/WebKit2/WebProcess/mac/WebProcessMainMac.mm @@ -161,9 +161,10 @@ int WebProcessMain(const CommandLine& commandLine) #endif // __MAC_OS_X_VERSION_MIN_REQUIRED >= 1070 String localization = commandLine["localization"]; - RetainPtr<CFStringRef> cfLocalization(AdoptCF, CFStringCreateWithCharacters(0, reinterpret_cast<const UniChar*>(localization.characters()), localization.length())); - if (cfLocalization) + if (!localization.isEmpty()) { + RetainPtr<CFStringRef> cfLocalization(AdoptCF, CFStringCreateWithCharacters(0, reinterpret_cast<const UniChar*>(localization.characters()), localization.length())); WKSetDefaultLocalization(cfLocalization.get()); + } [pool drain]; diff --git a/Source/WebKit2/WebProcess/soup/WebSoupRequestManager.cpp b/Source/WebKit2/WebProcess/soup/WebSoupRequestManager.cpp index 6c5cad195..7406d685e 100644 --- a/Source/WebKit2/WebProcess/soup/WebSoupRequestManager.cpp +++ b/Source/WebKit2/WebProcess/soup/WebSoupRequestManager.cpp @@ -25,6 +25,7 @@ #include "WebErrors.h" #include "WebKitSoupRequestGeneric.h" #include "WebKitSoupRequestInputStream.h" +#include "WebPageProxyMessages.h" #include "WebProcess.h" #include "WebSoupRequestManagerProxyMessages.h" #include <WebCore/ResourceHandle.h> @@ -169,12 +170,14 @@ void WebSoupRequestManager::didReceiveURIRequestData(const CoreIPC::DataReferenc void WebSoupRequestManager::send(GSimpleAsyncResult* result, GCancellable* cancellable) { GRefPtr<WebKitSoupRequestGeneric> request = adoptGRef(WEBKIT_SOUP_REQUEST_GENERIC(g_async_result_get_source_object(G_ASYNC_RESULT(result)))); - SoupURI* uri = soup_request_get_uri(SOUP_REQUEST(request.get())); - GOwnPtr<char> uriString(soup_uri_to_string(uri, FALSE)); + SoupRequest* soupRequest = SOUP_REQUEST(request.get()); + GOwnPtr<char> uriString(soup_uri_to_string(soup_request_get_uri(soupRequest), FALSE)); uint64_t requestID = generateSoupRequestID(); m_requestMap.set(requestID, adoptPtr(new WebSoupRequestAsyncData(result, request.get(), cancellable))); - m_process->connection()->send(Messages::WebSoupRequestManagerProxy::DidReceiveURIRequest(String::fromUTF8(uriString.get()), requestID), 0); + + uint64_t initiaingPageID = WebCore::ResourceHandle::getSoupRequestInitiaingPageID(soupRequest); + m_process->connection()->send(Messages::WebPageProxy::DidReceiveURIRequest(String::fromUTF8(uriString.get()), requestID), initiaingPageID); } GInputStream* WebSoupRequestManager::finish(GSimpleAsyncResult* result) diff --git a/Source/WebKit2/WebProcessService/Info.plist b/Source/WebKit2/WebProcessService/Info.plist index cebb78ead..c7b083203 100644 --- a/Source/WebKit2/WebProcessService/Info.plist +++ b/Source/WebKit2/WebProcessService/Info.plist @@ -2,6 +2,8 @@ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> + <key>CFBundleGetInfoString</key> + <string>${BUNDLE_VERSION}, Copyright 2003-2012 Apple Inc.</string> <key>CFBundleDevelopmentRegion</key> <string>English</string> <key>CFBundleExecutable</key> @@ -15,11 +17,11 @@ <key>CFBundlePackageType</key> <string>XPC!</string> <key>CFBundleShortVersionString</key> - <string>1.0</string> + <string>${SHORT_VERSION_STRING}</string> <key>CFBundleSignature</key> <string>????</string> <key>CFBundleVersion</key> - <string>1</string> + <string>${BUNDLE_VERSION}</string> <key>LSFileQuarantineEnabled</key> <true/> <key>NSPrincipalClass</key> @@ -32,7 +34,7 @@ <string>Application</string> <key>RunLoopType</key> <string>_NSApplicationMain</string> - <key>_MultipleInstance</key> + <key>_MultipleInstances</key> <true/> <key>EnvironmentVariables</key> <dict> diff --git a/Source/WebKit2/WebProcessServiceForWebKitDevelopment/Info.plist b/Source/WebKit2/WebProcessServiceForWebKitDevelopment/Info.plist index 8908196b6..2ab0a9c1c 100644 --- a/Source/WebKit2/WebProcessServiceForWebKitDevelopment/Info.plist +++ b/Source/WebKit2/WebProcessServiceForWebKitDevelopment/Info.plist @@ -2,6 +2,8 @@ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> + <key>CFBundleGetInfoString</key> + <string>${BUNDLE_VERSION}, Copyright 2003-2012 Apple Inc.</string> <key>CFBundleDevelopmentRegion</key> <string>English</string> <key>CFBundleExecutable</key> @@ -15,11 +17,11 @@ <key>CFBundlePackageType</key> <string>XPC!</string> <key>CFBundleShortVersionString</key> - <string>1.0</string> + <string>${SHORT_VERSION_STRING}</string> <key>CFBundleSignature</key> <string>????</string> <key>CFBundleVersion</key> - <string>1</string> + <string>${BUNDLE_VERSION}</string> <key>LSFileQuarantineEnabled</key> <true/> <key>NSPrincipalClass</key> @@ -32,7 +34,7 @@ <string>Application</string> <key>RunLoopType</key> <string>_NSApplicationMain</string> - <key>_MultipleInstance</key> + <key>_MultipleInstances</key> <true/> </dict> </dict> diff --git a/Source/WebKit2/WebProcessServiceForWebKitDevelopment/WebProcessServiceForWebKitDevelopmentMain.mm b/Source/WebKit2/WebProcessServiceForWebKitDevelopment/WebProcessServiceForWebKitDevelopmentMain.mm index da426fa97..e0407eb65 100644 --- a/Source/WebKit2/WebProcessServiceForWebKitDevelopment/WebProcessServiceForWebKitDevelopmentMain.mm +++ b/Source/WebKit2/WebProcessServiceForWebKitDevelopment/WebProcessServiceForWebKitDevelopmentMain.mm @@ -81,8 +81,8 @@ static void WebProcessServiceForWebKitDevelopmentEventHandler(xpc_connection_t p posix_spawnattr_setflags(&attr, flags); - uint32_t pathLength; char path[4 * PATH_MAX]; + uint32_t pathLength = sizeof(path); _NSGetExecutablePath(path, &pathLength); // Setup the command line. diff --git a/Source/WebKit2/config.h b/Source/WebKit2/config.h index d6c4a5da6..2885075a8 100644 --- a/Source/WebKit2/config.h +++ b/Source/WebKit2/config.h @@ -108,7 +108,7 @@ static const type& name() \ #define PLUGIN_ARCHITECTURE_MAC 1 #elif PLATFORM(WIN) #define PLUGIN_ARCHITECTURE_WIN 1 -#elif PLATFORM(GTK) && (OS(UNIX) && !OS(MAC_OS_X)) +#elif (PLATFORM(GTK) || PLATFORM(EFL)) && (OS(UNIX) && !OS(MAC_OS_X)) #define PLUGIN_ARCHITECTURE_X11 1 #elif PLATFORM(QT) // Qt handles this features.prf diff --git a/Source/WebKit2/qt/MainQt.cpp b/Source/WebKit2/qt/MainQt.cpp index 16e4faa2e..3f0dce22f 100644 --- a/Source/WebKit2/qt/MainQt.cpp +++ b/Source/WebKit2/qt/MainQt.cpp @@ -45,10 +45,10 @@ static void sigcontHandler(int) } #endif -static void messageHandler(QtMsgType type, const char* message) +static void messageHandler(QtMsgType type, const QMessageLogContext&, const QString& message) { if (type == QtCriticalMsg) { - fprintf(stderr, "%s\n", message); + fprintf(stderr, "%s\n", qPrintable(message)); return; } @@ -82,7 +82,7 @@ int main(int argc, char** argv) // QApplication itself produces debug output. QByteArray suppressOutput = qgetenv("QT_WEBKIT_SUPPRESS_WEB_PROCESS_OUTPUT"); if (!suppressOutput.isEmpty() && suppressOutput != "0") - qInstallMsgHandler(messageHandler); + qInstallMessageHandler(messageHandler); return WebKit::WebProcessMainQt(new QApplication(argc, argv)); } diff --git a/Source/WebKit2/gtk/PluginMainGtk.cpp b/Source/WebKit2/unix/PluginMainUnix.cpp index 63cf44cda..07f9a0dc0 100644 --- a/Source/WebKit2/gtk/PluginMainGtk.cpp +++ b/Source/WebKit2/unix/PluginMainUnix.cpp @@ -24,9 +24,9 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ -#include "PluginProcessMainGtk.h" +#include "PluginProcessMainUnix.h" int main(int argc, char** argv) { - return WebKit::PluginProcessMainGtk(argc, argv); + return WebKit::PluginProcessMainUnix(argc, argv); } diff --git a/Source/WebKit2/win/WebKit2.def b/Source/WebKit2/win/WebKit2.def index e0b7da9ab..196bbf059 100644 --- a/Source/WebKit2/win/WebKit2.def +++ b/Source/WebKit2/win/WebKit2.def @@ -142,7 +142,8 @@ EXPORTS ?waitForThreadCompletion@WTF@@YAHI@Z ?waitForThreadCompletion@WTF@@YAHIPAPAX@Z ?createThread@WTF@@YAIP6APAXPAX@Z0@Z - ; Re-exports from WebCore for test harnesses + +; Re-exports from WebCore for test harnesses ??0NodeRenderingContext@WebCore@@QAE@PAVNode@1@@Z ??1NodeRenderingContext@WebCore@@QAE@XZ ??1Range@WebCore@@QAE@XZ @@ -156,7 +157,7 @@ EXPORTS ??0String@WTF@@QAE@PB_W@Z ?absoluteBoundingBoxRect@RenderObject@WebCore@@QBE?AVIntRect@2@_N@Z ?absoluteBoundingBoxRectIgnoringTransforms@RenderObject@WebCore@@QBE?AVIntRect@2@XZ - ?description@DocumentMarker@WebCore@@QBEABVString@WTF@@XZ + ?description@DocumentMarker@WebCore@@QBEABVString@WTF@@XZ ?add@AtomicString@WTF@@CA?AV?$PassRefPtr@VStringImpl@WTF@@@2@PBD@Z ?add@AtomicString@WTF@@CA?AV?$PassRefPtr@VStringImpl@WTF@@@2@PBE@Z ?addSlowCase@AtomicString@WTF@@CA?AV?$PassRefPtr@VStringImpl@WTF@@@2@PAVStringImpl@2@@Z @@ -166,6 +167,7 @@ EXPORTS ?create@Range@WebCore@@SA?AV?$PassRefPtr@VRange@WebCore@@@WTF@@V?$PassRefPtr@VDocument@WebCore@@@4@V?$PassRefPtr@VNode@WebCore@@@4@H1H@Z ?create@ShadowRoot@WebCore@@SA?AV?$PassRefPtr@VShadowRoot@WebCore@@@WTF@@PAVElement@2@AAH@Z ?createWrapper@WebCore@@YA?AVJSValue@JSC@@PAVExecState@3@PAVJSDOMGlobalObject@1@PAVNode@1@@Z + ?distributedNodes@InsertionPoint@WebCore@@QBE?AV?$PassRefPtr@VNodeList@WebCore@@@WTF@@XZ ?documentState@HistoryItem@WebCore@@QBEABV?$Vector@VString@WTF@@$0A@@WTF@@XZ ?equal@WTF@@YA_NPBVStringImpl@1@PBE@Z ?equal@WTF@@YA_NPBVStringImpl@1@0@Z @@ -309,4 +311,6 @@ EXPORTS ?setInspectorFrontendClient@InspectorController@WebCore@@QAEXV?$PassOwnPtr@VInspectorFrontendClient@WebCore@@@WTF@@@Z ?setProperty@Settings@InspectorFrontendClientLocal@WebCore@@UAEXABVString@WTF@@0@Z ?toJS@WebCore@@YA?AVJSValue@JSC@@PAVExecState@3@PAVJSDOMGlobalObject@1@PAVDOMWindow@1@@Z - ?windowObjectCleared@InspectorFrontendClientLocal@WebCore@@UAEXXZ + ?windowObjectCleared@InspectorFrontendClientLocal@WebCore@@UAEXXZ + ?layerTreeAsText@Frame@WebCore@@QBE?AVString@WTF@@I@Z + diff --git a/Source/WebKit2/win/WebKit2.vcproj b/Source/WebKit2/win/WebKit2.vcproj index ff3a3f9db..b06682f4c 100755 --- a/Source/WebKit2/win/WebKit2.vcproj +++ b/Source/WebKit2/win/WebKit2.vcproj @@ -619,6 +619,10 @@ >
</File>
<File
+ RelativePath="..\Shared\WebConnection.messages.in"
+ >
+ </File>
+ <File
RelativePath="..\Shared\WebConnectionClient.cpp"
>
</File>
@@ -2122,6 +2126,10 @@ >
</File>
<File
+ RelativePath="..\WebProcess\WebPage\WebPageGroupProxy.messages.in"
+ >
+ </File>
+ <File
RelativePath="..\WebProcess\WebPage\WebUndoStep.cpp"
>
</File>
@@ -4090,6 +4098,18 @@ >
</File>
<File
+ RelativePath="..\Platform\CoreIPC\MessageReceiver.h"
+ >
+ </File>
+ <File
+ RelativePath="..\Platform\CoreIPC\MessageReceiverMap.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\Platform\CoreIPC\MessageReceiverMap.h"
+ >
+ </File>
+ <File
RelativePath="..\Platform\CoreIPC\MessageSender.h"
>
</File>
@@ -4279,6 +4299,14 @@ >
</File>
<File
+ RelativePath="$(ConfigurationBuildDir)\obj\$(ProjectName)\DerivedSources\WebConnectionMessageReceiver.cpp"
+ >
+ </File>
+ <File
+ RelativePath="$(ConfigurationBuildDir)\obj\$(ProjectName)\DerivedSources\WebConnectionMessages.h"
+ >
+ </File>
+ <File
RelativePath="$(ConfigurationBuildDir)\obj\$(ProjectName)\DerivedSources\WebContextMessageReceiver.cpp"
>
</File>
@@ -4431,6 +4459,14 @@ >
</File>
<File
+ RelativePath="$(ConfigurationBuildDir)\obj\$(ProjectName)\DerivedSources\WebPageGroupProxyMessageReceiver.cpp"
+ >
+ </File>
+ <File
+ RelativePath="$(ConfigurationBuildDir)\obj\$(ProjectName)\DerivedSources\WebPageGroupProxyMessages.h"
+ >
+ </File>
+ <File
RelativePath="$(ConfigurationBuildDir)\obj\$(ProjectName)\DerivedSources\WebPageMessageReceiver.cpp"
>
</File>
diff --git a/Source/WebKit2/win/WebKit2CFLite.def b/Source/WebKit2/win/WebKit2CFLite.def index 3675ac250..d6fd9fb6f 100644 --- a/Source/WebKit2/win/WebKit2CFLite.def +++ b/Source/WebKit2/win/WebKit2CFLite.def @@ -118,6 +118,7 @@ EXPORTS ?detachThread@WTF@@YAXI@Z ?didBeginFrameImpl@InspectorInstrumentation@WebCore@@CAXPAVInstrumentingAgents@2@@Z ?didCancelFrameImpl@InspectorInstrumentation@WebCore@@CAXPAVInstrumentingAgents@2@@Z + ?distributedNodes@InsertionPoint@WebCore@@QBE?AV?$PassRefPtr@VNodeList@WebCore@@@WTF@@XZ ?initializeMainThread@WTF@@YAXXZ ?initializeThreading@WTF@@YAXXZ ?instrumentationForPage@WebCore@@YAPAVInstrumentingAgents@1@PAVPage@1@@Z |
