~osomon/oxide/override-touchUngrabEvent

« back to all changes in this revision

Viewing changes to qt/tests/qmltests/api/tst_WebView_editingCapabilities.qml

  • Committer: Olivier Tilloy
  • Date: 2016-01-12 11:46:34 UTC
  • mfrom: (1272.2.38 touch-selection-api)
  • Revision ID: olivier.tilloy@canonical.com-20160112114634-u1t78baa0u4hfoha
Add a touch selection API, to allow embedders to display handles for resizing the current selection, and contextual actions for it.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
import QtQuick 2.0
 
2
import QtTest 1.0
 
3
import com.canonical.Oxide 1.12
 
4
import com.canonical.Oxide.Testing 1.0
 
5
 
 
6
TestWebView {
 
7
  id: webView
 
8
  focus: true
 
9
  width: 200
 
10
  height: 200
 
11
 
 
12
  SignalSpy {
 
13
    id: editingCapabilitiesSpy
 
14
    target: webView
 
15
    signalName: "editingCapabilitiesChanged"
 
16
  }
 
17
 
 
18
  TestCase {
 
19
    name: "WebView_editingCapabilities"
 
20
    when: windowShown
 
21
 
 
22
    function focus_textarea() {
 
23
      var r = webView.getTestApi().getBoundingClientRectForSelector("#textarea");
 
24
      mouseClick(webView, r.x + r.width / 2, r.y + r.height / 2, Qt.LeftButton);
 
25
      compare(webView.getTestApi().evaluateCode(
 
26
          "return document.activeElement.id;", true),
 
27
          "textarea");
 
28
    }
 
29
 
 
30
    function unfocus_textarea() {
 
31
      var r = webView.getTestApi().getBoundingClientRectForSelector("#p");
 
32
      mouseClick(webView, r.x + r.width / 2, r.y + r.height / 2, Qt.LeftButton);
 
33
      compare(webView.getTestApi().evaluateCode(
 
34
          "return document.activeElement.id;", true),
 
35
          "body");
 
36
    }
 
37
 
 
38
    function init() {
 
39
      webView.url = "http://testsuite/tst_WebView_editingCapabilities.html";
 
40
      verify(webView.waitForLoadSucceeded(),
 
41
             "Timed out waiting for successful load");
 
42
      Utils.clearClipboard();
 
43
      editingCapabilitiesSpy.clear();
 
44
    }
 
45
 
 
46
    function test_WebView_editingCapabilities_no_selection() {
 
47
      compare(webView.editingCapabilities, WebView.SelectAllCapability);
 
48
    }
 
49
 
 
50
    function test_WebView_editingCapabilities_page_selection() {
 
51
      webView.executeEditingCommand(WebView.EditingCommandSelectAll);
 
52
      editingCapabilitiesSpy.wait();
 
53
      compare(webView.editingCapabilities,
 
54
              WebView.CopyCapability | WebView.SelectAllCapability);
 
55
 
 
56
      editingCapabilitiesSpy.clear();
 
57
      webView.executeEditingCommand(WebView.EditingCommandCopy);
 
58
      compare(webView.editingCapabilities,
 
59
              WebView.CopyCapability | WebView.SelectAllCapability);
 
60
      compare(editingCapabilitiesSpy.count, 0);
 
61
    }
 
62
 
 
63
    function test_WebView_editingCapabilities_textarea_selection() {
 
64
      focus_textarea();
 
65
      editingCapabilitiesSpy.wait();
 
66
      compare(webView.editingCapabilities, WebView.SelectAllCapability);
 
67
 
 
68
      webView.executeEditingCommand(WebView.EditingCommandSelectAll);
 
69
      editingCapabilitiesSpy.wait();
 
70
      compare(webView.editingCapabilities,
 
71
              WebView.CutCapability | WebView.CopyCapability |
 
72
              WebView.EraseCapability | WebView.SelectAllCapability);
 
73
 
 
74
      webView.executeEditingCommand(WebView.EditingCommandCopy);
 
75
      editingCapabilitiesSpy.wait();
 
76
      compare(webView.editingCapabilities,
 
77
              WebView.CutCapability | WebView.CopyCapability |
 
78
              WebView.PasteCapability | WebView.EraseCapability |
 
79
              WebView.SelectAllCapability);
 
80
 
 
81
      webView.executeEditingCommand(WebView.EditingCommandCut);
 
82
      editingCapabilitiesSpy.wait();
 
83
      compare(webView.editingCapabilities,
 
84
              WebView.PasteCapability | WebView.SelectAllCapability);
 
85
 
 
86
      webView.executeEditingCommand(WebView.EditingCommandUndo);
 
87
      // FIXME: https://launchpad.net/bugs/1524288
 
88
      /*editingCapabilitiesSpy.wait();
 
89
      compare(webView.editingCapabilities,
 
90
              WebView.CutCapability | WebView.CopyCapability |
 
91
              WebView.PasteCapability | WebView.EraseCapability |
 
92
              WebView.SelectAllCapability);*/
 
93
 
 
94
      webView.executeEditingCommand(WebView.EditingCommandRedo);
 
95
      // FIXME: https://launchpad.net/bugs/1524288
 
96
      /*editingCapabilitiesSpy.wait();
 
97
      compare(webView.editingCapabilities,
 
98
              WebView.PasteCapability | WebView.SelectAllCapability);*/
 
99
 
 
100
      webView.executeEditingCommand(WebView.EditingCommandPaste);
 
101
      compare(webView.editingCapabilities,
 
102
              WebView.PasteCapability | WebView.SelectAllCapability);
 
103
 
 
104
      webView.executeEditingCommand(WebView.EditingCommandSelectAll);
 
105
      editingCapabilitiesSpy.wait();
 
106
      compare(webView.editingCapabilities,
 
107
              WebView.CutCapability | WebView.CopyCapability |
 
108
              WebView.PasteCapability | WebView.EraseCapability |
 
109
              WebView.SelectAllCapability);
 
110
 
 
111
      webView.executeEditingCommand(WebView.EditingCommandErase);
 
112
      // FIXME: https://launchpad.net/bugs/1524288
 
113
      /*editingCapabilitiesSpy.wait();
 
114
      compare(webView.editingCapabilities,
 
115
              WebView.PasteCapability | WebView.SelectAllCapability);*/
 
116
    }
 
117
 
 
118
    function test_WebView_editingCapabilities_clipboard_data_changed() {
 
119
      focus_textarea();
 
120
      compare(webView.editingCapabilities, WebView.SelectAllCapability);
 
121
 
 
122
      Utils.copyToClipboard("text/plain", "foo bar baz");
 
123
      editingCapabilitiesSpy.wait();
 
124
      compare(webView.editingCapabilities,
 
125
              WebView.PasteCapability | WebView.SelectAllCapability);
 
126
 
 
127
      Utils.clearClipboard();
 
128
      editingCapabilitiesSpy.wait();
 
129
      compare(webView.editingCapabilities, WebView.SelectAllCapability);
 
130
    }
 
131
  }
 
132
}