2016-02-03 20:42:14 +01:00
|
|
|
--- qtwebkit-opensource-src-5.0.0/Tools/qmake/mkspecs/features/configure.prf.orig 2013-01-04 18:56:36.785550268 +0100
|
|
|
|
+++ qtwebkit-opensource-src-5.0.0/Tools/qmake/mkspecs/features/configure.prf 2013-01-04 18:58:20.047373664 +0100
|
2016-02-04 00:33:39 +01:00
|
|
|
@@ -120,9 +120,9 @@
|
2016-02-03 20:42:14 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
# Sanity checks that would prevent us from building the whole project altogether.
|
2016-06-14 23:48:54 +02:00
|
|
|
- !config_icu:!osx:!use?(wchar_unicode) {
|
2016-02-03 20:42:14 +01:00
|
|
|
- addReasonForSkippingBuild("ICU is required.")
|
|
|
|
- }
|
2016-06-14 23:48:54 +02:00
|
|
|
+# !config_icu:!osx:!use?(wchar_unicode) {
|
2016-02-03 20:42:14 +01:00
|
|
|
+# addReasonForSkippingBuild("ICU is required.")
|
|
|
|
+# }
|
2016-02-04 00:33:39 +01:00
|
|
|
production_build:blackberry {
|
|
|
|
addReasonForSkippingBuild("Build not supported on BB10 yet.")
|
2016-02-03 20:42:14 +01:00
|
|
|
}
|
|
|
|
--- qtwebkit-opensource-src-5.0.0/Source/WTF/wtf/Platform.h.orig 2013-01-04 19:28:53.735934784 +0100
|
|
|
|
+++ qtwebkit-opensource-src-5.0.0/Source/WTF/wtf/Platform.h 2013-01-04 19:28:13.856641177 +0100
|
|
|
|
@@ -580,9 +580,13 @@
|
|
|
|
# define WTF_USE_WCHAR_UNICODE 1
|
|
|
|
#endif
|
|
|
|
|
|
|
|
+#if OS(WINDOWS) && PLATFORM(QT)
|
|
|
|
+#define WTF_USE_QT4_UNICODE 1
|
|
|
|
+#else
|
|
|
|
#if !USE(WCHAR_UNICODE)
|
|
|
|
#define WTF_USE_ICU_UNICODE 1
|
|
|
|
#endif
|
|
|
|
+#endif
|
|
|
|
|
|
|
|
#if PLATFORM(MAC) && !PLATFORM(IOS)
|
|
|
|
#if CPU(X86_64)
|
|
|
|
--- qtwebkit-opensource-src-5.0.0/Source/WebCore/platform/text/TextAllInOne.cpp.orig 2013-01-04 21:55:38.574265749 +0100
|
|
|
|
+++ qtwebkit-opensource-src-5.0.0/Source/WebCore/platform/text/TextAllInOne.cpp 2013-01-04 20:51:54.156245445 +0100
|
|
|
|
@@ -27,7 +27,11 @@
|
|
|
|
|
|
|
|
#include "TextBoundaries.cpp"
|
|
|
|
#include "TextBreakIterator.cpp"
|
|
|
|
+#if USE(QT4_UNICODE)
|
|
|
|
+#include "TextBreakIteratorQt.cpp"
|
|
|
|
+#else
|
|
|
|
#include "TextBreakIteratorICU.cpp"
|
|
|
|
+#endif
|
|
|
|
#include "TextCodec.cpp"
|
|
|
|
#include "TextCodecICU.cpp"
|
|
|
|
#include "TextCodecLatin1.cpp"
|
|
|
|
@@ -35,6 +39,10 @@
|
|
|
|
#include "TextCodecUTF8.cpp"
|
|
|
|
#include "TextCodecUserDefined.cpp"
|
|
|
|
#include "TextEncoding.cpp"
|
|
|
|
+#if USE(QT4_UNICODE)
|
|
|
|
+#include "TextEncodingDetectorNone.cpp"
|
|
|
|
+#else
|
|
|
|
#include "TextEncodingDetectorICU.cpp"
|
|
|
|
+#endif
|
|
|
|
#include "TextEncodingRegistry.cpp"
|
|
|
|
#include "TextStream.cpp"
|
|
|
|
--- /dev/null 2012-12-26 00:21:52.105366365 +0100
|
|
|
|
+++ qtwebkit-opensource-src-5.0.0/Source/WebCore/platform/text/TextBreakIteratorQt.cpp 2012-05-31 00:58:54.000000000 +0200
|
|
|
|
@@ -0,0 +1,175 @@
|
|
|
|
+/*
|
|
|
|
+ * Copyright (C) 2006 Lars Knoll <lars@trolltech.com>
|
|
|
|
+ *
|
|
|
|
+ * 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.
|
|
|
|
+ *
|
|
|
|
+ */
|
|
|
|
+
|
|
|
|
+#include "config.h"
|
|
|
|
+#include "TextBreakIterator.h"
|
|
|
|
+
|
|
|
|
+#include <QtCore/qtextboundaryfinder.h>
|
|
|
|
+#include <algorithm>
|
|
|
|
+#include <qdebug.h>
|
|
|
|
+#include <wtf/Atomics.h>
|
|
|
|
+
|
|
|
|
+// #define DEBUG_TEXT_ITERATORS
|
|
|
|
+#ifdef DEBUG_TEXT_ITERATORS
|
|
|
|
+#define DEBUG qDebug
|
|
|
|
+#else
|
|
|
|
+#define DEBUG if (1) {} else qDebug
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
+using namespace WTF;
|
|
|
|
+using namespace std;
|
|
|
|
+
|
|
|
|
+namespace WebCore {
|
|
|
|
+
|
|
|
|
+ class TextBreakIterator : public QTextBoundaryFinder {
|
|
|
|
+ public:
|
|
|
|
+ TextBreakIterator(QTextBoundaryFinder::BoundaryType type, const QString& string)
|
|
|
|
+ : QTextBoundaryFinder(type, string)
|
|
|
|
+ { }
|
|
|
|
+ TextBreakIterator()
|
|
|
|
+ : QTextBoundaryFinder()
|
|
|
|
+ { }
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ TextBreakIterator* setUpIterator(TextBreakIterator& iterator, QTextBoundaryFinder::BoundaryType type, const UChar* characters, int length)
|
|
|
|
+ {
|
|
|
|
+ if (!characters || !length)
|
|
|
|
+ return 0;
|
|
|
|
+
|
|
|
|
+ if (iterator.isValid() && type == iterator.type() && iterator.string() == QString::fromRawData(reinterpret_cast<const QChar*>(characters), length)) {
|
|
|
|
+ iterator.toStart();
|
|
|
|
+ return &iterator;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ iterator = TextBreakIterator(type, QString(reinterpret_cast<const QChar*>(characters), length));
|
|
|
|
+ return &iterator;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ TextBreakIterator* wordBreakIterator(const UChar* string, int length)
|
|
|
|
+ {
|
|
|
|
+ static TextBreakIterator staticWordBreakIterator;
|
|
|
|
+ return setUpIterator(staticWordBreakIterator, QTextBoundaryFinder::Word, string, length);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ static TextBreakIterator* nonSharedCharacterBreakIterator;
|
|
|
|
+
|
|
|
|
+ NonSharedCharacterBreakIterator::NonSharedCharacterBreakIterator(const UChar* buffer, int length)
|
|
|
|
+ {
|
|
|
|
+ m_iterator = nonSharedCharacterBreakIterator;
|
|
|
|
+ bool createdIterator = m_iterator && weakCompareAndSwap(reinterpret_cast<void**>(&nonSharedCharacterBreakIterator), m_iterator, 0);
|
|
|
|
+ if (!createdIterator)
|
|
|
|
+ m_iterator = new TextBreakIterator();
|
|
|
|
+ if (!setUpIterator(*m_iterator, QTextBoundaryFinder::Grapheme, buffer, length)) {
|
|
|
|
+ delete m_iterator;
|
|
|
|
+ m_iterator = 0;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ NonSharedCharacterBreakIterator::~NonSharedCharacterBreakIterator()
|
|
|
|
+ {
|
|
|
|
+ if (!weakCompareAndSwap(reinterpret_cast<void**>(&nonSharedCharacterBreakIterator), 0, m_iterator))
|
|
|
|
+ delete m_iterator;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ TextBreakIterator* cursorMovementIterator(const UChar* string, int length)
|
|
|
|
+ {
|
|
|
|
+ static TextBreakIterator staticCursorMovementIterator;
|
|
|
|
+ return setUpIterator(staticCursorMovementIterator, QTextBoundaryFinder::Grapheme, string, length);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ static TextBreakIterator* staticLineBreakIterator;
|
|
|
|
+
|
|
|
|
+ TextBreakIterator* acquireLineBreakIterator(const UChar* string, int length, const AtomicString&)
|
|
|
|
+ {
|
|
|
|
+ TextBreakIterator* lineBreakIterator = 0;
|
|
|
|
+ if (staticLineBreakIterator) {
|
|
|
|
+ setUpIterator(*staticLineBreakIterator, QTextBoundaryFinder::Line, string, length);
|
|
|
|
+ std::swap(staticLineBreakIterator, lineBreakIterator);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (!lineBreakIterator && string && length)
|
|
|
|
+ lineBreakIterator = new TextBreakIterator(QTextBoundaryFinder::Line, QString(reinterpret_cast<const QChar*>(string), length));
|
|
|
|
+
|
|
|
|
+ return lineBreakIterator;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ void releaseLineBreakIterator(TextBreakIterator* iterator)
|
|
|
|
+ {
|
|
|
|
+ ASSERT(iterator);
|
|
|
|
+
|
|
|
|
+ if (!staticLineBreakIterator)
|
|
|
|
+ staticLineBreakIterator = iterator;
|
|
|
|
+ else
|
|
|
|
+ delete iterator;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ TextBreakIterator* sentenceBreakIterator(const UChar* string, int length)
|
|
|
|
+ {
|
|
|
|
+ static TextBreakIterator staticSentenceBreakIterator;
|
|
|
|
+ return setUpIterator(staticSentenceBreakIterator, QTextBoundaryFinder::Sentence, string, length);
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ int textBreakFirst(TextBreakIterator* bi)
|
|
|
|
+ {
|
|
|
|
+ bi->toStart();
|
|
|
|
+ DEBUG() << "textBreakFirst" << bi->position();
|
|
|
|
+ return bi->position();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ int textBreakNext(TextBreakIterator* bi)
|
|
|
|
+ {
|
|
|
|
+ int pos = bi->toNextBoundary();
|
|
|
|
+ DEBUG() << "textBreakNext" << pos;
|
|
|
|
+ return pos;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ int textBreakPreceding(TextBreakIterator* bi, int pos)
|
|
|
|
+ {
|
|
|
|
+ bi->setPosition(pos);
|
|
|
|
+ int newpos = bi->toPreviousBoundary();
|
|
|
|
+ DEBUG() << "textBreakPreceding" << pos << newpos;
|
|
|
|
+ return newpos;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ int textBreakFollowing(TextBreakIterator* bi, int pos)
|
|
|
|
+ {
|
|
|
|
+ bi->setPosition(pos);
|
|
|
|
+ int newpos = bi->toNextBoundary();
|
|
|
|
+ DEBUG() << "textBreakFollowing" << pos << newpos;
|
|
|
|
+ return newpos;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ int textBreakCurrent(TextBreakIterator* bi)
|
|
|
|
+ {
|
|
|
|
+ return bi->position();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ bool isTextBreak(TextBreakIterator*, int)
|
|
|
|
+ {
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ bool isWordTextBreak(TextBreakIterator*)
|
|
|
|
+ {
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+}
|
|
|
|
--- a/Source/WebCore/platform/ThreadGlobalData.cpp
|
|
|
|
+++ b/Source/WebCore/platform/ThreadGlobalData.cpp
|
|
|
|
@@ -37,6 +37,8 @@
|
|
|
|
|
|
|
|
#if USE(ICU_UNICODE)
|
|
|
|
#include "TextCodecICU.h"
|
|
|
|
+#elif USE(QT4_UNICODE)
|
|
|
|
+#include "qt/TextCodecQt.h"
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#if PLATFORM(MAC)
|
|
|
|
--- qtwebkit-opensource-src-5.2.0-rc1/Source/WebCore/platform/text/TextBreakIteratorQt.cpp.orig 2013-12-04 00:08:41.281004481 +0100
|
|
|
|
+++ qtwebkit-opensource-src-5.2.0-rc1/Source/WebCore/platform/text/TextBreakIteratorQt.cpp 2013-12-04 00:07:52.878531508 +0100
|
|
|
|
@@ -96,7 +96,7 @@
|
|
|
|
|
|
|
|
static TextBreakIterator* staticLineBreakIterator;
|
|
|
|
|
|
|
|
- TextBreakIterator* acquireLineBreakIterator(const UChar* string, int length, const AtomicString&)
|
|
|
|
+ TextBreakIterator* acquireLineBreakIterator(const UChar* string, int length, const AtomicString&, const UChar* priorContext, unsigned priorContextLength)
|
|
|
|
{
|
|
|
|
TextBreakIterator* lineBreakIterator = 0;
|
|
|
|
if (staticLineBreakIterator) {
|