From: antti.j.koivisto@nokia.com Date: Mon, 5 Jul 2010 12:26:10 +0000 (+0000) Subject: [Qt] Initial WebKit2 implementation X-Git-Url: http://git.webkit.org/?p=WebKit-https.git;a=commitdiff_plain;h=812003962083b99694ac9b4a1c8dc19bc0ac2611 [Qt] Initial WebKit2 implementation https://bugs.webkit.org/show_bug.cgi?id=40233 Reviewed by Kenneth Rohde Christiansen. Implement ChunkedUpdateDrawingArea + Proxy for Qt. Not built yet. * UIProcess/ChunkedUpdateDrawingAreaProxy.h: * UIProcess/qt: Added. * UIProcess/qt/ChunkedUpdateDrawingAreaProxyQt.cpp: Added. (WebKit::ChunkedUpdateDrawingAreaProxy::page): (WebKit::ChunkedUpdateDrawingAreaProxy::ensureBackingStore): (WebKit::ChunkedUpdateDrawingAreaProxy::invalidateBackingStore): (WebKit::ChunkedUpdateDrawingAreaProxy::platformPaint): (WebKit::ChunkedUpdateDrawingAreaProxy::drawUpdateChunkIntoBackingStore): * WebProcess/WebPage/qt: Added. * WebProcess/WebPage/qt/ChunkedUpdateDrawingAreaQt.cpp: Added. (WebKit::ChunkedUpdateDrawingArea::paintIntoUpdateChunk): git-svn-id: https://svn.webkit.org/repository/webkit/trunk@62481 268f45cc-cd09-0410-ab3c-d52691b4dbfc --- diff --git a/WebCore/WebCore.pri b/WebCore/WebCore.pri index 623dbb6..16eab7f 100644 --- a/WebCore/WebCore.pri +++ b/WebCore/WebCore.pri @@ -652,6 +652,81 @@ IDL_BINDINGS += \ xml/XPathEvaluator.idl \ xml/XSLTProcessor.idl +WEBCORE_HEADERS_FOR_WEBKIT2 += \ + bindings/js/DOMWrapperWorld.h \ + platform/FileChooser.h \ + platform/network/qt/ResourceError.h \ + platform/network/qt/ResourceRequest.h \ + platform/network/qt/ResourceResponse.h \ + dom/KeyboardEvent.h \ + editing/EditCommand.h \ + history/BackForwardList.h \ + html/HTMLFormElement.h \ + html/HTMLFrameOwnerElement.h \ + inspector/InspectorClient.h \ + loader/DocumentLoader.h \ + loader/FormState.h \ + loader/FrameLoader.h \ + loader/FrameLoaderClient.h \ + loader/FrameLoaderTypes.h \ + loader/PolicyChecker.h \ + loader/ProgressTracker.h \ + page/Chrome.h \ + page/ChromeClient.h \ + page/ContextMenuClient.h \ + page/DragClient.h \ + page/EditorClient.h \ + page/EventHandler.h \ + page/FocusController.h \ + page/Frame.h \ + page/FrameLoadRequest.h \ + page/FrameView.h \ + page/Page.h \ + page/Settings.h \ + page/WindowFeatures.h \ + platform/PlatformKeyboardEvent.h \ + platform/PlatformMouseEvent.h \ + platform/PlatformWheelEvent.h \ + platform/Widget.h \ + platform/graphics/FloatRect.h \ + platform/graphics/GraphicsContext.h \ + platform/graphics/IntPoint.h \ + platform/graphics/IntRect.h \ + platform/graphics/IntSize.h \ + platform/graphics/Tile.h \ + platform/graphics/TiledBackingStore.h \ + platform/graphics/TiledBackingStoreClient.h \ + platform/text/PlatformString.h \ + platform/text/StringImpl.h \ + platform/MIMETypeRegistry.h \ + plugins/PluginData.h \ + rendering/RenderTreeAsText.h \ + plugins/PluginData.h \ + +JSC_HEADERS_FOR_WEBKIT2 += \ + ../JavaScriptCore/runtime/JSObject.h \ + +WEBKIT2_API_HEADERS += \ + ../WebKit2/UIProcess/API/C/WKAPICast.h \ + ../WebKit2/UIProcess/API/C/WKBase.h \ + ../WebKit2/UIProcess/API/C/WKContext.h \ + ../WebKit2/UIProcess/API/C/WKContextPrivate.h \ + ../WebKit2/UIProcess/API/C/WKFrame.h \ + ../WebKit2/UIProcess/API/C/WKFramePolicyListener.h \ + ../WebKit2/UIProcess/API/C/WKNavigationData.h \ + ../WebKit2/UIProcess/API/C/WKPage.h \ + ../WebKit2/UIProcess/API/C/WKPageNamespace.h \ + ../WebKit2/UIProcess/API/C/WKPagePrivate.h \ + ../WebKit2/UIProcess/API/C/WKPreferences.h \ + ../WebKit2/UIProcess/API/C/WKString.h \ + ../WebKit2/UIProcess/API/C/WKURL.h \ + ../WebKit2/UIProcess/API/C/WebKit2.h \ + ../WebKit2/UIProcess/API/cpp/WKRetainPtr.h \ + ../WebKit2/UIProcess/API/qt/qwkgraphicswidget.h \ + ../WebKit2/UIProcess/API/qt/qwkpage.h \ + ../WebKit2/WebProcess/InjectedBundle/API/c/WKBundleBase.h \ + ../WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.h \ + contains(DEFINES, ENABLE_MATHML=1) { mathmlnames.output = $${WC_GENERATED_SOURCES_DIR}/MathMLNames.cpp mathmlnames.input = MATHML_NAMES @@ -808,3 +883,26 @@ webkitversion.clean = ${QMAKE_VAR_WC_GENERATED_SOURCES_DIR}/WebKitVersion.h webkitversion.wkAddOutputToSources = false addExtraCompiler(webkitversion) +# GENERATOR 12: Copy WebCore headers for WebKit2 +webcoreheaders.output = ../include/WebCore/${QMAKE_FILE_BASE}.h +webcoreheaders.input = WEBCORE_HEADERS_FOR_WEBKIT2 +webcoreheaders.commands = $$QMAKE_COPY ${QMAKE_FILE_NAME} ${QMAKE_FILE_OUT} +webcoreheaders.clean = ${QMAKE_FILE_OUT} +webcoreheaders.wkAddOutputToSources = false +addExtraCompiler(webcoreheaders) + +# GENERATOR 12-B: Copy JavaScriptCore headers for WebKit2 +jscheaders.output = ../include/JavaScriptCore/${QMAKE_FILE_BASE}.h +jscheaders.input = JSC_HEADERS_FOR_WEBKIT2 +jscheaders.commands = $$QMAKE_COPY ${QMAKE_FILE_NAME} ${QMAKE_FILE_OUT} +jscheaders.clean = ${QMAKE_FILE_OUT} +jscheaders.wkAddOutputToSources = false +addExtraCompiler(jscheaders) + +# GENERATOR 13: Copy WebKit2 headers +webkit2headers.output = ../include/WebKit2/${QMAKE_FILE_BASE}.h +webkit2headers.input = WEBKIT2_API_HEADERS +webkit2headers.commands = $$QMAKE_COPY ${QMAKE_FILE_NAME} ${QMAKE_FILE_OUT} +webkit2headers.clean = ${QMAKE_FILE_OUT} +webkit2headers.wkAddOutputToSources = false +addExtraCompiler(webkit2headers) diff --git a/WebCore/WebCore.pro b/WebCore/WebCore.pro index b33a100..f1ebc2e 100644 --- a/WebCore/WebCore.pro +++ b/WebCore/WebCore.pro @@ -2,6 +2,10 @@ CONFIG += building-libs CONFIG += depend_includepath +meegotouch { + DEFINES += WTF_USE_MEEGOTOUCH=1 +} + symbian: { TARGET.EPOCALLOWDLLDATA=1 TARGET.CAPABILITY = All -Tcb @@ -3026,6 +3030,7 @@ contains(DEFINES, ENABLE_SYMBIAN_DIALOG_PROVIDERS) { } include($$PWD/../WebKit/qt/Api/headers.pri) + HEADERS += $$WEBKIT_API_HEADERS !CONFIG(QTDIR_build) { @@ -3146,6 +3151,188 @@ SOURCES += \ rendering/RenderLayerCompositor.cpp } +CONFIG += precompile_header +PRECOMPILED_HEADER = $$PWD/../WebKit2/WebKit2Prefix.h + +INCLUDEPATH = \ + $$PWD/../WebKit2/Platform \ + $$PWD/../WebKit2/Platform/CoreIPC \ + $$PWD/../WebKit2/Shared \ + $$PWD/../WebKit2/Shared/CoreIPCSupport \ + $$PWD/../WebKit2/Shared/qt \ + $$PWD/../WebKit2/UIProcess \ + $$PWD/../WebKit2/UIProcess/API/C \ + $$PWD/../WebKit2/UIProcess/API/cpp \ + $$PWD/../WebKit2/UIProcess/API/cpp/qt \ + $$PWD/../WebKit2/UIProcess/API/qt \ + $$PWD/../WebKit2/UIProcess/Launcher \ + $$PWD/../WebKit2/UIProcess/Plugins \ + $$PWD/../WebKit2/UIProcess/qt \ + $$PWD/../WebKit2/WebProcess \ + $$PWD/../WebKit2/WebProcess/InjectedBundle \ + $$PWD/../WebKit2/WebProcess/InjectedBundle/API/c \ + $$PWD/../WebKit2/WebProcess/WebCoreSupport \ + $$PWD/../WebKit2/WebProcess/WebPage \ + $$INCLUDEPATH \ + $$OUTPUT_DIR/include \ + +HEADERS += \ + ../WebKit2/Platform/CoreIPC/ArgumentDecoder.h \ + ../WebKit2/Platform/CoreIPC/ArgumentEncoder.h \ + ../WebKit2/Platform/CoreIPC/Arguments.h \ + ../WebKit2/Platform/CoreIPC/Attachment.h \ + ../WebKit2/Platform/CoreIPC/Connection.h \ + ../WebKit2/Platform/CoreIPC/CoreIPCMessageKinds.h \ + ../WebKit2/Platform/CoreIPC/MessageID.h \ + ../WebKit2/Platform/PlatformProcessIdentifier.h \ + ../WebKit2/Platform/RunLoop.h \ + ../WebKit2/Platform/WorkItem.h \ + ../WebKit2/Platform/WorkQueue.h \ + ../WebKit2/Shared/CoreIPCSupport/DrawingAreaMessageKinds.h \ + ../WebKit2/Shared/CoreIPCSupport/DrawingAreaProxyMessageKinds.h \ + ../WebKit2/Shared/CoreIPCSupport/MessageDebug.h \ + ../WebKit2/Shared/CoreIPCSupport/WebPageMessageKinds.h \ + ../WebKit2/Shared/CoreIPCSupport/WebPageProxyMessageKinds.h \ + ../WebKit2/Shared/CoreIPCSupport/WebProcessMessageKinds.h \ + ../WebKit2/Shared/NotImplemented.h \ + ../WebKit2/Shared/qt/WebEventFactory.h \ + ../WebKit2/Shared/WebEventConversion.h \ + ../WebKit2/Shared/WebEvent.h \ + ../WebKit2/Shared/WebNavigationDataStore.h \ + ../WebKit2/Shared/WebPreferencesStore.h \ + ../WebKit2/UIProcess/API/cpp/WKRetainPtr.h \ + ../WebKit2/UIProcess/API/cpp/qt/WKStringQt.h \ + ../WebKit2/UIProcess/API/cpp/qt/WKURLQt.h \ + ../WebKit2/UIProcess/API/C/WebKit2.h \ + ../WebKit2/UIProcess/API/C/WKAPICast.h \ + ../WebKit2/UIProcess/API/C/WKBase.h \ + ../WebKit2/UIProcess/API/C/WKContext.h \ + ../WebKit2/UIProcess/API/C/WKContextPrivate.h \ + ../WebKit2/UIProcess/API/C/WKFrame.h \ + ../WebKit2/UIProcess/API/C/WKFramePolicyListener.h \ + ../WebKit2/UIProcess/API/C/WKNavigationData.h \ + ../WebKit2/UIProcess/API/C/WKPage.h \ + ../WebKit2/UIProcess/API/C/WKPageNamespace.h \ + ../WebKit2/UIProcess/API/C/WKPagePrivate.h \ + ../WebKit2/UIProcess/API/C/WKPreferences.h \ + ../WebKit2/UIProcess/API/C/WKString.h \ + ../WebKit2/UIProcess/API/C/WKURL.h \ + ../WebKit2/UIProcess/API/qt/qgraphicswkview.h \ + ../WebKit2/UIProcess/API/qt/qwkpage.h \ + ../WebKit2/UIProcess/API/qt/qwkpage_p.h \ + ../WebKit2/UIProcess/ChunkedUpdateDrawingAreaProxy.h \ + ../WebKit2/UIProcess/DrawingAreaProxy.h \ + ../WebKit2/UIProcess/GenericCallback.h \ + ../WebKit2/UIProcess/Launcher/WebProcessLauncher.h \ + ../WebKit2/UIProcess/Plugins/PluginInfoStore.h \ + ../WebKit2/UIProcess/PageClient.h \ + ../WebKit2/UIProcess/ProcessModel.h \ + ../WebKit2/UIProcess/qt/DefaultPageLoaderClientCallbacksQt.h \ + ../WebKit2/UIProcess/ResponsivenessTimer.h \ + ../WebKit2/UIProcess/WebContext.h \ + ../WebKit2/UIProcess/WebContextInjectedBundleClient.h \ + ../WebKit2/UIProcess/WebFramePolicyListenerProxy.h \ + ../WebKit2/UIProcess/WebFrameProxy.h \ + ../WebKit2/UIProcess/WebHistoryClient.h \ + ../WebKit2/UIProcess/WebLoaderClient.h \ + ../WebKit2/UIProcess/WebNavigationData.h \ + ../WebKit2/UIProcess/WebPageNamespace.h \ + ../WebKit2/UIProcess/WebPageProxy.h \ + ../WebKit2/UIProcess/WebPolicyClient.h \ + ../WebKit2/UIProcess/WebPreferences.h \ + ../WebKit2/UIProcess/WebProcessManager.h \ + ../WebKit2/UIProcess/WebProcessProxy.h \ + ../WebKit2/UIProcess/WebUIClient.h \ + ../WebKit2/WebProcess/InjectedBundle/API/c/WKBundleBase.h \ + ../WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.h \ + ../WebKit2/WebProcess/InjectedBundle/InjectedBundle.h \ + ../WebKit2/WebProcess/InjectedBundle/InjectedBundlePageClient.h \ + ../WebKit2/WebProcess/WebCoreSupport/WebChromeClient.h \ + ../WebKit2/WebProcess/WebCoreSupport/WebContextMenuClient.h \ + ../WebKit2/WebProcess/WebCoreSupport/WebDragClient.h \ + ../WebKit2/WebProcess/WebCoreSupport/WebEditorClient.h \ + ../WebKit2/WebProcess/WebCoreSupport/WebErrors.h \ + ../WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.h \ + ../WebKit2/WebProcess/WebCoreSupport/WebInspectorClient.h \ + ../WebKit2/WebProcess/WebPage/ChunkedUpdateDrawingArea.h \ + ../WebKit2/WebProcess/WebPage/DrawingArea.h \ + ../WebKit2/WebProcess/WebPage/WebFrame.h \ + ../WebKit2/WebProcess/WebPage/WebPage.h \ + ../WebKit2/WebProcess/WebProcess.h \ + +SOURCES += \ + ../WebKit2/Platform/CoreIPC/ArgumentDecoder.cpp \ + ../WebKit2/Platform/CoreIPC/ArgumentEncoder.cpp \ + ../WebKit2/Platform/CoreIPC/Attachment.cpp \ + ../WebKit2/Platform/CoreIPC/Connection.cpp \ + ../WebKit2/Platform/CoreIPC/qt/ConnectionQt.cpp \ + ../WebKit2/Platform/RunLoop.cpp \ + ../WebKit2/Platform/WorkQueue.cpp \ + ../WebKit2/Platform/qt/RunLoopQt.cpp \ + ../WebKit2/Platform/qt/WorkQueueQt.cpp \ + ../WebKit2/Shared/CoreIPCSupport/MessageDebug.cpp \ + ../WebKit2/Shared/WebEventConversion.cpp \ + ../WebKit2/Shared/WebPreferencesStore.cpp \ + ../WebKit2/Shared/qt/UpdateChunk.cpp \ + ../WebKit2/Shared/qt/WebEventFactory.cpp \ + ../WebKit2/UIProcess/API/C/WKContext.cpp \ + ../WebKit2/UIProcess/API/C/WKFrame.cpp \ + ../WebKit2/UIProcess/API/C/WKFramePolicyListener.cpp \ + ../WebKit2/UIProcess/API/C/WKNavigationData.cpp \ + ../WebKit2/UIProcess/API/C/WKPage.cpp \ + ../WebKit2/UIProcess/API/C/WKPageNamespace.cpp \ + ../WebKit2/UIProcess/API/C/WKPreferences.cpp \ + ../WebKit2/UIProcess/API/C/WKString.cpp \ + ../WebKit2/UIProcess/API/C/WKURL.cpp \ + ../WebKit2/UIProcess/API/qt/qgraphicswkview.cpp \ + ../WebKit2/UIProcess/API/qt/qwkpage.cpp \ + ../WebKit2/UIProcess/API/cpp/qt/WKStringQt.cpp \ + ../WebKit2/UIProcess/API/cpp/qt/WKURLQt.cpp \ + ../WebKit2/UIProcess/ChunkedUpdateDrawingAreaProxy.cpp \ + ../WebKit2/UIProcess/DrawingAreaProxy.cpp \ + ../WebKit2/UIProcess/DrawingAreaProxyTiled.cpp \ + ../WebKit2/UIProcess/Plugins/PluginInfoStore.cpp \ + ../WebKit2/UIProcess/Plugins/qt/PluginInfoStoreQt.cpp \ + ../WebKit2/UIProcess/Launcher/qt/WebProcessLauncherQt.cpp \ + ../WebKit2/UIProcess/ResponsivenessTimer.cpp \ + ../WebKit2/UIProcess/WebContext.cpp \ + ../WebKit2/UIProcess/WebContextInjectedBundleClient.cpp \ + ../WebKit2/UIProcess/WebFramePolicyListenerProxy.cpp \ + ../WebKit2/UIProcess/WebFrameProxy.cpp \ + ../WebKit2/UIProcess/WebHistoryClient.cpp \ + ../WebKit2/UIProcess/WebLoaderClient.cpp \ + ../WebKit2/UIProcess/WebNavigationData.cpp \ + ../WebKit2/UIProcess/WebPageNamespace.cpp \ + ../WebKit2/UIProcess/WebPageProxy.cpp \ + ../WebKit2/UIProcess/WebPolicyClient.cpp \ + ../WebKit2/UIProcess/WebPreferences.cpp \ + ../WebKit2/UIProcess/WebProcessManager.cpp \ + ../WebKit2/UIProcess/WebProcessProxy.cpp \ + ../WebKit2/UIProcess/WebUIClient.cpp \ + ../WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp \ + ../WebKit2/WebProcess/InjectedBundle/InjectedBundlePageClient.cpp \ + ../WebKit2/WebProcess/InjectedBundle/qt/InjectedBundleQt.cpp \ + ../WebKit2/UIProcess/qt/DefaultPageLoaderClientCallbacksQt.cpp \ + ../WebKit2/UIProcess/qt/DrawingAreaProxyTiledQt.cpp \ + ../WebKit2/UIProcess/qt/ChunkedUpdateDrawingAreaProxyQt.cpp \ + ../WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp \ + ../WebKit2/WebProcess/WebCoreSupport/WebContextMenuClient.cpp \ + ../WebKit2/WebProcess/WebCoreSupport/WebDragClient.cpp \ + ../WebKit2/WebProcess/WebCoreSupport/WebEditorClient.cpp \ + ../WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp \ + ../WebKit2/WebProcess/WebCoreSupport/WebInspectorClient.cpp \ + ../WebKit2/WebProcess/WebCoreSupport/qt/WebErrorsQt.cpp \ + ../WebKit2/WebProcess/WebPage/ChunkedUpdateDrawingArea.cpp \ + ../WebKit2/WebProcess/WebPage/DrawingArea.cpp \ + ../WebKit2/WebProcess/WebPage/DrawingAreaTiled.cpp \ + ../WebKit2/WebProcess/WebPage/WebFrame.cpp \ + ../WebKit2/WebProcess/WebPage/WebPage.cpp \ + ../WebKit2/WebProcess/WebPage/qt/DrawingAreaTiledQt.cpp \ + ../WebKit2/WebProcess/WebPage/qt/ChunkedUpdateDrawingAreaQt.cpp \ + ../WebKit2/WebProcess/WebPage/qt/WebPageQt.cpp \ + ../WebKit2/WebProcess/WebProcess.cpp \ + + symbian { shared { contains(CONFIG, def_files) { diff --git a/WebKit.pro b/WebKit.pro index d8c1bc5..2d63779 100644 --- a/WebKit.pro +++ b/WebKit.pro @@ -12,6 +12,8 @@ exists($$PWD/WebKitTools/QtTestBrowser): SUBDIRS += WebKitTools/QtTestBrowser contains(QT_CONFIG, declarative) { exists($$PWD/WebKit/qt/declarative): SUBDIRS += WebKit/qt/declarative } +exists($$PWD/WebKitTools/MiniBrowser/qt/MiniBrowser.pro): SUBDIRS += WebKitTools/MiniBrowser/qt/MiniBrowser.pro +exists($$PWD/WebKit2/WebKit2.pro): SUBDIRS += WebKit2/WebKit2.pro exists($$PWD/JavaScriptCore/jsc.pro): SUBDIRS += JavaScriptCore/jsc.pro exists($$PWD/WebKit/qt/tests): SUBDIRS += WebKit/qt/tests exists($$PWD/WebKitTools/DumpRenderTree/qt/DumpRenderTree.pro): SUBDIRS += WebKitTools/DumpRenderTree/qt/DumpRenderTree.pro diff --git a/WebKit2/ChangeLog b/WebKit2/ChangeLog index 1dd6e7a..1f122e1 100644 --- a/WebKit2/ChangeLog +++ b/WebKit2/ChangeLog @@ -1,3 +1,24 @@ +2010-07-05 Antti Koivisto + + Reviewed by Kenneth Rohde Christiansen. + + [Qt] Initial WebKit2 implementation + https://bugs.webkit.org/show_bug.cgi?id=40233 + + Implement ChunkedUpdateDrawingArea + Proxy for Qt. Not built yet. + + * UIProcess/ChunkedUpdateDrawingAreaProxy.h: + * UIProcess/qt: Added. + * UIProcess/qt/ChunkedUpdateDrawingAreaProxyQt.cpp: Added. + (WebKit::ChunkedUpdateDrawingAreaProxy::page): + (WebKit::ChunkedUpdateDrawingAreaProxy::ensureBackingStore): + (WebKit::ChunkedUpdateDrawingAreaProxy::invalidateBackingStore): + (WebKit::ChunkedUpdateDrawingAreaProxy::platformPaint): + (WebKit::ChunkedUpdateDrawingAreaProxy::drawUpdateChunkIntoBackingStore): + * WebProcess/WebPage/qt: Added. + * WebProcess/WebPage/qt/ChunkedUpdateDrawingAreaQt.cpp: Added. + (WebKit::ChunkedUpdateDrawingArea::paintIntoUpdateChunk): + 2010-07-04 Anders Carlsson Reviewed by Dan Bernstein. diff --git a/WebKit2/UIProcess/ChunkedUpdateDrawingAreaProxy.h b/WebKit2/UIProcess/ChunkedUpdateDrawingAreaProxy.h index 537a16a..2644abb 100644 --- a/WebKit2/UIProcess/ChunkedUpdateDrawingAreaProxy.h +++ b/WebKit2/UIProcess/ChunkedUpdateDrawingAreaProxy.h @@ -36,6 +36,9 @@ #else class WKView; #endif +#elif PLATFORM(QT) +#include +class QGraphicsWKView; #endif namespace WebKit { @@ -48,6 +51,8 @@ typedef WKView PlatformWebView; #elif PLATFORM(WIN) class WebView; typedef WebView PlatformWebView; +#elif PLATFORM(QT) +typedef QGraphicsWKView PlatformWebView; #endif class ChunkedUpdateDrawingAreaProxy : public DrawingAreaProxy { @@ -95,6 +100,8 @@ private: // BackingStore OwnPtr m_backingStoreDC; OwnPtr m_backingStoreBitmap; +#elif PLATFORM(QT) + QImage m_backingStoreImage; #endif PlatformWebView* m_webView; diff --git a/WebKit2/UIProcess/qt/ChunkedUpdateDrawingAreaProxyQt.cpp b/WebKit2/UIProcess/qt/ChunkedUpdateDrawingAreaProxyQt.cpp new file mode 100644 index 0000000..cd1bbef --- /dev/null +++ b/WebKit2/UIProcess/qt/ChunkedUpdateDrawingAreaProxyQt.cpp @@ -0,0 +1,80 @@ +/* + * Copyright (C) 2010 Apple Inc. All rights reserved. + * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) + * + * 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 "ChunkedUpdateDrawingAreaProxy.h" + +#include "DrawingAreaMessageKinds.h" +#include "DrawingAreaProxyMessageKinds.h" +#include "UpdateChunk.h" +#include "WKAPICast.h" +#include "WebPageProxy.h" +#include "qwkgraphicswidget.h" +#include + +using namespace WebCore; + +namespace WebKit { + +WebPageProxy* ChunkedUpdateDrawingAreaProxy::page() +{ + return toWK(m_webView->page()->pageRef()); +} + +void ChunkedUpdateDrawingAreaProxy::ensureBackingStore() +{ + if (!m_backingStoreImage.isNull()) + return; + + m_backingStoreImage = QImage(m_viewSize.width(), m_viewSize.height(), QImage::Format_RGB32); +} + +void ChunkedUpdateDrawingAreaProxy::invalidateBackingStore() +{ + m_backingStoreImage = QImage(); +} + +void ChunkedUpdateDrawingAreaProxy::platformPaint(const IntRect& rect, QPainter* painter) +{ + if (m_backingStoreImage.isNull()) + return; + + painter->drawImage(QPoint(0, 0), m_backingStoreImage); +} + +void ChunkedUpdateDrawingAreaProxy::drawUpdateChunkIntoBackingStore(UpdateChunk* updateChunk) +{ + ensureBackingStore(); + + QImage image(updateChunk->createImage()); + const IntRect& updateChunkRect = updateChunk->rect(); + + QPainter painter(&m_backingStoreImage); + painter.drawImage(updateChunkRect.topLeft(), image); + + m_webView->update(QRect(updateChunkRect)); +} + +} // namespace WebKit diff --git a/WebKit2/WebProcess/WebPage/qt/ChunkedUpdateDrawingAreaQt.cpp b/WebKit2/WebProcess/WebPage/qt/ChunkedUpdateDrawingAreaQt.cpp new file mode 100644 index 0000000..25ed3e7 --- /dev/null +++ b/WebKit2/WebProcess/WebPage/qt/ChunkedUpdateDrawingAreaQt.cpp @@ -0,0 +1,50 @@ +/* + * Copyright (C) 2010 Apple Inc. All rights reserved. + * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) + * + * 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 "ChunkedUpdateDrawingArea.h" + +#include "UpdateChunk.h" +#include "WebPage.h" +#include +#include +#include + +using namespace WebCore; + +namespace WebKit { + +void ChunkedUpdateDrawingArea::paintIntoUpdateChunk(UpdateChunk* updateChunk) +{ + QImage image(updateChunk->createImage()); + QPainter painter(&image); + // Now paint into the backing store. + GraphicsContext graphicsContext(&painter); + graphicsContext.translate(-updateChunk->rect().x(), -updateChunk->rect().y()); + + m_webPage->drawRect(graphicsContext, updateChunk->rect()); +} + +} // namespace WebKit