diff options
Diffstat (limited to 'packages/webkit')
-rw-r--r-- | packages/webkit/files/WebKit.pro | 11 | ||||
-rw-r--r-- | packages/webkit/files/qt-api-changes.diff | 27 | ||||
-rw-r--r-- | packages/webkit/files/qtwebkit-use-image-decoders.patch | 280 | ||||
-rw-r--r-- | packages/webkit/webkit-gtk_svn.bb | 58 | ||||
-rw-r--r-- | packages/webkit/webkit-qt.inc | 32 | ||||
-rw-r--r-- | packages/webkit/webkit-qt_svn.bb | 2 | ||||
-rw-r--r-- | packages/webkit/webkit-qtopia_svn.bb | 5 | ||||
-rw-r--r-- | packages/webkit/webkit.inc | 49 |
8 files changed, 406 insertions, 58 deletions
diff --git a/packages/webkit/files/WebKit.pro b/packages/webkit/files/WebKit.pro index dca2614109..aab0209a93 100644 --- a/packages/webkit/files/WebKit.pro +++ b/packages/webkit/files/WebKit.pro @@ -3,14 +3,9 @@ CONFIG += ordered !gtk-port:CONFIG += qt-port qt-port:!win32-*:SUBDIRS += WebKit/qt/Plugins SUBDIRS += \ - WebCore \ - JavaScriptCore/kjs/testkjs.pro - -qt-port { - SUBDIRS += WebKit/qt/QtLauncher - - !win32-*: SUBDIRS += WebKitTools/DumpRenderTree/qt/DumpRenderTree.pro -} + WebCore +qt-port:SUBDIRS += \ + WebKit/qt/QtLauncher gtk-port:SUBDIRS += \ WebKitTools/GtkLauncher diff --git a/packages/webkit/files/qt-api-changes.diff b/packages/webkit/files/qt-api-changes.diff new file mode 100644 index 0000000000..16f448b017 --- /dev/null +++ b/packages/webkit/files/qt-api-changes.diff @@ -0,0 +1,27 @@ +Index: WebKit/qt/Api/qwebkitglobal.h +=================================================================== +--- WebKit/qt/Api/qwebkitglobal.h (revision 26079) ++++ WebKit/qt/Api/qwebkitglobal.h (working copy) +@@ -25,15 +25,13 @@ + #include <qglobal.h> + + #if defined(Q_OS_WIN) +-# if defined(BUILD_WEBKIT) +-# define QWEBKIT_EXPORT Q_DECL_EXPORT +-# else +-# define QWEBKIT_EXPORT Q_DECL_IMPORT +-# endif ++ #ifdef BUILD_WEBKIT ++ #define QWEBKIT_EXPORT __declspec(dllexport) ++ #else ++ #define QWEBKIT_EXPORT __declspec(dllimport) ++ #endif ++#else ++ #define QWEBKIT_EXPORT __attribute__((visibility("default"))) + #endif + +-#if !defined(QWEBKIT_EXPORT) +-#define QWEBKIT_EXPORT Q_DECL_EXPORT +-#endif +- + #endif // QWEBKITGLOBAL_H diff --git a/packages/webkit/files/qtwebkit-use-image-decoders.patch b/packages/webkit/files/qtwebkit-use-image-decoders.patch new file mode 100644 index 0000000000..85d3f84a0d --- /dev/null +++ b/packages/webkit/files/qtwebkit-use-image-decoders.patch @@ -0,0 +1,280 @@ +diff --git a/WebCore/WebCore.pro b/WebCore/WebCore.pro +index bb34e44..23a1cd0 100644 +--- a/WebCore/WebCore.pro ++++ b/WebCore/WebCore.pro +@@ -6,6 +6,7 @@ CONFIG += building-libs + CONFIG += no_batch + include($$PWD/../WebKit.pri) + gtk-port:LIBS -= -lWebKitGtk ++qt-port:LIBS += -lpng -ljpeg + + TEMPLATE = lib + qt-port:TARGET = QtWebKit +@@ -74,6 +75,12 @@ qt-port { + INCLUDEPATH += \ + $$PWD/platform/qt \ + $$PWD/platform/network/qt \ ++ $$PWD/platform/image-decoders/bmp \ ++ $$PWD/platform/image-decoders/gif \ ++ $$PWD/platform/image-decoders/ico \ ++ $$PWD/platform/image-decoders/jpeg \ ++ $$PWD/platform/image-decoders/png \ ++ $$PWD/platform/image-decoders/xbm \ + $$PWD/platform/graphics/qt \ + $$PWD/platform/graphics/svg/qt \ + $$PWD/loader/qt \ +@@ -777,6 +784,13 @@ qt-port { + page/qt/EventHandlerQt.cpp \ + page/qt/FrameQt.cpp \ + loader/qt/DocumentLoaderQt.cpp \ ++ platform/image-decoders/gif/GIFImageDecoder.cpp \ ++ platform/image-decoders/gif/GIFImageReader.cpp \ ++ platform/image-decoders/png/PNGImageDecoder.cpp \ ++ platform/image-decoders/jpeg/JPEGImageDecoder.cpp \ ++ platform/image-decoders/bmp/BMPImageDecoder.cpp \ ++ platform/image-decoders/ico/ICOImageDecoder.cpp \ ++ platform/image-decoders/xbm/XBMImageDecoder.cpp \ + platform/graphics/qt/AffineTransformQt.cpp \ + platform/graphics/qt/ColorQt.cpp \ + platform/graphics/qt/FloatPointQt.cpp \ +diff --git a/WebCore/platform/graphics/ImageSource.h b/WebCore/platform/graphics/ImageSource.h +index a75f1d6..2af8c1e 100644 +--- a/WebCore/platform/graphics/ImageSource.h ++++ b/WebCore/platform/graphics/ImageSource.h +@@ -49,8 +49,8 @@ class SharedBuffer; + typedef CGImageSourceRef NativeImageSourcePtr; + typedef CGImageRef NativeImagePtr; + #elif PLATFORM(QT) +-class ImageDecoderQt; +-typedef ImageDecoderQt* NativeImageSourcePtr; ++class ImageDecoder; ++typedef ImageDecoder* NativeImageSourcePtr; + typedef QPixmap* NativeImagePtr; + #else + class ImageDecoder; +diff --git a/WebCore/platform/graphics/qt/ImageSourceQt.cpp b/WebCore/platform/graphics/qt/ImageSourceQt.cpp +index 264f90f..d1fd340 100644 +--- a/WebCore/platform/graphics/qt/ImageSourceQt.cpp ++++ b/WebCore/platform/graphics/qt/ImageSourceQt.cpp +@@ -1,6 +1,7 @@ + /* + * Copyright (C) 2006 Apple Computer, Inc. All rights reserved. + * Copyright (C) 2006 Trolltech ASA ++ * Copyright (C) 2007 Alp Toker <alp.toker@collabora.co.uk> + * + * All rights reserved. + * +@@ -28,76 +29,78 @@ + + #include "config.h" + #include "ImageSource.h" +-#include "ImageDecoderQt.h" + #include "SharedBuffer.h" + +-#include <QImage> +-#include <qdebug.h> ++#include "GIFImageDecoder.h" ++#include "JPEGImageDecoder.h" ++#include "PNGImageDecoder.h" ++#include "BMPImageDecoder.h" ++#include "ICOImageDecoder.h" ++#include "XBMImageDecoder.h" + ++#include <QImage> ++#include <QPixmap> + + namespace WebCore { +- enum ImageFormat { ImageFormat_None, ImageFormat_GIF, ImageFormat_PNG, ImageFormat_JPEG, +- ImageFormat_BMP, ImageFormat_ICO, ImageFormat_XBM }; + +-ImageFormat detectImageFormat(const SharedBuffer& data) ++ImageDecoder* createDecoder(const Vector<char>& data) + { + // We need at least 4 bytes to figure out what kind of image we're dealing with. + int length = data.size(); + if (length < 4) +- return ImageFormat_None; ++ return 0; + +- const unsigned char* uContents = (const unsigned char*) data.data(); ++ const unsigned char* uContents = (const unsigned char*)data.data(); + const char* contents = data.data(); + + // GIFs begin with GIF8(7 or 9). + if (strncmp(contents, "GIF8", 4) == 0) +- return ImageFormat_GIF; ++ return new GIFImageDecoder(); + + // Test for PNG. +- if (uContents[0] == 0x89 && +- uContents[1] == 0x50 && +- uContents[2] == 0x4E && +- uContents[3] == 0x47) +- return ImageFormat_PNG; ++ if (uContents[0]==0x89 && ++ uContents[1]==0x50 && ++ uContents[2]==0x4E && ++ uContents[3]==0x47) ++ return new PNGImageDecoder(); + + // JPEG +- if (uContents[0] == 0xFF && +- uContents[1] == 0xD8 && +- uContents[2] == 0xFF) +- return ImageFormat_JPEG; ++ if (uContents[0]==0xFF && ++ uContents[1]==0xD8 && ++ uContents[2]==0xFF) ++ return new JPEGImageDecoder(); + + // BMP + if (strncmp(contents, "BM", 2) == 0) +- return ImageFormat_BMP; ++ return new BMPImageDecoder(); + + // ICOs always begin with a 2-byte 0 followed by a 2-byte 1. + // CURs begin with 2-byte 0 followed by 2-byte 2. + if (!memcmp(contents, "\000\000\001\000", 4) || + !memcmp(contents, "\000\000\002\000", 4)) +- return ImageFormat_ICO; +- ++ return new ICOImageDecoder(); ++ + // XBMs require 8 bytes of info. + if (length >= 8 && strncmp(contents, "#define ", 8) == 0) +- return ImageFormat_XBM; ++ return new XBMImageDecoder(); + + // Give up. We don't know what the heck this is. +- return ImageFormat_None; +-} +- +-ImageDecoderQt* createDecoder(const SharedBuffer& data) { +- if (detectImageFormat(data) != ImageFormat_None) +- return new ImageDecoderQt(); + return 0; + } + + ImageSource::ImageSource() +- : m_decoder(0) ++ : m_decoder(0) ++{} ++ ++ImageSource::~ImageSource() + { ++ clear(); + } + +-ImageSource::~ImageSource() ++void ImageSource::clear() + { + delete m_decoder; ++ m_decoder = 0; + } + + bool ImageSource::initialized() const +@@ -111,13 +114,11 @@ void ImageSource::setData(SharedBuffer* data, bool allDataReceived) + // This method will examine the data and instantiate an instance of the appropriate decoder plugin. + // If insufficient bytes are available to determine the image type, no decoder plugin will be + // made. +- if (!m_decoder) +- m_decoder = createDecoder(*data); +- ++ delete m_decoder; ++ m_decoder = createDecoder(data->buffer()); + if (!m_decoder) + return; +- +- m_decoder->setData(data->buffer(), allDataReceived); ++ m_decoder->setData(data, allDataReceived); + } + + bool ImageSource::isSizeAvailable() +@@ -146,10 +147,7 @@ int ImageSource::repetitionCount() + + size_t ImageSource::frameCount() const + { +- if (!m_decoder) +- return 0; +- +- return m_decoder->frameCount(); ++ return m_decoder ? m_decoder->frameCount() : 0; + } + + NativeImagePtr ImageSource::createFrameAtIndex(size_t index) +@@ -157,25 +155,38 @@ NativeImagePtr ImageSource::createFrameAtIndex(size_t index) + if (!m_decoder) + return 0; + +- +- const QPixmap* source = m_decoder->imageAtIndex(index); +- if (!source) ++ RGBA32Buffer* buffer = m_decoder->frameBufferAtIndex(index); ++ if (!buffer || buffer->status() == RGBA32Buffer::FrameEmpty) + return 0; + +- return new QPixmap(*source); ++ return new QPixmap(QPixmap::fromImage(QImage(reinterpret_cast<unsigned char*>(buffer->bytes().data()), ++ size().width(), size().height(), size().width()*4, QImage::Format_ARGB32))); ++} ++ ++bool ImageSource::frameIsCompleteAtIndex(size_t index) ++{ ++ if (!m_decoder) ++ return false; ++ ++ RGBA32Buffer* buffer = m_decoder->frameBufferAtIndex(index); ++ return buffer && buffer->status() == RGBA32Buffer::FrameComplete; + } + + float ImageSource::frameDurationAtIndex(size_t index) + { + if (!m_decoder) + return 0; +- ++ ++ RGBA32Buffer* buffer = m_decoder->frameBufferAtIndex(index); ++ if (!buffer || buffer->status() == RGBA32Buffer::FrameEmpty) ++ return 0; ++ + // Many annoying ads specify a 0 duration to make an image flash as quickly + // as possible. We follow WinIE's behavior and use a duration of 100 ms + // for any frames that specify a duration of <= 50 ms. See + // <http://bugs.webkit.org/show_bug.cgi?id=14413> or Radar 4051389 for + // more. +- const float duration = m_decoder->duration(index) / 1000.0f; ++ const float duration = buffer->duration() / 1000.0f; + return (duration < 0.051f) ? 0.100f : duration; + } + +@@ -183,26 +194,13 @@ bool ImageSource::frameHasAlphaAtIndex(size_t index) + { + if (!m_decoder || !m_decoder->supportsAlpha()) + return false; +- +- const QPixmap* source = m_decoder->imageAtIndex( index); +- if (!source) +- return false; +- +- return source->hasAlphaChannel(); +-} + +-bool ImageSource::frameIsCompleteAtIndex(size_t index) +-{ +- return (m_decoder && m_decoder->imageAtIndex(index) != 0); +-} ++ RGBA32Buffer* buffer = m_decoder->frameBufferAtIndex(index); ++ if (!buffer || buffer->status() == RGBA32Buffer::FrameEmpty) ++ return false; + +-void ImageSource::clear() +-{ +- delete m_decoder; +- m_decoder = 0; ++ return buffer->hasAlpha(); + } +- +- + } + + // vim: ts=4 sw=4 et diff --git a/packages/webkit/webkit-gtk_svn.bb b/packages/webkit/webkit-gtk_svn.bb index 208ec25719..262c6820db 100644 --- a/packages/webkit/webkit-gtk_svn.bb +++ b/packages/webkit/webkit-gtk_svn.bb @@ -1,42 +1,15 @@ -DEPENDS = "flex-native gperf-native gperf perl-native curl icu libxml2 sqlite3 cairo libxslt libidn gnutls gtk+" -SRCREV_FORMAT = "webcore-rwebkit" +DEPENDS = "curl icu libxml2 cairo libxslt libidn gnutls gtk+" -# Yes, this is wrong... -PV = "0.0+svnr${SRCREV}" -PR = "r1" -inherit qmake2 pkgconfig +WEBKIT_PORT = "gtk-port" +WEBKIT_EXTRA_OPTIONS = "CONFIG-=qt" -SRC_URI = "\ - svn://svn.webkit.org/repository/webkit/trunk/;module=JavaScriptCore;proto=http \ - svn://svn.webkit.org/repository/webkit/trunk/;module=JavaScriptGlue;proto=http \ - svn://svn.webkit.org/repository/webkit/trunk/;module=WebCore;proto=http;name=webcore \ - svn://svn.webkit.org/repository/webkit/trunk/;module=WebKit;proto=http;name=webkit \ - svn://svn.webkit.org/repository/webkit/trunk/;module=WebKitLibraries;proto=http \ -# svn://svn.webkit.org/repository/webkit/trunk/;module=WebKitQt;proto=http \ - svn://svn.webkit.org/repository/webkit/trunk/;module=WebKitTools;proto=http \ - file://Makefile \ - file://Makefile.shared \ - file://WebKit.pri \ - file://WebKit.pro \ -" -S = "${WORKDIR}/" +FILES_webkit-gtklauncher = "${bindir}/GtkLauncher" +FILES_webkit-gtklauncher-dbg = "${bindir}/.debug/GtkLauncher" -do_configure() { - qmake2 -spec ${QMAKESPEC} CONFIG+=gtk-port CONFIG-=qt CONFIG-=release CONFIG+=debug - mkdir -p WebKitBuilds/Debug - cd WebKitBuilds/Debug - PWD=`pwd` qmake2 -spec ${QMAKESPEC} -r OUTPUT_DIR=$PWD/ CONFIG-=qt CONFIG+=gtk-port $PWD/../../WebKit.pro \ - WEBKIT_INC_DIR=${prefix}/include WEBKIT_LIB_DIR=${libdir} -} +require webkit.inc -do_compile_prepend() { - mkdir -p ${S}/WebKitBuilds/Debug/JavaScriptCore/pcre/tmp/ - cd ${S}/JavaScriptCore/pcre - ${BUILD_CC} dftables.c -o dftables -I. -I../wtf - cp dftables ${S}/WebKitBuilds/Debug/JavaScriptCore/pcre/tmp/ - cd ${S}/WebKitBuilds/Debug -} +PR = "r3" do_install() { install -d ${D}${bindir} @@ -45,22 +18,7 @@ do_install() { install -m 0755 ${S}/WebKitBuilds/Debug/WebKitTools/GtkLauncher/GtkLauncher ${D}${bindir} cd ${S}/WebKitBuilds/Debug - PWD=`pwd` qmake2 -spec ${QMAKESPEC} -r OUTPUT_DIR=$PWD/ CONFIG-=qt CONFIG+=gtk-port $PWD/../../WebKit.pro \ - WEBKIT_INC_DIR=${D}${prefix}/include WEBKIT_LIB_DIR=${D}${libdir} + PWD=`pwd` ${WEBKIT_QMAKE} WEBKIT_INC_DIR=${D}${prefix}/include WEBKIT_LIB_DIR=${D}${libdir} $PWD/../../WebKit.pro oe_runmake install } -do_stage() { - install -d ${STAGING_LIBDIR} - install -d ${STAGING_INCDIR} - cd ${S}/WebKitBuilds/Debug - PWD=`pwd` qmake2 -spec ${QMAKESPEC} -r OUTPUT_DIR=$PWD/ CONFIG-=qt CONFIG+=gtk-port $PWD/../../WebKit.pro \ - WEBKIT_INC_DIR=${STAGING_INCDIR} WEBKIT_LIB_DIR=${STAGING_LIBDIR} - oe_runmake install -} - - -PACKAGES =+ "webkit-gtklauncher-dbg webkit-gtklauncher" - -FILES_webkit-gtklauncher = "${bindir}/GtkLauncher" -FILES_webkit-gtklauncher-dbg = "${bindir}/.debug/GtkLauncher" diff --git a/packages/webkit/webkit-qt.inc b/packages/webkit/webkit-qt.inc new file mode 100644 index 0000000000..1dbf71c010 --- /dev/null +++ b/packages/webkit/webkit-qt.inc @@ -0,0 +1,32 @@ +WEBKIT_PORT = "qt" +WEBKIT_EXTRA_OPTIONS = "" + +FILES_${PN}launcher = "${bindir}/QtLauncher" +FILES_${PN}launcher-dbg = "${bindir}/.debug/*" + +RDEPENDS += "openssl" + +require webkit.inc + +PR = "r6" +SRC_URI += " file://qt-api-changes.diff;patch=0;pnum=0 \ + file://qtwebkit-use-image-decoders.patch;patch=0 " + +do_install() { + install -d ${D}${bindir} + install -d ${D}${libdir} + install -d ${D}${libdir}/pkgconfig + + install -m 0755 ${S}/WebKitBuilds/Debug/bin/QtLauncher ${D}${bindir} + cd ${S}/WebKitBuilds/Debug + PWD=`pwd` ${WEBKIT_QMAKE} WEBKIT_INC_DIR=${D}${prefix}/include WEBKIT_LIB_DIR=${D}${libdir} $PWD/../../WebKit.pro + oe_runmake install + + oe_libinstall -C ${S}/WebKitBuilds/Debug/lib libQtWebKit ${D}${libdir} +} + +# disabled as Qt and Qtopia will not like each other... +#do_stage_prepend() { +# oe_libinstall -C ${S}/WebKitBuilds/Debug/lib libQtWebKit ${D}${libdir} +#} + diff --git a/packages/webkit/webkit-qt_svn.bb b/packages/webkit/webkit-qt_svn.bb new file mode 100644 index 0000000000..75b36a4a58 --- /dev/null +++ b/packages/webkit/webkit-qt_svn.bb @@ -0,0 +1,2 @@ +require webkit-qt.inc +inherit qt4x11 diff --git a/packages/webkit/webkit-qtopia_svn.bb b/packages/webkit/webkit-qtopia_svn.bb new file mode 100644 index 0000000000..03e1114b81 --- /dev/null +++ b/packages/webkit/webkit-qtopia_svn.bb @@ -0,0 +1,5 @@ +require webkit-qt.inc +inherit qtopia4core + +WEBKIT_EXTRA_OPTIONS += "QT+=xml QT+=network" + diff --git a/packages/webkit/webkit.inc b/packages/webkit/webkit.inc new file mode 100644 index 0000000000..2ff61091c3 --- /dev/null +++ b/packages/webkit/webkit.inc @@ -0,0 +1,49 @@ +DEPENDS += "flex-native gperf-native perl-native sqlite3" +SRCREV_FORMAT = "webcore-rwebkit" + +PACKAGES =+ "${PN}launcher-dbg ${PN}launcher" + +# Yes, this is wrong... +PV = "0.1+svnr${SRCREV}" + +inherit qmake2 pkgconfig + +SRC_URI = "\ + svn://svn.webkit.org/repository/webkit/trunk/;module=JavaScriptCore;proto=http \ + svn://svn.webkit.org/repository/webkit/trunk/;module=JavaScriptGlue;proto=http \ + svn://svn.webkit.org/repository/webkit/trunk/;module=WebCore;proto=http;name=webcore \ + svn://svn.webkit.org/repository/webkit/trunk/;module=WebKit;proto=http;name=webkit \ + svn://svn.webkit.org/repository/webkit/trunk/;module=WebKitLibraries;proto=http \ + svn://svn.webkit.org/repository/webkit/trunk/;module=WebKitTools;proto=http \ + file://Makefile \ + file://Makefile.shared \ + file://WebKit.pri \ + file://WebKit.pro \ +" +S = "${WORKDIR}/" + +WEBKIT_QMAKE = "qmake2 -spec ${QMAKESPEC} -r OUTPUT_DIR=$PWD/ ${WEBKIT_EXTRA_OPTIONS} CONFIG+=${WEBKIT_PORT}" + +do_configure() { + qmake2 -spec ${QMAKESPEC} CONFIG+=${WEBKIT_PORT} ${WEBKIT_EXTRA_OPTIONS} CONFIG-=release CONFIG+=debug + mkdir -p WebKitBuilds/Debug + cd WebKitBuilds/Debug + PWD=`pwd` ${WEBKIT_QMAKE} WEBKIT_INC_DIR=${prefix}/include WEBKIT_LIB_DIR=${libdir} $PWD/../../WebKit.pro +} + +do_compile_prepend() { + mkdir -p ${S}/WebKitBuilds/Debug/JavaScriptCore/pcre/tmp/ + cd ${S}/JavaScriptCore/pcre + ${BUILD_CC} dftables.c -o dftables -I. -I../wtf + cp dftables ${S}/WebKitBuilds/Debug/JavaScriptCore/pcre/tmp/ + cd ${S}/WebKitBuilds/Debug +} + +do_stage() { + install -d ${STAGING_LIBDIR} + install -d ${STAGING_INCDIR} + cd ${S}/WebKitBuilds/Debug + PWD=`pwd` ${WEBKIT_QMAKE} WEBKIT_INC_DIR=${STAGING_INCDIR} WEBKIT_LIB_DIR=${STAGING_LIBDIR} $PWD/../../WebKit.pro + oe_runmake install +} + |