diff options
Diffstat (limited to 'Source/WebKit/qt/tests')
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 Binary files differnew file mode 100644 index 0000000..b9cc1b2 --- /dev/null +++ b/Source/WebKit/qt/tests/MIMESniffing/resources/application_ogg diff --git a/Source/WebKit/qt/tests/MIMESniffing/resources/application_pdf b/Source/WebKit/qt/tests/MIMESniffing/resources/application_pdf Binary files differnew file mode 100644 index 0000000..7f8996f --- /dev/null +++ b/Source/WebKit/qt/tests/MIMESniffing/resources/application_pdf 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 <a href="http://www1.folha.uol.com.br/ambiente/870588-amazonia-teve-a-pior-seca-dos-ultimos-cem-anos.shtml">pior seca a atingir a Amazônia em 2010</a>. +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. +<table class="articleGraphic"> +<tr> +<td rowspan="3" class="articleGraphicSpace"></td> +<td class="articleGraphicCredit">Universidade de Boston/Nasa</td> +<td rowspan="3" class="articleGraphicSpace"></td> +</tr> +<tr> +<td class="articleGraphicImage"><img src="http://f.i.uol.com.br/folha/ambiente/images/11090120.jpeg" alt="Área (vermelho) mostra redução do índice do verdor, onde a vegetação ficou menos verde e mais seca" border="0" /></td> +</tr> +<tr> +<td class="articleGraphicCaption">Área (vermelho) mostra redução do índice do verdor, onde a vegetação ficou menos verde e mais seca</td> +</tr> +</table> +<a href="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">Leia mais</a> (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 Binary files differnew file mode 100644 index 0000000..a5e7d31 --- /dev/null +++ b/Source/WebKit/qt/tests/MIMESniffing/resources/application_x-gzip diff --git a/Source/WebKit/qt/tests/MIMESniffing/resources/application_x-rar-compressed b/Source/WebKit/qt/tests/MIMESniffing/resources/application_x-rar-compressed Binary files differnew file mode 100644 index 0000000..d9cb6ae --- /dev/null +++ b/Source/WebKit/qt/tests/MIMESniffing/resources/application_x-rar-compressed diff --git a/Source/WebKit/qt/tests/MIMESniffing/resources/application_zip b/Source/WebKit/qt/tests/MIMESniffing/resources/application_zip Binary files differnew file mode 100644 index 0000000..8aec52f --- /dev/null +++ b/Source/WebKit/qt/tests/MIMESniffing/resources/application_zip diff --git a/Source/WebKit/qt/tests/MIMESniffing/resources/audio_x-wave b/Source/WebKit/qt/tests/MIMESniffing/resources/audio_x-wave Binary files differnew file mode 100644 index 0000000..a0f9b85 --- /dev/null +++ b/Source/WebKit/qt/tests/MIMESniffing/resources/audio_x-wave diff --git a/Source/WebKit/qt/tests/MIMESniffing/resources/image_bmp b/Source/WebKit/qt/tests/MIMESniffing/resources/image_bmp Binary files differnew file mode 100644 index 0000000..b61d368 --- /dev/null +++ b/Source/WebKit/qt/tests/MIMESniffing/resources/image_bmp diff --git a/Source/WebKit/qt/tests/MIMESniffing/resources/image_gif b/Source/WebKit/qt/tests/MIMESniffing/resources/image_gif Binary files differnew file mode 100644 index 0000000..32b1ea2 --- /dev/null +++ b/Source/WebKit/qt/tests/MIMESniffing/resources/image_gif diff --git a/Source/WebKit/qt/tests/MIMESniffing/resources/image_jpeg b/Source/WebKit/qt/tests/MIMESniffing/resources/image_jpeg Binary files differnew file mode 100644 index 0000000..1874576 --- /dev/null +++ b/Source/WebKit/qt/tests/MIMESniffing/resources/image_jpeg diff --git a/Source/WebKit/qt/tests/MIMESniffing/resources/image_png b/Source/WebKit/qt/tests/MIMESniffing/resources/image_png Binary files differnew file mode 100644 index 0000000..bef59c7 --- /dev/null +++ b/Source/WebKit/qt/tests/MIMESniffing/resources/image_png diff --git a/Source/WebKit/qt/tests/MIMESniffing/resources/image_vnd.microsoft.icon b/Source/WebKit/qt/tests/MIMESniffing/resources/image_vnd.microsoft.icon Binary files differnew file mode 100644 index 0000000..58921b8 --- /dev/null +++ b/Source/WebKit/qt/tests/MIMESniffing/resources/image_vnd.microsoft.icon diff --git a/Source/WebKit/qt/tests/MIMESniffing/resources/image_webp b/Source/WebKit/qt/tests/MIMESniffing/resources/image_webp Binary files differnew file mode 100644 index 0000000..0da983e --- /dev/null +++ b/Source/WebKit/qt/tests/MIMESniffing/resources/image_webp 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 Binary files differnew file mode 100644 index 0000000..95d5031 --- /dev/null +++ b/Source/WebKit/qt/tests/MIMESniffing/resources/video_webm 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 Binary files differnew file mode 100644 index 0000000..35717cc --- /dev/null +++ b/Source/WebKit/qt/tests/qdeclarativewebview/resources/basic.png 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 Binary files differnew file mode 100644 index 0000000..a82533e --- /dev/null +++ b/Source/WebKit/qt/tests/qdeclarativewebview/resources/forward.png 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) { |