import QtQuick 2.0 import QtTest 1.0 import QtWebKit 3.0 import QtWebKit.experimental 1.0 import "../common" Item { TestWebView { id: webView width: 400 height: 300 experimental.preferences.javascriptEnabled: true experimental.preferences.localStorageEnabled: true experimental.preferences.pluginsEnabled: true TestWebView { id: webView2 width: 400 height: 300 } SignalSpy { id: titleSpy target: webView signalName: "titleChanged" } SignalSpy { id: standardFontFamilySpy target: webView.experimental.preferences signalName: "standardFontFamilyChanged" } SignalSpy { id: fixedFontFamilySpy target: webView.experimental.preferences signalName: "fixedFontFamilyChanged" } SignalSpy { id: serifFontFamilySpy target: webView.experimental.preferences signalName: "serifFontFamilyChanged" } SignalSpy { id: sansSerifFontFamilySpy target: webView.experimental.preferences signalName: "sansSerifFontFamilyChanged" } SignalSpy { id: cursiveFontFamilySpy target: webView.experimental.preferences signalName: "cursiveFontFamilyChanged" } SignalSpy { id: fantasyFontFamilySpy target: webView.experimental.preferences signalName: "fantasyFontFamilyChanged" } SignalSpy { id: minimumFontSizeSpy target: webView.experimental.preferences signalName: "minimumFontSizeChanged" } SignalSpy { id: defaultFontSizeSpy target: webView.experimental.preferences signalName: "defaultFontSizeChanged" } SignalSpy { id: defaultFixedFontSizeSpy target: webView.experimental.preferences signalName: "defaultFixedFontSizeChanged" } TestCase { name: "WebViewPreferences" property bool shouldSetupFonts: true property string defaultStandardFontFamily property string defaultFixedFontFamily property string defaultSerifFontFamily property string defaultSansSerifFontFamily property string defaultCursiveFontFamily property string defaultFantasyFontFamily property int defaultMinimumFontSize property int defaultFontSize property int defaultFixedFontSize function init() { if (shouldSetupFonts) { // Setup initial values (may be different per platform). shouldSetupFonts = false defaultStandardFontFamily = webView.experimental.preferences.standardFontFamily defaultFixedFontFamily = webView.experimental.preferences.fixedFontFamily defaultSerifFontFamily = webView.experimental.preferences.serifFontFamily defaultSansSerifFontFamily = webView.experimental.preferences.sansSerifFontFamily defaultCursiveFontFamily = webView.experimental.preferences.cursiveFontFamily defaultFantasyFontFamily = webView.experimental.preferences.fantasyFontFamily defaultMinimumFontSize = webView.experimental.preferences.minimumFontSize defaultFontSize = webView.experimental.preferences.defaultFontSize defaultFixedFontSize = webView.experimental.preferences.defaultFixedFontSize } else { // Restore default values before starting a new test case. webView.experimental.preferences.standardFontFamily = defaultStandardFontFamily webView.experimental.preferences.fixedFontFamily = defaultFixedFontFamily webView.experimental.preferences.serifFontFamily = defaultSerifFontFamily webView.experimental.preferences.sansSerifFontFamily = defaultSansSerifFontFamily webView.experimental.preferences.cursiveFontFamily = defaultCursiveFontFamily webView.experimental.preferences.fantasyFontFamily = defaultFantasyFontFamily webView.experimental.preferences.minimumFontSize = defaultMinimumFontSize webView.experimental.preferences.defaultFontSize = defaultFontSize webView.experimental.preferences.defaultFixedFontSize = defaultFixedFontSize if (webView.url != '' && webView.url != 'about:blank') { webView.url = 'about:blank' verify(webView.waitForLoadSucceeded()) } standardFontFamilySpy.clear() fixedFontFamilySpy.clear() serifFontFamilySpy.clear() sansSerifFontFamilySpy.clear() cursiveFontFamilySpy.clear() fantasyFontFamilySpy.clear() minimumFontSizeSpy.clear() defaultFontSizeSpy.clear() defaultFixedFontSizeSpy.clear() } webView.experimental.preferences.javascriptEnabled = true webView.experimental.preferences.localStorageEnabled = true webView.experimental.preferences.pluginsEnabled = true titleSpy.clear() } function test_javascriptEnabled() { webView.experimental.preferences.javascriptEnabled = true var testUrl = Qt.resolvedUrl("../common/javascript.html") webView.url = testUrl verify(webView.waitForLoadSucceeded()) compare(webView.title, "New Title") } function test_javascriptDisabled() { webView.experimental.preferences.javascriptEnabled = false var testUrl = Qt.resolvedUrl("../common/javascript.html") webView.url = testUrl verify(webView.waitForLoadSucceeded()) compare(webView.title, "Original Title") } function test_localStorageDisabled() { webView.experimental.preferences.localStorageEnabled = false var testUrl = Qt.resolvedUrl("../common/localStorage.html") webView.url = testUrl verify(webView.waitForLoadSucceeded()) compare(webView.title, "Original Title") } function test_localStorageEnabled() { webView.experimental.preferences.localStorageEnabled = true var testUrl = Qt.resolvedUrl("../common/localStorage.html") webView.url = testUrl verify(webView.waitForLoadSucceeded()) webView.url = testUrl verify(webView.waitForLoadSucceeded()) compare(webView.title, "New Title") } function test_preferencesAffectCurrentViewOnly() { webView.experimental.preferences.javascriptEnabled = true webView2.experimental.preferences.javascriptEnabled = true var testUrl = Qt.resolvedUrl("../common/javascript.html") webView.url = testUrl verify(webView.waitForLoadSucceeded()) webView2.url = testUrl verify(webView2.waitForLoadSucceeded()) compare(webView.title, "New Title") compare(webView2.title, "New Title") webView.experimental.preferences.javascriptEnabled = false webView.url = testUrl verify(webView.waitForLoadSucceeded()) webView2.url = testUrl verify(webView2.waitForLoadSucceeded()) compare(webView.title, "Original Title") compare(webView2.title, "New Title") } function test_standardFontFamilyChanged() { var url = Qt.resolvedUrl("../common/font-preferences.html?standard#font-family") webView.url = url verify(webView.waitForLoadSucceeded()) compare(webView.title, "Original Title") titleSpy.clear() titleSpy.wait() compare(webView.title, defaultStandardFontFamily) webView.experimental.preferences.standardFontFamily = "foobar" standardFontFamilySpy.wait() compare(standardFontFamilySpy.count, 1) webView.url = url verify(webView.waitForLoadSucceeded()) compare(webView.title, "Original Title") titleSpy.clear() titleSpy.wait() compare(webView.title, "foobar") } function test_fontSizeChanged() { var url = Qt.resolvedUrl("../common/font-preferences.html?standard#font-size") webView.url = url verify(webView.waitForLoadSucceeded()) compare(webView.title, "Original Title") titleSpy.clear() titleSpy.wait() compare(webView.title, defaultFontSize.toString() + "px") webView.experimental.preferences.defaultFontSize = defaultFontSize + 1 defaultFontSizeSpy.wait() compare(defaultFontSizeSpy.count, 1) webView.url = url verify(webView.waitForLoadSucceeded()) compare(webView.title, "Original Title") titleSpy.clear() titleSpy.wait() compare(webView.title, (defaultFontSize + 1).toString() + "px") } function test_fixedFontSizeChanged() { var url = Qt.resolvedUrl("../common/font-preferences.html?fixed#font-size") webView.url = url verify(webView.waitForLoadSucceeded()) compare(webView.title, "Original Title") titleSpy.clear() titleSpy.wait() compare(webView.title, defaultFixedFontSize.toString() + "px") webView.experimental.preferences.defaultFixedFontSize = defaultFixedFontSize + 1 defaultFixedFontSizeSpy.wait() compare(defaultFixedFontSizeSpy.count, 1) webView.url = url verify(webView.waitForLoadSucceeded()) compare(webView.title, "Original Title") titleSpy.clear() titleSpy.wait() compare(webView.title, (defaultFixedFontSize + 1).toString() + "px") webView.url = Qt.resolvedUrl("../common/font-preferences.html?standard#font-size") verify(webView.waitForLoadSucceeded()) compare(webView.title, "Original Title") titleSpy.clear() titleSpy.wait() compare(webView.title, defaultFontSize.toString() + "px") } function test_minimumFontSizeChanged() { verify(defaultMinimumFontSize < defaultFontSize) var url = Qt.resolvedUrl("../common/font-preferences.html?minimum#font-size") webView.url = url verify(webView.waitForLoadSucceeded()) compare(webView.title, "Original Title") titleSpy.clear() titleSpy.wait() var smallerFontSize = webView.title smallerFontSize = smallerFontSize.substring(0, smallerFontSize.length - 2) smallerFontSize = parseInt(smallerFontSize) verify(smallerFontSize < defaultFontSize) webView.experimental.preferences.minimumFontSize = defaultFontSize minimumFontSizeSpy.wait() compare(minimumFontSizeSpy.count, 1) webView.url = url verify(webView.waitForLoadSucceeded()) compare(webView.title, "Original Title") titleSpy.clear() titleSpy.wait() compare(webView.title, defaultFontSize.toString() + "px") } function test_defaultFontsChanged() { // As there's currently no way to test through JS if a generic font was indeed changed // we keep this test for really basic coverage. webView.experimental.preferences.standardFontFamily = "foobar0" standardFontFamilySpy.wait() webView.experimental.preferences.fixedFontFamily = "foobar1" fixedFontFamilySpy.wait() webView.experimental.preferences.serifFontFamily = "foobar2" serifFontFamilySpy.wait() webView.experimental.preferences.sansSerifFontFamily = "foobar3" sansSerifFontFamilySpy.wait() webView.experimental.preferences.cursiveFontFamily = "foobar4" cursiveFontFamilySpy.wait() webView.experimental.preferences.fantasyFontFamily = "foobar5" fantasyFontFamilySpy.wait() compare(standardFontFamilySpy.count, 1) compare(fixedFontFamilySpy.count, 1) compare(serifFontFamilySpy.count, 1) compare(sansSerifFontFamilySpy.count, 1) compare(cursiveFontFamilySpy.count, 1) compare(fantasyFontFamilySpy.count, 1) compare(webView.experimental.preferences.standardFontFamily, "foobar0") compare(webView.experimental.preferences.fixedFontFamily, "foobar1") compare(webView.experimental.preferences.serifFontFamily, "foobar2") compare(webView.experimental.preferences.sansSerifFontFamily, "foobar3") compare(webView.experimental.preferences.cursiveFontFamily, "foobar4") compare(webView.experimental.preferences.fantasyFontFamily, "foobar5") } } } }