summaryrefslogtreecommitdiffstats
path: root/Source/WebKit/qt/tests
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebKit/qt/tests')
-rw-r--r--Source/WebKit/qt/tests/MIMESniffing/MIMESniffing.pro19
-rw-r--r--Source/WebKit/qt/tests/MIMESniffing/TestData.h984
-rw-r--r--Source/WebKit/qt/tests/MIMESniffing/resources.qrc23
-rw-r--r--Source/WebKit/qt/tests/MIMESniffing/resources/application_atom+xml17
-rw-r--r--Source/WebKit/qt/tests/MIMESniffing/resources/application_oggbin0 -> 382185 bytes
-rw-r--r--Source/WebKit/qt/tests/MIMESniffing/resources/application_pdfbin0 -> 218882 bytes
-rw-r--r--Source/WebKit/qt/tests/MIMESniffing/resources/application_postscript137
-rw-r--r--Source/WebKit/qt/tests/MIMESniffing/resources/application_rdf+xml50
-rw-r--r--Source/WebKit/qt/tests/MIMESniffing/resources/application_rss+xml45
-rw-r--r--Source/WebKit/qt/tests/MIMESniffing/resources/application_x-gzipbin0 -> 268 bytes
-rw-r--r--Source/WebKit/qt/tests/MIMESniffing/resources/application_x-rar-compressedbin0 -> 1478 bytes
-rw-r--r--Source/WebKit/qt/tests/MIMESniffing/resources/application_zipbin0 -> 411 bytes
-rw-r--r--Source/WebKit/qt/tests/MIMESniffing/resources/audio_x-wavebin0 -> 184320 bytes
-rw-r--r--Source/WebKit/qt/tests/MIMESniffing/resources/image_bmpbin0 -> 46182 bytes
-rw-r--r--Source/WebKit/qt/tests/MIMESniffing/resources/image_gifbin0 -> 245 bytes
-rw-r--r--Source/WebKit/qt/tests/MIMESniffing/resources/image_jpegbin0 -> 10874 bytes
-rw-r--r--Source/WebKit/qt/tests/MIMESniffing/resources/image_pngbin0 -> 850 bytes
-rw-r--r--Source/WebKit/qt/tests/MIMESniffing/resources/image_vnd.microsoft.iconbin0 -> 9662 bytes
-rw-r--r--Source/WebKit/qt/tests/MIMESniffing/resources/image_webpbin0 -> 10474 bytes
-rw-r--r--Source/WebKit/qt/tests/MIMESniffing/resources/text_html3
-rw-r--r--Source/WebKit/qt/tests/MIMESniffing/resources/text_xml19
-rw-r--r--Source/WebKit/qt/tests/MIMESniffing/resources/video_webmbin0 -> 388027 bytes
-rw-r--r--Source/WebKit/qt/tests/MIMESniffing/tst_MIMESniffing.cpp72
-rw-r--r--Source/WebKit/qt/tests/qdeclarativewebview/resources/basic.html17
-rw-r--r--Source/WebKit/qt/tests/qdeclarativewebview/resources/basic.pngbin0 -> 3961 bytes
-rw-r--r--Source/WebKit/qt/tests/qdeclarativewebview/resources/basic.qml5
-rw-r--r--Source/WebKit/qt/tests/qdeclarativewebview/resources/elements.html14
-rw-r--r--Source/WebKit/qt/tests/qdeclarativewebview/resources/elements.qml7
-rw-r--r--Source/WebKit/qt/tests/qdeclarativewebview/resources/forward.html12
-rw-r--r--Source/WebKit/qt/tests/qdeclarativewebview/resources/forward.pngbin0 -> 2377 bytes
-rw-r--r--Source/WebKit/qt/tests/qdeclarativewebview/resources/javaScript.html11
-rw-r--r--Source/WebKit/qt/tests/qdeclarativewebview/resources/javaScript.qml12
-rw-r--r--Source/WebKit/qt/tests/qdeclarativewebview/resources/loadError.qml5
-rw-r--r--Source/WebKit/qt/tests/qdeclarativewebview/resources/newwindows.html16
-rw-r--r--Source/WebKit/qt/tests/qdeclarativewebview/resources/newwindows.qml34
-rw-r--r--Source/WebKit/qt/tests/qdeclarativewebview/resources/propertychanges.qml34
-rw-r--r--Source/WebKit/qt/tests/qdeclarativewebview/resources/sethtml.qml5
-rw-r--r--Source/WebKit/qt/tests/qdeclarativewebview/tst_qdeclarativewebview.cpp415
-rw-r--r--Source/WebKit/qt/tests/qdeclarativewebview/tst_qdeclarativewebview.qrc18
-rw-r--r--Source/WebKit/qt/tests/qgraphicswebview/resources/56929.html8
-rw-r--r--Source/WebKit/qt/tests/qgraphicswebview/tst_qgraphicswebview.cpp37
-rw-r--r--Source/WebKit/qt/tests/qgraphicswebview/tst_qgraphicswebview.qrc1
-rw-r--r--Source/WebKit/qt/tests/qwebelement/tst_qwebelement.cpp2
-rw-r--r--Source/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp173
-rw-r--r--Source/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp15
-rw-r--r--Source/WebKit/qt/tests/qwebview/tst_qwebview.cpp29
-rw-r--r--Source/WebKit/qt/tests/tests.pri4
-rw-r--r--Source/WebKit/qt/tests/tests.pro2
48 files changed, 2218 insertions, 27 deletions
diff --git a/Source/WebKit/qt/tests/MIMESniffing/MIMESniffing.pro b/Source/WebKit/qt/tests/MIMESniffing/MIMESniffing.pro
new file mode 100644
index 0000000..53d80c8
--- /dev/null
+++ b/Source/WebKit/qt/tests/MIMESniffing/MIMESniffing.pro
@@ -0,0 +1,19 @@
+isEmpty(OUTPUT_DIR): OUTPUT_DIR = ../../../..
+include(../tests.pri)
+TARGET = MIMESniffing
+CONFIG += console
+
+SOURCES += ../../../../WebCore/platform/network/MIMESniffing.cpp
+HEADERS += \
+ ../../../../WebCore/platform/network/MIMESniffing.h \
+ TestData.h
+
+INCLUDEPATH += \
+ ../../../../WebCore/platform/network \
+ ../../../../JavaScriptCore
+
+debug {
+ SOURCES += ../../../../JavaScriptCore/wtf/Assertions.cpp
+}
+
+RESOURCES += resources.qrc
diff --git a/Source/WebKit/qt/tests/MIMESniffing/TestData.h b/Source/WebKit/qt/tests/MIMESniffing/TestData.h
new file mode 100644
index 0000000..c04bd6b
--- /dev/null
+++ b/Source/WebKit/qt/tests/MIMESniffing/TestData.h
@@ -0,0 +1,984 @@
+/*
+ Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies)
+
+ 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.
+*/
+
+#ifndef TestData_h
+#define TestData_h
+
+typedef struct _TestData {
+ const char* file;
+ const char* advertisedType;
+ bool isImage;
+ const char* sniffedType;
+} TestData;
+
+static const TestData testList[] = {
+ {":/application_atom+xml", "text/plain", false, "text/plain"},
+ {":/application_atom+xml", "text/plain", true, "text/plain"},
+ {":/application_atom+xml", "unknown/unknown", false, "text/xml"},
+ {":/application_atom+xml", "unknown/unknown", true, "text/xml"},
+ {":/application_atom+xml", "application/unknown", false, "text/xml"},
+ {":/application_atom+xml", "application/unknown", true, "text/xml"},
+ {":/application_atom+xml", "*/*", false, "text/xml"},
+ {":/application_atom+xml", "*/*", true, "text/xml"},
+ {":/application_atom+xml", "text/xml", false, 0},
+ {":/application_atom+xml", "text/xml", true, 0},
+ {":/application_atom+xml", "application/xml", false, 0},
+ {":/application_atom+xml", "application/xml", true, 0},
+ {":/application_atom+xml", "text/html", false, "application/atom+xml"},
+ {":/application_atom+xml", "text/html", true, 0},
+ {":/application_atom+xml", "text/xml", false, 0},
+ {":/application_atom+xml", "text/xml", true, 0},
+ {":/application_atom+xml", "application/pdf", false, 0},
+ {":/application_atom+xml", "application/pdf", true, 0},
+ {":/application_atom+xml", "application/postscript", false, 0},
+ {":/application_atom+xml", "application/postscript", true, 0},
+ {":/application_atom+xml", "application/ogg", false, 0},
+ {":/application_atom+xml", "application/ogg", true, 0},
+ {":/application_atom+xml", "video/webm", false, 0},
+ {":/application_atom+xml", "video/webm", true, 0},
+ {":/application_atom+xml", "application/x-rar-compressed", false, 0},
+ {":/application_atom+xml", "application/x-rar-compressed", true, 0},
+ {":/application_atom+xml", "application/zip", false, 0},
+ {":/application_atom+xml", "application/zip", true, 0},
+ {":/application_atom+xml", "application/x-gzip", false, 0},
+ {":/application_atom+xml", "application/x-gzip", true, 0},
+ {":/application_atom+xml", "audio/x-wave", false, 0},
+ {":/application_atom+xml", "audio/x-wave", true, 0},
+ {":/application_atom+xml", "image/webp", false, 0},
+ {":/application_atom+xml", "image/webp", true, 0},
+ {":/application_atom+xml", "image/gif", false, 0},
+ {":/application_atom+xml", "image/gif", true, 0},
+ {":/application_atom+xml", "image/png", false, 0},
+ {":/application_atom+xml", "image/png", true, 0},
+ {":/application_atom+xml", "image/jpeg", false, 0},
+ {":/application_atom+xml", "image/jpeg", true, 0},
+ {":/application_atom+xml", "image/bmp", false, 0},
+ {":/application_atom+xml", "image/bmp", true, 0},
+ {":/application_atom+xml", "image/vnd.microsoft.icon", false, 0},
+ {":/application_atom+xml", "image/vnd.microsoft.icon", true, 0},
+ {":/application_atom+xml", "application/rdf+xml", false, 0},
+ {":/application_atom+xml", "application/rdf+xml", true, 0},
+ {":/application_atom+xml", "application/rss+xml", false, 0},
+ {":/application_atom+xml", "application/rss+xml", true, 0},
+ {":/application_atom+xml", "application/atom+xml", false, 0},
+ {":/application_atom+xml", "application/atom+xml", true, 0},
+ {":/application_ogg", "text/plain", false, "application/ogg"},
+ {":/application_ogg", "text/plain", true, "application/ogg"},
+ {":/application_ogg", "unknown/unknown", false, "application/ogg"},
+ {":/application_ogg", "unknown/unknown", true, "application/ogg"},
+ {":/application_ogg", "application/unknown", false, "application/ogg"},
+ {":/application_ogg", "application/unknown", true, "application/ogg"},
+ {":/application_ogg", "*/*", false, "application/ogg"},
+ {":/application_ogg", "*/*", true, "application/ogg"},
+ {":/application_ogg", "text/xml", false, 0},
+ {":/application_ogg", "text/xml", true, 0},
+ {":/application_ogg", "application/xml", false, 0},
+ {":/application_ogg", "application/xml", true, 0},
+ {":/application_ogg", "text/html", false, 0},
+ {":/application_ogg", "text/html", true, 0},
+ {":/application_ogg", "text/xml", false, 0},
+ {":/application_ogg", "text/xml", true, 0},
+ {":/application_ogg", "application/pdf", false, 0},
+ {":/application_ogg", "application/pdf", true, 0},
+ {":/application_ogg", "application/postscript", false, 0},
+ {":/application_ogg", "application/postscript", true, 0},
+ {":/application_ogg", "application/ogg", false, 0},
+ {":/application_ogg", "application/ogg", true, 0},
+ {":/application_ogg", "video/webm", false, 0},
+ {":/application_ogg", "video/webm", true, 0},
+ {":/application_ogg", "application/x-rar-compressed", false, 0},
+ {":/application_ogg", "application/x-rar-compressed", true, 0},
+ {":/application_ogg", "application/zip", false, 0},
+ {":/application_ogg", "application/zip", true, 0},
+ {":/application_ogg", "application/x-gzip", false, 0},
+ {":/application_ogg", "application/x-gzip", true, 0},
+ {":/application_ogg", "audio/x-wave", false, 0},
+ {":/application_ogg", "audio/x-wave", true, 0},
+ {":/application_ogg", "image/webp", false, 0},
+ {":/application_ogg", "image/webp", true, 0},
+ {":/application_ogg", "image/gif", false, 0},
+ {":/application_ogg", "image/gif", true, 0},
+ {":/application_ogg", "image/png", false, 0},
+ {":/application_ogg", "image/png", true, 0},
+ {":/application_ogg", "image/jpeg", false, 0},
+ {":/application_ogg", "image/jpeg", true, 0},
+ {":/application_ogg", "image/bmp", false, 0},
+ {":/application_ogg", "image/bmp", true, 0},
+ {":/application_ogg", "image/vnd.microsoft.icon", false, 0},
+ {":/application_ogg", "image/vnd.microsoft.icon", true, 0},
+ {":/application_ogg", "application/rdf+xml", false, 0},
+ {":/application_ogg", "application/rdf+xml", true, 0},
+ {":/application_ogg", "application/rss+xml", false, 0},
+ {":/application_ogg", "application/rss+xml", true, 0},
+ {":/application_ogg", "application/atom+xml", false, 0},
+ {":/application_ogg", "application/atom+xml", true, 0},
+ {":/application_pdf", "text/plain", false, "application/octet-stream"},
+ {":/application_pdf", "text/plain", true, "application/octet-stream"},
+ {":/application_pdf", "unknown/unknown", false, "application/pdf"},
+ {":/application_pdf", "unknown/unknown", true, "application/pdf"},
+ {":/application_pdf", "application/unknown", false, "application/pdf"},
+ {":/application_pdf", "application/unknown", true, "application/pdf"},
+ {":/application_pdf", "*/*", false, "application/pdf"},
+ {":/application_pdf", "*/*", true, "application/pdf"},
+ {":/application_pdf", "text/xml", false, 0},
+ {":/application_pdf", "text/xml", true, 0},
+ {":/application_pdf", "application/xml", false, 0},
+ {":/application_pdf", "application/xml", true, 0},
+ {":/application_pdf", "text/html", false, 0},
+ {":/application_pdf", "text/html", true, 0},
+ {":/application_pdf", "text/xml", false, 0},
+ {":/application_pdf", "text/xml", true, 0},
+ {":/application_pdf", "application/pdf", false, 0},
+ {":/application_pdf", "application/pdf", true, 0},
+ {":/application_pdf", "application/postscript", false, 0},
+ {":/application_pdf", "application/postscript", true, 0},
+ {":/application_pdf", "application/ogg", false, 0},
+ {":/application_pdf", "application/ogg", true, 0},
+ {":/application_pdf", "video/webm", false, 0},
+ {":/application_pdf", "video/webm", true, 0},
+ {":/application_pdf", "application/x-rar-compressed", false, 0},
+ {":/application_pdf", "application/x-rar-compressed", true, 0},
+ {":/application_pdf", "application/zip", false, 0},
+ {":/application_pdf", "application/zip", true, 0},
+ {":/application_pdf", "application/x-gzip", false, 0},
+ {":/application_pdf", "application/x-gzip", true, 0},
+ {":/application_pdf", "audio/x-wave", false, 0},
+ {":/application_pdf", "audio/x-wave", true, 0},
+ {":/application_pdf", "image/webp", false, 0},
+ {":/application_pdf", "image/webp", true, 0},
+ {":/application_pdf", "image/gif", false, 0},
+ {":/application_pdf", "image/gif", true, 0},
+ {":/application_pdf", "image/png", false, 0},
+ {":/application_pdf", "image/png", true, 0},
+ {":/application_pdf", "image/jpeg", false, 0},
+ {":/application_pdf", "image/jpeg", true, 0},
+ {":/application_pdf", "image/bmp", false, 0},
+ {":/application_pdf", "image/bmp", true, 0},
+ {":/application_pdf", "image/vnd.microsoft.icon", false, 0},
+ {":/application_pdf", "image/vnd.microsoft.icon", true, 0},
+ {":/application_pdf", "application/rdf+xml", false, 0},
+ {":/application_pdf", "application/rdf+xml", true, 0},
+ {":/application_pdf", "application/rss+xml", false, 0},
+ {":/application_pdf", "application/rss+xml", true, 0},
+ {":/application_pdf", "application/atom+xml", false, 0},
+ {":/application_pdf", "application/atom+xml", true, 0},
+ {":/application_postscript", "text/plain", false, "text/plain"},
+ {":/application_postscript", "text/plain", true, "text/plain"},
+ {":/application_postscript", "unknown/unknown", false, "application/postscript"},
+ {":/application_postscript", "unknown/unknown", true, "application/postscript"},
+ {":/application_postscript", "application/unknown", false, "application/postscript"},
+ {":/application_postscript", "application/unknown", true, "application/postscript"},
+ {":/application_postscript", "*/*", false, "application/postscript"},
+ {":/application_postscript", "*/*", true, "application/postscript"},
+ {":/application_postscript", "text/xml", false, 0},
+ {":/application_postscript", "text/xml", true, 0},
+ {":/application_postscript", "application/xml", false, 0},
+ {":/application_postscript", "application/xml", true, 0},
+ {":/application_postscript", "text/html", false, 0},
+ {":/application_postscript", "text/html", true, 0},
+ {":/application_postscript", "text/xml", false, 0},
+ {":/application_postscript", "text/xml", true, 0},
+ {":/application_postscript", "application/pdf", false, 0},
+ {":/application_postscript", "application/pdf", true, 0},
+ {":/application_postscript", "application/postscript", false, 0},
+ {":/application_postscript", "application/postscript", true, 0},
+ {":/application_postscript", "application/ogg", false, 0},
+ {":/application_postscript", "application/ogg", true, 0},
+ {":/application_postscript", "video/webm", false, 0},
+ {":/application_postscript", "video/webm", true, 0},
+ {":/application_postscript", "application/x-rar-compressed", false, 0},
+ {":/application_postscript", "application/x-rar-compressed", true, 0},
+ {":/application_postscript", "application/zip", false, 0},
+ {":/application_postscript", "application/zip", true, 0},
+ {":/application_postscript", "application/x-gzip", false, 0},
+ {":/application_postscript", "application/x-gzip", true, 0},
+ {":/application_postscript", "audio/x-wave", false, 0},
+ {":/application_postscript", "audio/x-wave", true, 0},
+ {":/application_postscript", "image/webp", false, 0},
+ {":/application_postscript", "image/webp", true, 0},
+ {":/application_postscript", "image/gif", false, 0},
+ {":/application_postscript", "image/gif", true, 0},
+ {":/application_postscript", "image/png", false, 0},
+ {":/application_postscript", "image/png", true, 0},
+ {":/application_postscript", "image/jpeg", false, 0},
+ {":/application_postscript", "image/jpeg", true, 0},
+ {":/application_postscript", "image/bmp", false, 0},
+ {":/application_postscript", "image/bmp", true, 0},
+ {":/application_postscript", "image/vnd.microsoft.icon", false, 0},
+ {":/application_postscript", "image/vnd.microsoft.icon", true, 0},
+ {":/application_postscript", "application/rdf+xml", false, 0},
+ {":/application_postscript", "application/rdf+xml", true, 0},
+ {":/application_postscript", "application/rss+xml", false, 0},
+ {":/application_postscript", "application/rss+xml", true, 0},
+ {":/application_postscript", "application/atom+xml", false, 0},
+ {":/application_postscript", "application/atom+xml", true, 0},
+ {":/application_rdf+xml", "text/plain", false, "text/plain"},
+ {":/application_rdf+xml", "text/plain", true, "text/plain"},
+ {":/application_rdf+xml", "unknown/unknown", false, "text/xml"},
+ {":/application_rdf+xml", "unknown/unknown", true, "text/xml"},
+ {":/application_rdf+xml", "application/unknown", false, "text/xml"},
+ {":/application_rdf+xml", "application/unknown", true, "text/xml"},
+ {":/application_rdf+xml", "*/*", false, "text/xml"},
+ {":/application_rdf+xml", "*/*", true, "text/xml"},
+ {":/application_rdf+xml", "text/xml", false, 0},
+ {":/application_rdf+xml", "text/xml", true, 0},
+ {":/application_rdf+xml", "application/xml", false, 0},
+ {":/application_rdf+xml", "application/xml", true, 0},
+ {":/application_rdf+xml", "text/html", false, "application/rdf+xml"},
+ {":/application_rdf+xml", "text/html", true, 0},
+ {":/application_rdf+xml", "text/xml", false, 0},
+ {":/application_rdf+xml", "text/xml", true, 0},
+ {":/application_rdf+xml", "application/pdf", false, 0},
+ {":/application_rdf+xml", "application/pdf", true, 0},
+ {":/application_rdf+xml", "application/postscript", false, 0},
+ {":/application_rdf+xml", "application/postscript", true, 0},
+ {":/application_rdf+xml", "application/ogg", false, 0},
+ {":/application_rdf+xml", "application/ogg", true, 0},
+ {":/application_rdf+xml", "video/webm", false, 0},
+ {":/application_rdf+xml", "video/webm", true, 0},
+ {":/application_rdf+xml", "application/x-rar-compressed", false, 0},
+ {":/application_rdf+xml", "application/x-rar-compressed", true, 0},
+ {":/application_rdf+xml", "application/zip", false, 0},
+ {":/application_rdf+xml", "application/zip", true, 0},
+ {":/application_rdf+xml", "application/x-gzip", false, 0},
+ {":/application_rdf+xml", "application/x-gzip", true, 0},
+ {":/application_rdf+xml", "audio/x-wave", false, 0},
+ {":/application_rdf+xml", "audio/x-wave", true, 0},
+ {":/application_rdf+xml", "image/webp", false, 0},
+ {":/application_rdf+xml", "image/webp", true, 0},
+ {":/application_rdf+xml", "image/gif", false, 0},
+ {":/application_rdf+xml", "image/gif", true, 0},
+ {":/application_rdf+xml", "image/png", false, 0},
+ {":/application_rdf+xml", "image/png", true, 0},
+ {":/application_rdf+xml", "image/jpeg", false, 0},
+ {":/application_rdf+xml", "image/jpeg", true, 0},
+ {":/application_rdf+xml", "image/bmp", false, 0},
+ {":/application_rdf+xml", "image/bmp", true, 0},
+ {":/application_rdf+xml", "image/vnd.microsoft.icon", false, 0},
+ {":/application_rdf+xml", "image/vnd.microsoft.icon", true, 0},
+ {":/application_rdf+xml", "application/rdf+xml", false, 0},
+ {":/application_rdf+xml", "application/rdf+xml", true, 0},
+ {":/application_rdf+xml", "application/rss+xml", false, 0},
+ {":/application_rdf+xml", "application/rss+xml", true, 0},
+ {":/application_rdf+xml", "application/atom+xml", false, 0},
+ {":/application_rdf+xml", "application/atom+xml", true, 0},
+ {":/application_rss+xml", "text/plain", false, "text/plain"},
+ {":/application_rss+xml", "text/plain", true, "text/plain"},
+ {":/application_rss+xml", "unknown/unknown", false, "text/xml"},
+ {":/application_rss+xml", "unknown/unknown", true, "text/xml"},
+ {":/application_rss+xml", "application/unknown", false, "text/xml"},
+ {":/application_rss+xml", "application/unknown", true, "text/xml"},
+ {":/application_rss+xml", "*/*", false, "text/xml"},
+ {":/application_rss+xml", "*/*", true, "text/xml"},
+ {":/application_rss+xml", "text/xml", false, 0},
+ {":/application_rss+xml", "text/xml", true, 0},
+ {":/application_rss+xml", "application/xml", false, 0},
+ {":/application_rss+xml", "application/xml", true, 0},
+ {":/application_rss+xml", "text/html", false, "application/rss+xml"},
+ {":/application_rss+xml", "text/html", true, 0},
+ {":/application_rss+xml", "text/xml", false, 0},
+ {":/application_rss+xml", "text/xml", true, 0},
+ {":/application_rss+xml", "application/pdf", false, 0},
+ {":/application_rss+xml", "application/pdf", true, 0},
+ {":/application_rss+xml", "application/postscript", false, 0},
+ {":/application_rss+xml", "application/postscript", true, 0},
+ {":/application_rss+xml", "application/ogg", false, 0},
+ {":/application_rss+xml", "application/ogg", true, 0},
+ {":/application_rss+xml", "video/webm", false, 0},
+ {":/application_rss+xml", "video/webm", true, 0},
+ {":/application_rss+xml", "application/x-rar-compressed", false, 0},
+ {":/application_rss+xml", "application/x-rar-compressed", true, 0},
+ {":/application_rss+xml", "application/zip", false, 0},
+ {":/application_rss+xml", "application/zip", true, 0},
+ {":/application_rss+xml", "application/x-gzip", false, 0},
+ {":/application_rss+xml", "application/x-gzip", true, 0},
+ {":/application_rss+xml", "audio/x-wave", false, 0},
+ {":/application_rss+xml", "audio/x-wave", true, 0},
+ {":/application_rss+xml", "image/webp", false, 0},
+ {":/application_rss+xml", "image/webp", true, 0},
+ {":/application_rss+xml", "image/gif", false, 0},
+ {":/application_rss+xml", "image/gif", true, 0},
+ {":/application_rss+xml", "image/png", false, 0},
+ {":/application_rss+xml", "image/png", true, 0},
+ {":/application_rss+xml", "image/jpeg", false, 0},
+ {":/application_rss+xml", "image/jpeg", true, 0},
+ {":/application_rss+xml", "image/bmp", false, 0},
+ {":/application_rss+xml", "image/bmp", true, 0},
+ {":/application_rss+xml", "image/vnd.microsoft.icon", false, 0},
+ {":/application_rss+xml", "image/vnd.microsoft.icon", true, 0},
+ {":/application_rss+xml", "application/rdf+xml", false, 0},
+ {":/application_rss+xml", "application/rdf+xml", true, 0},
+ {":/application_rss+xml", "application/rss+xml", false, 0},
+ {":/application_rss+xml", "application/rss+xml", true, 0},
+ {":/application_rss+xml", "application/atom+xml", false, 0},
+ {":/application_rss+xml", "application/atom+xml", true, 0},
+ {":/application_x-gzip", "text/plain", false, "application/x-gzip"},
+ {":/application_x-gzip", "text/plain", true, "application/x-gzip"},
+ {":/application_x-gzip", "unknown/unknown", false, "application/x-gzip"},
+ {":/application_x-gzip", "unknown/unknown", true, "application/x-gzip"},
+ {":/application_x-gzip", "application/unknown", false, "application/x-gzip"},
+ {":/application_x-gzip", "application/unknown", true, "application/x-gzip"},
+ {":/application_x-gzip", "*/*", false, "application/x-gzip"},
+ {":/application_x-gzip", "*/*", true, "application/x-gzip"},
+ {":/application_x-gzip", "text/xml", false, 0},
+ {":/application_x-gzip", "text/xml", true, 0},
+ {":/application_x-gzip", "application/xml", false, 0},
+ {":/application_x-gzip", "application/xml", true, 0},
+ {":/application_x-gzip", "text/html", false, 0},
+ {":/application_x-gzip", "text/html", true, 0},
+ {":/application_x-gzip", "text/xml", false, 0},
+ {":/application_x-gzip", "text/xml", true, 0},
+ {":/application_x-gzip", "application/pdf", false, 0},
+ {":/application_x-gzip", "application/pdf", true, 0},
+ {":/application_x-gzip", "application/postscript", false, 0},
+ {":/application_x-gzip", "application/postscript", true, 0},
+ {":/application_x-gzip", "application/ogg", false, 0},
+ {":/application_x-gzip", "application/ogg", true, 0},
+ {":/application_x-gzip", "video/webm", false, 0},
+ {":/application_x-gzip", "video/webm", true, 0},
+ {":/application_x-gzip", "application/x-rar-compressed", false, 0},
+ {":/application_x-gzip", "application/x-rar-compressed", true, 0},
+ {":/application_x-gzip", "application/zip", false, 0},
+ {":/application_x-gzip", "application/zip", true, 0},
+ {":/application_x-gzip", "application/x-gzip", false, 0},
+ {":/application_x-gzip", "application/x-gzip", true, 0},
+ {":/application_x-gzip", "audio/x-wave", false, 0},
+ {":/application_x-gzip", "audio/x-wave", true, 0},
+ {":/application_x-gzip", "image/webp", false, 0},
+ {":/application_x-gzip", "image/webp", true, 0},
+ {":/application_x-gzip", "image/gif", false, 0},
+ {":/application_x-gzip", "image/gif", true, 0},
+ {":/application_x-gzip", "image/png", false, 0},
+ {":/application_x-gzip", "image/png", true, 0},
+ {":/application_x-gzip", "image/jpeg", false, 0},
+ {":/application_x-gzip", "image/jpeg", true, 0},
+ {":/application_x-gzip", "image/bmp", false, 0},
+ {":/application_x-gzip", "image/bmp", true, 0},
+ {":/application_x-gzip", "image/vnd.microsoft.icon", false, 0},
+ {":/application_x-gzip", "image/vnd.microsoft.icon", true, 0},
+ {":/application_x-gzip", "application/rdf+xml", false, 0},
+ {":/application_x-gzip", "application/rdf+xml", true, 0},
+ {":/application_x-gzip", "application/rss+xml", false, 0},
+ {":/application_x-gzip", "application/rss+xml", true, 0},
+ {":/application_x-gzip", "application/atom+xml", false, 0},
+ {":/application_x-gzip", "application/atom+xml", true, 0},
+ {":/application_x-rar-compressed", "text/plain", false, "application/x-rar-compressed"},
+ {":/application_x-rar-compressed", "text/plain", true, "application/x-rar-compressed"},
+ {":/application_x-rar-compressed", "unknown/unknown", false, "application/x-rar-compressed"},
+ {":/application_x-rar-compressed", "unknown/unknown", true, "application/x-rar-compressed"},
+ {":/application_x-rar-compressed", "application/unknown", false, "application/x-rar-compressed"},
+ {":/application_x-rar-compressed", "application/unknown", true, "application/x-rar-compressed"},
+ {":/application_x-rar-compressed", "*/*", false, "application/x-rar-compressed"},
+ {":/application_x-rar-compressed", "*/*", true, "application/x-rar-compressed"},
+ {":/application_x-rar-compressed", "text/xml", false, 0},
+ {":/application_x-rar-compressed", "text/xml", true, 0},
+ {":/application_x-rar-compressed", "application/xml", false, 0},
+ {":/application_x-rar-compressed", "application/xml", true, 0},
+ {":/application_x-rar-compressed", "text/html", false, 0},
+ {":/application_x-rar-compressed", "text/html", true, 0},
+ {":/application_x-rar-compressed", "text/xml", false, 0},
+ {":/application_x-rar-compressed", "text/xml", true, 0},
+ {":/application_x-rar-compressed", "application/pdf", false, 0},
+ {":/application_x-rar-compressed", "application/pdf", true, 0},
+ {":/application_x-rar-compressed", "application/postscript", false, 0},
+ {":/application_x-rar-compressed", "application/postscript", true, 0},
+ {":/application_x-rar-compressed", "application/ogg", false, 0},
+ {":/application_x-rar-compressed", "application/ogg", true, 0},
+ {":/application_x-rar-compressed", "video/webm", false, 0},
+ {":/application_x-rar-compressed", "video/webm", true, 0},
+ {":/application_x-rar-compressed", "application/x-rar-compressed", false, 0},
+ {":/application_x-rar-compressed", "application/x-rar-compressed", true, 0},
+ {":/application_x-rar-compressed", "application/zip", false, 0},
+ {":/application_x-rar-compressed", "application/zip", true, 0},
+ {":/application_x-rar-compressed", "application/x-gzip", false, 0},
+ {":/application_x-rar-compressed", "application/x-gzip", true, 0},
+ {":/application_x-rar-compressed", "audio/x-wave", false, 0},
+ {":/application_x-rar-compressed", "audio/x-wave", true, 0},
+ {":/application_x-rar-compressed", "image/webp", false, 0},
+ {":/application_x-rar-compressed", "image/webp", true, 0},
+ {":/application_x-rar-compressed", "image/gif", false, 0},
+ {":/application_x-rar-compressed", "image/gif", true, 0},
+ {":/application_x-rar-compressed", "image/png", false, 0},
+ {":/application_x-rar-compressed", "image/png", true, 0},
+ {":/application_x-rar-compressed", "image/jpeg", false, 0},
+ {":/application_x-rar-compressed", "image/jpeg", true, 0},
+ {":/application_x-rar-compressed", "image/bmp", false, 0},
+ {":/application_x-rar-compressed", "image/bmp", true, 0},
+ {":/application_x-rar-compressed", "image/vnd.microsoft.icon", false, 0},
+ {":/application_x-rar-compressed", "image/vnd.microsoft.icon", true, 0},
+ {":/application_x-rar-compressed", "application/rdf+xml", false, 0},
+ {":/application_x-rar-compressed", "application/rdf+xml", true, 0},
+ {":/application_x-rar-compressed", "application/rss+xml", false, 0},
+ {":/application_x-rar-compressed", "application/rss+xml", true, 0},
+ {":/application_x-rar-compressed", "application/atom+xml", false, 0},
+ {":/application_x-rar-compressed", "application/atom+xml", true, 0},
+ {":/application_zip", "text/plain", false, "application/zip"},
+ {":/application_zip", "text/plain", true, "application/zip"},
+ {":/application_zip", "unknown/unknown", false, "application/zip"},
+ {":/application_zip", "unknown/unknown", true, "application/zip"},
+ {":/application_zip", "application/unknown", false, "application/zip"},
+ {":/application_zip", "application/unknown", true, "application/zip"},
+ {":/application_zip", "*/*", false, "application/zip"},
+ {":/application_zip", "*/*", true, "application/zip"},
+ {":/application_zip", "text/xml", false, 0},
+ {":/application_zip", "text/xml", true, 0},
+ {":/application_zip", "application/xml", false, 0},
+ {":/application_zip", "application/xml", true, 0},
+ {":/application_zip", "text/html", false, 0},
+ {":/application_zip", "text/html", true, 0},
+ {":/application_zip", "text/xml", false, 0},
+ {":/application_zip", "text/xml", true, 0},
+ {":/application_zip", "application/pdf", false, 0},
+ {":/application_zip", "application/pdf", true, 0},
+ {":/application_zip", "application/postscript", false, 0},
+ {":/application_zip", "application/postscript", true, 0},
+ {":/application_zip", "application/ogg", false, 0},
+ {":/application_zip", "application/ogg", true, 0},
+ {":/application_zip", "video/webm", false, 0},
+ {":/application_zip", "video/webm", true, 0},
+ {":/application_zip", "application/x-rar-compressed", false, 0},
+ {":/application_zip", "application/x-rar-compressed", true, 0},
+ {":/application_zip", "application/zip", false, 0},
+ {":/application_zip", "application/zip", true, 0},
+ {":/application_zip", "application/x-gzip", false, 0},
+ {":/application_zip", "application/x-gzip", true, 0},
+ {":/application_zip", "audio/x-wave", false, 0},
+ {":/application_zip", "audio/x-wave", true, 0},
+ {":/application_zip", "image/webp", false, 0},
+ {":/application_zip", "image/webp", true, 0},
+ {":/application_zip", "image/gif", false, 0},
+ {":/application_zip", "image/gif", true, 0},
+ {":/application_zip", "image/png", false, 0},
+ {":/application_zip", "image/png", true, 0},
+ {":/application_zip", "image/jpeg", false, 0},
+ {":/application_zip", "image/jpeg", true, 0},
+ {":/application_zip", "image/bmp", false, 0},
+ {":/application_zip", "image/bmp", true, 0},
+ {":/application_zip", "image/vnd.microsoft.icon", false, 0},
+ {":/application_zip", "image/vnd.microsoft.icon", true, 0},
+ {":/application_zip", "application/rdf+xml", false, 0},
+ {":/application_zip", "application/rdf+xml", true, 0},
+ {":/application_zip", "application/rss+xml", false, 0},
+ {":/application_zip", "application/rss+xml", true, 0},
+ {":/application_zip", "application/atom+xml", false, 0},
+ {":/application_zip", "application/atom+xml", true, 0},
+ {":/audio_x-wave", "text/plain", false, "audio/x-wave"},
+ {":/audio_x-wave", "text/plain", true, "audio/x-wave"},
+ {":/audio_x-wave", "unknown/unknown", false, "audio/x-wave"},
+ {":/audio_x-wave", "unknown/unknown", true, "audio/x-wave"},
+ {":/audio_x-wave", "application/unknown", false, "audio/x-wave"},
+ {":/audio_x-wave", "application/unknown", true, "audio/x-wave"},
+ {":/audio_x-wave", "*/*", false, "audio/x-wave"},
+ {":/audio_x-wave", "*/*", true, "audio/x-wave"},
+ {":/audio_x-wave", "text/xml", false, 0},
+ {":/audio_x-wave", "text/xml", true, 0},
+ {":/audio_x-wave", "application/xml", false, 0},
+ {":/audio_x-wave", "application/xml", true, 0},
+ {":/audio_x-wave", "text/html", false, 0},
+ {":/audio_x-wave", "text/html", true, 0},
+ {":/audio_x-wave", "text/xml", false, 0},
+ {":/audio_x-wave", "text/xml", true, 0},
+ {":/audio_x-wave", "application/pdf", false, 0},
+ {":/audio_x-wave", "application/pdf", true, 0},
+ {":/audio_x-wave", "application/postscript", false, 0},
+ {":/audio_x-wave", "application/postscript", true, 0},
+ {":/audio_x-wave", "application/ogg", false, 0},
+ {":/audio_x-wave", "application/ogg", true, 0},
+ {":/audio_x-wave", "video/webm", false, 0},
+ {":/audio_x-wave", "video/webm", true, 0},
+ {":/audio_x-wave", "application/x-rar-compressed", false, 0},
+ {":/audio_x-wave", "application/x-rar-compressed", true, 0},
+ {":/audio_x-wave", "application/zip", false, 0},
+ {":/audio_x-wave", "application/zip", true, 0},
+ {":/audio_x-wave", "application/x-gzip", false, 0},
+ {":/audio_x-wave", "application/x-gzip", true, 0},
+ {":/audio_x-wave", "audio/x-wave", false, 0},
+ {":/audio_x-wave", "audio/x-wave", true, 0},
+ {":/audio_x-wave", "image/webp", false, 0},
+ {":/audio_x-wave", "image/webp", true, 0},
+ {":/audio_x-wave", "image/gif", false, 0},
+ {":/audio_x-wave", "image/gif", true, 0},
+ {":/audio_x-wave", "image/png", false, 0},
+ {":/audio_x-wave", "image/png", true, 0},
+ {":/audio_x-wave", "image/jpeg", false, 0},
+ {":/audio_x-wave", "image/jpeg", true, 0},
+ {":/audio_x-wave", "image/bmp", false, 0},
+ {":/audio_x-wave", "image/bmp", true, 0},
+ {":/audio_x-wave", "image/vnd.microsoft.icon", false, 0},
+ {":/audio_x-wave", "image/vnd.microsoft.icon", true, 0},
+ {":/audio_x-wave", "application/rdf+xml", false, 0},
+ {":/audio_x-wave", "application/rdf+xml", true, 0},
+ {":/audio_x-wave", "application/rss+xml", false, 0},
+ {":/audio_x-wave", "application/rss+xml", true, 0},
+ {":/audio_x-wave", "application/atom+xml", false, 0},
+ {":/audio_x-wave", "application/atom+xml", true, 0},
+ {":/image_bmp", "text/plain", false, "image/bmp"},
+ {":/image_bmp", "text/plain", true, "image/bmp"},
+ {":/image_bmp", "unknown/unknown", false, "image/bmp"},
+ {":/image_bmp", "unknown/unknown", true, "image/bmp"},
+ {":/image_bmp", "application/unknown", false, "image/bmp"},
+ {":/image_bmp", "application/unknown", true, "image/bmp"},
+ {":/image_bmp", "*/*", false, "image/bmp"},
+ {":/image_bmp", "*/*", true, "image/bmp"},
+ {":/image_bmp", "text/xml", false, 0},
+ {":/image_bmp", "text/xml", true, 0},
+ {":/image_bmp", "application/xml", false, 0},
+ {":/image_bmp", "application/xml", true, 0},
+ {":/image_bmp", "text/html", false, 0},
+ {":/image_bmp", "text/html", true, "image/bmp"},
+ {":/image_bmp", "text/xml", false, 0},
+ {":/image_bmp", "text/xml", true, 0},
+ {":/image_bmp", "application/pdf", false, 0},
+ {":/image_bmp", "application/pdf", true, "image/bmp"},
+ {":/image_bmp", "application/postscript", false, 0},
+ {":/image_bmp", "application/postscript", true, "image/bmp"},
+ {":/image_bmp", "application/ogg", false, 0},
+ {":/image_bmp", "application/ogg", true, "image/bmp"},
+ {":/image_bmp", "video/webm", false, 0},
+ {":/image_bmp", "video/webm", true, "image/bmp"},
+ {":/image_bmp", "application/x-rar-compressed", false, 0},
+ {":/image_bmp", "application/x-rar-compressed", true, "image/bmp"},
+ {":/image_bmp", "application/zip", false, 0},
+ {":/image_bmp", "application/zip", true, "image/bmp"},
+ {":/image_bmp", "application/x-gzip", false, 0},
+ {":/image_bmp", "application/x-gzip", true, "image/bmp"},
+ {":/image_bmp", "audio/x-wave", false, 0},
+ {":/image_bmp", "audio/x-wave", true, "image/bmp"},
+ {":/image_bmp", "image/webp", false, 0},
+ {":/image_bmp", "image/webp", true, "image/bmp"},
+ {":/image_bmp", "image/gif", false, 0},
+ {":/image_bmp", "image/gif", true, "image/bmp"},
+ {":/image_bmp", "image/png", false, 0},
+ {":/image_bmp", "image/png", true, "image/bmp"},
+ {":/image_bmp", "image/jpeg", false, 0},
+ {":/image_bmp", "image/jpeg", true, "image/bmp"},
+ {":/image_bmp", "image/bmp", false, 0},
+ {":/image_bmp", "image/bmp", true, "image/bmp"},
+ {":/image_bmp", "image/vnd.microsoft.icon", false, 0},
+ {":/image_bmp", "image/vnd.microsoft.icon", true, "image/bmp"},
+ {":/image_bmp", "application/rdf+xml", false, 0},
+ {":/image_bmp", "application/rdf+xml", true, 0},
+ {":/image_bmp", "application/rss+xml", false, 0},
+ {":/image_bmp", "application/rss+xml", true, 0},
+ {":/image_bmp", "application/atom+xml", false, 0},
+ {":/image_bmp", "application/atom+xml", true, 0},
+ {":/image_gif", "text/plain", false, "image/gif"},
+ {":/image_gif", "text/plain", true, "image/gif"},
+ {":/image_gif", "unknown/unknown", false, "image/gif"},
+ {":/image_gif", "unknown/unknown", true, "image/gif"},
+ {":/image_gif", "application/unknown", false, "image/gif"},
+ {":/image_gif", "application/unknown", true, "image/gif"},
+ {":/image_gif", "*/*", false, "image/gif"},
+ {":/image_gif", "*/*", true, "image/gif"},
+ {":/image_gif", "text/xml", false, 0},
+ {":/image_gif", "text/xml", true, 0},
+ {":/image_gif", "application/xml", false, 0},
+ {":/image_gif", "application/xml", true, 0},
+ {":/image_gif", "text/html", false, 0},
+ {":/image_gif", "text/html", true, "image/gif"},
+ {":/image_gif", "text/xml", false, 0},
+ {":/image_gif", "text/xml", true, 0},
+ {":/image_gif", "application/pdf", false, 0},
+ {":/image_gif", "application/pdf", true, "image/gif"},
+ {":/image_gif", "application/postscript", false, 0},
+ {":/image_gif", "application/postscript", true, "image/gif"},
+ {":/image_gif", "application/ogg", false, 0},
+ {":/image_gif", "application/ogg", true, "image/gif"},
+ {":/image_gif", "video/webm", false, 0},
+ {":/image_gif", "video/webm", true, "image/gif"},
+ {":/image_gif", "application/x-rar-compressed", false, 0},
+ {":/image_gif", "application/x-rar-compressed", true, "image/gif"},
+ {":/image_gif", "application/zip", false, 0},
+ {":/image_gif", "application/zip", true, "image/gif"},
+ {":/image_gif", "application/x-gzip", false, 0},
+ {":/image_gif", "application/x-gzip", true, "image/gif"},
+ {":/image_gif", "audio/x-wave", false, 0},
+ {":/image_gif", "audio/x-wave", true, "image/gif"},
+ {":/image_gif", "image/webp", false, 0},
+ {":/image_gif", "image/webp", true, "image/gif"},
+ {":/image_gif", "image/gif", false, 0},
+ {":/image_gif", "image/gif", true, "image/gif"},
+ {":/image_gif", "image/png", false, 0},
+ {":/image_gif", "image/png", true, "image/gif"},
+ {":/image_gif", "image/jpeg", false, 0},
+ {":/image_gif", "image/jpeg", true, "image/gif"},
+ {":/image_gif", "image/bmp", false, 0},
+ {":/image_gif", "image/bmp", true, "image/gif"},
+ {":/image_gif", "image/vnd.microsoft.icon", false, 0},
+ {":/image_gif", "image/vnd.microsoft.icon", true, "image/gif"},
+ {":/image_gif", "application/rdf+xml", false, 0},
+ {":/image_gif", "application/rdf+xml", true, 0},
+ {":/image_gif", "application/rss+xml", false, 0},
+ {":/image_gif", "application/rss+xml", true, 0},
+ {":/image_gif", "application/atom+xml", false, 0},
+ {":/image_gif", "application/atom+xml", true, 0},
+ {":/image_jpeg", "text/plain", false, "image/jpeg"},
+ {":/image_jpeg", "text/plain", true, "image/jpeg"},
+ {":/image_jpeg", "unknown/unknown", false, "image/jpeg"},
+ {":/image_jpeg", "unknown/unknown", true, "image/jpeg"},
+ {":/image_jpeg", "application/unknown", false, "image/jpeg"},
+ {":/image_jpeg", "application/unknown", true, "image/jpeg"},
+ {":/image_jpeg", "*/*", false, "image/jpeg"},
+ {":/image_jpeg", "*/*", true, "image/jpeg"},
+ {":/image_jpeg", "text/xml", false, 0},
+ {":/image_jpeg", "text/xml", true, 0},
+ {":/image_jpeg", "application/xml", false, 0},
+ {":/image_jpeg", "application/xml", true, 0},
+ {":/image_jpeg", "text/html", false, 0},
+ {":/image_jpeg", "text/html", true, "image/jpeg"},
+ {":/image_jpeg", "text/xml", false, 0},
+ {":/image_jpeg", "text/xml", true, 0},
+ {":/image_jpeg", "application/pdf", false, 0},
+ {":/image_jpeg", "application/pdf", true, "image/jpeg"},
+ {":/image_jpeg", "application/postscript", false, 0},
+ {":/image_jpeg", "application/postscript", true, "image/jpeg"},
+ {":/image_jpeg", "application/ogg", false, 0},
+ {":/image_jpeg", "application/ogg", true, "image/jpeg"},
+ {":/image_jpeg", "video/webm", false, 0},
+ {":/image_jpeg", "video/webm", true, "image/jpeg"},
+ {":/image_jpeg", "application/x-rar-compressed", false, 0},
+ {":/image_jpeg", "application/x-rar-compressed", true, "image/jpeg"},
+ {":/image_jpeg", "application/zip", false, 0},
+ {":/image_jpeg", "application/zip", true, "image/jpeg"},
+ {":/image_jpeg", "application/x-gzip", false, 0},
+ {":/image_jpeg", "application/x-gzip", true, "image/jpeg"},
+ {":/image_jpeg", "audio/x-wave", false, 0},
+ {":/image_jpeg", "audio/x-wave", true, "image/jpeg"},
+ {":/image_jpeg", "image/webp", false, 0},
+ {":/image_jpeg", "image/webp", true, "image/jpeg"},
+ {":/image_jpeg", "image/gif", false, 0},
+ {":/image_jpeg", "image/gif", true, "image/jpeg"},
+ {":/image_jpeg", "image/png", false, 0},
+ {":/image_jpeg", "image/png", true, "image/jpeg"},
+ {":/image_jpeg", "image/jpeg", false, 0},
+ {":/image_jpeg", "image/jpeg", true, "image/jpeg"},
+ {":/image_jpeg", "image/bmp", false, 0},
+ {":/image_jpeg", "image/bmp", true, "image/jpeg"},
+ {":/image_jpeg", "image/vnd.microsoft.icon", false, 0},
+ {":/image_jpeg", "image/vnd.microsoft.icon", true, "image/jpeg"},
+ {":/image_jpeg", "application/rdf+xml", false, 0},
+ {":/image_jpeg", "application/rdf+xml", true, 0},
+ {":/image_jpeg", "application/rss+xml", false, 0},
+ {":/image_jpeg", "application/rss+xml", true, 0},
+ {":/image_jpeg", "application/atom+xml", false, 0},
+ {":/image_jpeg", "application/atom+xml", true, 0},
+ {":/image_png", "text/plain", false, "image/png"},
+ {":/image_png", "text/plain", true, "image/png"},
+ {":/image_png", "unknown/unknown", false, "image/png"},
+ {":/image_png", "unknown/unknown", true, "image/png"},
+ {":/image_png", "application/unknown", false, "image/png"},
+ {":/image_png", "application/unknown", true, "image/png"},
+ {":/image_png", "*/*", false, "image/png"},
+ {":/image_png", "*/*", true, "image/png"},
+ {":/image_png", "text/xml", false, 0},
+ {":/image_png", "text/xml", true, 0},
+ {":/image_png", "application/xml", false, 0},
+ {":/image_png", "application/xml", true, 0},
+ {":/image_png", "text/html", false, 0},
+ {":/image_png", "text/html", true, "image/png"},
+ {":/image_png", "text/xml", false, 0},
+ {":/image_png", "text/xml", true, 0},
+ {":/image_png", "application/pdf", false, 0},
+ {":/image_png", "application/pdf", true, "image/png"},
+ {":/image_png", "application/postscript", false, 0},
+ {":/image_png", "application/postscript", true, "image/png"},
+ {":/image_png", "application/ogg", false, 0},
+ {":/image_png", "application/ogg", true, "image/png"},
+ {":/image_png", "video/webm", false, 0},
+ {":/image_png", "video/webm", true, "image/png"},
+ {":/image_png", "application/x-rar-compressed", false, 0},
+ {":/image_png", "application/x-rar-compressed", true, "image/png"},
+ {":/image_png", "application/zip", false, 0},
+ {":/image_png", "application/zip", true, "image/png"},
+ {":/image_png", "application/x-gzip", false, 0},
+ {":/image_png", "application/x-gzip", true, "image/png"},
+ {":/image_png", "audio/x-wave", false, 0},
+ {":/image_png", "audio/x-wave", true, "image/png"},
+ {":/image_png", "image/webp", false, 0},
+ {":/image_png", "image/webp", true, "image/png"},
+ {":/image_png", "image/gif", false, 0},
+ {":/image_png", "image/gif", true, "image/png"},
+ {":/image_png", "image/png", false, 0},
+ {":/image_png", "image/png", true, "image/png"},
+ {":/image_png", "image/jpeg", false, 0},
+ {":/image_png", "image/jpeg", true, "image/png"},
+ {":/image_png", "image/bmp", false, 0},
+ {":/image_png", "image/bmp", true, "image/png"},
+ {":/image_png", "image/vnd.microsoft.icon", false, 0},
+ {":/image_png", "image/vnd.microsoft.icon", true, "image/png"},
+ {":/image_png", "application/rdf+xml", false, 0},
+ {":/image_png", "application/rdf+xml", true, 0},
+ {":/image_png", "application/rss+xml", false, 0},
+ {":/image_png", "application/rss+xml", true, 0},
+ {":/image_png", "application/atom+xml", false, 0},
+ {":/image_png", "application/atom+xml", true, 0},
+ {":/image_vnd.microsoft.icon", "text/plain", false, "image/vnd.microsoft.icon"},
+ {":/image_vnd.microsoft.icon", "text/plain", true, "image/vnd.microsoft.icon"},
+ {":/image_vnd.microsoft.icon", "unknown/unknown", false, "image/vnd.microsoft.icon"},
+ {":/image_vnd.microsoft.icon", "unknown/unknown", true, "image/vnd.microsoft.icon"},
+ {":/image_vnd.microsoft.icon", "application/unknown", false, "image/vnd.microsoft.icon"},
+ {":/image_vnd.microsoft.icon", "application/unknown", true, "image/vnd.microsoft.icon"},
+ {":/image_vnd.microsoft.icon", "*/*", false, "image/vnd.microsoft.icon"},
+ {":/image_vnd.microsoft.icon", "*/*", true, "image/vnd.microsoft.icon"},
+ {":/image_vnd.microsoft.icon", "text/xml", false, 0},
+ {":/image_vnd.microsoft.icon", "text/xml", true, 0},
+ {":/image_vnd.microsoft.icon", "application/xml", false, 0},
+ {":/image_vnd.microsoft.icon", "application/xml", true, 0},
+ {":/image_vnd.microsoft.icon", "text/html", false, 0},
+ {":/image_vnd.microsoft.icon", "text/html", true, "image/vnd.microsoft.icon"},
+ {":/image_vnd.microsoft.icon", "text/xml", false, 0},
+ {":/image_vnd.microsoft.icon", "text/xml", true, 0},
+ {":/image_vnd.microsoft.icon", "application/pdf", false, 0},
+ {":/image_vnd.microsoft.icon", "application/pdf", true, "image/vnd.microsoft.icon"},
+ {":/image_vnd.microsoft.icon", "application/postscript", false, 0},
+ {":/image_vnd.microsoft.icon", "application/postscript", true, "image/vnd.microsoft.icon"},
+ {":/image_vnd.microsoft.icon", "application/ogg", false, 0},
+ {":/image_vnd.microsoft.icon", "application/ogg", true, "image/vnd.microsoft.icon"},
+ {":/image_vnd.microsoft.icon", "video/webm", false, 0},
+ {":/image_vnd.microsoft.icon", "video/webm", true, "image/vnd.microsoft.icon"},
+ {":/image_vnd.microsoft.icon", "application/x-rar-compressed", false, 0},
+ {":/image_vnd.microsoft.icon", "application/x-rar-compressed", true, "image/vnd.microsoft.icon"},
+ {":/image_vnd.microsoft.icon", "application/zip", false, 0},
+ {":/image_vnd.microsoft.icon", "application/zip", true, "image/vnd.microsoft.icon"},
+ {":/image_vnd.microsoft.icon", "application/x-gzip", false, 0},
+ {":/image_vnd.microsoft.icon", "application/x-gzip", true, "image/vnd.microsoft.icon"},
+ {":/image_vnd.microsoft.icon", "audio/x-wave", false, 0},
+ {":/image_vnd.microsoft.icon", "audio/x-wave", true, "image/vnd.microsoft.icon"},
+ {":/image_vnd.microsoft.icon", "image/webp", false, 0},
+ {":/image_vnd.microsoft.icon", "image/webp", true, "image/vnd.microsoft.icon"},
+ {":/image_vnd.microsoft.icon", "image/gif", false, 0},
+ {":/image_vnd.microsoft.icon", "image/gif", true, "image/vnd.microsoft.icon"},
+ {":/image_vnd.microsoft.icon", "image/png", false, 0},
+ {":/image_vnd.microsoft.icon", "image/png", true, "image/vnd.microsoft.icon"},
+ {":/image_vnd.microsoft.icon", "image/jpeg", false, 0},
+ {":/image_vnd.microsoft.icon", "image/jpeg", true, "image/vnd.microsoft.icon"},
+ {":/image_vnd.microsoft.icon", "image/bmp", false, 0},
+ {":/image_vnd.microsoft.icon", "image/bmp", true, "image/vnd.microsoft.icon"},
+ {":/image_vnd.microsoft.icon", "image/vnd.microsoft.icon", false, 0},
+ {":/image_vnd.microsoft.icon", "image/vnd.microsoft.icon", true, "image/vnd.microsoft.icon"},
+ {":/image_vnd.microsoft.icon", "application/rdf+xml", false, 0},
+ {":/image_vnd.microsoft.icon", "application/rdf+xml", true, 0},
+ {":/image_vnd.microsoft.icon", "application/rss+xml", false, 0},
+ {":/image_vnd.microsoft.icon", "application/rss+xml", true, 0},
+ {":/image_vnd.microsoft.icon", "application/atom+xml", false, 0},
+ {":/image_vnd.microsoft.icon", "application/atom+xml", true, 0},
+ {":/image_webp", "text/plain", false, "image/webp"},
+ {":/image_webp", "text/plain", true, "image/webp"},
+ {":/image_webp", "unknown/unknown", false, "image/webp"},
+ {":/image_webp", "unknown/unknown", true, "image/webp"},
+ {":/image_webp", "application/unknown", false, "image/webp"},
+ {":/image_webp", "application/unknown", true, "image/webp"},
+ {":/image_webp", "*/*", false, "image/webp"},
+ {":/image_webp", "*/*", true, "image/webp"},
+ {":/image_webp", "text/xml", false, 0},
+ {":/image_webp", "text/xml", true, 0},
+ {":/image_webp", "application/xml", false, 0},
+ {":/image_webp", "application/xml", true, 0},
+ {":/image_webp", "text/html", false, 0},
+ {":/image_webp", "text/html", true, "image/webp"},
+ {":/image_webp", "text/xml", false, 0},
+ {":/image_webp", "text/xml", true, 0},
+ {":/image_webp", "application/pdf", false, 0},
+ {":/image_webp", "application/pdf", true, "image/webp"},
+ {":/image_webp", "application/postscript", false, 0},
+ {":/image_webp", "application/postscript", true, "image/webp"},
+ {":/image_webp", "application/ogg", false, 0},
+ {":/image_webp", "application/ogg", true, "image/webp"},
+ {":/image_webp", "video/webm", false, 0},
+ {":/image_webp", "video/webm", true, "image/webp"},
+ {":/image_webp", "application/x-rar-compressed", false, 0},
+ {":/image_webp", "application/x-rar-compressed", true, "image/webp"},
+ {":/image_webp", "application/zip", false, 0},
+ {":/image_webp", "application/zip", true, "image/webp"},
+ {":/image_webp", "application/x-gzip", false, 0},
+ {":/image_webp", "application/x-gzip", true, "image/webp"},
+ {":/image_webp", "audio/x-wave", false, 0},
+ {":/image_webp", "audio/x-wave", true, "image/webp"},
+ {":/image_webp", "image/webp", false, 0},
+ {":/image_webp", "image/webp", true, "image/webp"},
+ {":/image_webp", "image/gif", false, 0},
+ {":/image_webp", "image/gif", true, "image/webp"},
+ {":/image_webp", "image/png", false, 0},
+ {":/image_webp", "image/png", true, "image/webp"},
+ {":/image_webp", "image/jpeg", false, 0},
+ {":/image_webp", "image/jpeg", true, "image/webp"},
+ {":/image_webp", "image/bmp", false, 0},
+ {":/image_webp", "image/bmp", true, "image/webp"},
+ {":/image_webp", "image/vnd.microsoft.icon", false, 0},
+ {":/image_webp", "image/vnd.microsoft.icon", true, "image/webp"},
+ {":/image_webp", "application/rdf+xml", false, 0},
+ {":/image_webp", "application/rdf+xml", true, 0},
+ {":/image_webp", "application/rss+xml", false, 0},
+ {":/image_webp", "application/rss+xml", true, 0},
+ {":/image_webp", "application/atom+xml", false, 0},
+ {":/image_webp", "application/atom+xml", true, 0},
+ {":/text_html", "text/plain", false, "text/plain"},
+ {":/text_html", "text/plain", true, "text/plain"},
+ {":/text_html", "unknown/unknown", false, "text/html"},
+ {":/text_html", "unknown/unknown", true, "text/html"},
+ {":/text_html", "application/unknown", false, "text/html"},
+ {":/text_html", "application/unknown", true, "text/html"},
+ {":/text_html", "*/*", false, "text/html"},
+ {":/text_html", "*/*", true, "text/html"},
+ {":/text_html", "text/xml", false, 0},
+ {":/text_html", "text/xml", true, 0},
+ {":/text_html", "application/xml", false, 0},
+ {":/text_html", "application/xml", true, 0},
+ {":/text_html", "text/html", false, 0},
+ {":/text_html", "text/html", true, 0},
+ {":/text_html", "text/xml", false, 0},
+ {":/text_html", "text/xml", true, 0},
+ {":/text_html", "application/pdf", false, 0},
+ {":/text_html", "application/pdf", true, 0},
+ {":/text_html", "application/postscript", false, 0},
+ {":/text_html", "application/postscript", true, 0},
+ {":/text_html", "application/ogg", false, 0},
+ {":/text_html", "application/ogg", true, 0},
+ {":/text_html", "video/webm", false, 0},
+ {":/text_html", "video/webm", true, 0},
+ {":/text_html", "application/x-rar-compressed", false, 0},
+ {":/text_html", "application/x-rar-compressed", true, 0},
+ {":/text_html", "application/zip", false, 0},
+ {":/text_html", "application/zip", true, 0},
+ {":/text_html", "application/x-gzip", false, 0},
+ {":/text_html", "application/x-gzip", true, 0},
+ {":/text_html", "audio/x-wave", false, 0},
+ {":/text_html", "audio/x-wave", true, 0},
+ {":/text_html", "image/webp", false, 0},
+ {":/text_html", "image/webp", true, 0},
+ {":/text_html", "image/gif", false, 0},
+ {":/text_html", "image/gif", true, 0},
+ {":/text_html", "image/png", false, 0},
+ {":/text_html", "image/png", true, 0},
+ {":/text_html", "image/jpeg", false, 0},
+ {":/text_html", "image/jpeg", true, 0},
+ {":/text_html", "image/bmp", false, 0},
+ {":/text_html", "image/bmp", true, 0},
+ {":/text_html", "image/vnd.microsoft.icon", false, 0},
+ {":/text_html", "image/vnd.microsoft.icon", true, 0},
+ {":/text_html", "application/rdf+xml", false, 0},
+ {":/text_html", "application/rdf+xml", true, 0},
+ {":/text_html", "application/rss+xml", false, 0},
+ {":/text_html", "application/rss+xml", true, 0},
+ {":/text_html", "application/atom+xml", false, 0},
+ {":/text_html", "application/atom+xml", true, 0},
+ {":/text_xml", "text/plain", false, "text/plain"},
+ {":/text_xml", "text/plain", true, "text/plain"},
+ {":/text_xml", "unknown/unknown", false, "text/xml"},
+ {":/text_xml", "unknown/unknown", true, "text/xml"},
+ {":/text_xml", "application/unknown", false, "text/xml"},
+ {":/text_xml", "application/unknown", true, "text/xml"},
+ {":/text_xml", "*/*", false, "text/xml"},
+ {":/text_xml", "*/*", true, "text/xml"},
+ {":/text_xml", "text/xml", false, 0},
+ {":/text_xml", "text/xml", true, 0},
+ {":/text_xml", "application/xml", false, 0},
+ {":/text_xml", "application/xml", true, 0},
+ {":/text_xml", "text/html", false, 0},
+ {":/text_xml", "text/html", true, 0},
+ {":/text_xml", "text/xml", false, 0},
+ {":/text_xml", "text/xml", true, 0},
+ {":/text_xml", "application/pdf", false, 0},
+ {":/text_xml", "application/pdf", true, 0},
+ {":/text_xml", "application/postscript", false, 0},
+ {":/text_xml", "application/postscript", true, 0},
+ {":/text_xml", "application/ogg", false, 0},
+ {":/text_xml", "application/ogg", true, 0},
+ {":/text_xml", "video/webm", false, 0},
+ {":/text_xml", "video/webm", true, 0},
+ {":/text_xml", "application/x-rar-compressed", false, 0},
+ {":/text_xml", "application/x-rar-compressed", true, 0},
+ {":/text_xml", "application/zip", false, 0},
+ {":/text_xml", "application/zip", true, 0},
+ {":/text_xml", "application/x-gzip", false, 0},
+ {":/text_xml", "application/x-gzip", true, 0},
+ {":/text_xml", "audio/x-wave", false, 0},
+ {":/text_xml", "audio/x-wave", true, 0},
+ {":/text_xml", "image/webp", false, 0},
+ {":/text_xml", "image/webp", true, 0},
+ {":/text_xml", "image/gif", false, 0},
+ {":/text_xml", "image/gif", true, 0},
+ {":/text_xml", "image/png", false, 0},
+ {":/text_xml", "image/png", true, 0},
+ {":/text_xml", "image/jpeg", false, 0},
+ {":/text_xml", "image/jpeg", true, 0},
+ {":/text_xml", "image/bmp", false, 0},
+ {":/text_xml", "image/bmp", true, 0},
+ {":/text_xml", "image/vnd.microsoft.icon", false, 0},
+ {":/text_xml", "image/vnd.microsoft.icon", true, 0},
+ {":/text_xml", "application/rdf+xml", false, 0},
+ {":/text_xml", "application/rdf+xml", true, 0},
+ {":/text_xml", "application/rss+xml", false, 0},
+ {":/text_xml", "application/rss+xml", true, 0},
+ {":/text_xml", "application/atom+xml", false, 0},
+ {":/text_xml", "application/atom+xml", true, 0},
+ {":/video_webm", "text/plain", false, "video/webm"},
+ {":/video_webm", "text/plain", true, "video/webm"},
+ {":/video_webm", "unknown/unknown", false, "video/webm"},
+ {":/video_webm", "unknown/unknown", true, "video/webm"},
+ {":/video_webm", "application/unknown", false, "video/webm"},
+ {":/video_webm", "application/unknown", true, "video/webm"},
+ {":/video_webm", "*/*", false, "video/webm"},
+ {":/video_webm", "*/*", true, "video/webm"},
+ {":/video_webm", "text/xml", false, 0},
+ {":/video_webm", "text/xml", true, 0},
+ {":/video_webm", "application/xml", false, 0},
+ {":/video_webm", "application/xml", true, 0},
+ {":/video_webm", "text/html", false, 0},
+ {":/video_webm", "text/html", true, 0},
+ {":/video_webm", "text/xml", false, 0},
+ {":/video_webm", "text/xml", true, 0},
+ {":/video_webm", "application/pdf", false, 0},
+ {":/video_webm", "application/pdf", true, 0},
+ {":/video_webm", "application/postscript", false, 0},
+ {":/video_webm", "application/postscript", true, 0},
+ {":/video_webm", "application/ogg", false, 0},
+ {":/video_webm", "application/ogg", true, 0},
+ {":/video_webm", "video/webm", false, 0},
+ {":/video_webm", "video/webm", true, 0},
+ {":/video_webm", "application/x-rar-compressed", false, 0},
+ {":/video_webm", "application/x-rar-compressed", true, 0},
+ {":/video_webm", "application/zip", false, 0},
+ {":/video_webm", "application/zip", true, 0},
+ {":/video_webm", "application/x-gzip", false, 0},
+ {":/video_webm", "application/x-gzip", true, 0},
+ {":/video_webm", "audio/x-wave", false, 0},
+ {":/video_webm", "audio/x-wave", true, 0},
+ {":/video_webm", "image/webp", false, 0},
+ {":/video_webm", "image/webp", true, 0},
+ {":/video_webm", "image/gif", false, 0},
+ {":/video_webm", "image/gif", true, 0},
+ {":/video_webm", "image/png", false, 0},
+ {":/video_webm", "image/png", true, 0},
+ {":/video_webm", "image/jpeg", false, 0},
+ {":/video_webm", "image/jpeg", true, 0},
+ {":/video_webm", "image/bmp", false, 0},
+ {":/video_webm", "image/bmp", true, 0},
+ {":/video_webm", "image/vnd.microsoft.icon", false, 0},
+ {":/video_webm", "image/vnd.microsoft.icon", true, 0},
+ {":/video_webm", "application/rdf+xml", false, 0},
+ {":/video_webm", "application/rdf+xml", true, 0},
+ {":/video_webm", "application/rss+xml", false, 0},
+ {":/video_webm", "application/rss+xml", true, 0},
+ {":/video_webm", "application/atom+xml", false, 0},
+ {":/video_webm", "application/atom+xml", true, 0}
+};
+static const size_t testListSize = sizeof(testList) / sizeof(testList[0]);
+
+#endif // TestData_h
diff --git a/Source/WebKit/qt/tests/MIMESniffing/resources.qrc b/Source/WebKit/qt/tests/MIMESniffing/resources.qrc
new file mode 100644
index 0000000..b4afb32
--- /dev/null
+++ b/Source/WebKit/qt/tests/MIMESniffing/resources.qrc
@@ -0,0 +1,23 @@
+<RCC>
+ <qresource prefix="/">
+ <file alias="application_atom+xml">resources/application_atom+xml</file>
+ <file alias="application_ogg">resources/application_ogg</file>
+ <file alias="application_pdf">resources/application_pdf</file>
+ <file alias="application_postscript">resources/application_postscript</file>
+ <file alias="application_rdf+xml">resources/application_rdf+xml</file>
+ <file alias="application_rss+xml">resources/application_rss+xml</file>
+ <file alias="application_x-gzip">resources/application_x-gzip</file>
+ <file alias="application_x-rar-compressed">resources/application_x-rar-compressed</file>
+ <file alias="application_zip">resources/application_zip</file>
+ <file alias="audio_x-wave">resources/audio_x-wave</file>
+ <file alias="image_bmp">resources/image_bmp</file>
+ <file alias="image_gif">resources/image_gif</file>
+ <file alias="image_jpeg">resources/image_jpeg</file>
+ <file alias="image_png">resources/image_png</file>
+ <file alias="image_vnd.microsoft.icon">resources/image_vnd.microsoft.icon</file>
+ <file alias="image_webp">resources/image_webp</file>
+ <file alias="text_html">resources/text_html</file>
+ <file alias="text_xml">resources/text_xml</file>
+ <file alias="video_webm">resources/video_webm</file>
+ </qresource>
+</RCC>
diff --git a/Source/WebKit/qt/tests/MIMESniffing/resources/application_atom+xml b/Source/WebKit/qt/tests/MIMESniffing/resources/application_atom+xml
new file mode 100644
index 0000000..54086a7
--- /dev/null
+++ b/Source/WebKit/qt/tests/MIMESniffing/resources/application_atom+xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<feed xmlns="http://www.w3.org/2005/Atom">
+ <title>Example Feed</title>
+ <link href="http://example.org/"/>
+ <updated>2003-12-13T18:30:02Z</updated>
+ <author>
+ <name>John Doe</name>
+ </author>
+ <id>urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6</id>
+ <entry>
+ <title>Atom-Powered Robots Run Amok</title>
+ <link href="http://example.org/2003/12/13/atom03"/>
+ <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id>
+ <updated>2003-12-13T18:30:02Z</updated>
+ <summary>Some text.</summary>
+ </entry>
+</feed>
diff --git a/Source/WebKit/qt/tests/MIMESniffing/resources/application_ogg b/Source/WebKit/qt/tests/MIMESniffing/resources/application_ogg
new file mode 100644
index 0000000..b9cc1b2
--- /dev/null
+++ b/Source/WebKit/qt/tests/MIMESniffing/resources/application_ogg
Binary files differ
diff --git a/Source/WebKit/qt/tests/MIMESniffing/resources/application_pdf b/Source/WebKit/qt/tests/MIMESniffing/resources/application_pdf
new file mode 100644
index 0000000..7f8996f
--- /dev/null
+++ b/Source/WebKit/qt/tests/MIMESniffing/resources/application_pdf
Binary files differ
diff --git a/Source/WebKit/qt/tests/MIMESniffing/resources/application_postscript b/Source/WebKit/qt/tests/MIMESniffing/resources/application_postscript
new file mode 100644
index 0000000..c4b9ae6
--- /dev/null
+++ b/Source/WebKit/qt/tests/MIMESniffing/resources/application_postscript
@@ -0,0 +1,137 @@
+%!PS-Adobe-2.0 EPSF-1.2
+%%Creator: HiJaak 2.1
+%%CreationDate: 12/29/93 13:52:08
+%%BoundingBox:126 216 486 576
+%%EndComments
+/ld {load def} bind def
+/s /stroke ld /f /fill ld /m /moveto ld /l /lineto ld /c /curveto ld /rgb {255 div 3 1 roll 255 div 3 1 roll 255 div 3 1 roll setrgbcolor} def
+126 216 translate
+360.0000 360.0000 scale
+/picstr 124 string def
+124 124 8 [124 0 0 -124 0 124] {currentfile picstr readhexstring pop} image
+65656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565ADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADAD1B1B1B1B1B1B1B1B1B1BFF
+65656565656565656565656565656565656565656565656565656565656565006565656565006565656500656565656565000000656565656565656565656565656565656565656565656565656565656565ADADAD00ADADAD000000ADAD00ADADADADAD00AD00ADADADAD00ADADADAD00000000001B1B001B1B1BFF
+65656565656565656565656565656565656565656565656565656565656565000065656500006565650065006565656500656565006565656565656565656565656565656565656565656565656565656565ADADAD00ADAD00ADADAD00ADAD00ADADAD00ADAD0000ADADAD00ADADADAD001B1B1B1B001B001B1B1BFF
+65656565656565656565656565656565656565656565656565656565656565000065656500006565650065006565650065656565650065656565656565656565656565656565656565656565656565656565ADADAD00AD00ADADADADADADAD00ADADAD00ADAD00AD00ADAD00ADADADAD001B1B1B1B001B001B1B1BFF
+65656565656565656565656565656565656565656565656565656565656565006500650065006565650065006565650065656565656565656565656565656565656565656565656565656565656565656565ADADAD00AD00ADADADADADADADAD00AD00ADADAD00AD00ADAD00ADADADAD00000000001B1B001B1B1BFF
+65656565656565656565656565656565656565656565656565656565656565006500650065006565006565650065650065656500000065656565656565656565656565656565656565656565656565656565ADADAD00AD00ADADADADADADADADAD00ADADADAD00ADAD00AD00ADADADAD001B1B1B1B001B001B1B1BFF
+65656565656565656565656565656565656565656565656565656565656565006500650065006565000000000065650065656565650065656565656565656565656565656565656565656565656565656565ADADAD00AD00ADADADADADADADADAD00ADADADAD00ADAD00AD00ADADADAD001B1B1B1B001B001B1B1BFF
+65656565656565656565656565656565656565656565656565656565656565006565006565006500656565656500656500656565006565656565656565656565656565656565656565656565656565656565ADADAD00ADAD00ADADAD00ADADADAD00ADADADAD00ADADAD0000ADADADAD001B1B1B1B001B001B1B1BFF
+65656565656565656565656565656565656565656565656565656565656565006565006565006500656565656500656565000000656565656565656565656565656565656565656565656565656565656565ADADAD00ADADAD000000ADADADADAD00ADADADAD00ADADADAD00ADADADAD00000000001B1B00000000FF
+65656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565ADADAD00ADADADADADADADADADADADADADADADADADADADADADADADADADADAD1B1B1B1B1B1B1B1B1B1BFF
+65656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565ADADAD00ADADADADADADADADADADADADADADADADADADADADADADADADADADAD1B1B1B1B1B1B1B1B1B1BFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC0000DCDC0000DC0000000000DC0000DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292000000009292000000000092920000929200009292929292ADADADAD00000000ADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC0000DCDC0000DC0000DCDCDCDC0000DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929200009292000092000092920000920000929200009292929292ADADAD0000ADAD0000ADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC00DCDC00DCDC0000DCDCDCDC0000DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292920000929292929292000092920000920000009200009292929292ADAD0000ADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC00000000DCDC0000000000DC0000DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292920000929292929292000092920000920000009200009292929292ADAD0000ADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC0000DCDCDC0000DCDCDCDC0000DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292920000929200000092000000000092920000920000009292929292ADAD0000ADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC0000DCDCDC0000DCDCDCDC0000DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292920000929292000092000092000092920000920000009292929292ADAD0000ADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC0000DCDCDC0000DCDCDCDC0000DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929200009292000092000092920000920000929200009292929292ADADAD0000ADAD0000ADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC0000DCDCDC0000000000DC000000000000DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292000000009292000092929200000000929200009292929292ADADADAD00000000ADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC92929292929292929292929292929292929292929292929292929292929292ADADADADADADADADADADFF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A00000000004A4A00000000004A00000000004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDC0000DCDC0000DC0000000000DC0000DCDCDCDCDCDCDCDCDCDCDC00000065656500000065FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A00004A4A00004A00004A4A4A4A00004A4A00004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDC0000DCDC0000DC0000DCDCDCDC0000DCDCDCDCDCDCDCDCDCDCDC00000065656500000065FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A00004A4A00004A00004A4A4A4A00004A4A00004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDC00DCDC00DCDC0000DCDCDCDC0000DCDCDCDCDCDCDCDCDCDCDC00000000650000000065FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A00004A4A00004A00000000004A00004A4A00004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDC00000000DCDC0000000000DC0000DCDCDCDCDCDCDCDCDCDCDC00000000650000000065FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A00000000004A4A00004A4A4A4A00004A4A00004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDC0000DCDCDC0000DCDCDCDC0000DCDCDCDCDCDCDCDCDCDCDC00006500650065000065FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A00004A00004A4A00004A4A4A4A00004A4A00004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDC0000DCDCDC0000DCDCDCDC0000DCDCDCDCDCDCDCDCDCDCDC00006500000065000065FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A00004A4A00004A00004A4A4A4A00004A4A00004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDC0000DCDCDC0000DCDCDCDC0000DCDCDCDCDCDCDCDCDCDCDC00006500000065000065FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A00004A4A4A000000000000004A00000000004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDC0000DCDCDC0000000000DC000000000000DCDCDCDCDCDCDC00006565006565000065FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A00000000004A4A4A4A0000004A4A4A00000000004A4A4A4A004A4A4A4A4A00000000004A00000000004A00000000004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A004A4A4A4A004A4A004A4A4A004A4A4A4A004A4A4A4A4A4A004A4A4A4A4A004A4A4A4A4A004A4A4A4A4A4A4A004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A004A4A4A4A004A004A4A4A4A4A004A4A4A004A4A4A4A4A4A004A4A4A4A4A004A4A4A4A4A004A4A4A4A4A4A4A004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A00000000004A4A004A4A4A4A4A004A4A4A004A4A4A4A4A4A004A4A4A4A4A00000000004A000000004A4A4A4A004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A004A4A4A4A004A004A4A4A4A4A004A4A4A004A4A4A4A4A4A004A4A4A4A4A004A4A4A4A4A004A4A4A4A4A4A4A004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A004A4A4A4A004A004A4A4A4A4A004A4A4A004A4A4A4A4A4A004A4A4A4A4A004A4A4A4A4A004A4A4A4A4A4A4A004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A004A4A4A4A004A4A004A4A4A004A4A4A4A004A4A4A4A4A4A004A4A4A4A4A004A4A4A4A4A004A4A4A4A4A4A4A004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A00000000004A4A4A4A0000004A4A4A4A4A004A4A4A4A4A4A00000000004A00000000004A004A4A4A4A4A4A4A004A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4ADCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC65656565656565656565FF
+showpage
+ \ No newline at end of file
diff --git a/Source/WebKit/qt/tests/MIMESniffing/resources/application_rdf+xml b/Source/WebKit/qt/tests/MIMESniffing/resources/application_rdf+xml
new file mode 100644
index 0000000..e214145
--- /dev/null
+++ b/Source/WebKit/qt/tests/MIMESniffing/resources/application_rdf+xml
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/">
+
+ <channel rdf:about="http://www.xml.com/xml/news.rss">
+ <title>XML.com</title>
+ <link>http://xml.com/pub</link>
+ <description>
+ XML.com features a rich mix of information and services
+ for the XML community.
+ </description>
+
+ <image rdf:resource="http://xml.com/universal/images/xml_tiny.gif" />
+
+ <items>
+ <rdf:Seq>
+ <rdf:li resource="http://xml.com/pub/2000/08/09/xslt/xslt.html" />
+ <rdf:li resource="http://xml.com/pub/2000/08/09/rdfdb/index.html" />
+ </rdf:Seq>
+ </items>
+
+ </channel>
+
+ <image rdf:about="http://xml.com/universal/images/xml_tiny.gif">
+ <title>XML.com</title>
+ <link>http://www.xml.com</link>
+ <url>http://xml.com/universal/images/xml_tiny.gif</url>
+ </image>
+
+ <item rdf:about="http://xml.com/pub/2000/08/09/xslt/xslt.html">
+ <title>Processing Inclusions with XSLT</title>
+ <link>http://xml.com/pub/2000/08/09/xslt/xslt.html</link>
+ <description>
+ Processing document inclusions with general XML tools can be
+ problematic. This article proposes a way of preserving inclusion
+ information through SAX-based processing.
+ </description>
+ </item>
+
+ <item rdf:about="http://xml.com/pub/2000/08/09/rdfdb/index.html">
+ <title>Putting RDF to Work</title>
+ <link>http://xml.com/pub/2000/08/09/rdfdb/index.html</link>
+ <description>
+ Tool and API support for the Resource Description Framework
+ is slowly coming of age. Edd Dumbill takes a look at RDFDB,
+ one of the most exciting new RDF toolkits.
+ </description>
+ </item>
+
+</rdf:RDF>
diff --git a/Source/WebKit/qt/tests/MIMESniffing/resources/application_rss+xml b/Source/WebKit/qt/tests/MIMESniffing/resources/application_rss+xml
new file mode 100644
index 0000000..3537c41
--- /dev/null
+++ b/Source/WebKit/qt/tests/MIMESniffing/resources/application_rss+xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<rss version="0.91">
+<channel>
+
+<title>Folha.com - Ambiente - Principal</title>
+<link>http://redir.folha.com.br/redir/online/ambiente/rss091/*http://www1.folha.uol.com.br/ambiente/</link>
+<description>Primeiro jornal em tempo real em língua portuguesa</description>
+<language>pt-br</language>
+<copyright>Copyright Folha.com. Todos os direitos reservados.</copyright>
+<docs>http://redir.folha.com.br/redir/online/ambiente/rss091/*http://www1.folha.uol.com.br/folha/conheca/arquivo_e_copyright.shtml</docs>
+<webMaster>webmaster@grupofolha.com.br (Webmaster Folha.com)</webMaster>
+
+<image>
+<title>Folha.com - Ambiente - Principal</title>
+<url>http://www1.folha.uol.com.br/folha/images/lgo-folha_com-88x31.gif</url>
+<link>http://redir.folha.com.br/redir/online/ambiente/rss091/*http://www1.folha.uol.com.br/ambiente/</link>
+<width>88</width>
+<height>31</height>
+<description>Primeiro jornal em tempo real em língua portuguesa</description>
+</image>
+
+<item>
+<title>Nasa dimensiona danos da seca na Amazônia em 2,4 mi de km2</title>
+<link>http://redir.folha.com.br/redir/online/ambiente/rss091/*http://www1.folha.uol.com.br/ambiente/895526-nasa-dimensiona-danos-da-seca-na-amazonia-em-24-mi-de-km2.shtml</link>
+<description>
+Os satélites da Nasa (agência espacial americana) forneceram material para uma análise dos estragos provocados pela &lt;a href=&quot;http://www1.folha.uol.com.br/ambiente/870588-amazonia-teve-a-pior-seca-dos-ultimos-cem-anos.shtml&quot;&gt;pior seca a atingir a Amazônia em 2010&lt;/a&gt;.
+Pela tomada aérea, estima-se que foram 2,5 milhões de quilômetros quadrados afetados --pouco menos da metade do ecossistema amazônico.
+&lt;table class=&quot;articleGraphic&quot;&gt;
+&lt;tr&gt;
+&lt;td rowspan=&quot;3&quot; class=&quot;articleGraphicSpace&quot;&gt;&lt;/td&gt;
+&lt;td class=&quot;articleGraphicCredit&quot;&gt;Universidade de Boston/Nasa&lt;/td&gt;
+&lt;td rowspan=&quot;3&quot; class=&quot;articleGraphicSpace&quot;&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td class=&quot;articleGraphicImage&quot;&gt;&lt;img src=&quot;http://f.i.uol.com.br/folha/ambiente/images/11090120.jpeg&quot; alt=&quot;Área (vermelho) mostra redução do índice do verdor, onde a vegetação ficou menos verde e mais seca&quot; border=&quot;0&quot; /&gt;&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td class=&quot;articleGraphicCaption&quot;&gt;Área (vermelho) mostra redução do índice do verdor, onde a vegetação ficou menos verde e mais seca&lt;/td&gt;
+&lt;/tr&gt;
+&lt;/table&gt;
+&lt;a href=&quot;http://redir.folha.com.br/redir/online/ambiente/rss091/*http://www1.folha.uol.com.br/ambiente/895526-nasa-dimensiona-danos-da-seca-na-amazonia-em-24-mi-de-km2.shtml&quot;&gt;Leia mais&lt;/a&gt; (29/03/2011 - 18h04)</description>
+<pubDate>29 Mar 2011 18:04:00 -0300</pubDate>
+</item>
+</channel>
+</rss>
diff --git a/Source/WebKit/qt/tests/MIMESniffing/resources/application_x-gzip b/Source/WebKit/qt/tests/MIMESniffing/resources/application_x-gzip
new file mode 100644
index 0000000..a5e7d31
--- /dev/null
+++ b/Source/WebKit/qt/tests/MIMESniffing/resources/application_x-gzip
Binary files differ
diff --git a/Source/WebKit/qt/tests/MIMESniffing/resources/application_x-rar-compressed b/Source/WebKit/qt/tests/MIMESniffing/resources/application_x-rar-compressed
new file mode 100644
index 0000000..d9cb6ae
--- /dev/null
+++ b/Source/WebKit/qt/tests/MIMESniffing/resources/application_x-rar-compressed
Binary files differ
diff --git a/Source/WebKit/qt/tests/MIMESniffing/resources/application_zip b/Source/WebKit/qt/tests/MIMESniffing/resources/application_zip
new file mode 100644
index 0000000..8aec52f
--- /dev/null
+++ b/Source/WebKit/qt/tests/MIMESniffing/resources/application_zip
Binary files differ
diff --git a/Source/WebKit/qt/tests/MIMESniffing/resources/audio_x-wave b/Source/WebKit/qt/tests/MIMESniffing/resources/audio_x-wave
new file mode 100644
index 0000000..a0f9b85
--- /dev/null
+++ b/Source/WebKit/qt/tests/MIMESniffing/resources/audio_x-wave
Binary files differ
diff --git a/Source/WebKit/qt/tests/MIMESniffing/resources/image_bmp b/Source/WebKit/qt/tests/MIMESniffing/resources/image_bmp
new file mode 100644
index 0000000..b61d368
--- /dev/null
+++ b/Source/WebKit/qt/tests/MIMESniffing/resources/image_bmp
Binary files differ
diff --git a/Source/WebKit/qt/tests/MIMESniffing/resources/image_gif b/Source/WebKit/qt/tests/MIMESniffing/resources/image_gif
new file mode 100644
index 0000000..32b1ea2
--- /dev/null
+++ b/Source/WebKit/qt/tests/MIMESniffing/resources/image_gif
Binary files differ
diff --git a/Source/WebKit/qt/tests/MIMESniffing/resources/image_jpeg b/Source/WebKit/qt/tests/MIMESniffing/resources/image_jpeg
new file mode 100644
index 0000000..1874576
--- /dev/null
+++ b/Source/WebKit/qt/tests/MIMESniffing/resources/image_jpeg
Binary files differ
diff --git a/Source/WebKit/qt/tests/MIMESniffing/resources/image_png b/Source/WebKit/qt/tests/MIMESniffing/resources/image_png
new file mode 100644
index 0000000..bef59c7
--- /dev/null
+++ b/Source/WebKit/qt/tests/MIMESniffing/resources/image_png
Binary files differ
diff --git a/Source/WebKit/qt/tests/MIMESniffing/resources/image_vnd.microsoft.icon b/Source/WebKit/qt/tests/MIMESniffing/resources/image_vnd.microsoft.icon
new file mode 100644
index 0000000..58921b8
--- /dev/null
+++ b/Source/WebKit/qt/tests/MIMESniffing/resources/image_vnd.microsoft.icon
Binary files differ
diff --git a/Source/WebKit/qt/tests/MIMESniffing/resources/image_webp b/Source/WebKit/qt/tests/MIMESniffing/resources/image_webp
new file mode 100644
index 0000000..0da983e
--- /dev/null
+++ b/Source/WebKit/qt/tests/MIMESniffing/resources/image_webp
Binary files differ
diff --git a/Source/WebKit/qt/tests/MIMESniffing/resources/text_html b/Source/WebKit/qt/tests/MIMESniffing/resources/text_html
new file mode 100644
index 0000000..21eeee3
--- /dev/null
+++ b/Source/WebKit/qt/tests/MIMESniffing/resources/text_html
@@ -0,0 +1,3 @@
+
+<!-- saved from url=(0017)http://127.0.0.1/ -->
+<HTML><HEAD><META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"></HEAD><BODY><H1>It works!</H1></BODY></HTML> \ No newline at end of file
diff --git a/Source/WebKit/qt/tests/MIMESniffing/resources/text_xml b/Source/WebKit/qt/tests/MIMESniffing/resources/text_xml
new file mode 100644
index 0000000..38a9fe5
--- /dev/null
+++ b/Source/WebKit/qt/tests/MIMESniffing/resources/text_xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<CATALOG>
+ <CD>
+ <TITLE>Empire Burlesque</TITLE>
+ <ARTIST>Bob Dylan</ARTIST>
+ <COUNTRY>USA</COUNTRY>
+ <COMPANY>Columbia</COMPANY>
+ <PRICE>10.90</PRICE>
+ <YEAR>1985</YEAR>
+ </CD>
+ <CD>
+ <TITLE>Unchain my heart</TITLE>
+ <ARTIST>Joe Cocker</ARTIST>
+ <COUNTRY>USA</COUNTRY>
+ <COMPANY>EMI</COMPANY>
+ <PRICE>8.20</PRICE>
+ <YEAR>1987</YEAR>
+ </CD>
+</CATALOG>
diff --git a/Source/WebKit/qt/tests/MIMESniffing/resources/video_webm b/Source/WebKit/qt/tests/MIMESniffing/resources/video_webm
new file mode 100644
index 0000000..95d5031
--- /dev/null
+++ b/Source/WebKit/qt/tests/MIMESniffing/resources/video_webm
Binary files differ
diff --git a/Source/WebKit/qt/tests/MIMESniffing/tst_MIMESniffing.cpp b/Source/WebKit/qt/tests/MIMESniffing/tst_MIMESniffing.cpp
new file mode 100644
index 0000000..8c5417f
--- /dev/null
+++ b/Source/WebKit/qt/tests/MIMESniffing/tst_MIMESniffing.cpp
@@ -0,0 +1,72 @@
+/*
+ Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies)
+
+ 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 "MIMESniffing.h"
+
+#include "TestData.h"
+
+#include <QtCore/QFile>
+#include <QtCore/QString>
+#include <QtTest/QtTest>
+
+class tst_MIMESniffing : public QObject {
+ Q_OBJECT
+
+public:
+ tst_MIMESniffing();
+
+private Q_SLOTS:
+ void testCase1();
+};
+
+tst_MIMESniffing::tst_MIMESniffing()
+{
+}
+
+static inline const char* errorText(const TestData& data, const char* sniffedType)
+{
+ return QString("file: %1, advertised: %2, image: %3. sniffed mime type was expected to be \"%4\" but instead was \"%5\"").arg(data.file).arg(data.advertisedType).arg(data.isImage).arg(data.sniffedType).arg(sniffedType).toLatin1();
+}
+
+void tst_MIMESniffing::testCase1()
+{
+
+ for (int i = 0; i < testListSize; ++i) {
+ QFile file(testList[i].file);
+ QVERIFY2(file.open(QIODevice::ReadOnly), QString("unable to open file %1").arg(file.fileName()).toLatin1());
+
+ MIMESniffer sniffer(testList[i].advertisedType, testList[i].isImage);
+ QByteArray data = file.peek(sniffer.dataSize());
+
+ const char* sniffedType = sniffer.sniff(data.constData(), data.size());
+
+ QVERIFY2(!(sniffedType || testList[i].sniffedType) || (sniffedType && testList[i].sniffedType), errorText(testList[i], sniffedType));
+
+ if (sniffedType)
+ QVERIFY2(!strcmp(sniffedType, testList[i].sniffedType), errorText(testList[i], sniffedType));
+
+ }
+
+ QVERIFY2(true, "Failure");
+}
+
+QTEST_APPLESS_MAIN(tst_MIMESniffing);
+
+#include "tst_MIMESniffing.moc"
diff --git a/Source/WebKit/qt/tests/qdeclarativewebview/resources/basic.html b/Source/WebKit/qt/tests/qdeclarativewebview/resources/basic.html
new file mode 100644
index 0000000..22e3e24
--- /dev/null
+++ b/Source/WebKit/qt/tests/qdeclarativewebview/resources/basic.html
@@ -0,0 +1,17 @@
+<html>
+<head><title>Basic</title>
+<link rel="icon" sizes="48x48" href="basic.png">
+<script type="text/javascript">
+<!--
+window.onload = function(){ window.status = "status here"; }
+// -->
+</script>
+</head>
+<body leftmargin="0" marginwidth="0">
+<table width="123">
+<tbody>
+<tr><td>This is a basic test.</td></tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/Source/WebKit/qt/tests/qdeclarativewebview/resources/basic.png b/Source/WebKit/qt/tests/qdeclarativewebview/resources/basic.png
new file mode 100644
index 0000000..35717cc
--- /dev/null
+++ b/Source/WebKit/qt/tests/qdeclarativewebview/resources/basic.png
Binary files differ
diff --git a/Source/WebKit/qt/tests/qdeclarativewebview/resources/basic.qml b/Source/WebKit/qt/tests/qdeclarativewebview/resources/basic.qml
new file mode 100644
index 0000000..b5208d0
--- /dev/null
+++ b/Source/WebKit/qt/tests/qdeclarativewebview/resources/basic.qml
@@ -0,0 +1,5 @@
+import QtWebKit 1.0
+
+WebView {
+ url: "basic.html"
+}
diff --git a/Source/WebKit/qt/tests/qdeclarativewebview/resources/elements.html b/Source/WebKit/qt/tests/qdeclarativewebview/resources/elements.html
new file mode 100644
index 0000000..9236867
--- /dev/null
+++ b/Source/WebKit/qt/tests/qdeclarativewebview/resources/elements.html
@@ -0,0 +1,14 @@
+<body leftmargin=0 topmargin=0>
+<table width="300px" border=1 cellpadding=0 cellspacing=0>
+<tr>
+<td align=center width=25%%><p>A</p></td>
+<td width=75% height=50px>
+ <table width=100% border=1 cellpadding=0 cellspacing=0>
+ <tr>
+ <td align=center width=50% height=50px><p>B</p></td>
+ <td align=center width=50% height=50px><p>C</p></td>
+ </tr>
+ </table>
+</td>
+</tr>
+</table>
diff --git a/Source/WebKit/qt/tests/qdeclarativewebview/resources/elements.qml b/Source/WebKit/qt/tests/qdeclarativewebview/resources/elements.qml
new file mode 100644
index 0000000..8fef8c9
--- /dev/null
+++ b/Source/WebKit/qt/tests/qdeclarativewebview/resources/elements.qml
@@ -0,0 +1,7 @@
+import QtWebKit 1.0
+
+WebView {
+ url: "elements.html"
+ width: 310
+ height: 100
+}
diff --git a/Source/WebKit/qt/tests/qdeclarativewebview/resources/forward.html b/Source/WebKit/qt/tests/qdeclarativewebview/resources/forward.html
new file mode 100644
index 0000000..62ab62d
--- /dev/null
+++ b/Source/WebKit/qt/tests/qdeclarativewebview/resources/forward.html
@@ -0,0 +1,12 @@
+<html>
+<head><title>Forward</title>
+<link rel="icon" sizes="32x32" href="forward.png">
+</head>
+<body leftmargin="0" marginwidth="0">
+<table width="123">
+<tbody>
+<tr><td>This is more.</td></tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/Source/WebKit/qt/tests/qdeclarativewebview/resources/forward.png b/Source/WebKit/qt/tests/qdeclarativewebview/resources/forward.png
new file mode 100644
index 0000000..a82533e
--- /dev/null
+++ b/Source/WebKit/qt/tests/qdeclarativewebview/resources/forward.png
Binary files differ
diff --git a/Source/WebKit/qt/tests/qdeclarativewebview/resources/javaScript.html b/Source/WebKit/qt/tests/qdeclarativewebview/resources/javaScript.html
new file mode 100644
index 0000000..35270bc
--- /dev/null
+++ b/Source/WebKit/qt/tests/qdeclarativewebview/resources/javaScript.html
@@ -0,0 +1,11 @@
+<html>
+<head><title>JavaScript</title>
+<link rel="icon" sizes="48x48" href="basic.png">
+<script type="text/javascript">
+<!--
+window.onload = function(){ window.status = "status here"; }
+// -->
+</script>
+</head>
+<body>
+This is a JS test.
diff --git a/Source/WebKit/qt/tests/qdeclarativewebview/resources/javaScript.qml b/Source/WebKit/qt/tests/qdeclarativewebview/resources/javaScript.qml
new file mode 100644
index 0000000..527e3b9
--- /dev/null
+++ b/Source/WebKit/qt/tests/qdeclarativewebview/resources/javaScript.qml
@@ -0,0 +1,12 @@
+import QtQuick 1.0
+import QtWebKit 1.0
+
+WebView {
+ url: "javaScript.html"
+ javaScriptWindowObjects: [
+ QtObject {
+ property string qmlprop: "qmlvalue"
+ WebView.windowObjectName: "myjsname"
+ }
+ ]
+}
diff --git a/Source/WebKit/qt/tests/qdeclarativewebview/resources/loadError.qml b/Source/WebKit/qt/tests/qdeclarativewebview/resources/loadError.qml
new file mode 100644
index 0000000..26cec8f
--- /dev/null
+++ b/Source/WebKit/qt/tests/qdeclarativewebview/resources/loadError.qml
@@ -0,0 +1,5 @@
+import QtWebKit 1.0
+
+WebView {
+ url: "does-not-exist.html"
+}
diff --git a/Source/WebKit/qt/tests/qdeclarativewebview/resources/newwindows.html b/Source/WebKit/qt/tests/qdeclarativewebview/resources/newwindows.html
new file mode 100644
index 0000000..dd541f9
--- /dev/null
+++ b/Source/WebKit/qt/tests/qdeclarativewebview/resources/newwindows.html
@@ -0,0 +1,16 @@
+<html>
+<head>
+<script type="text/javascript">
+<!--
+function clickTheLink()
+{
+ var ev = document.createEvent('MouseEvents');
+ ev.initEvent( "click", true, false );
+ document.getElementById('thelink').dispatchEvent(ev);
+}
+// -->
+</script>
+</head>
+<h1>Multiple windows...</h1>
+
+<a id=thelink target="_blank" href="newwindows.html">Popup!</a>
diff --git a/Source/WebKit/qt/tests/qdeclarativewebview/resources/newwindows.qml b/Source/WebKit/qt/tests/qdeclarativewebview/resources/newwindows.qml
new file mode 100644
index 0000000..e66631d
--- /dev/null
+++ b/Source/WebKit/qt/tests/qdeclarativewebview/resources/newwindows.qml
@@ -0,0 +1,34 @@
+// Demonstrates opening new WebViews from HTML
+
+import QtQuick 1.0
+import QtWebKit 1.0
+
+Grid {
+ columns: 3
+ id: pages
+ height: 300; width: 600
+ property int total: 0
+
+ Component {
+ id: webViewPage
+ Rectangle {
+ width: webView.width
+ height: webView.height
+ border.color: "gray"
+
+ WebView {
+ id: webView
+ width: 150 // force predictable for test
+ newWindowComponent: webViewPage
+ newWindowParent: pages
+ url: "newwindows.html"
+ Timer {
+ interval: 10; running: total<4; repeat: false;
+ onTriggered: { if (webView.status==WebView.Ready) { total++; webView.evaluateJavaScript("clickTheLink()") } }
+ }
+ }
+ }
+ }
+
+ Loader { sourceComponent: webViewPage }
+}
diff --git a/Source/WebKit/qt/tests/qdeclarativewebview/resources/propertychanges.qml b/Source/WebKit/qt/tests/qdeclarativewebview/resources/propertychanges.qml
new file mode 100644
index 0000000..db06887
--- /dev/null
+++ b/Source/WebKit/qt/tests/qdeclarativewebview/resources/propertychanges.qml
@@ -0,0 +1,34 @@
+import QtQuick 1.0
+import QtWebKit 1.0
+
+Item {
+ width: 240
+ height: 160
+ Grid {
+ anchors.fill: parent
+ objectName: "newWindowParent"
+ id: newWindowParent
+ }
+
+ Row {
+ anchors.fill: parent
+ id: oldWindowParent
+ objectName: "oldWindowParent"
+ }
+
+ Loader {
+ sourceComponent: webViewComponent
+ }
+ Component {
+ id: webViewComponent
+ WebView {
+ id: webView
+ objectName: "webView"
+ newWindowComponent: webViewComponent
+ newWindowParent: oldWindowParent
+ url: "basic.html"
+ renderingEnabled: true
+ pressGrabTime: 200
+ }
+ }
+}
diff --git a/Source/WebKit/qt/tests/qdeclarativewebview/resources/sethtml.qml b/Source/WebKit/qt/tests/qdeclarativewebview/resources/sethtml.qml
new file mode 100644
index 0000000..5bff442
--- /dev/null
+++ b/Source/WebKit/qt/tests/qdeclarativewebview/resources/sethtml.qml
@@ -0,0 +1,5 @@
+import QtWebKit 1.0
+
+WebView {
+ html: "<p>This is a <b>string</b> set on the WebView"
+}
diff --git a/Source/WebKit/qt/tests/qdeclarativewebview/tst_qdeclarativewebview.cpp b/Source/WebKit/qt/tests/qdeclarativewebview/tst_qdeclarativewebview.cpp
index 8fcab71..23e8bfb 100644
--- a/Source/WebKit/qt/tests/qdeclarativewebview/tst_qdeclarativewebview.cpp
+++ b/Source/WebKit/qt/tests/qdeclarativewebview/tst_qdeclarativewebview.cpp
@@ -1,14 +1,18 @@
#include "../util.h"
+#include <QAction>
#include <QColor>
#include <QDebug>
#include <QDeclarativeComponent>
#include <QDeclarativeEngine>
+#include <QDeclarativeItem>
#include <QDeclarativeProperty>
#include <QDeclarativeView>
#include <QDir>
#include <QGraphicsWebView>
#include <QTest>
+#include <QVariant>
#include <QWebFrame>
+#include "qdeclarativewebview_p.h"
QT_BEGIN_NAMESPACE
@@ -19,16 +23,36 @@ public:
tst_QDeclarativeWebView();
private slots:
+ void cleanupTestCase();
+
+ void basicProperties();
+ void elementAreaAt();
+ void historyNav();
+ void javaScript();
+ void loadError();
+ void multipleWindows();
+ void newWindowComponent();
+ void newWindowParent();
void preferredWidthTest();
void preferredHeightTest();
void preferredWidthDefaultTest();
void preferredHeightDefaultTest();
+ void pressGrabTime();
+ void renderingEnabled();
+ void setHtml();
+ void settings();
#if QT_VERSION >= 0x040703
void backgroundColor();
#endif
private:
void checkNoErrors(const QDeclarativeComponent&);
+ QString tmpDir() const
+ {
+ static QString tmpd = QDir::tempPath() + "/tst_qdeclarativewebview-"
+ + QDateTime::currentDateTime().toString(QLatin1String("yyyyMMddhhmmss"));
+ return tmpd;
+ }
};
tst_QDeclarativeWebView::tst_QDeclarativeWebView()
@@ -36,6 +60,283 @@ tst_QDeclarativeWebView::tst_QDeclarativeWebView()
Q_UNUSED(waitForSignal)
}
+static QString strippedHtml(QString html)
+{
+ html.replace(QRegExp("\\s+"), "");
+ return html;
+}
+
+static QString fileContents(const QString& filename)
+{
+ QFile file(filename);
+ file.open(QIODevice::ReadOnly);
+ return QString::fromUtf8(file.readAll());
+}
+
+static void removeRecursive(const QString& dirname)
+{
+ QDir dir(dirname);
+ QFileInfoList entries(dir.entryInfoList(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot));
+ for (int i = 0; i < entries.count(); ++i)
+ if (entries[i].isDir())
+ removeRecursive(entries[i].filePath());
+ else
+ dir.remove(entries[i].fileName());
+ QDir().rmdir(dirname);
+}
+
+void tst_QDeclarativeWebView::cleanupTestCase()
+{
+ removeRecursive(tmpDir());
+}
+
+void tst_QDeclarativeWebView::basicProperties()
+{
+ QDeclarativeEngine engine;
+ QDeclarativeComponent component(&engine, QUrl("qrc:///resources/basic.qml"));
+ checkNoErrors(component);
+ QWebSettings::enablePersistentStorage(tmpDir());
+
+ QObject* wv = component.create();
+ QVERIFY(wv);
+ QTRY_COMPARE(wv->property("progress").toDouble(), 1.0);
+ QCOMPARE(wv->property("title").toString(), QLatin1String("Basic"));
+ QTRY_COMPARE(qvariant_cast<QPixmap>(wv->property("icon")).width(), 48);
+ QEXPECT_FAIL("", "'icon' property isn't working", Continue);
+ QCOMPARE(qvariant_cast<QPixmap>(wv->property("icon")), QPixmap("qrc:///resources/basic.png"));
+ QCOMPARE(wv->property("statusText").toString(), QLatin1String("status here"));
+ QCOMPARE(strippedHtml(fileContents(":/resources/basic.html")), strippedHtml(wv->property("html").toString()));
+ QEXPECT_FAIL("", "TODO: get preferred width from QGraphicsWebView result", Continue);
+ QCOMPARE(wv->property("preferredWidth").toInt(), 0);
+ QEXPECT_FAIL("", "TODO: get preferred height from QGraphicsWebView result", Continue);
+ QCOMPARE(wv->property("preferredHeight").toInt(), 0);
+ QCOMPARE(wv->property("url").toUrl(), QUrl("qrc:///resources/basic.html"));
+ QCOMPARE(wv->property("status").toInt(), int(QDeclarativeWebView::Ready));
+
+ QAction* reloadAction = wv->property("reload").value<QAction*>();
+ QVERIFY(reloadAction);
+ QVERIFY(reloadAction->isEnabled());
+ QAction* backAction = wv->property("back").value<QAction*>();
+ QVERIFY(backAction);
+ QVERIFY(!backAction->isEnabled());
+ QAction* forwardAction = wv->property("forward").value<QAction*>();
+ QVERIFY(forwardAction);
+ QVERIFY(!forwardAction->isEnabled());
+ QAction* stopAction = wv->property("stop").value<QAction*>();
+ QVERIFY(stopAction);
+ QVERIFY(!stopAction->isEnabled());
+
+ wv->setProperty("pixelCacheSize", 0); // mainly testing that it doesn't crash or anything!
+ QCOMPARE(wv->property("pixelCacheSize").toInt(), 0);
+ reloadAction->trigger();
+ QTRY_COMPARE(wv->property("progress").toDouble(), 1.0);
+}
+
+void tst_QDeclarativeWebView::elementAreaAt()
+{
+ QSKIP("This test should be changed to test 'heuristicZoom' instead.", SkipAll);
+ QDeclarativeEngine engine;
+ QDeclarativeComponent component(&engine, QUrl("qrc:///resources/elements.qml"));
+ checkNoErrors(component);
+ QDeclarativeWebView* wv = qobject_cast<QDeclarativeWebView*>(component.create());
+ QVERIFY(wv);
+ QTRY_COMPARE(wv->property("progress").toDouble(), 1.0);
+
+ // Areas from elements.html.
+// const QRect areaA(1, 1, 75, 54);
+// const QRect areaB(78, 3, 110, 50);
+// const QRect wholeView(0, 0, 310, 100);
+// const QRect areaBC(76, 1, 223, 54);
+
+// QCOMPARE(wv->elementAreaAt(40, 30, 100, 100), areaA);
+// QCOMPARE(wv->elementAreaAt(130, 30, 200, 100), areaB);
+// QCOMPARE(wv->elementAreaAt(40, 30, 400, 400), wholeView);
+// QCOMPARE(wv->elementAreaAt(130, 30, 280, 280), areaBC);
+// QCOMPARE(wv->elementAreaAt(130, 30, 400, 400), wholeView);
+}
+
+void tst_QDeclarativeWebView::historyNav()
+{
+ QDeclarativeEngine engine;
+ QDeclarativeComponent component(&engine, QUrl("qrc:///resources/basic.qml"));
+ checkNoErrors(component);
+ QWebSettings::enablePersistentStorage(tmpDir());
+
+ QObject* wv = component.create();
+ QVERIFY(wv);
+
+ QAction* reloadAction = wv->property("reload").value<QAction*>();
+ QVERIFY(reloadAction);
+ QAction* backAction = wv->property("back").value<QAction*>();
+ QVERIFY(backAction);
+ QAction* forwardAction = wv->property("forward").value<QAction*>();
+ QVERIFY(forwardAction);
+ QAction* stopAction = wv->property("stop").value<QAction*>();
+ QVERIFY(stopAction);
+
+ for (int i = 1; i <= 2; ++i) {
+ QTRY_COMPARE(wv->property("progress").toDouble(), 1.0);
+ QCOMPARE(wv->property("title").toString(), QLatin1String("Basic"));
+ QTRY_COMPARE(qvariant_cast<QPixmap>(wv->property("icon")).width(), 48);
+ QEXPECT_FAIL("", "'icon' property isn't working", Continue);
+ QCOMPARE(qvariant_cast<QPixmap>(wv->property("icon")), QPixmap("qrc:///data/basic.png"));
+ QCOMPARE(wv->property("statusText").toString(), QLatin1String("status here"));
+ QCOMPARE(strippedHtml(fileContents(":/resources/basic.html")), strippedHtml(wv->property("html").toString()));
+ QEXPECT_FAIL("", "TODO: get preferred width from QGraphicsWebView result", Continue);
+ QCOMPARE(wv->property("preferredWidth").toDouble(), 0.0);
+ QCOMPARE(wv->property("url").toUrl(), QUrl("qrc:///resources/basic.html"));
+ QCOMPARE(wv->property("status").toInt(), int(QDeclarativeWebView::Ready));
+ QVERIFY(reloadAction->isEnabled());
+ QVERIFY(!backAction->isEnabled());
+ QVERIFY(!forwardAction->isEnabled());
+ QVERIFY(!stopAction->isEnabled());
+ reloadAction->trigger();
+ }
+
+ wv->setProperty("url", QUrl("qrc:///resources/forward.html"));
+ QTRY_COMPARE(wv->property("progress").toDouble(), 1.0);
+ QCOMPARE(wv->property("title").toString(), QLatin1String("Forward"));
+ QTRY_COMPARE(qvariant_cast<QPixmap>(wv->property("icon")).width(), 32);
+ QEXPECT_FAIL("", "'icon' property isn't working", Continue);
+ QCOMPARE(qvariant_cast<QPixmap>(wv->property("icon")), QPixmap("qrc:///resources/forward.png"));
+ QCOMPARE(strippedHtml(fileContents(":/resources/forward.html")), strippedHtml(wv->property("html").toString()));
+ QCOMPARE(wv->property("url").toUrl(), QUrl("qrc:///resources/forward.html"));
+ QCOMPARE(wv->property("status").toInt(), int(QDeclarativeWebView::Ready));
+ QCOMPARE(wv->property("statusText").toString(), QString());
+
+ QVERIFY(reloadAction->isEnabled());
+ QVERIFY(backAction->isEnabled());
+ QVERIFY(!forwardAction->isEnabled());
+ QVERIFY(!stopAction->isEnabled());
+
+ backAction->trigger();
+
+ QTRY_COMPARE(wv->property("progress").toDouble(), 1.0);
+ QCOMPARE(wv->property("title").toString(), QLatin1String("Basic"));
+ QCOMPARE(strippedHtml(fileContents(":/resources/basic.html")), strippedHtml(wv->property("html").toString()));
+ QCOMPARE(wv->property("url").toUrl(), QUrl("qrc:///resources/basic.html"));
+ QCOMPARE(wv->property("status").toInt(), int(QDeclarativeWebView::Ready));
+
+ QVERIFY(reloadAction->isEnabled());
+ QVERIFY(!backAction->isEnabled());
+ QVERIFY(forwardAction->isEnabled());
+ QVERIFY(!stopAction->isEnabled());
+}
+
+static inline QVariant callEvaluateJavaScript(QObject *object, const QString& snippet)
+{
+ QVariant result;
+ QMetaObject::invokeMethod(object, "evaluateJavaScript", Q_RETURN_ARG(QVariant, result), Q_ARG(QString, snippet));
+ return result;
+}
+
+void tst_QDeclarativeWebView::javaScript()
+{
+ QDeclarativeEngine engine;
+ QDeclarativeComponent component(&engine, QUrl("qrc:///resources/javaScript.qml"));
+ checkNoErrors(component);
+ QObject* wv = component.create();
+ QVERIFY(wv);
+ QTRY_COMPARE(wv->property("progress").toDouble(), 1.0);
+
+ QCOMPARE(callEvaluateJavaScript(wv, "123").toInt(), 123);
+ QCOMPARE(callEvaluateJavaScript(wv, "window.status").toString(), QLatin1String("status here"));
+ QCOMPARE(callEvaluateJavaScript(wv, "window.myjsname.qmlprop").toString(), QLatin1String("qmlvalue"));
+}
+
+void tst_QDeclarativeWebView::loadError()
+{
+ QDeclarativeEngine engine;
+ QDeclarativeComponent component(&engine, QUrl("qrc:///resources/loadError.qml"));
+ checkNoErrors(component);
+ QWebSettings::enablePersistentStorage(tmpDir());
+
+ QObject* wv = component.create();
+ QVERIFY(wv);
+ QAction* reloadAction = wv->property("reload").value<QAction*>();
+ QVERIFY(reloadAction);
+
+ for (int i = 1; i <= 2; ++i) {
+ QTRY_COMPARE(wv->property("progress").toDouble(), 1.0);
+ QCOMPARE(wv->property("title").toString(), QString());
+ QCOMPARE(wv->property("statusText").toString(), QString()); // HTML 'status bar' text, not error message
+ QCOMPARE(wv->property("url").toUrl(), QUrl("qrc:///resources/does-not-exist.html")); // Unlike QWebPage, which loses url
+ QCOMPARE(wv->property("status").toInt(), int(QDeclarativeWebView::Error));
+ reloadAction->trigger();
+ }
+}
+
+void tst_QDeclarativeWebView::multipleWindows()
+{
+ QSKIP("Rework this test to not depend on QDeclarativeGrid", SkipAll);
+ QDeclarativeEngine engine;
+ QDeclarativeComponent component(&engine, QUrl("qrc:///resources/newwindows.qml"));
+ checkNoErrors(component);
+
+// QDeclarativeGrid *grid = qobject_cast<QDeclarativeGrid*>(component.create());
+// QVERIFY(grid != 0);
+// QTRY_COMPARE(grid->children().count(), 2+4); // Component, Loader (with 1 WebView), 4 new-window WebViews
+// QDeclarativeItem* popup = qobject_cast<QDeclarativeItem*>(grid->children().at(2)); // first popup after Component and Loader.
+// QVERIFY(popup != 0);
+// QTRY_COMPARE(popup->x(), 150.0);
+}
+
+void tst_QDeclarativeWebView::newWindowComponent()
+{
+ QDeclarativeEngine engine;
+ QDeclarativeComponent component(&engine, QUrl("qrc:///resources/propertychanges.qml"));
+ checkNoErrors(component);
+ QDeclarativeItem* rootItem = qobject_cast<QDeclarativeItem*>(component.create());
+ QVERIFY(rootItem);
+ QObject* wv = rootItem->findChild<QObject*>("webView");
+ QVERIFY(wv);
+ QTRY_COMPARE(wv->property("progress").toDouble(), 1.0);
+
+ QDeclarativeComponent substituteComponent(&engine);
+ substituteComponent.setData("import QtQuick 1.0; WebView { objectName: 'newWebView'; url: 'basic.html'; }", QUrl::fromLocalFile(""));
+ QSignalSpy newWindowComponentSpy(wv, SIGNAL(newWindowComponentChanged()));
+
+ wv->setProperty("newWindowComponent", QVariant::fromValue(&substituteComponent));
+ QCOMPARE(wv->property("newWindowComponent"), QVariant::fromValue(&substituteComponent));
+ QCOMPARE(newWindowComponentSpy.count(), 1);
+
+ wv->setProperty("newWindowComponent", QVariant::fromValue(&substituteComponent));
+ QCOMPARE(newWindowComponentSpy.count(), 1);
+
+ wv->setProperty("newWindowComponent", QVariant::fromValue((QDeclarativeComponent*)0));
+ QCOMPARE(newWindowComponentSpy.count(), 2);
+}
+
+void tst_QDeclarativeWebView::newWindowParent()
+{
+ QDeclarativeEngine engine;
+ QDeclarativeComponent component(&engine, QUrl("qrc:///resources/propertychanges.qml"));
+ checkNoErrors(component);
+ QDeclarativeItem* rootItem = qobject_cast<QDeclarativeItem*>(component.create());
+ QVERIFY(rootItem);
+ QObject* wv = rootItem->findChild<QObject*>("webView");
+ QVERIFY(wv);
+ QTRY_COMPARE(wv->property("progress").toDouble(), 1.0);
+
+ QDeclarativeItem* oldWindowParent = rootItem->findChild<QDeclarativeItem*>("oldWindowParent");
+ QCOMPARE(qvariant_cast<QDeclarativeItem*>(wv->property("newWindowParent")), oldWindowParent);
+ QSignalSpy newWindowParentSpy(wv, SIGNAL(newWindowParentChanged()));
+
+ QDeclarativeItem* newWindowParent = rootItem->findChild<QDeclarativeItem*>("newWindowParent");
+ wv->setProperty("newWindowParent", QVariant::fromValue(newWindowParent));
+ QVERIFY(newWindowParent);
+ QVERIFY(oldWindowParent);
+ QCOMPARE(oldWindowParent->childItems().count(), 0);
+ QCOMPARE(wv->property("newWindowParent"), QVariant::fromValue(newWindowParent));
+ QCOMPARE(newWindowParentSpy.count(), 1);
+
+ wv->setProperty("newWindowParent", QVariant::fromValue(newWindowParent));
+ QCOMPARE(newWindowParentSpy.count(), 1);
+
+ wv->setProperty("newWindowParent", QVariant::fromValue((QDeclarativeItem*)0));
+ QCOMPARE(newWindowParentSpy.count(), 2);
+}
+
void tst_QDeclarativeWebView::preferredWidthTest()
{
QDeclarativeEngine engine;
@@ -86,6 +387,110 @@ void tst_QDeclarativeWebView::preferredHeightDefaultTest()
QCOMPARE(wv->property("prefHeight").toDouble(), view.preferredHeight());
}
+void tst_QDeclarativeWebView::pressGrabTime()
+{
+ QDeclarativeEngine engine;
+ QDeclarativeComponent component(&engine, QUrl("qrc:///resources/propertychanges.qml"));
+ checkNoErrors(component);
+ QDeclarativeItem* rootItem = qobject_cast<QDeclarativeItem*>(component.create());
+ QVERIFY(rootItem);
+ QObject* wv = rootItem->findChild<QObject*>("webView");
+ QVERIFY(wv);
+ QTRY_COMPARE(wv->property("progress").toDouble(), 1.0);
+ QCOMPARE(wv->property("pressGrabTime").toInt(), 200);
+ QSignalSpy pressGrabTimeSpy(wv, SIGNAL(pressGrabTimeChanged()));
+
+ wv->setProperty("pressGrabTime", 100);
+ QCOMPARE(wv->property("pressGrabTime").toInt(), 100);
+ QCOMPARE(pressGrabTimeSpy.count(), 1);
+
+ wv->setProperty("pressGrabTime", 100);
+ QCOMPARE(pressGrabTimeSpy.count(), 1);
+
+ wv->setProperty("pressGrabTime", 0);
+ QCOMPARE(pressGrabTimeSpy.count(), 2);
+}
+
+void tst_QDeclarativeWebView::renderingEnabled()
+{
+ QDeclarativeEngine engine;
+ QDeclarativeComponent component(&engine, QUrl("qrc:///resources/propertychanges.qml"));
+ checkNoErrors(component);
+ QDeclarativeItem* rootItem = qobject_cast<QDeclarativeItem*>(component.create());
+ QVERIFY(rootItem);
+ QObject* wv = rootItem->findChild<QObject*>("webView");
+ QVERIFY(wv);
+ QTRY_COMPARE(wv->property("progress").toDouble(), 1.0);
+
+ QVERIFY(wv->property("renderingEnabled").toBool());
+ QSignalSpy renderingEnabledSpy(wv, SIGNAL(renderingEnabledChanged()));
+
+ wv->setProperty("renderingEnabled", false);
+ QVERIFY(!wv->property("renderingEnabled").toBool());
+ QCOMPARE(renderingEnabledSpy.count(), 1);
+
+ wv->setProperty("renderingEnabled", false);
+ QCOMPARE(renderingEnabledSpy.count(), 1);
+
+ wv->setProperty("renderingEnabled", true);
+ QCOMPARE(renderingEnabledSpy.count(), 2);
+}
+
+void tst_QDeclarativeWebView::setHtml()
+{
+ QDeclarativeEngine engine;
+ QDeclarativeComponent component(&engine, QUrl("qrc:///resources/sethtml.qml"));
+ checkNoErrors(component);
+ QObject* wv = component.create();
+ QVERIFY(wv);
+ QCOMPARE(wv->property("html").toString(), QLatin1String("<html><head></head><body><p>This is a <b>string</b> set on the WebView</p></body></html>"));
+
+ QSignalSpy spy(wv, SIGNAL(htmlChanged()));
+ wv->setProperty("html", QLatin1String("<html><head><title>Basic</title></head><body><p>text</p></body></html>"));
+ QCOMPARE(spy.count(), 1);
+}
+
+void tst_QDeclarativeWebView::settings()
+{
+ QDeclarativeEngine engine;
+ QDeclarativeComponent component(&engine, QUrl("qrc:///resources/basic.qml"));
+ checkNoErrors(component);
+ QObject* wv = component.create();
+ QVERIFY(wv);
+ QTRY_COMPARE(wv->property("progress").toDouble(), 1.0);
+
+ QObject* s = QDeclarativeProperty(wv, "settings").object();
+ QVERIFY(s);
+
+ QStringList settingsList;
+ settingsList << QString::fromAscii("autoLoadImages")
+ << QString::fromAscii("developerExtrasEnabled")
+ << QString::fromAscii("javaEnabled")
+ << QString::fromAscii("javascriptCanAccessClipboard")
+ << QString::fromAscii("javascriptCanOpenWindows")
+ << QString::fromAscii("javascriptEnabled")
+ << QString::fromAscii("linksIncludedInFocusChain")
+ << QString::fromAscii("localContentCanAccessRemoteUrls")
+ << QString::fromAscii("localStorageDatabaseEnabled")
+ << QString::fromAscii("offlineStorageDatabaseEnabled")
+ << QString::fromAscii("offlineWebApplicationCacheEnabled")
+ << QString::fromAscii("pluginsEnabled")
+ << QString::fromAscii("printElementBackgrounds")
+ << QString::fromAscii("privateBrowsingEnabled")
+ << QString::fromAscii("zoomTextOnly");
+
+ // Merely tests that setting gets stored (in QWebSettings), behavioural tests are in WebKit.
+ for (int b = 0; b <= 1; b++) {
+ bool value = !!b;
+ foreach (const QString& name, settingsList)
+ s->setProperty(name.toAscii().data(), value);
+ for (int i = 0; i < 2; i++) {
+ foreach (const QString& name, settingsList)
+ QCOMPARE(s->property(name.toAscii().data()).toBool(), value);
+ }
+ }
+}
+
#if QT_VERSION >= 0x040703
void tst_QDeclarativeWebView::backgroundColor()
{
@@ -120,6 +525,16 @@ void tst_QDeclarativeWebView::checkNoErrors(const QDeclarativeComponent& compone
{
// Wait until the component is ready
QTRY_VERIFY(component.isReady() || component.isError());
+ if (component.isError()) {
+ QList<QDeclarativeError> errors = component.errors();
+ for (int ii = 0; ii < errors.count(); ++ii) {
+ const QDeclarativeError &error = errors.at(ii);
+ QByteArray errorStr = QByteArray::number(error.line()) + ":" +
+ QByteArray::number(error.column()) + ":" +
+ error.description().toUtf8();
+ qWarning() << errorStr;
+ }
+ }
QVERIFY(!component.isError());
}
diff --git a/Source/WebKit/qt/tests/qdeclarativewebview/tst_qdeclarativewebview.qrc b/Source/WebKit/qt/tests/qdeclarativewebview/tst_qdeclarativewebview.qrc
index e14c333..fb66ad8 100644
--- a/Source/WebKit/qt/tests/qdeclarativewebview/tst_qdeclarativewebview.qrc
+++ b/Source/WebKit/qt/tests/qdeclarativewebview/tst_qdeclarativewebview.qrc
@@ -1,8 +1,22 @@
<RCC>
<qresource prefix="/">
- <file>resources/webviewtestdefault.qml</file>
- <file>resources/webviewtest.qml</file>
+ <file>resources/basic.html</file>
+ <file>resources/basic.png</file>
+ <file>resources/basic.qml</file>
+ <file>resources/elements.html</file>
+ <file>resources/elements.qml</file>
+ <file>resources/forward.html</file>
+ <file>resources/forward.png</file>
+ <file>resources/javaScript.html</file>
+ <file>resources/javaScript.qml</file>
+ <file>resources/loadError.qml</file>
+ <file>resources/newwindows.html</file>
+ <file>resources/newwindows.qml</file>
+ <file>resources/propertychanges.qml</file>
<file>resources/sample.html</file>
+ <file>resources/sethtml.qml</file>
<file>resources/webviewbackgroundcolor.qml</file>
+ <file>resources/webviewtestdefault.qml</file>
+ <file>resources/webviewtest.qml</file>
</qresource>
</RCC>
diff --git a/Source/WebKit/qt/tests/qgraphicswebview/resources/56929.html b/Source/WebKit/qt/tests/qgraphicswebview/resources/56929.html
new file mode 100644
index 0000000..2f7fa97
--- /dev/null
+++ b/Source/WebKit/qt/tests/qgraphicswebview/resources/56929.html
@@ -0,0 +1,8 @@
+<body style="background-color: white">
+ <div id="1" style="width: 50%; height: 50%; background-color: green"/>
+ <script>
+ function resizeDiv() {
+ document.getElementById("1").setAttribute("style", "width: 150%; height: 150%; background-color: green");
+ }
+ </script>
+</body>
diff --git a/Source/WebKit/qt/tests/qgraphicswebview/tst_qgraphicswebview.cpp b/Source/WebKit/qt/tests/qgraphicswebview/tst_qgraphicswebview.cpp
index 7cc88db..ed162c4 100644
--- a/Source/WebKit/qt/tests/qgraphicswebview/tst_qgraphicswebview.cpp
+++ b/Source/WebKit/qt/tests/qgraphicswebview/tst_qgraphicswebview.cpp
@@ -21,6 +21,7 @@
#include <QtTest/QtTest>
#include <QGraphicsSceneMouseEvent>
#include <QGraphicsView>
+#include <QStyleOptionGraphicsItem>
#include <qgraphicswebview.h>
#include <qwebpage.h>
#include <qwebframe.h>
@@ -43,7 +44,9 @@ private slots:
void setPalette_data();
void setPalette();
void renderHints();
-
+#if defined(ENABLE_TILED_BACKING_STORE) && ENABLE_TILED_BACKING_STORE
+ void bug56929();
+#endif
#if defined(ENABLE_WEBGL) && ENABLE_WEBGL
void webglSoftwareFallbackVerticalOrientation();
void webglSoftwareFallbackHorizontalOrientation();
@@ -191,6 +194,38 @@ void tst_QGraphicsWebView::widgetsRenderingThroughCache()
QCOMPARE(referencePixmap.toImage(), viewWithTiling.toImage());
}
+#if defined(ENABLE_TILED_BACKING_STORE) && ENABLE_TILED_BACKING_STORE
+void tst_QGraphicsWebView::bug56929()
+{
+ // When rendering from tiles sychronous layout should not be triggered
+ // and scrollbars should be in sync with the size of the document in the displayed state.
+
+ QGraphicsWebView* webView = new QGraphicsWebView();
+ webView->setGeometry(QRectF(0.0, 0.0, 100.0, 100.0));
+ QGraphicsView view(new QGraphicsScene());
+ view.scene()->setParent(&view);
+ view.scene()->addItem(webView);
+ webView->settings()->setAttribute(QWebSettings::TiledBackingStoreEnabled, true);
+ QUrl url("qrc:///resources/56929.html");
+ webView->load(url);
+ QVERIFY(waitForSignal(webView, SIGNAL(loadFinished(bool))));
+ QStyleOptionGraphicsItem option;
+ option.exposedRect = webView->geometry();
+ QImage img(option.exposedRect.width(), option.exposedRect.height(), QImage::Format_ARGB32_Premultiplied);
+ QPainter painter(&img);
+ // This will not paint anything as the tiles are not ready, yet.
+ webView->paint(&painter, &option);
+ QApplication::processEvents();
+ webView->paint(&painter, &option);
+ QCOMPARE(img.pixel(option.exposedRect.width() - 2, option.exposedRect.height() / 2), qRgba(255, 255, 255, 255));
+ painter.fillRect(option.exposedRect, Qt::black);
+ QCOMPARE(img.pixel(option.exposedRect.width() - 2, option.exposedRect.height() / 2), qRgba(0, 0, 0, 255));
+ webView->page()->mainFrame()->evaluateJavaScript(QString("resizeDiv();"));
+ webView->paint(&painter, &option);
+ QCOMPARE(img.pixel(option.exposedRect.width() - 2, option.exposedRect.height() / 2), qRgba(255, 255, 255, 255));
+}
+#endif
+
void tst_QGraphicsWebView::microFocusCoordinates()
{
QWebPage* page = new QWebPage;
diff --git a/Source/WebKit/qt/tests/qgraphicswebview/tst_qgraphicswebview.qrc b/Source/WebKit/qt/tests/qgraphicswebview/tst_qgraphicswebview.qrc
index 1488fcf..f929fe7 100644
--- a/Source/WebKit/qt/tests/qgraphicswebview/tst_qgraphicswebview.qrc
+++ b/Source/WebKit/qt/tests/qgraphicswebview/tst_qgraphicswebview.qrc
@@ -3,5 +3,6 @@
<file>resources/input_types.html</file>
<file>resources/pointing_right.html</file>
<file>resources/pointing_up.html</file>
+ <file>resources/56929.html</file>
</qresource>
</RCC>
diff --git a/Source/WebKit/qt/tests/qwebelement/tst_qwebelement.cpp b/Source/WebKit/qt/tests/qwebelement/tst_qwebelement.cpp
index c7c49a2..9e9948a 100644
--- a/Source/WebKit/qt/tests/qwebelement/tst_qwebelement.cpp
+++ b/Source/WebKit/qt/tests/qwebelement/tst_qwebelement.cpp
@@ -483,7 +483,7 @@ void tst_QWebElement::style()
QCOMPARE(p.styleProperty("color", QWebElement::CascadedStyle), QLatin1String("green"));
p.setStyleProperty("color", "blue");
- QCOMPARE(p.styleProperty("color", QWebElement::InlineStyle), QLatin1String("green"));
+ QCOMPARE(p.styleProperty("color", QWebElement::InlineStyle), QLatin1String("blue"));
QCOMPARE(p.styleProperty("color", QWebElement::CascadedStyle), QLatin1String("green"));
p.setStyleProperty("color", "blue !important");
diff --git a/Source/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp b/Source/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp
index 2c44e4c..3b9324d 100644
--- a/Source/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp
+++ b/Source/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp
@@ -614,6 +614,7 @@ private slots:
void urlChange();
void domCycles();
void requestedUrl();
+ void requestedUrlAfterSetAndLoadFailures();
void javaScriptWindowObjectCleared_data();
void javaScriptWindowObjectCleared();
void javaScriptWindowObjectClearedOnEvaluate();
@@ -649,10 +650,14 @@ private slots:
void setContent();
void setCacheLoadControlAttribute();
void setUrlWithPendingLoads();
+ void setUrlWithFragment_data();
void setUrlWithFragment();
void setUrlToEmpty();
void setUrlToInvalid();
void setUrlHistory();
+ void setUrlSameUrl();
+ void setUrlThenLoads_data();
+ void setUrlThenLoads();
private:
QString evalJS(const QString&s) {
@@ -2309,7 +2314,7 @@ public:
else if (request.url() == QUrl("qrc:/fake-ssl-error.html"))
setError(QNetworkReply::SslHandshakeFailedError, tr("Fake error !")); // force a ssl error
#endif
- else if (request.url() == QUrl("http://abcdef.abcdef/"))
+ else if (request.url().host() == QLatin1String("abcdef.abcdef"))
setError(QNetworkReply::HostNotFoundError, tr("Invalid URL"));
open(QIODevice::ReadOnly);
@@ -2413,6 +2418,30 @@ void tst_QWebFrame::requestedUrl()
#endif
}
+void tst_QWebFrame::requestedUrlAfterSetAndLoadFailures()
+{
+ QWebPage page;
+ QWebFrame* frame = page.mainFrame();
+
+ QSignalSpy spy(frame, SIGNAL(loadFinished(bool)));
+
+ const QUrl first("http://abcdef.abcdef/");
+ frame->setUrl(first);
+ ::waitForSignal(frame, SIGNAL(loadFinished(bool)));
+ QCOMPARE(frame->url(), first);
+ QCOMPARE(frame->requestedUrl(), first);
+ QVERIFY(!spy.at(0).first().toBool());
+
+ const QUrl second("http://abcdef.abcdef/another_page.html");
+ QVERIFY(first != second);
+
+ frame->load(second);
+ ::waitForSignal(frame, SIGNAL(loadFinished(bool)));
+ QCOMPARE(frame->url(), first);
+ QCOMPARE(frame->requestedUrl(), second);
+ QVERIFY(!spy.at(1).first().toBool());
+}
+
void tst_QWebFrame::javaScriptWindowObjectCleared_data()
{
QTest::addColumn<QString>("html");
@@ -2671,6 +2700,8 @@ void tst_QWebFrame::inputFieldFocus()
int delay = qApp->cursorFlashTime() * 2;
// focus the lineedit and check if it blinks
+ bool autoSipEnabled = qApp->autoSipEnabled();
+ qApp->setAutoSipEnabled(false);
const QWebElement inputElement = view.page()->mainFrame()->documentElement().findFirst(QLatin1String("input[type=text]"));
QTest::mouseClick(&view, Qt::LeftButton, 0, inputElement.geometry().center());
m_inputFieldsTestView = &view;
@@ -2678,6 +2709,7 @@ void tst_QWebFrame::inputFieldFocus()
QTest::qWait(delay);
QVERIFY2(m_inputFieldTestPaintCount >= 3,
"The input field should have a blinking caret");
+ qApp->setAutoSipEnabled(autoSipEnabled);
}
void tst_QWebFrame::hitTestContent()
@@ -3323,24 +3355,42 @@ void tst_QWebFrame::setUrlWithPendingLoads()
page.mainFrame()->setUrl(QUrl("about:blank"));
}
+void tst_QWebFrame::setUrlWithFragment_data()
+{
+ QTest::addColumn<QUrl>("previousUrl");
+ QTest::newRow("empty") << QUrl();
+ QTest::newRow("same URL no fragment") << QUrl("qrc:/test1.html");
+ // See comments in setUrlSameUrl about using setUrl() with the same url().
+ QTest::newRow("same URL with same fragment") << QUrl("qrc:/test1.html#");
+ QTest::newRow("same URL with different fragment") << QUrl("qrc:/test1.html#anotherFragment");
+ QTest::newRow("another URL") << QUrl("qrc:/test2.html");
+}
+
+// Based on bug report https://bugs.webkit.org/show_bug.cgi?id=32723
void tst_QWebFrame::setUrlWithFragment()
{
- QSKIP("Bug https://bugs.webkit.org/show_bug.cgi?id=32723", SkipAll);
+ QFETCH(QUrl, previousUrl);
- // Based on bug report https://bugs.webkit.org/show_bug.cgi?id=32723
QWebPage page;
- QSignalSpy spy(&page, SIGNAL(loadFinished(bool)));
+ QWebFrame* frame = page.mainFrame();
+
+ if (!previousUrl.isEmpty()) {
+ frame->load(previousUrl);
+ ::waitForSignal(frame, SIGNAL(loadFinished(bool)));
+ QCOMPARE(frame->url(), previousUrl);
+ }
+ QSignalSpy spy(frame, SIGNAL(loadFinished(bool)));
const QUrl url("qrc:/test1.html#");
QVERIFY(!url.fragment().isNull());
- page.mainFrame()->setUrl(url);
- ::waitForSignal(&page, SIGNAL(loadFinished(bool)));
+ frame->setUrl(url);
+ ::waitForSignal(frame, SIGNAL(loadFinished(bool)));
QCOMPARE(spy.count(), 1);
- QVERIFY(!page.mainFrame()->toPlainText().isEmpty());
- QCOMPARE(page.mainFrame()->requestedUrl(), url);
- QCOMPARE(page.mainFrame()->url(), url);
+ QVERIFY(!frame->toPlainText().isEmpty());
+ QCOMPARE(frame->requestedUrl(), url);
+ QCOMPARE(frame->url(), url);
}
void tst_QWebFrame::setUrlToEmpty()
@@ -3486,5 +3536,110 @@ void tst_QWebFrame::setUrlHistory()
QCOMPARE(m_page->history()->count(), 2);
}
+void tst_QWebFrame::setUrlSameUrl()
+{
+ const QUrl url1("qrc:/test1.html");
+ const QUrl url2("qrc:/test2.html");
+
+ QWebPage page;
+ QWebFrame* frame = page.mainFrame();
+ FakeNetworkManager* networkManager = new FakeNetworkManager(&page);
+ page.setNetworkAccessManager(networkManager);
+
+ QSignalSpy spy(frame, SIGNAL(loadFinished(bool)));
+
+ frame->setUrl(url1);
+ waitForSignal(frame, SIGNAL(loadFinished(bool)));
+ QVERIFY(frame->url() != url1); // Nota bene: our QNAM redirects url1 to url2
+ QCOMPARE(frame->url(), url2);
+ QCOMPARE(spy.count(), 1);
+
+ frame->setUrl(url1);
+ waitForSignal(frame, SIGNAL(loadFinished(bool)));
+ QVERIFY(frame->url() != url1);
+ QCOMPARE(frame->url(), url2);
+ QCOMPARE(spy.count(), 2);
+
+ // Now a case without redirect. The existing behavior we have for setUrl()
+ // is more like a "clear(); load()", so the page will be loaded again, even
+ // if urlToBeLoaded == url(). This test should be changed if we want to
+ // make setUrl() early return in this case.
+ frame->setUrl(url2);
+ waitForSignal(frame, SIGNAL(loadFinished(bool)));
+ QCOMPARE(frame->url(), url2);
+ QCOMPARE(spy.count(), 3);
+
+ frame->setUrl(url1);
+ waitForSignal(frame, SIGNAL(loadFinished(bool)));
+ QCOMPARE(frame->url(), url2);
+ QCOMPARE(spy.count(), 4);
+}
+
+static inline QUrl extractBaseUrl(const QUrl& url)
+{
+ return url.resolved(QUrl());
+}
+
+void tst_QWebFrame::setUrlThenLoads_data()
+{
+ QTest::addColumn<QUrl>("url");
+ QTest::addColumn<QUrl>("baseUrl");
+
+ QTest::newRow("resource file") << QUrl("qrc:/test1.html") << extractBaseUrl(QUrl("qrc:/test1.html"));
+ QTest::newRow("base specified in HTML") << QUrl("data:text/html,<head><base href=\"http://different.base/\"></head>") << QUrl("http://different.base/");
+}
+
+void tst_QWebFrame::setUrlThenLoads()
+{
+ QFETCH(QUrl, url);
+ QFETCH(QUrl, baseUrl);
+ QWebFrame* frame = m_page->mainFrame();
+ QSignalSpy urlChangedSpy(frame, SIGNAL(urlChanged(QUrl)));
+ QSignalSpy startedSpy(frame, SIGNAL(loadStarted()));
+ QSignalSpy finishedSpy(frame, SIGNAL(loadFinished(bool)));
+
+ frame->setUrl(url);
+ QCOMPARE(startedSpy.count(), 1);
+ ::waitForSignal(frame, SIGNAL(urlChanged(QUrl)));
+ QCOMPARE(urlChangedSpy.count(), 1);
+ QVERIFY(finishedSpy.at(0).first().toBool());
+ QCOMPARE(frame->url(), url);
+ QCOMPARE(frame->requestedUrl(), url);
+ QCOMPARE(frame->baseUrl(), baseUrl);
+
+ const QUrl urlToLoad1("qrc:/test2.html");
+ const QUrl urlToLoad2("qrc:/test1.html");
+
+ // Just after first load. URL didn't changed yet.
+ frame->load(urlToLoad1);
+ QCOMPARE(startedSpy.count(), 2);
+ QCOMPARE(frame->url(), url);
+ QCOMPARE(frame->requestedUrl(), urlToLoad1);
+ QCOMPARE(frame->baseUrl(), baseUrl);
+
+ // After first URL changed.
+ ::waitForSignal(frame, SIGNAL(urlChanged(QUrl)));
+ QCOMPARE(urlChangedSpy.count(), 2);
+ QVERIFY(finishedSpy.at(1).first().toBool());
+ QCOMPARE(frame->url(), urlToLoad1);
+ QCOMPARE(frame->requestedUrl(), urlToLoad1);
+ QCOMPARE(frame->baseUrl(), extractBaseUrl(urlToLoad1));
+
+ // Just after second load. URL didn't changed yet.
+ frame->load(urlToLoad2);
+ QCOMPARE(startedSpy.count(), 3);
+ QCOMPARE(frame->url(), urlToLoad1);
+ QCOMPARE(frame->requestedUrl(), urlToLoad2);
+ QCOMPARE(frame->baseUrl(), extractBaseUrl(urlToLoad1));
+
+ // After second URL changed.
+ ::waitForSignal(frame, SIGNAL(urlChanged(QUrl)));
+ QCOMPARE(urlChangedSpy.count(), 3);
+ QVERIFY(finishedSpy.at(2).first().toBool());
+ QCOMPARE(frame->url(), urlToLoad2);
+ QCOMPARE(frame->requestedUrl(), urlToLoad2);
+ QCOMPARE(frame->baseUrl(), extractBaseUrl(urlToLoad2));
+}
+
QTEST_MAIN(tst_QWebFrame)
#include "tst_qwebframe.moc"
diff --git a/Source/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp b/Source/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp
index d43b2de..9e3337b 100644
--- a/Source/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp
+++ b/Source/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp
@@ -434,7 +434,7 @@ void tst_QWebPage::userStyleSheet()
void tst_QWebPage::loadHtml5Video()
{
-#if defined(ENABLE_QT_MULTIMEDIA) && ENABLE_QT_MULTIMEDIA
+#if defined(WTF_USE_QT_MULTIMEDIA) && WTF_USE_QT_MULTIMEDIA
QByteArray url("http://does.not/exist?a=1%2Cb=2");
m_view->setHtml("<p><video id ='video' src='" + url + "' autoplay/></p>");
QTest::qWait(2000);
@@ -986,7 +986,10 @@ void tst_QWebPage::cursorMovements()
"getSelection().addRange(range);";
page->mainFrame()->evaluateJavaScript(script);
QCOMPARE(page->selectedText().trimmed(), QString::fromLatin1("The quick brown fox"));
- QCOMPARE(page->selectedHtml().trimmed(), QString::fromLatin1("<span class=\"Apple-style-span\" style=\"border-collapse: separate; color: rgb(0, 0, 0); font-family: Times; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; \"><p id=\"one\">The quick brown fox</p></span>"));
+
+ QRegExp regExp(" style=\".*\"");
+ regExp.setMinimal(true);
+ QCOMPARE(page->selectedHtml().trimmed().replace(regExp, ""), QString::fromLatin1("<span class=\"Apple-style-span\"><p id=\"one\">The quick brown fox</p></span>"));
// these actions must exist
QVERIFY(page->action(QWebPage::MoveToNextChar) != 0);
@@ -1217,7 +1220,9 @@ void tst_QWebPage::textSelection()
"getSelection().addRange(range);";
page->mainFrame()->evaluateJavaScript(selectScript);
QCOMPARE(page->selectedText().trimmed(), QString::fromLatin1("The quick brown fox"));
- QCOMPARE(page->selectedHtml().trimmed(), QString::fromLatin1("<span class=\"Apple-style-span\" style=\"border-collapse: separate; color: rgb(0, 0, 0); font-family: Times; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; \"><p id=\"one\">The quick brown fox</p></span>"));
+ QRegExp regExp(" style=\".*\"");
+ regExp.setMinimal(true);
+ QCOMPARE(page->selectedHtml().trimmed().replace(regExp, ""), QString::fromLatin1("<span class=\"Apple-style-span\"><p id=\"one\">The quick brown fox</p></span>"));
// Make sure hasSelection returns true, since there is selected text now...
QCOMPARE(page->hasSelection(), true);
@@ -2671,10 +2676,12 @@ void tst_QWebPage::findText()
QVERIFY(m_page->selectedText().isEmpty());
QVERIFY(m_page->selectedHtml().isEmpty());
QStringList words = (QStringList() << "foo" << "bar");
+ QRegExp regExp(" style=\".*\"");
+ regExp.setMinimal(true);
foreach (QString subString, words) {
m_page->findText(subString, QWebPage::FindWrapsAroundDocument);
QCOMPARE(m_page->selectedText(), subString);
- QCOMPARE(m_page->selectedHtml(), QString("<span class=\"Apple-style-span\" style=\"border-collapse: separate; color: rgb(0, 0, 0); font-family: Times; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; \">%1</span>").arg(subString));
+ QCOMPARE(m_page->selectedHtml().trimmed().replace(regExp, ""), QString("<span class=\"Apple-style-span\">%1</span>").arg(subString));
m_page->findText("");
QVERIFY(m_page->selectedText().isEmpty());
QVERIFY(m_page->selectedHtml().isEmpty());
diff --git a/Source/WebKit/qt/tests/qwebview/tst_qwebview.cpp b/Source/WebKit/qt/tests/qwebview/tst_qwebview.cpp
index c7600fc..f557dc1 100644
--- a/Source/WebKit/qt/tests/qwebview/tst_qwebview.cpp
+++ b/Source/WebKit/qt/tests/qwebview/tst_qwebview.cpp
@@ -31,6 +31,16 @@
#include <qwebelement.h>
#include <qwebframe.h>
+#ifdef Q_OS_SYMBIAN
+#define VERIFY_INPUTMETHOD_HINTS(actual, expect) \
+ QVERIFY(actual & Qt::ImhNoAutoUppercase); \
+ QVERIFY(actual & Qt::ImhNoPredictiveText); \
+ QVERIFY(actual & expect);
+#else
+#define VERIFY_INPUTMETHOD_HINTS(actual, expect) \
+ QVERIFY(actual == expect);
+#endif
+
class tst_QWebView : public QObject
{
Q_OBJECT
@@ -253,37 +263,37 @@ void tst_QWebView::focusInputTypes()
// 'password' field
inputElement = mainFrame->documentElement().findFirst(QLatin1String("input[type=password]"));
QTest::mouseClick(&webView, Qt::LeftButton, 0, inputElement.geometry().center());
- QVERIFY(webView.inputMethodHints() == Qt::ImhHiddenText);
+ VERIFY_INPUTMETHOD_HINTS(webView.inputMethodHints(), Qt::ImhHiddenText);
QVERIFY(webView.testAttribute(Qt::WA_InputMethodEnabled));
// 'tel' field
inputElement = mainFrame->documentElement().findFirst(QLatin1String("input[type=tel]"));
QTest::mouseClick(&webView, Qt::LeftButton, 0, inputElement.geometry().center());
- QVERIFY(webView.inputMethodHints() == Qt::ImhDialableCharactersOnly);
+ VERIFY_INPUTMETHOD_HINTS(webView.inputMethodHints(), Qt::ImhDialableCharactersOnly);
QVERIFY(webView.testAttribute(Qt::WA_InputMethodEnabled));
// 'number' field
inputElement = mainFrame->documentElement().findFirst(QLatin1String("input[type=number]"));
QTest::mouseClick(&webView, Qt::LeftButton, 0, inputElement.geometry().center());
- QVERIFY(webView.inputMethodHints() == Qt::ImhDigitsOnly);
+ VERIFY_INPUTMETHOD_HINTS(webView.inputMethodHints(), Qt::ImhDigitsOnly);
QVERIFY(webView.testAttribute(Qt::WA_InputMethodEnabled));
// 'email' field
inputElement = mainFrame->documentElement().findFirst(QLatin1String("input[type=email]"));
QTest::mouseClick(&webView, Qt::LeftButton, 0, inputElement.geometry().center());
- QVERIFY(webView.inputMethodHints() == Qt::ImhEmailCharactersOnly);
+ VERIFY_INPUTMETHOD_HINTS(webView.inputMethodHints(), Qt::ImhEmailCharactersOnly);
QVERIFY(webView.testAttribute(Qt::WA_InputMethodEnabled));
// 'url' field
inputElement = mainFrame->documentElement().findFirst(QLatin1String("input[type=url]"));
QTest::mouseClick(&webView, Qt::LeftButton, 0, inputElement.geometry().center());
- QVERIFY(webView.inputMethodHints() == Qt::ImhUrlCharactersOnly);
+ VERIFY_INPUTMETHOD_HINTS(webView.inputMethodHints(), Qt::ImhUrlCharactersOnly);
QVERIFY(webView.testAttribute(Qt::WA_InputMethodEnabled));
// 'password' field
inputElement = mainFrame->documentElement().findFirst(QLatin1String("input[type=password]"));
QTest::mouseClick(&webView, Qt::LeftButton, 0, inputElement.geometry().center());
- QVERIFY(webView.inputMethodHints() == Qt::ImhHiddenText);
+ VERIFY_INPUTMETHOD_HINTS(webView.inputMethodHints(), Qt::ImhHiddenText);
QVERIFY(webView.testAttribute(Qt::WA_InputMethodEnabled));
// 'text' type
@@ -300,13 +310,18 @@ void tst_QWebView::focusInputTypes()
// 'password' field
inputElement = mainFrame->documentElement().findFirst(QLatin1String("input[type=password]"));
QTest::mouseClick(&webView, Qt::LeftButton, 0, inputElement.geometry().center());
- QVERIFY(webView.inputMethodHints() == Qt::ImhHiddenText);
+ VERIFY_INPUTMETHOD_HINTS(webView.inputMethodHints(), Qt::ImhHiddenText);
QVERIFY(webView.testAttribute(Qt::WA_InputMethodEnabled));
// 'text area' field
inputElement = mainFrame->documentElement().findFirst(QLatin1String("textarea"));
QTest::mouseClick(&webView, Qt::LeftButton, 0, inputElement.geometry().center());
+#if defined(Q_OS_SYMBIAN)
+ QVERIFY(webView.inputMethodHints() & Qt::ImhNoAutoUppercase);
+ QVERIFY(webView.inputMethodHints() & Qt::ImhNoPredictiveText);
+#else
QVERIFY(webView.inputMethodHints() == Qt::ImhNone);
+#endif
QVERIFY(webView.testAttribute(Qt::WA_InputMethodEnabled));
}
diff --git a/Source/WebKit/qt/tests/tests.pri b/Source/WebKit/qt/tests/tests.pri
index ebb6f8e..3b0c358 100644
--- a/Source/WebKit/qt/tests/tests.pri
+++ b/Source/WebKit/qt/tests/tests.pri
@@ -10,8 +10,8 @@ ELSE { TARGET = tst_$$TARGET }
load(mobilityconfig, true)
contains(MOBILITY_CONFIG, multimedia) {
# This define is used by tests depending on Qt Multimedia
- DEFINES -= ENABLE_QT_MULTIMEDIA=0
- DEFINES += ENABLE_QT_MULTIMEDIA=1
+ DEFINES -= WTF_USE_QT_MULTIMEDIA=0
+ DEFINES += WTF_USE_QT_MULTIMEDIA=1
}
SOURCES += $${TARGET}.cpp
diff --git a/Source/WebKit/qt/tests/tests.pro b/Source/WebKit/qt/tests/tests.pro
index 529fa04..5fffd7b 100644
--- a/Source/WebKit/qt/tests/tests.pro
+++ b/Source/WebKit/qt/tests/tests.pro
@@ -1,6 +1,6 @@
TEMPLATE = subdirs
-SUBDIRS = qwebframe qwebpage qwebelement qgraphicswebview qwebhistoryinterface qwebview qwebhistory qwebinspector hybridPixmap
+SUBDIRS = qwebframe qwebpage qwebelement qgraphicswebview qwebhistoryinterface qwebview qwebhistory qwebinspector hybridPixmap MIMESniffing
contains(QT_CONFIG, declarative): SUBDIRS += qdeclarativewebview
SUBDIRS += benchmarks/painting benchmarks/loading
contains(DEFINES, ENABLE_WEBGL=1) {