Merge ~osomon/oxide:expose-selection-text into oxide:master

Proposed by Olivier Tilloy
Status: Merged
Approved by: Chris Coulson
Approved revision: 3aa24c929e252224bfefd4ed3703c564022a3675
Merged at revision: 72960df1e36a3a10a66b73882c2bcd12bbcf4f64
Proposed branch: ~osomon/oxide:expose-selection-text
Merge into: oxide:master
Diff against target: 204 lines (+44/-13)
5 files modified
qt/core/api/oxideqwebcontextmenuparams.cc (+6/-1)
qt/core/api/oxideqwebcontextmenuparams.h (+3/-1)
qt/core/api/oxideqwebcontextmenuparams_p.h (+2/-1)
qt/tests/qmltests/ubuntu_api/tst_UbuntuWebView_contextMenuOpening.qml (+21/-0)
qt/tests/unit/oxideqwebcontextmenuparams/tst_oxideqwebcontextmenuparams.cc (+12/-10)
Reviewer Review Type Date Requested Status
Oxide Developers Pending
Review via email: mp+320056@code.launchpad.net

Commit message

Expose selection text in OxideQWebContextMenuParams (LP: #1669732).

To post a comment you must log in.
~osomon/oxide:expose-selection-text updated
3aa24c9... by Olivier Tilloy

Expose selection text in OxideQWebContextMenuParams (LP: #1669732).

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/qt/core/api/oxideqwebcontextmenuparams.cc b/qt/core/api/oxideqwebcontextmenuparams.cc
2index 2ea24e8..6d5f63a 100644
3--- a/qt/core/api/oxideqwebcontextmenuparams.cc
4+++ b/qt/core/api/oxideqwebcontextmenuparams.cc
5@@ -1,5 +1,5 @@
6 // vim:expandtab:shiftwidth=2:tabstop=2:
7-// Copyright (C) 2016 Canonical Ltd.
8+// Copyright (C) 2016-2017 Canonical Ltd.
9
10 // This library is free software; you can redistribute it and/or
11 // modify it under the terms of the GNU Lesser General Public
12@@ -56,6 +56,7 @@ OxideQWebContextMenuParams OxideQWebContextMenuParamsData::Create(
13 d->link_text = params.link_text;
14 d->title_text = params.title_text;
15 d->src_url = params.src_url;
16+ d->selection_text = params.selection_text;
17
18 return OxideQWebContextMenuParams(d);
19 }
20@@ -129,3 +130,7 @@ QString OxideQWebContextMenuParams::titleText() const {
21 QUrl OxideQWebContextMenuParams::srcUrl() const {
22 return d->src_url;
23 }
24+
25+QString OxideQWebContextMenuParams::selectionText() const {
26+ return d->selection_text;
27+}
28diff --git a/qt/core/api/oxideqwebcontextmenuparams.h b/qt/core/api/oxideqwebcontextmenuparams.h
29index fb8e78b..cca8f0c 100644
30--- a/qt/core/api/oxideqwebcontextmenuparams.h
31+++ b/qt/core/api/oxideqwebcontextmenuparams.h
32@@ -1,5 +1,5 @@
33 // vim:expandtab:shiftwidth=2:tabstop=2:
34-// Copyright (C) 2016 Canonical Ltd.
35+// Copyright (C) 2016-2017 Canonical Ltd.
36
37 // This library is free software; you can redistribute it and/or
38 // modify it under the terms of the GNU Lesser General Public
39@@ -42,6 +42,7 @@ class OXIDE_QTCORE_EXPORT OxideQWebContextMenuParams {
40 Q_PROPERTY(QString linkText READ linkText)
41 Q_PROPERTY(QString titleText READ titleText)
42 Q_PROPERTY(QUrl srcUrl READ srcUrl)
43+ Q_PROPERTY(QString selectionText READ selectionText)
44
45 Q_ENUMS(MediaType)
46
47@@ -75,6 +76,7 @@ class OXIDE_QTCORE_EXPORT OxideQWebContextMenuParams {
48 QString linkText() const;
49 QString titleText() const;
50 QUrl srcUrl() const;
51+ QString selectionText() const;
52
53 private:
54 friend class OxideQWebContextMenuParamsData;
55diff --git a/qt/core/api/oxideqwebcontextmenuparams_p.h b/qt/core/api/oxideqwebcontextmenuparams_p.h
56index b6376e9..401033b 100644
57--- a/qt/core/api/oxideqwebcontextmenuparams_p.h
58+++ b/qt/core/api/oxideqwebcontextmenuparams_p.h
59@@ -1,5 +1,5 @@
60 // vim:expandtab:shiftwidth=2:tabstop=2:
61-// Copyright (C) 2016 Canonical Ltd.
62+// Copyright (C) 2016-2017 Canonical Ltd.
63
64 // This library is free software; you can redistribute it and/or
65 // modify it under the terms of the GNU Lesser General Public
66@@ -52,6 +52,7 @@ class OXIDE_QTCORE_EXPORT OxideQWebContextMenuParamsData : public QSharedData {
67 QString link_text;
68 QString title_text;
69 QUrl src_url;
70+ QString selection_text;
71 };
72
73 #endif // _OXIDE_QT_CORE_API_WEB_CONTEXT_MENU_PARAMS_P_H_
74diff --git a/qt/tests/qmltests/ubuntu_api/tst_UbuntuWebView_contextMenuOpening.qml b/qt/tests/qmltests/ubuntu_api/tst_UbuntuWebView_contextMenuOpening.qml
75index 6ff5b73..57df94e 100644
76--- a/qt/tests/qmltests/ubuntu_api/tst_UbuntuWebView_contextMenuOpening.qml
77+++ b/qt/tests/qmltests/ubuntu_api/tst_UbuntuWebView_contextMenuOpening.qml
78@@ -203,5 +203,26 @@ UbuntuTestWebView {
79 verify(callback.wait());
80 webView.contextMenuOpening.disconnect(callback);
81 }
82+
83+ function test_UbuntuWebView_contextMenuOpening3_selectionText() {
84+ function contextMenuOpeningHandler(params, menu) {
85+ verify(params.isSelection);
86+ compare(params.selectionText, "Some text");
87+ }
88+
89+ var callback = wrapCallbackTestSequence(contextMenuOpeningHandler);
90+ webView.contextMenuOpening.connect(callback);
91+
92+ webView.getTestApi().evaluateCode(
93+ "var range = document.createRange(); " +
94+ "range.selectNodeContents(document.getElementById(\"text\")); " +
95+ "var selection = window.getSelection(); " +
96+ "selection.removeAllRanges(); selection.addRange(range);")
97+ var r = webView.getTestApi().getBoundingClientRectForSelector("#text");
98+ mouseClick(webView, r.x + r.width / 2, r.y + r.height / 2, Qt.RightButton);
99+
100+ verify(callback.wait());
101+ webView.contextMenuOpening.disconnect(callback);
102+ }
103 }
104 }
105diff --git a/qt/tests/unit/oxideqwebcontextmenuparams/tst_oxideqwebcontextmenuparams.cc b/qt/tests/unit/oxideqwebcontextmenuparams/tst_oxideqwebcontextmenuparams.cc
106index c9533e3..8e4ae75 100644
107--- a/qt/tests/unit/oxideqwebcontextmenuparams/tst_oxideqwebcontextmenuparams.cc
108+++ b/qt/tests/unit/oxideqwebcontextmenuparams/tst_oxideqwebcontextmenuparams.cc
109@@ -1,5 +1,5 @@
110 // vim:expandtab:shiftwidth=2:tabstop=2:
111-// Copyright (C) 2016 Canonical Ltd.
112+// Copyright (C) 2016-2017 Canonical Ltd.
113
114 // This library is free software; you can redistribute it and/or
115 // modify it under the terms of the GNU Lesser General Public
116@@ -77,18 +77,19 @@ void tst_oxideqwebcontextmenuparams::construct() {
117 "Test title",
118 oxide::qt::MEDIA_TYPE_IMAGE,
119 QUrl("http://www.example.com/image.jpg"),
120- "", false));
121+ "Lorem ipsum dolor sit amet", false));
122
123 QCOMPARE(params.pageUrl(), QUrl("https://www.twitter.com/"));
124 QCOMPARE(params.frameUrl(), QUrl("https://www.google.com/"));
125 QVERIFY(params.isLink());
126 QVERIFY(!params.isEditable());
127- QVERIFY(!params.isSelection());
128+ QVERIFY(params.isSelection());
129 QCOMPARE(params.mediaType(), OxideQWebContextMenuParams::MediaTypeImage);
130 QCOMPARE(params.linkUrl(), QUrl("http://www.example.com/"));
131 QCOMPARE(params.linkText(), QLatin1String("Test link"));
132 QCOMPARE(params.titleText(), QLatin1String("Test title"));
133 QCOMPARE(params.srcUrl(), QUrl("http://www.example.com/image.jpg"));
134+ QCOMPARE(params.selectionText(), QLatin1String("Lorem ipsum dolor sit amet"));
135 }
136
137 void tst_oxideqwebcontextmenuparams::assignment() {
138@@ -104,18 +105,19 @@ void tst_oxideqwebcontextmenuparams::assignment() {
139 "Test title",
140 oxide::qt::MEDIA_TYPE_IMAGE,
141 QUrl("http://www.example.com/image.jpg"),
142- "", false));
143+ "Lorem ipsum dolor sit amet", false));
144
145 QCOMPARE(params.pageUrl(), QUrl("https://www.twitter.com/"));
146 QCOMPARE(params.frameUrl(), QUrl("https://www.google.com/"));
147 QVERIFY(params.isLink());
148 QVERIFY(!params.isEditable());
149- QVERIFY(!params.isSelection());
150+ QVERIFY(params.isSelection());
151 QCOMPARE(params.mediaType(), OxideQWebContextMenuParams::MediaTypeImage);
152 QCOMPARE(params.linkUrl(), QUrl("http://www.example.com/"));
153 QCOMPARE(params.linkText(), QLatin1String("Test link"));
154 QCOMPARE(params.titleText(), QLatin1String("Test title"));
155 QCOMPARE(params.srcUrl(), QUrl("http://www.example.com/image.jpg"));
156+ QCOMPARE(params.selectionText(), QLatin1String("Lorem ipsum dolor sit amet"));
157 }
158
159 void tst_oxideqwebcontextmenuparams::copy() {
160@@ -154,7 +156,7 @@ void tst_oxideqwebcontextmenuparams::equality() {
161 "Test title",
162 oxide::qt::MEDIA_TYPE_IMAGE,
163 QUrl("http://www.example.com/image.jpg"),
164- "", false);
165+ "Lorem ipsum dolor sit amet", false);
166
167 OxideQWebContextMenuParams params1 =
168 OxideQWebContextMenuParamsData::Create(input_params);
169@@ -181,7 +183,7 @@ void tst_oxideqwebcontextmenuparams::isLink() {
170 "Test title",
171 oxide::qt::MEDIA_TYPE_IMAGE,
172 QUrl("http://www.example.com/image.jpg"),
173- "", false);
174+ "Lorem ipsum dolor sit amet", false);
175
176 OxideQWebContextMenuParams params =
177 OxideQWebContextMenuParamsData::Create(input_params);
178@@ -201,7 +203,7 @@ void tst_oxideqwebcontextmenuparams::isEditable() {
179 "Test title",
180 oxide::qt::MEDIA_TYPE_IMAGE,
181 QUrl("http://www.example.com/image.jpg"),
182- "", false);
183+ "Lorem ipsum dolor sit amet", false);
184
185 OxideQWebContextMenuParams params =
186 OxideQWebContextMenuParamsData::Create(input_params);
187@@ -227,7 +229,7 @@ void tst_oxideqwebcontextmenuparams::isSelection() {
188 OxideQWebContextMenuParamsData::Create(input_params);
189 QVERIFY(!params.isSelection());
190
191- input_params.selection_text = "Foo";
192+ input_params.selection_text = "Lorem ipsum dolor sit amet";
193 params = OxideQWebContextMenuParamsData::Create(input_params);
194 QVERIFY(params.isSelection());
195 }
196@@ -241,7 +243,7 @@ void tst_oxideqwebcontextmenuparams::mediaType() {
197 "Test title",
198 oxide::qt::MEDIA_TYPE_IMAGE,
199 QUrl("http://www.example.com/image.jpg"),
200- "", false);
201+ "Lorem ipsum dolor sit amet", false);
202
203 OxideQWebContextMenuParams params =
204 OxideQWebContextMenuParamsData::Create(input_params);

Subscribers

People subscribed via source and target branches