summaryrefslogtreecommitdiff
path: root/Tools
diff options
context:
space:
mode:
Diffstat (limited to 'Tools')
-rw-r--r--Tools/DumpRenderTree/CMakeLists.txt5
-rw-r--r--Tools/MiniBrowser/qt/CMakeLists.txt6
-rw-r--r--Tools/PlatformQt.cmake8
-rw-r--r--Tools/QtTestBrowser/CMakeLists.txt1
-rw-r--r--Tools/QtTestBrowser/launcherwindow.cpp20
-rw-r--r--Tools/QtTestBrowser/launcherwindow.h1
-rw-r--r--Tools/QtTestBrowser/qttestbrowser.cpp4
-rw-r--r--Tools/TestWebKitAPI/PlatformQt.cmake1
-rw-r--r--Tools/TestWebKitAPI/Tests/WTF/HashSet.cpp1
-rw-r--r--Tools/TestWebKitAPI/Tests/WTF/StringOperators.cpp3
-rw-r--r--Tools/TestWebKitAPI/Tests/WebCore/TextCodec.cpp236
-rw-r--r--Tools/qmake/mkspecs/features/functions.prf5
-rw-r--r--Tools/qmake/projects/run_cmake.pro21
-rwxr-xr-xTools/qt/make-snapshot.pl2
14 files changed, 288 insertions, 26 deletions
diff --git a/Tools/DumpRenderTree/CMakeLists.txt b/Tools/DumpRenderTree/CMakeLists.txt
index db6ef4304..4a726ccaf 100644
--- a/Tools/DumpRenderTree/CMakeLists.txt
+++ b/Tools/DumpRenderTree/CMakeLists.txt
@@ -1,3 +1,5 @@
+QTWEBKIT_SKIP_AUTOMOC(DumpRenderTree)
+
set(DumpRenderTree_SOURCES
AccessibilityController.cpp
AccessibilityTextMarker.cpp
@@ -130,4 +132,7 @@ endif ()
if (${PORT} STREQUAL "Qt")
set_target_properties(DumpRenderTree PROPERTIES AUTOMOC ON)
+ if (ENABLE_NETSCAPE_PLUGIN_API)
+ target_compile_definitions(TestNetscapePlugin PRIVATE QT_NO_VERSION_TAGGING)
+ endif ()
endif ()
diff --git a/Tools/MiniBrowser/qt/CMakeLists.txt b/Tools/MiniBrowser/qt/CMakeLists.txt
index e77d3bd54..68dd13c8b 100644
--- a/Tools/MiniBrowser/qt/CMakeLists.txt
+++ b/Tools/MiniBrowser/qt/CMakeLists.txt
@@ -53,6 +53,12 @@ set(MiniBrowser_LIBRARIES
${Qt5Quick_LIBRARIES}
)
+if (SHARED_CORE)
+ list(APPEND MiniBrowser_LIBRARIES
+ WebKit2
+ )
+endif ()
+
if (ENABLE_TEST_SUPPORT)
add_definitions(-DHAVE_QTTESTSUPPORT)
endif ()
diff --git a/Tools/PlatformQt.cmake b/Tools/PlatformQt.cmake
index 9c5548aa3..41db83119 100644
--- a/Tools/PlatformQt.cmake
+++ b/Tools/PlatformQt.cmake
@@ -2,10 +2,6 @@ remove_definitions(-DQT_ASCII_CAST_WARNINGS)
add_subdirectory(QtTestBrowser)
-if (ENABLE_API_TESTS AND NOT ENABLE_WEBKIT2)
- add_subdirectory(TestWebKitAPI)
-endif ()
-
if (ENABLE_TEST_SUPPORT)
add_subdirectory(DumpRenderTree)
add_subdirectory(ImageDiff)
@@ -17,3 +13,7 @@ endif ()
# FIXME: Remove when WK2 Tools patches are merged
set(ENABLE_WEBKIT2 0)
+
+if (ENABLE_API_TESTS AND NOT ENABLE_WEBKIT2)
+ add_subdirectory(TestWebKitAPI)
+endif ()
diff --git a/Tools/QtTestBrowser/CMakeLists.txt b/Tools/QtTestBrowser/CMakeLists.txt
index a091c9541..ccd8e0ff2 100644
--- a/Tools/QtTestBrowser/CMakeLists.txt
+++ b/Tools/QtTestBrowser/CMakeLists.txt
@@ -55,7 +55,6 @@ if (Qt5OpenGL_FOUND)
list(APPEND QtTestBrowser_LIBRARIES
${Qt5OpenGL_LIBRARIES}
)
- add_definitions(-DQT_CONFIGURED_WITH_OPENGL)
endif ()
if (ENABLE_TEST_SUPPORT)
diff --git a/Tools/QtTestBrowser/launcherwindow.cpp b/Tools/QtTestBrowser/launcherwindow.cpp
index 0fd64654e..716a6e3e8 100644
--- a/Tools/QtTestBrowser/launcherwindow.cpp
+++ b/Tools/QtTestBrowser/launcherwindow.cpp
@@ -168,9 +168,9 @@ void LauncherWindow::initializeView()
} else {
WebViewGraphicsBased* view = new WebViewGraphicsBased(splitter);
m_view = view;
-#ifndef QT_NO_OPENGL
if (!m_windowOptions.useQOpenGLWidgetViewport)
toggleQGLWidgetViewport(m_windowOptions.useQGLWidgetViewport);
+#ifdef QT_OPENGL_LIB
if (!m_windowOptions.useQGLWidgetViewport)
toggleQOpenGLWidgetViewport(m_windowOptions.useQOpenGLWidgetViewport);
#endif
@@ -345,6 +345,9 @@ void LauncherWindow::createChrome()
spatialNavigationAction->setCheckable(true);
spatialNavigationAction->setShortcut(QKeySequence(Qt::CTRL | Qt::SHIFT | Qt::Key_S));
+ QAction* caretBrowsingAction = toolsMenu->addAction("Toggle Caret Browsing", this, SLOT(toggleCaretBrowsing(bool)));
+ caretBrowsingAction->setCheckable(true);
+
QAction* toggleFrameFlattening = toolsMenu->addAction("Toggle Frame Flattening", this, SLOT(toggleFrameFlattening(bool)));
toggleFrameFlattening->setCheckable(true);
toggleFrameFlattening->setChecked(settings->testAttribute(QWebSettings::FrameFlatteningEnabled));
@@ -972,6 +975,11 @@ void LauncherWindow::toggleSpatialNavigation(bool enable)
page()->settings()->setAttribute(QWebSettings::SpatialNavigationEnabled, enable);
}
+void LauncherWindow::toggleCaretBrowsing(bool enable)
+{
+ page()->settings()->setAttribute(QWebSettings::CaretBrowsingEnabled, enable);
+}
+
void LauncherWindow::toggleFullScreenMode(bool enable)
{
bool alreadyEnabled = windowState() & Qt::WindowFullScreen;
@@ -1164,9 +1172,13 @@ void LauncherWindow::downloadRequest(const QNetworkRequest &request)
void LauncherWindow::fileDownloadFinished()
{
- QFileInfo fileInf(m_reply->request().url().toString());
- QString requestFileName = QDir::homePath() + "/" + fileInf.fileName();
- QString fileName = QFileDialog::getSaveFileName(this, "Save as...", requestFileName, "All Files (*)");
+ QString suggestedFileName;
+ if (m_reply->request().url().scheme().toLower() != QLatin1String("data")) {
+ QFileInfo fileInf(m_reply->request().url().toString());
+ suggestedFileName = QDir::homePath() + "/" + fileInf.fileName();
+ } else
+ suggestedFileName = QStringLiteral("data");
+ QString fileName = QFileDialog::getSaveFileName(this, "Save as...", suggestedFileName, "All Files (*)");
if (fileName.isEmpty())
return;
diff --git a/Tools/QtTestBrowser/launcherwindow.h b/Tools/QtTestBrowser/launcherwindow.h
index a05a6cd56..e475a8022 100644
--- a/Tools/QtTestBrowser/launcherwindow.h
+++ b/Tools/QtTestBrowser/launcherwindow.h
@@ -137,6 +137,7 @@ protected Q_SLOTS:
void toggleWebAudio(bool toggle);
void toggleMediaSource(bool toggle);
void toggleSpatialNavigation(bool enable);
+ void toggleCaretBrowsing(bool enable);
void toggleFullScreenMode(bool enable);
void toggleFrameFlattening(bool toggle);
void toggleJavaScriptEnabled(bool enable);
diff --git a/Tools/QtTestBrowser/qttestbrowser.cpp b/Tools/QtTestBrowser/qttestbrowser.cpp
index 24ca97a7a..52d9066b0 100644
--- a/Tools/QtTestBrowser/qttestbrowser.cpp
+++ b/Tools/QtTestBrowser/qttestbrowser.cpp
@@ -135,7 +135,7 @@ void LauncherApplication::handleUserOptions()
qDebug() << "Usage:" << programName.toLatin1().data()
<< "[-graphicsbased]"
<< "[-no-compositing]"
-#if defined(QT_CONFIGURED_WITH_OPENGL)
+#ifdef QT_OPENGL_LIB
<< "[-gl-viewport]"
#endif
<< "[-opengl-viewport]"
@@ -240,7 +240,7 @@ void LauncherApplication::handleUserOptions()
windowOptions.viewportUpdateMode = static_cast<QGraphicsView::ViewportUpdateMode>(idx);
}
-#ifdef QT_CONFIGURED_WITH_OPENGL
+#ifdef QT_OPENGL_LIB
if (args.contains("-gl-viewport") || defaultForAnimations) {
requiresGraphicsView("-gl-viewport");
windowOptions.useQGLWidgetViewport = true;
diff --git a/Tools/TestWebKitAPI/PlatformQt.cmake b/Tools/TestWebKitAPI/PlatformQt.cmake
index fe3808685..c054c661b 100644
--- a/Tools/TestWebKitAPI/PlatformQt.cmake
+++ b/Tools/TestWebKitAPI/PlatformQt.cmake
@@ -46,6 +46,7 @@ add_executable(TestWebCore
${TESTWEBKITAPI_DIR}/Tests/WebCore/SharedBuffer.cpp
${TESTWEBKITAPI_DIR}/Tests/WebCore/FileSystem.cpp
${TESTWEBKITAPI_DIR}/Tests/WebCore/PublicSuffix.cpp
+ ${TESTWEBKITAPI_DIR}/Tests/WebCore/TextCodec.cpp
)
target_link_libraries(TestWebCore ${test_webcore_LIBRARIES})
diff --git a/Tools/TestWebKitAPI/Tests/WTF/HashSet.cpp b/Tools/TestWebKitAPI/Tests/WTF/HashSet.cpp
index 1d6ffc039..b7dda8691 100644
--- a/Tools/TestWebKitAPI/Tests/WTF/HashSet.cpp
+++ b/Tools/TestWebKitAPI/Tests/WTF/HashSet.cpp
@@ -27,6 +27,7 @@
#include "Counters.h"
#include "MoveOnly.h"
+#include <functional>
#include <wtf/HashSet.h>
#include <wtf/RefPtr.h>
diff --git a/Tools/TestWebKitAPI/Tests/WTF/StringOperators.cpp b/Tools/TestWebKitAPI/Tests/WTF/StringOperators.cpp
index 7a1d9297f..fd8836fd1 100644
--- a/Tools/TestWebKitAPI/Tests/WTF/StringOperators.cpp
+++ b/Tools/TestWebKitAPI/Tests/WTF/StringOperators.cpp
@@ -148,7 +148,8 @@ TEST(WTF, StringOperators)
EXPECT_N_WTF_STRING_COPIES(2, atomicString + (literal + string + literal));
EXPECT_N_WTF_STRING_COPIES(2, (atomicString + literal) + (string + literal));
-#if COMPILER(MSVC)
+// FIXME: Fix compatibility with ICU >= 58.1
+#if COMPILER(MSVC) && !PLATFORM(QT)
EXPECT_N_WTF_STRING_COPIES(1, L"wide string" + string);
EXPECT_N_WTF_STRING_COPIES(1, string + L"wide string");
EXPECT_N_WTF_STRING_COPIES(1, L"wide string" + atomicString);
diff --git a/Tools/TestWebKitAPI/Tests/WebCore/TextCodec.cpp b/Tools/TestWebKitAPI/Tests/WebCore/TextCodec.cpp
new file mode 100644
index 000000000..e33d76027
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebCore/TextCodec.cpp
@@ -0,0 +1,236 @@
+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * 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 "config.h"
+
+#include <WebCore/TextEncoding.h>
+#include <WebCore/TextEncodingRegistry.h>
+#include <wtf/text/StringBuilder.h>
+
+namespace TestWebKitAPI {
+
+// Expects hex bytes with optional spaces between them.
+// Returns an empty vector if it encounters non-hex-digit characters.
+static Vector<char> decodeHexTestBytes(const char* input)
+{
+ Vector<char> result;
+ for (size_t i = 0; input[i]; ) {
+ if (!isASCIIHexDigit(input[i]))
+ return { };
+ if (!isASCIIHexDigit(input[i + 1]))
+ return { };
+ result.append(toASCIIHexValue(input[i], input[i + 1]));
+ i += 2;
+ if (input[i] == ' ')
+ ++i;
+ }
+ return result;
+}
+
+// The word "escape" here just means a format easy to read in test results.
+// It doesn't have to be a format suitable for other users or even one
+// that is completely unambiguous.
+static const char* escapeNonASCIIPrintableCharacters(StringView string)
+{
+ static char resultBuffer[100];
+ size_t i = 0;
+ auto append = [&i] (char character) {
+ if (i < sizeof(resultBuffer))
+ resultBuffer[i++] = character;
+ };
+ auto appendNibble = [append] (char nibble) {
+ if (nibble)
+ append(lowerNibbleToASCIIHexDigit(nibble));
+ };
+ auto appendLastNibble = [append] (char nibble) {
+ append(lowerNibbleToASCIIHexDigit(nibble));
+ };
+ for (auto character : string.codePoints()) {
+ if (isASCIIPrintable(character))
+ append(character);
+ else {
+ append('{');
+ for (unsigned i = 32 - 4; i; i -= 4)
+ appendNibble(character >> i);
+ appendLastNibble(character);
+ append('}');
+ }
+ }
+ if (i == sizeof(resultBuffer))
+ return "";
+ resultBuffer[i] = '\0';
+ return resultBuffer;
+}
+
+static const char* testDecode(const char* encodingName, std::initializer_list<const char*> inputs)
+{
+ StringBuilder resultBuilder;
+ auto codec = newTextCodec(WebCore::TextEncoding { encodingName });
+ size_t size = inputs.size();
+ for (size_t i = 0; i < size; ++i) {
+ auto vector = decodeHexTestBytes(inputs.begin()[i]);
+ bool last = i == size - 1;
+ resultBuilder.append(escapeNonASCIIPrintableCharacters(codec->decode(vector.data(), vector.size(), last)));
+ }
+ return escapeNonASCIIPrintableCharacters(resultBuilder.toString());
+}
+
+TEST(TextCodec, UTF8)
+{
+ EXPECT_STREQ("", testDecode("UTF-8", { "" }));
+
+ EXPECT_STREQ("{0}", testDecode("UTF-8", { "00" }));
+
+ EXPECT_STREQ("a", testDecode("UTF-8", { "61" }));
+ EXPECT_STREQ("a", testDecode("UTF-8", { "", "61" }));
+ EXPECT_STREQ("a", testDecode("UTF-8", { "61", "" }));
+ EXPECT_STREQ("a", testDecode("UTF-8", { "", "61", "" }));
+
+ EXPECT_STREQ("{B6}", testDecode("UTF-8", { "C2 B6" }));
+ EXPECT_STREQ("{B6}", testDecode("UTF-8", { "C2", "B6" }));
+ EXPECT_STREQ("{B6}", testDecode("UTF-8", { "", "C2", "", "B6", "" }));
+ EXPECT_STREQ("x{B6}", testDecode("UTF-8", { "78 C2 B6" }));
+ EXPECT_STREQ("{B6}x", testDecode("UTF-8", { "C2 B6 78" }));
+
+ EXPECT_STREQ("{2603}", testDecode("UTF-8", { "E2 98 83" }));
+ EXPECT_STREQ("{2603}", testDecode("UTF-8", { "E2", "98", "83" }));
+ EXPECT_STREQ("{2603}", testDecode("UTF-8", { "", "E2", "", "98", "83" }));
+ EXPECT_STREQ("{2603}", testDecode("UTF-8", { "E2 98", "83" }));
+ EXPECT_STREQ("{2603}", testDecode("UTF-8", { "", "E2 98", "", "83", "" }));
+ EXPECT_STREQ("{2603}", testDecode("UTF-8", { "E2", "9883" }));
+ EXPECT_STREQ("{2603}", testDecode("UTF-8", { "", "E2", "", "9883", "" }));
+ EXPECT_STREQ("x{2603}", testDecode("UTF-8", { "78 E2 98 83" }));
+ EXPECT_STREQ("{2603}x", testDecode("UTF-8", { "E2 98 83 78" }));
+
+ EXPECT_STREQ("{1F4A9}", testDecode("UTF-8", { "F0 9F 92 A9" }));
+ EXPECT_STREQ("{1F4A9}", testDecode("UTF-8", { "F0", "9F", "92", "A9" }));
+ EXPECT_STREQ("{1F4A9}", testDecode("UTF-8", { "", "F0", "", "9F", "", "92", "" , "A9", "" }));
+ EXPECT_STREQ("{1F4A9}", testDecode("UTF-8", { "F09F92", "A9" }));
+ EXPECT_STREQ("x{1F4A9}", testDecode("UTF-8", { "78 F0 9F 92 A9" }));
+ EXPECT_STREQ("{1F4A9}x", testDecode("UTF-8", { "F0 9F 92 A9 78" }));
+}
+
+TEST(TextCodec, UTF8InvalidSequences)
+{
+ EXPECT_STREQ("{FFFD}?", testDecode("UTF-8", { "E0 A5 3F" }));
+ EXPECT_STREQ("{FFFD}?", testDecode("UTF-8", { "E0 A5", "3F" }));
+ EXPECT_STREQ("{FFFD}?", testDecode("UTF-8", { "E0", "A5 3F" }));
+ EXPECT_STREQ("{FFFD}?", testDecode("UTF-8", { "E0", "A5", "3F" }));
+ EXPECT_STREQ("{FFFD}?", testDecode("UTF-8", { "E0", "", "A5", "", "3F" }));
+ EXPECT_STREQ("{FFFD}?", testDecode("UTF-8", { "E0", "", "A5", "", "3F", "" }));
+ EXPECT_STREQ("{FFFD}?", testDecode("UTF-8", { "", "E0", "", "A5", "", "3F", "" }));
+
+ EXPECT_STREQ("a{FFFD}?", testDecode("UTF-8", { "61 E0 A5 3F" }));
+ EXPECT_STREQ("a{FFFD}?", testDecode("UTF-8", { "61 E0 A5", "3F" }));
+ EXPECT_STREQ("a{FFFD}?", testDecode("UTF-8", { "61 E0", "A5 3F" }));
+ EXPECT_STREQ("a{FFFD}?", testDecode("UTF-8", { "61 E0", "A5", "3F" }));
+
+ EXPECT_STREQ("{B6}{FFFD}?", testDecode("UTF-8", { "C2 B6 E0 A5 3F" }));
+ EXPECT_STREQ("{B6}{FFFD}?", testDecode("UTF-8", { "C2 B6 E0 A5", "3F" }));
+ EXPECT_STREQ("{B6}{FFFD}?", testDecode("UTF-8", { "C2 B6 E0", "A5 3F" }));
+ EXPECT_STREQ("{B6}{FFFD}?", testDecode("UTF-8", { "C2 B6 E0", "A5", "3F" }));
+
+ EXPECT_STREQ("{FFFD}", testDecode("UTF-8", { "C2" }));
+ EXPECT_STREQ("{FFFD}", testDecode("UTF-8", { "E2" }));
+ EXPECT_STREQ("{FFFD}", testDecode("UTF-8", { "E2 98" }));
+ EXPECT_STREQ("{FFFD}", testDecode("UTF-8", { "F0" }));
+ EXPECT_STREQ("{FFFD}", testDecode("UTF-8", { "F0 9F" }));
+ EXPECT_STREQ("{FFFD}", testDecode("UTF-8", { "F0 9F 92" }));
+
+ EXPECT_STREQ("{FFFD}", testDecode("UTF-8", { "E2", "98" }));
+ EXPECT_STREQ("{FFFD}", testDecode("UTF-8", { "F0", "9F" }));
+ EXPECT_STREQ("{FFFD}", testDecode("UTF-8", { "F0 9F", "92" }));
+ EXPECT_STREQ("{FFFD}", testDecode("UTF-8", { "F0", "9F92" }));
+ EXPECT_STREQ("{FFFD}", testDecode("UTF-8", { "F0", "9F", "92" }));
+
+ EXPECT_STREQ("{FFFD}{FFFD}", testDecode("UTF-8", { "C0 80" }));
+ EXPECT_STREQ("{FFFD}{FFFD}{FFFD}", testDecode("UTF-8", { "E0 80 80" }));
+ EXPECT_STREQ("{FFFD}{FFFD}{FFFD}{FFFD}", testDecode("UTF-8", { "F0 80 80 80" }));
+ EXPECT_STREQ("{FFFD}{FFFD}{FFFD}{FFFD}{FFFD}", testDecode("UTF-8", { "F8 80 80 80 80" }));
+ EXPECT_STREQ("{FFFD}{FFFD}{FFFD}{FFFD}{FFFD}{FFFD}", testDecode("UTF-8", { "FC 80 80 80 80 80" }));
+
+ EXPECT_STREQ("{FFFD}{FFFD}", testDecode("UTF-8", { "C1 BF" }));
+ EXPECT_STREQ("{FFFD}{FFFD}{FFFD}", testDecode("UTF-8", { "E0 81 BF" }));
+ EXPECT_STREQ("{FFFD}{FFFD}{FFFD}{FFFD}", testDecode("UTF-8", { "F0 80 81 BF" }));
+ EXPECT_STREQ("{FFFD}{FFFD}{FFFD}{FFFD}{FFFD}", testDecode("UTF-8", { "F8 80 80 81 BF" }));
+ EXPECT_STREQ("{FFFD}{FFFD}{FFFD}{FFFD}{FFFD}{FFFD}", testDecode("UTF-8", { "FC 80 80 80 81 BF" }));
+
+ EXPECT_STREQ("{FFFD}{FFFD}{FFFD}", testDecode("UTF-8", { "E0 82 80" }));
+ EXPECT_STREQ("{FFFD}{FFFD}{FFFD}{FFFD}", testDecode("UTF-8", { "F0 80 82 80" }));
+ EXPECT_STREQ("{FFFD}{FFFD}{FFFD}{FFFD}{FFFD}", testDecode("UTF-8", { "F8 80 80 82 80" }));
+ EXPECT_STREQ("{FFFD}{FFFD}{FFFD}{FFFD}{FFFD}{FFFD}", testDecode("UTF-8", { "FC 80 80 80 82 80" }));
+
+ EXPECT_STREQ("{FFFD}{FFFD}{FFFD}", testDecode("UTF-8", { "E0 9F BF" }));
+ EXPECT_STREQ("{FFFD}{FFFD}{FFFD}{FFFD}", testDecode("UTF-8", { "F0 80 9F BF" }));
+ EXPECT_STREQ("{FFFD}{FFFD}{FFFD}{FFFD}{FFFD}", testDecode("UTF-8", { "F8 80 80 9F BF" }));
+ EXPECT_STREQ("{FFFD}{FFFD}{FFFD}{FFFD}{FFFD}{FFFD}", testDecode("UTF-8", { "FC 80 80 80 9F BF" }));
+
+ EXPECT_STREQ("{FFFD}{FFFD}{FFFD}{FFFD}", testDecode("UTF-8", { "F0 80 A0 80" }));
+ EXPECT_STREQ("{FFFD}{FFFD}{FFFD}{FFFD}{FFFD}", testDecode("UTF-8", { "F8 80 80 A0 80" }));
+ EXPECT_STREQ("{FFFD}{FFFD}{FFFD}{FFFD}{FFFD}{FFFD}", testDecode("UTF-8", { "FC 80 80 80 A0 80" }));
+
+ EXPECT_STREQ("{FFFD}{FFFD}{FFFD}{FFFD}", testDecode("UTF-8", { "F0 8F BF BF" }));
+ EXPECT_STREQ("{FFFD}{FFFD}{FFFD}{FFFD}{FFFD}", testDecode("UTF-8", { "F8 80 8F BF BF" }));
+ EXPECT_STREQ("{FFFD}{FFFD}{FFFD}{FFFD}{FFFD}{FFFD}", testDecode("UTF-8", { "FC 80 80 8F BF BF" }));
+
+ EXPECT_STREQ("{FFFD}{FFFD}{FFFD}{FFFD}{FFFD}", testDecode("UTF-8", { "F8 80 90 80 80" }));
+ EXPECT_STREQ("{FFFD}{FFFD}{FFFD}{FFFD}{FFFD}{FFFD}", testDecode("UTF-8", { "FC 80 80 90 80 80" }));
+
+ EXPECT_STREQ("{FFFD}{FFFD}{FFFD}{FFFD}{FFFD}", testDecode("UTF-8", { "F8 84 8F BF BF" }));
+ EXPECT_STREQ("{FFFD}{FFFD}{FFFD}{FFFD}{FFFD}{FFFD}", testDecode("UTF-8", { "FC 80 84 8F BF BF" }));
+
+ EXPECT_STREQ("{FFFD}{FFFD}{FFFD}{FFFD}", testDecode("UTF-8", { "F4 90 80 80" }));
+ EXPECT_STREQ("{FFFD}{FFFD}{FFFD}{FFFD}{FFFD}", testDecode("UTF-8", { "FB BF BF BF BF" }));
+ EXPECT_STREQ("{FFFD}{FFFD}{FFFD}{FFFD}{FFFD}{FFFD}", testDecode("UTF-8", { "FD BF BF BF BF BF" }));
+ EXPECT_STREQ("{FFFD}{FFFD}{FFFD}", testDecode("UTF-8", { "ED A0 80" }));
+ EXPECT_STREQ("{FFFD}{FFFD}{FFFD}", testDecode("UTF-8", { "ED BF BF" }));
+ EXPECT_STREQ("{FFFD}{FFFD}{FFFD}{FFFD}{FFFD}{FFFD}", testDecode("UTF-8", { "ED A0 BD ED B2 A9" }));
+
+ EXPECT_STREQ("{FFFD}{FFFD}{FFFD}{FFFD}{FFFD}", testDecode("UTF-8", { "F8 84 90 80 80" }));
+ EXPECT_STREQ("{FFFD}{FFFD}{FFFD}{FFFD}{FFFD}{FFFD}", testDecode("UTF-8", { "FC 80 84 90 80 80" }));
+ EXPECT_STREQ("{FFFD}{FFFD}{FFFD}{FFFD}", testDecode("UTF-8", { "F0 8D A0 80" }));
+ EXPECT_STREQ("{FFFD}{FFFD}{FFFD}{FFFD}", testDecode("UTF-8", { "F0 8D BF BF" }));
+ EXPECT_STREQ("{FFFD}{FFFD}{FFFD}{FFFD}{FFFD}{FFFD}{FFFD}{FFFD}", testDecode("UTF-8", { "F0 8D A0 BD F0 8D B2 A9" }));
+
+ EXPECT_STREQ("{FFFD}", testDecode("UTF-8", { "80" }));
+ EXPECT_STREQ("{FFFD}{FFFD}", testDecode("UTF-8", { "80 80" }));
+ EXPECT_STREQ("{FFFD}{FFFD}{FFFD}", testDecode("UTF-8", { "80 80 80" }));
+ EXPECT_STREQ("{FFFD}{FFFD}{FFFD}{FFFD}", testDecode("UTF-8", { "80 80 80 80" }));
+ EXPECT_STREQ("{FFFD}{FFFD}{FFFD}{FFFD}{FFFD}", testDecode("UTF-8", { "80 80 80 80 80" }));
+ EXPECT_STREQ("{FFFD}{FFFD}{FFFD}{FFFD}{FFFD}{FFFD}", testDecode("UTF-8", { "80 80 80 80 80 80" }));
+ EXPECT_STREQ("{FFFD}{FFFD}{FFFD}{FFFD}{FFFD}{FFFD}{FFFD}", testDecode("UTF-8", { "80 80 80 80 80 80 80" }));
+ EXPECT_STREQ("{B6}{FFFD}", testDecode("UTF-8", { "C2 B6 80" }));
+ EXPECT_STREQ("{2603}{FFFD}", testDecode("UTF-8", { "E2 98 83 80" }));
+ EXPECT_STREQ("{1F4A9}{FFFD}", testDecode("UTF-8", { "F0 9F 92 A9 80" }));
+ EXPECT_STREQ("{FFFD}{FFFD}{FFFD}{FFFD}{FFFD}{FFFD}", testDecode("UTF-8", { "FB BF BF BF BF 80" }));
+ EXPECT_STREQ("{FFFD}{FFFD}{FFFD}{FFFD}{FFFD}{FFFD}{FFFD}", testDecode("UTF-8", { "FD BF BF BF BF BF 80" }));
+
+ EXPECT_STREQ("{FFFD}", testDecode("UTF-8", { "FE" }));
+ EXPECT_STREQ("{FFFD}{FFFD}", testDecode("UTF-8", { "FE 80" }));
+ EXPECT_STREQ("{FFFD}", testDecode("UTF-8", { "FF" }));
+ EXPECT_STREQ("{FFFD}{FFFD}", testDecode("UTF-8", { "FF 80" }));
+}
+
+}
diff --git a/Tools/qmake/mkspecs/features/functions.prf b/Tools/qmake/mkspecs/features/functions.prf
index 3e0d40610..e3f42cec4 100644
--- a/Tools/qmake/mkspecs/features/functions.prf
+++ b/Tools/qmake/mkspecs/features/functions.prf
@@ -65,10 +65,9 @@ defineTest(isPlatformSupported) {
skipBuild("Using cmake version $$cmake_version, but at least cmake 2.8.12 is required to build QtWebKit.")
}
+ intel_icc: skipBuild("Building QtWebKit with ICC is not supported.")
+
win32 {
- qtConfig(opengles2):!qtConfig(dynamicgl) {
- skipBuild("QtWebKit supports only dynamic GL Qt builds on Windows at the moment.")
- }
winrt {
skipBuild("WinRT is not supported.")
}
diff --git a/Tools/qmake/projects/run_cmake.pro b/Tools/qmake/projects/run_cmake.pro
index fcab90880..f63fcd658 100644
--- a/Tools/qmake/projects/run_cmake.pro
+++ b/Tools/qmake/projects/run_cmake.pro
@@ -25,11 +25,10 @@ build_pass|!debug_and_release {
USE_LIBHYPHEN=OFF
!isEmpty(_QMAKE_SUPER_CACHE_) {
- CMAKE_PREFIX_PATH=\"$$ROOT_QT_BUILD_DIR/qtbase;$$ROOT_QT_BUILD_DIR/qtlocation;$$ROOT_QT_BUILD_DIR/qtsensors;$$ROOT_QT_BUILD_DIR/qtdeclarative;$$ROOT_QT_BUILD_DIR/qtwebchannel\"
+ CMAKE_CONFIG += CMAKE_PREFIX_PATH=\"$$ROOT_QT_BUILD_DIR/qtbase;$$ROOT_QT_BUILD_DIR/qtlocation;$$ROOT_QT_BUILD_DIR/qtsensors;$$ROOT_QT_BUILD_DIR/qtdeclarative;$$ROOT_QT_BUILD_DIR/qtwebchannel\"
} else {
- CMAKE_PREFIX_PATH=\"$$[QT_INSTALL_PREFIX]\"
+ CMAKE_CONFIG += Qt5_DIR=\"$$[QT_INSTALL_LIBS]/cmake/Qt5\"
}
- CMAKE_CONFIG += CMAKE_PREFIX_PATH=$$CMAKE_PREFIX_PATH
static: CMAKE_CONFIG += USE_THIN_ARCHIVES=OFF
@@ -39,8 +38,12 @@ build_pass|!debug_and_release {
!qtConfig(system-jpeg):exists($$QTBASE_DIR) {
CMAKE_CONFIG += \
QT_BUNDLED_JPEG=1 \
- JPEG_INCLUDE_DIR=$$QTBASE_DIR/src/3rdparty/libjpeg \
JPEG_LIBRARIES=$$staticLibPath(qtjpeg)
+
+ exists($$QTBASE_DIR/src/3rdparty/libjpeg/src/jpeglib.h): \
+ CMAKE_CONFIG += JPEG_INCLUDE_DIR=$$QTBASE_DIR/src/3rdparty/libjpeg/src
+ else: \
+ CMAKE_CONFIG += JPEG_INCLUDE_DIR=$$QTBASE_DIR/src/3rdparty/libjpeg
}
!qtConfig(system-png):qtConfig(png):exists($$QTBASE_DIR) {
@@ -51,13 +54,11 @@ build_pass|!debug_and_release {
}
!qtConfig(system-zlib):exists($$QTBASE_DIR) {
- CMAKE_CONFIG += \
- QT_BUNDLED_ZLIB=1 \
- ZLIB_INCLUDE_DIRS=$$QTBASE_DIR/src/3rdparty/zlib
- }
+ CMAKE_CONFIG += QT_BUNDLED_ZLIB=1
- qtConfig(opengles2):!qtConfig(dynamicgl) {
- CMAKE_CONFIG += QT_USES_GLES2_ONLY=1
+ exists($$QTBASE_DIR/src/3rdparty/zlib/src/zlib.h): \
+ CMAKE_CONFIG += ZLIB_INCLUDE_DIRS=$$QTBASE_DIR/src/3rdparty/zlib/src
+ else: CMAKE_CONFIG += ZLIB_INCLUDE_DIRS=$$QTBASE_DIR/src/3rdparty/zlib
}
exists($$ROOT_BUILD_DIR/conanbuildinfo.cmake):exists($$ROOT_BUILD_DIR/conanfile.txt) {
diff --git a/Tools/qt/make-snapshot.pl b/Tools/qt/make-snapshot.pl
index 667890de0..2c2af1a9f 100755
--- a/Tools/qt/make-snapshot.pl
+++ b/Tools/qt/make-snapshot.pl
@@ -36,7 +36,7 @@ scalar @ARGV == 0 || usage();
-f "ChangeLog" && die "This script must be run in snapshots repository";
-d ".git" || usage();
-`git status` =~ "nothing to commit, working tree clean" or die "Target working tree is dirty";
+`LC_ALL=C LANG=C git status` =~ "nothing to commit, working tree clean" or die "Target working tree is dirty";
my $src_repo = dirname(dirname(dirname(__FILE__)));
my $target_repo = getcwd();