diff options
author | Jose Lejin PJ <jose.lejin@gmail.com> | 2013-04-10 15:10:08 +0000 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-04-12 16:58:25 +0200 |
commit | 2737149a871bade64959bb0b1117abfad1cf12ee (patch) | |
tree | d07ce335fda6c7dcb91b3deacabd14d213541cfe /Source/WebKit/qt/tests | |
parent | 4fdc47851d5c70395fd3c3c2210d19c23fd6ba1f (diff) | |
download | qtwebkit-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.cpp | 56 |
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" |