=== modified file 'qt/tests/qmltests/api/tst_WebView_contextMenu.qml' --- qt/tests/qmltests/api/tst_WebView_contextMenu.qml 2015-05-28 23:51:39 +0000 +++ qt/tests/qmltests/api/tst_WebView_contextMenu.qml 2015-06-03 10:13:08 +0000 @@ -49,7 +49,7 @@ } function cleanup() { - webView.currentContextMenu.contextModel.close() + webView.currentContextMenu.contextModel.close(); tryCompare(webView, "currentContextMenu", null); } @@ -130,11 +130,12 @@ verify(!(model.editFlags & WebView.RedoCapability)); verify(!(model.editFlags & WebView.CutCapability)); verify(!(model.editFlags & WebView.CopyCapability)); + verify(model.editFlags & WebView.PasteCapability); verify(!(model.editFlags & WebView.EraseCapability)); verify(model.editFlags & WebView.SelectAllCapability); + cleanup(); + webView.executeEditingCommand(WebView.EditingCommandSelectAll); - cleanup(); - invokeContextMenu("editable"); model = webView.currentContextMenu.contextModel; compare(model.selectionText, "text area"); @@ -142,37 +143,33 @@ verify(!(model.editFlags & WebView.RedoCapability)); verify(model.editFlags & WebView.CutCapability); verify(model.editFlags & WebView.CopyCapability); + verify(model.editFlags & WebView.PasteCapability); verify(model.editFlags & WebView.EraseCapability); verify(model.editFlags & WebView.SelectAllCapability); + cleanup(); + webView.executeEditingCommand(WebView.EditingCommandErase); - cleanup(); - var r = webView.getTestApi().evaluateCode( - "document.querySelector(\"#editable\").value"); - compare(r, ""); - invokeContextMenu("editable"); model = webView.currentContextMenu.contextModel; compare(model.selectionText, ""); verify(model.editFlags & WebView.UndoCapability); verify(!(model.editFlags & WebView.RedoCapability)); + cleanup(); + webView.executeEditingCommand(WebView.EditingCommandUndo); - cleanup(); - var r = webView.getTestApi().evaluateCode( - "document.querySelector(\"#editable\").value"); - compare(r, "text area"); - invokeContextMenu("editable"); model = webView.currentContextMenu.contextModel; compare(model.selectionText, "text area"); verify(!(model.editFlags & WebView.UndoCapability)); verify(model.editFlags & WebView.RedoCapability); + cleanup(); + webView.executeEditingCommand(WebView.EditingCommandRedo); - var r = webView.getTestApi().evaluateCode( - "document.querySelector(\"#editable\").value"); - compare(r, ""); - - // TODO: once clipboard support is implemented - // (https://launchpad.net/bugs/1301419), test cut/copy/paste + invokeContextMenu("editable"); + model = webView.currentContextMenu.contextModel; + compare(model.selectionText, ""); + verify(model.editFlags & WebView.UndoCapability); + verify(!(model.editFlags & WebView.RedoCapability)); } function test_WebView_contextMenu_saveLink_saveMedia() { === added file 'qt/tests/qmltests/api/tst_WebView_executeEditingCommand.html' --- qt/tests/qmltests/api/tst_WebView_executeEditingCommand.html 1970-01-01 00:00:00 +0000 +++ qt/tests/qmltests/api/tst_WebView_executeEditingCommand.html 2015-06-03 10:13:08 +0000 @@ -0,0 +1,5 @@ + +
+ + + === added file 'qt/tests/qmltests/api/tst_WebView_executeEditingCommand.qml' --- qt/tests/qmltests/api/tst_WebView_executeEditingCommand.qml 1970-01-01 00:00:00 +0000 +++ qt/tests/qmltests/api/tst_WebView_executeEditingCommand.qml 2015-06-03 10:13:08 +0000 @@ -0,0 +1,84 @@ +import QtQuick 2.0 +import QtTest 1.0 +import com.canonical.Oxide 1.8 +import com.canonical.Oxide.Testing 1.0 + +TestWebView { + id: webView + focus: true + width: 200 + height: 200 + + TestCase { + name: "WebView_executeEditingCommand" + when: windowShown + + function compare_textarea_value(expected) { + compare(webView.getTestApi().evaluateCode( + "document.querySelector(\"#textarea\").value"), expected); + } + + function get_selectionStart() { + return webView.getTestApi().evaluateCode( + "document.querySelector(\"#textarea\").selectionStart"); + } + + function get_selectionEnd() { + return webView.getTestApi().evaluateCode( + "document.querySelector(\"#textarea\").selectionEnd"); + } + + function init() { + webView.url = "http://testsuite/tst_WebView_executeEditingCommand.html"; + verify(webView.waitForLoadSucceeded(), + "Timed out waiting for successful load"); + compare_textarea_value("lorem ipsum"); + } + + function test_WebView_executeEditingCommand_undo_redo() { + webView.executeEditingCommand(WebView.EditingCommandSelectAll); + keyClick(Qt.Key_Backspace); + compare_textarea_value(""); + webView.executeEditingCommand(WebView.EditingCommandUndo); + compare_textarea_value("lorem ipsum"); + webView.executeEditingCommand(WebView.EditingCommandRedo); + compare_textarea_value(""); + } + + function test_WebView_executeEditingCommand_cut() { + webView.executeEditingCommand(WebView.EditingCommandSelectAll); + OxideTestingUtils.clearClipboard(); + webView.executeEditingCommand(WebView.EditingCommandCut); + compare_textarea_value(""); + compare(OxideTestingUtils.getFromClipboard("text/plain"), "lorem ipsum"); + } + + function test_WebView_executeEditingCommand_copy() { + webView.executeEditingCommand(WebView.EditingCommandSelectAll); + OxideTestingUtils.clearClipboard(); + webView.executeEditingCommand(WebView.EditingCommandCopy); + compare_textarea_value("lorem ipsum"); + compare(OxideTestingUtils.getFromClipboard("text/plain"), "lorem ipsum"); + } + + function test_WebView_executeEditingCommand_paste() { + webView.executeEditingCommand(WebView.EditingCommandSelectAll); + OxideTestingUtils.copyToClipboard("text/plain", "foo bar baz"); + webView.executeEditingCommand(WebView.EditingCommandPaste); + compare_textarea_value("foo bar baz"); + } + + function test_WebView_executeEditingCommand_erase() { + webView.executeEditingCommand(WebView.EditingCommandSelectAll); + webView.executeEditingCommand(WebView.EditingCommandErase); + compare_textarea_value(""); + } + + function test_WebView_executeEditingCommand_selectAll() { + compare(get_selectionStart(), get_selectionEnd()); + webView.executeEditingCommand(WebView.EditingCommandSelectAll); + compare(get_selectionStart(), 0); + compare(get_selectionEnd(), "lorem ipsum".length); + } + } +}