--- 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 @@ -115,9 +115,9 @@ } # Sanity checks that would prevent us from building the whole project altogether. - !android:!mac:!config_icu { - addReasonForSkippingBuild("ICU is required.") - } +# !android:!mac:!config_icu { +# addReasonForSkippingBuild("ICU is required.") +# } production_build:blackberry|qnx { addReasonForSkippingBuild("Build not supported on BB10/QNX yet.") } --- 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 + * + * 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 +#include +#include +#include + +// #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(characters), length)) { + iterator.toStart(); + return &iterator; + } + + iterator = TextBreakIterator(type, QString(reinterpret_cast(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(&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(&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(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) { --- qtwebkit-opensource-src-5.4.0/Tools/qmake/mkspecs/features/features.prf.orig 2014-12-29 23:30:47.372582743 +0100 +++ qtwebkit-opensource-src-5.4.0/Tools/qmake/mkspecs/features/features.prf 2014-12-29 23:31:08.021797817 +0100 @@ -142,7 +142,7 @@ # IndexedDB requires leveldb enable?(indexed_database): WEBKIT_CONFIG += use_leveldb - !config_icu:!mac: WEBKIT_CONFIG += use_wchar_unicode +# !config_icu:!mac: WEBKIT_CONFIG += use_wchar_unicode export(WEBKIT_CONFIG) export(CONFIGURE_WARNINGS)