summaryrefslogtreecommitdiff
path: root/packages/webkit
diff options
context:
space:
mode:
Diffstat (limited to 'packages/webkit')
-rw-r--r--packages/webkit/files/WebKit.pro11
-rw-r--r--packages/webkit/files/qt-api-changes.diff27
-rw-r--r--packages/webkit/files/qtwebkit-use-image-decoders.patch280
-rw-r--r--packages/webkit/webkit-gtk_svn.bb58
-rw-r--r--packages/webkit/webkit-qt.inc32
-rw-r--r--packages/webkit/webkit-qt_svn.bb2
-rw-r--r--packages/webkit/webkit-qtopia_svn.bb5
-rw-r--r--packages/webkit/webkit.inc49
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
+}
+