summaryrefslogtreecommitdiff
path: root/Source/WebKit/qt/tests
diff options
context:
space:
mode:
authorJose Lejin PJ <jose.lejin@gmail.com>2013-04-10 15:10:08 +0000
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-04-12 16:58:25 +0200
commit2737149a871bade64959bb0b1117abfad1cf12ee (patch)
treed07ce335fda6c7dcb91b3deacabd14d213541cfe /Source/WebKit/qt/tests
parent4fdc47851d5c70395fd3c3c2210d19c23fd6ba1f (diff)
downloadqtwebkit-2737149a871bade64959bb0b1117abfad1cf12ee.tar.gz
[Qt] Add API in QWebSettings for setting the CSS media type
https://bugs.webkit.org/show_bug.cgi?id=113853 Reviewed by Jocelyn Turcotte. * Api/qwebsettings.cpp: (QWebSettingsPrivate): (QWebSettingsPrivate::apply): (QWebSettings::setCSSMediaType): (QWebSettings::cssMediaType): * Api/qwebsettings.h: * WebCoreSupport/FrameLoaderClientQt.cpp: (WebCore::FrameLoaderClientQt::overrideMediaType): * tests/qwebpage/tst_qwebpage.cpp: (tst_QWebPage): (tst_QWebPage::cssMediaTypeGlobalSetting): (tst_QWebPage::cssMediaTypePageSetting): Change-Id: I56e755998ef4c7f879f8e0629fedfbc36a92372e git-svn-id: http://svn.webkit.org/repository/webkit/trunk@148095 268f45cc-cd09-0410-ab3c-d52691b4dbfc Reviewed-by: Andras Becsi <andras.becsi@digia.com>
Diffstat (limited to 'Source/WebKit/qt/tests')
-rw-r--r--Source/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp56
1 files changed, 56 insertions, 0 deletions
diff --git a/Source/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp b/Source/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp
index aae3bbcca..fbba56d6c 100644
--- a/Source/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp
+++ b/Source/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp
@@ -187,6 +187,8 @@ private Q_SLOTS:
void loadSignalsOrder_data();
void loadSignalsOrder();
void openWindowDefaultSize();
+ void cssMediaTypeGlobalSetting();
+ void cssMediaTypePageSetting();
#ifdef Q_OS_MAC
void macCopyUnicodeToClipboard();
@@ -3287,5 +3289,59 @@ void tst_QWebPage::openWindowDefaultSize()
QVERIFY(requestedGeometry.height() == 100);
}
+void tst_QWebPage::cssMediaTypeGlobalSetting()
+{
+ QString testHtml("<style>@media tv {body{background-color:red;}}@media handheld {body{background-color:green;}}@media screen {body{background-color:blue;}}</style>");
+ QSignalSpy loadSpy(m_view, SIGNAL(loadFinished(bool)));
+
+ QWebSettings::globalSettings()->setCSSMediaType("tv");
+ // Clear page specific setting to read from global setting
+ m_view->page()->settings()->setCSSMediaType(QString());
+ m_view->setHtml(testHtml);
+ QTRY_COMPARE(loadSpy.count(), 1);
+ QVERIFY(m_view->page()->mainFrame()->evaluateJavaScript("window.matchMedia('tv').matches == true").toBool());
+ QVERIFY(QWebSettings::globalSettings()->cssMediaType() == "tv");
+
+ QWebSettings::globalSettings()->setCSSMediaType("handheld");
+ // Clear page specific setting to read from global setting
+ m_view->page()->settings()->setCSSMediaType(QString());
+ m_view->setHtml(testHtml);
+ QTRY_COMPARE(loadSpy.count(), 2);
+ QVERIFY(m_view->page()->mainFrame()->evaluateJavaScript("window.matchMedia('handheld').matches == true").toBool());
+ QVERIFY(QWebSettings::globalSettings()->cssMediaType() == "handheld");
+
+ QWebSettings::globalSettings()->setCSSMediaType("screen");
+ // Clear page specific setting to read from global setting
+ m_view->page()->settings()->setCSSMediaType(QString());
+ m_view->setHtml(testHtml);
+ QTRY_COMPARE(loadSpy.count(), 3);
+ QVERIFY(m_view->page()->mainFrame()->evaluateJavaScript("window.matchMedia('screen').matches == true").toBool());
+ QVERIFY(QWebSettings::globalSettings()->cssMediaType() == "screen");
+}
+
+void tst_QWebPage::cssMediaTypePageSetting()
+{
+ QString testHtml("<style>@media tv {body{background-color:red;}}@media handheld {body{background-color:green;}}@media screen {body{background-color:blue;}}</style>");
+ QSignalSpy loadSpy(m_view, SIGNAL(loadFinished(bool)));
+
+ m_view->page()->settings()->setCSSMediaType("tv");
+ m_view->setHtml(testHtml);
+ QTRY_COMPARE(loadSpy.count(), 1);
+ QVERIFY(m_view->page()->mainFrame()->evaluateJavaScript("window.matchMedia('tv').matches == true").toBool());
+ QVERIFY(m_view->page()->settings()->cssMediaType() == "tv");
+
+ m_view->page()->settings()->setCSSMediaType("handheld");
+ m_view->setHtml(testHtml);
+ QTRY_COMPARE(loadSpy.count(), 2);
+ QVERIFY(m_view->page()->mainFrame()->evaluateJavaScript("window.matchMedia('handheld').matches == true").toBool());
+ QVERIFY(m_view->page()->settings()->cssMediaType() == "handheld");
+
+ m_view->page()->settings()->setCSSMediaType("screen");
+ m_view->setHtml(testHtml);
+ QTRY_COMPARE(loadSpy.count(), 3);
+ QVERIFY(m_view->page()->mainFrame()->evaluateJavaScript("window.matchMedia('screen').matches == true").toBool());
+ QVERIFY(m_view->page()->settings()->cssMediaType() == "screen");
+}
+
QTEST_MAIN(tst_QWebPage)
#include "tst_qwebpage.moc"