Merge lp:~alecu/pay-ui/more-cert-info into lp:pay-ui
- more-cert-info
- Merge into first-branch
Status: | Merged | ||||
---|---|---|---|---|---|
Approved by: | dobey | ||||
Approved revision: | 98 | ||||
Merged at revision: | 90 | ||||
Proposed branch: | lp:~alecu/pay-ui/more-cert-info | ||||
Merge into: | lp:pay-ui | ||||
Diff against target: |
617 lines (+404/-5) 15 files modified
app/components/SecurityCertificatePopover.qml (+145/-0) app/payui.qml (+16/-1) app/ui/CheckoutPage.qml (+31/-1) app/ui/UbuntuPurchaseWebkit.qml (+22/-1) backend/CMakeLists.txt (+2/-0) backend/modules/payui/backend.cpp (+5/-0) backend/modules/payui/certificateadapter.cpp (+46/-0) backend/modules/payui/certificateadapter.h (+51/-0) backend/modules/payui/network.cpp (+6/-0) backend/modules/payui/network.h (+2/-0) backend/modules/payui/oxideconstants.cpp (+19/-0) backend/modules/payui/oxideconstants.h (+53/-0) backend/modules/payui/purchase.cpp (+2/-0) backend/modules/payui/purchase.h (+2/-0) manifest.json (+2/-2) |
||||
To merge this branch: | bzr merge lp:~alecu/pay-ui/more-cert-info | ||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
dobey (community) | Approve | ||
PS Jenkins bot (community) | continuous-integration | Approve | |
Review via email: mp+243601@code.launchpad.net |
Commit message
Show certificate information for https connections
Description of the change
- 97. By Alejandro J. Cura
-
Remove spurious debug messages
PS Jenkins bot (ps-jenkins) wrote : | # |
dobey (dobey) wrote : | # |
Can you revert the changes to manifest.json? They are useful for testing, but as new strings are being added here, we'll need to notify translators and wait a few days to collect translations, before we should upload a new version to the store, I think. Or, you could change the i18n.tr() calls in this component, to i18n.dtr(
I'm also not particularly fond of the string used there, or the information provided in the popover, but alas, it does match what the browser would show.
Do the new .cpp/.h files come from webbrowser-app as well, or is it just the popover QML that came from there?
Alejandro J. Cura (alecu) wrote : | # |
On Thu, Dec 4, 2014 at 12:46 PM, Rodney Dawes
<email address hidden> wrote:
> Review: Needs Information
>
> Can you revert the changes to manifest.json? They are useful for testing, but as new strings are being added here, we'll need to notify translators and wait a few days to collect translations, before we should upload a new version to the store, I think. Or, you could change the i18n.tr() calls in this component, to i18n.dtr(
As suggested, I'm changing the calls to i18n.dtr(), so I'm keeping the
version change in the manifest.
> I'm also not particularly fond of the string used there, or the information provided in the popover, but alas, it does match what the browser would show.
Yes, the whole popup is taken from the webbrowser-app to keep it as
similar as possible.
> Do the new .cpp/.h files come from webbrowser-app as well, or is it just the popover QML that came from there?
Those files are new, and are there to mimic the constants returned by
the Oxide component, and to keep SecurityCertifi
close as possible to the original file, so it can be easily replaced
if changed.
Btw, the PrincipalAttr enum in Oxide matches the numeric values of
QSslCertificate
those values ever change, but it sounds unlikely.
- 98. By Alejandro J. Cura
-
Use the translations from webbrowser-app
dobey (dobey) : | # |
Preview Diff
1 | === added file 'app/components/SecurityCertificatePopover.qml' |
2 | --- app/components/SecurityCertificatePopover.qml 1970-01-01 00:00:00 +0000 |
3 | +++ app/components/SecurityCertificatePopover.qml 2014-12-04 20:37:26 +0000 |
4 | @@ -0,0 +1,145 @@ |
5 | +/* |
6 | + * Copyright 2014 Canonical Ltd. |
7 | + * |
8 | + * This file is part of webbrowser-app. |
9 | + * |
10 | + * webbrowser-app is free software; you can redistribute it and/or modify |
11 | + * it under the terms of the GNU General Public License as published by |
12 | + * the Free Software Foundation; version 3. |
13 | + * |
14 | + * webbrowser-app is distributed in the hope that it will be useful, |
15 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
16 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
17 | + * GNU General Public License for more details. |
18 | + * |
19 | + * You should have received a copy of the GNU General Public License |
20 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
21 | + */ |
22 | + |
23 | +import QtQuick 2.0 |
24 | +import Ubuntu.Components 1.1 |
25 | +import Ubuntu.Components.ListItems 1.0 |
26 | +import Ubuntu.Components.Popups 1.0 |
27 | +import payui 0.1 as Oxide |
28 | + |
29 | +Popover { |
30 | + id: certificatePopover |
31 | + |
32 | + property var securityStatus |
33 | + |
34 | + Column { |
35 | + width: parent.width - units.gu(4) |
36 | + anchors.horizontalCenter: parent.horizontalCenter |
37 | + spacing: units.gu(0.5) |
38 | + |
39 | + Item { |
40 | + height: units.gu(1.5) |
41 | + width: parent.width |
42 | + } |
43 | + |
44 | + Column { |
45 | + width: parent.width |
46 | + visible: securityStatus.securityLevel == Oxide.SecurityStatus.SecurityLevelWarning |
47 | + spacing: units.gu(0.5) |
48 | + |
49 | + Row { |
50 | + width: parent.width |
51 | + spacing: units.gu(0.5) |
52 | + |
53 | + Icon { |
54 | + name: "security-alert" |
55 | + height: units.gu(2) |
56 | + width: height |
57 | + } |
58 | + |
59 | + Label { |
60 | + width: parent.width |
61 | + wrapMode: Text.WordWrap |
62 | + text: i18n.dtr("webbrowser-app", "This site has insecure content") |
63 | + fontSize: "x-small" |
64 | + } |
65 | + } |
66 | + |
67 | + ThinDivider { |
68 | + width: parent.width |
69 | + anchors.leftMargin: 0 |
70 | + anchors.rightMargin: 0 |
71 | + } |
72 | + } |
73 | + |
74 | + Label { |
75 | + width: parent.width |
76 | + wrapMode: Text.WordWrap |
77 | + text: i18n.dtr("webbrowser-app", "You are connected to") |
78 | + fontSize: "x-small" |
79 | + } |
80 | + |
81 | + Label { |
82 | + width: parent.width |
83 | + wrapMode: Text.WordWrap |
84 | + text: securityStatus.certificate.subjectDisplayName |
85 | + fontSize: "x-small" |
86 | + } |
87 | + |
88 | + ThinDivider { |
89 | + width: parent.width |
90 | + anchors.leftMargin: 0 |
91 | + anchors.rightMargin: 0 |
92 | + visible: orgName.visible || localityName.visible || stateName.visible || countryName.visible |
93 | + } |
94 | + |
95 | + Label { |
96 | + width: parent.width |
97 | + wrapMode: Text.WordWrap |
98 | + visible: orgName.visible |
99 | + text: i18n.dtr("webbrowser-app", "Which is run by") |
100 | + fontSize: "x-small" |
101 | + } |
102 | + |
103 | + Label { |
104 | + id: orgName |
105 | + width: parent.width |
106 | + wrapMode: Text.WordWrap |
107 | + visible: text.length > 0 |
108 | + text: securityStatus.certificate.getSubjectInfo(Oxide.SslCertificate.PrincipalAttrOrganizationName).join(", ") |
109 | + fontSize: "x-small" |
110 | + } |
111 | + |
112 | + Label { |
113 | + id: localityName |
114 | + width: parent.width |
115 | + wrapMode: Text.WordWrap |
116 | + visible: text.length > 0 |
117 | + text: securityStatus.certificate.getSubjectInfo(Oxide.SslCertificate.PrincipalAttrLocalityName).join(", ") |
118 | + fontSize: "x-small" |
119 | + } |
120 | + |
121 | + Label { |
122 | + id: stateName |
123 | + width: parent.width |
124 | + wrapMode: Text.WordWrap |
125 | + visible: text.length > 0 |
126 | + text: securityStatus.certificate.getSubjectInfo(Oxide.SslCertificate.PrincipalAttrStateOrProvinceName).join(", ") |
127 | + fontSize: "x-small" |
128 | + } |
129 | + |
130 | + Label { |
131 | + id: countryName |
132 | + width: parent.width |
133 | + wrapMode: Text.WordWrap |
134 | + visible: text.length > 0 |
135 | + text: securityStatus.certificate.getSubjectInfo(Oxide.SslCertificate.PrincipalAttrCountryName).join(", ") |
136 | + fontSize: "x-small" |
137 | + } |
138 | + |
139 | + Item { |
140 | + height: units.gu(1.5) |
141 | + width: parent.width |
142 | + } |
143 | + } |
144 | + |
145 | + MouseArea { |
146 | + anchors.fill: parent |
147 | + onClicked: PopupUtils.close(certificatePopover) |
148 | + } |
149 | +} |
150 | |
151 | === modified file 'app/payui.qml' |
152 | --- app/payui.qml 2014-11-20 20:14:46 +0000 |
153 | +++ app/payui.qml 2014-12-04 20:37:26 +0000 |
154 | @@ -16,7 +16,7 @@ |
155 | |
156 | import QtQuick 2.0 |
157 | import QtQuick.LocalStorage 2.0 |
158 | -import Ubuntu.Components 0.1 |
159 | +import Ubuntu.Components 1.1 |
160 | import Ubuntu.Components.Popups 0.1 |
161 | import Ubuntu.OnlineAccounts 0.1 |
162 | import Ubuntu.OnlineAccounts.Client 0.1 |
163 | @@ -202,6 +202,10 @@ |
164 | mainView.hideLoading(); |
165 | checkout.showTwoFactor(); |
166 | } |
167 | + |
168 | + onCertificateFound: { |
169 | + checkout.certificate = cert |
170 | + } |
171 | } |
172 | |
173 | function showLoading() { |
174 | @@ -438,4 +442,15 @@ |
175 | } |
176 | } |
177 | } |
178 | + |
179 | + Rectangle { |
180 | + id: lockIconPlace |
181 | + width: units.gu(7) |
182 | + height: units.gu(7) |
183 | + anchors { |
184 | + right: parent.right |
185 | + top: parent.top |
186 | + } |
187 | + visible: false |
188 | + } |
189 | } |
190 | |
191 | === modified file 'app/ui/CheckoutPage.qml' |
192 | --- app/ui/CheckoutPage.qml 2014-11-20 20:14:46 +0000 |
193 | +++ app/ui/CheckoutPage.qml 2014-12-04 20:37:26 +0000 |
194 | @@ -15,8 +15,11 @@ |
195 | */ |
196 | |
197 | import QtQuick 2.0 |
198 | -import Ubuntu.Components 0.1 |
199 | +import Ubuntu.Components 1.1 |
200 | import Ubuntu.Components.ListItems 0.1 as ListItem |
201 | +import Ubuntu.Components.Popups 0.1 |
202 | +import payui 0.1 as Oxide |
203 | +import "../components" |
204 | |
205 | Page { |
206 | id: pageCheckout |
207 | @@ -35,6 +38,8 @@ |
208 | property alias model: selector.model |
209 | property alias password: passwordField.text |
210 | property alias otp: twoFactorField.text |
211 | + property alias certificate: otherSecurityStatus.certificate |
212 | + property alias securityStatus: otherSecurityStatus |
213 | |
214 | property bool hasPayments: false |
215 | property bool hasPreferredPayment: true |
216 | @@ -73,6 +78,31 @@ |
217 | } |
218 | } |
219 | |
220 | + QtObject { |
221 | + id: otherSecurityStatus |
222 | + property int securityLevel: certificate == null ? Oxide.SecurityStatus.SecurityLevelNone : Oxide.SecurityStatus.SecurityLevelSecure |
223 | + property var certificate: null |
224 | + } |
225 | + |
226 | + head.actions:[ |
227 | + Action { |
228 | + id: lockAction |
229 | + iconName: pageCheckout.securityStatus.securityLevel == Oxide.SecurityStatus.SecurityLevelSecure ? "lock" : "security-alert" |
230 | + onTriggered: { |
231 | + PopupUtils.open(popoverComponent, lockIconPlace, {"securityStatus": pageCheckout.securityStatus}) |
232 | + } |
233 | + } |
234 | + ] |
235 | + |
236 | + Component { |
237 | + id: popoverComponent |
238 | + |
239 | + SecurityCertificatePopover { |
240 | + id: certPopover |
241 | + securityStatus: null |
242 | + } |
243 | + } |
244 | + |
245 | Flickable { |
246 | id: checkoutFlickable |
247 | anchors { |
248 | |
249 | === modified file 'app/ui/UbuntuPurchaseWebkit.qml' |
250 | --- app/ui/UbuntuPurchaseWebkit.qml 2014-10-07 21:45:43 +0000 |
251 | +++ app/ui/UbuntuPurchaseWebkit.qml 2014-12-04 20:37:26 +0000 |
252 | @@ -15,9 +15,10 @@ |
253 | */ |
254 | |
255 | import QtQuick 2.0 |
256 | -import Ubuntu.Components 0.1 |
257 | +import Ubuntu.Components 1.1 |
258 | import Ubuntu.Components.Popups 0.1 |
259 | import Ubuntu.Web 0.2 |
260 | +import "../components" |
261 | |
262 | |
263 | Page { |
264 | @@ -31,6 +32,7 @@ |
265 | |
266 | property int keyboardSize: Qt.inputMethod.visible ? Qt.inputMethod.keyboardRectangle.height : 0 |
267 | property alias url: webView.url |
268 | + property var securityStatus: webView.securityStatus |
269 | |
270 | function parseQuery(url) { |
271 | var argsParsed = {}; |
272 | @@ -53,6 +55,25 @@ |
273 | return argsParsed; |
274 | } |
275 | |
276 | + head.actions:[ |
277 | + Action { |
278 | + id: lockAction |
279 | + iconName: pageWebkit.securityStatus.securityLevel ? "lock" : "security-alert" |
280 | + onTriggered: { |
281 | + PopupUtils.open(popoverComponent, lockIconPlace, {"securityStatus": pageWebkit.securityStatus}) |
282 | + } |
283 | + } |
284 | + ] |
285 | + |
286 | + Component { |
287 | + id: popoverComponent |
288 | + |
289 | + SecurityCertificatePopover { |
290 | + id: certPopover |
291 | + securityStatus: null |
292 | + } |
293 | + } |
294 | + |
295 | WebView { |
296 | id: webView |
297 | objectName: "webView" |
298 | |
299 | === modified file 'backend/CMakeLists.txt' |
300 | --- backend/CMakeLists.txt 2014-06-25 20:58:29 +0000 |
301 | +++ backend/CMakeLists.txt 2014-12-04 20:37:26 +0000 |
302 | @@ -17,6 +17,8 @@ |
303 | modules/payui/network.cpp |
304 | modules/payui/pay_info.cpp |
305 | modules/payui/credentials_service.cpp |
306 | + modules/payui/certificateadapter.cpp |
307 | + modules/payui/oxideconstants.cpp |
308 | ) |
309 | set(PAYUI_BACKEND payuibackend) |
310 | |
311 | |
312 | === modified file 'backend/modules/payui/backend.cpp' |
313 | --- backend/modules/payui/backend.cpp 2014-06-23 18:20:45 +0000 |
314 | +++ backend/modules/payui/backend.cpp 2014-12-04 20:37:26 +0000 |
315 | @@ -2,6 +2,8 @@ |
316 | #include <QtQml/QQmlContext> |
317 | #include "backend.h" |
318 | #include "purchase.h" |
319 | +#include "certificateadapter.h" |
320 | +#include "oxideconstants.h" |
321 | #include "pay_info.h" |
322 | |
323 | void BackendPlugin::registerTypes(const char *uri) |
324 | @@ -10,6 +12,9 @@ |
325 | |
326 | qmlRegisterType<UbuntuPurchase::Purchase>(uri, 0, 1, "Purchase"); |
327 | qmlRegisterType<UbuntuPurchase::PayInfo>(uri, 0, 1, "PayInfo"); |
328 | + qmlRegisterType<CertificateAdapter>(uri, 0, 1, "CertificateAdapter"); |
329 | + qmlRegisterType<SecurityStatus>(uri, 0, 1, "SecurityStatus"); |
330 | + qmlRegisterType<SslCertificate>(uri, 0, 1, "SslCertificate"); |
331 | } |
332 | |
333 | void BackendPlugin::initializeEngine(QQmlEngine *engine, const char *uri) |
334 | |
335 | === added file 'backend/modules/payui/certificateadapter.cpp' |
336 | --- backend/modules/payui/certificateadapter.cpp 1970-01-01 00:00:00 +0000 |
337 | +++ backend/modules/payui/certificateadapter.cpp 2014-12-04 20:37:26 +0000 |
338 | @@ -0,0 +1,46 @@ |
339 | +/* |
340 | + * Copyright 2014 Canonical Ltd. |
341 | + * |
342 | + * This program is free software; you can redistribute it and/or |
343 | + * modify it under the terms of version 3 of the GNU Lesser General Public |
344 | + * License as published by the Free Software Foundation. |
345 | + * |
346 | + * This program is distributed in the hope that it will be useful, |
347 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
348 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
349 | + * General Public License for more details. |
350 | + * |
351 | + * You should have received a copy of the GNU Lesser General Public |
352 | + * License along with this library; if not, write to the |
353 | + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
354 | + * Boston, MA 02110-1301, USA. |
355 | + */ |
356 | + |
357 | +#include <QStringList> |
358 | +#include "certificateadapter.h" |
359 | + |
360 | +CertificateAdapter::CertificateAdapter() |
361 | +{ |
362 | +} |
363 | + |
364 | +CertificateAdapter::CertificateAdapter(const CertificateAdapter &other) |
365 | +{ |
366 | + m_cert = other.m_cert; |
367 | +} |
368 | + |
369 | +CertificateAdapter::~CertificateAdapter() |
370 | +{ |
371 | +} |
372 | + |
373 | +CertificateAdapter::CertificateAdapter(QSslCertificate cert, QObject *parent) : |
374 | + QObject(parent), m_cert(cert) |
375 | +{ |
376 | +} |
377 | + |
378 | +QString CertificateAdapter::subjectDisplayName() { |
379 | + return m_cert.subjectInfo(QSslCertificate::CommonName).join(", "); |
380 | +} |
381 | + |
382 | +QStringList CertificateAdapter::getSubjectInfo(int subject) { |
383 | + return m_cert.subjectInfo((QSslCertificate::SubjectInfo)subject); |
384 | +} |
385 | |
386 | === added file 'backend/modules/payui/certificateadapter.h' |
387 | --- backend/modules/payui/certificateadapter.h 1970-01-01 00:00:00 +0000 |
388 | +++ backend/modules/payui/certificateadapter.h 2014-12-04 20:37:26 +0000 |
389 | @@ -0,0 +1,51 @@ |
390 | +/* |
391 | + * Copyright 2014 Canonical Ltd. |
392 | + * |
393 | + * This program is free software; you can redistribute it and/or |
394 | + * modify it under the terms of version 3 of the GNU Lesser General Public |
395 | + * License as published by the Free Software Foundation. |
396 | + * |
397 | + * This program is distributed in the hope that it will be useful, |
398 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
399 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
400 | + * General Public License for more details. |
401 | + * |
402 | + * You should have received a copy of the GNU Lesser General Public |
403 | + * License along with this library; if not, write to the |
404 | + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
405 | + * Boston, MA 02110-1301, USA. |
406 | + */ |
407 | + |
408 | +#ifndef CERTIFICATEADAPTER_H |
409 | +#define CERTIFICATEADAPTER_H |
410 | + |
411 | +#include <QObject> |
412 | +#include <QSslCertificate> |
413 | +#include <QMetaType> |
414 | + |
415 | +/* |
416 | + * Adapt a QSSlCertificate to the interface that oxide uses for certs. |
417 | + */ |
418 | +class CertificateAdapter : public QObject |
419 | +{ |
420 | + Q_OBJECT |
421 | + Q_PROPERTY(QString subjectDisplayName READ subjectDisplayName) |
422 | +public: |
423 | + CertificateAdapter(QSslCertificate cert, QObject *parent = 0); |
424 | + CertificateAdapter(const CertificateAdapter& other); |
425 | + CertificateAdapter(); |
426 | + ~CertificateAdapter(); |
427 | + |
428 | +signals: |
429 | + |
430 | +public slots: |
431 | + QStringList getSubjectInfo(int subject); |
432 | + |
433 | +protected: |
434 | + QString subjectDisplayName(); |
435 | + QSslCertificate m_cert; |
436 | +}; |
437 | + |
438 | +Q_DECLARE_METATYPE(CertificateAdapter); |
439 | + |
440 | +#endif // CERTIFICATEADAPTER_H |
441 | |
442 | === modified file 'backend/modules/payui/network.cpp' |
443 | --- backend/modules/payui/network.cpp 2014-11-18 14:54:05 +0000 |
444 | +++ backend/modules/payui/network.cpp 2014-12-04 20:37:26 +0000 |
445 | @@ -31,6 +31,8 @@ |
446 | #include <QDBusReply> |
447 | #include <QDBusConnection> |
448 | |
449 | +#include "certificateadapter.h" |
450 | + |
451 | #define URL_PACKAGE_INFO "https://search.apps.ubuntu.com/api/v1/package/" |
452 | #define ACCOUNT_CREDS_URL "https://login.ubuntu.com/api/v2/tokens/oauth" |
453 | |
454 | @@ -180,10 +182,14 @@ |
455 | } |
456 | } |
457 | } |
458 | + qDebug() << "Emit signal paymentTypesObtained"; |
459 | Q_EMIT paymentTypesObtained(listPays); |
460 | if (m_preferred == nullptr) { |
461 | Q_EMIT noPreferredPaymentMethod(); |
462 | } |
463 | + qDebug() << "Emit signal certificateFound"; |
464 | + CertificateAdapter* cert = new CertificateAdapter(reply->sslConfiguration().peerCertificate()); |
465 | + Q_EMIT certificateFound(cert); |
466 | } else if (state->operation.contains(BUY_ITEM) && document.isObject()) { |
467 | qDebug() << "Reply state:" << BUY_ITEM; |
468 | QJsonObject object = document.object(); |
469 | |
470 | === modified file 'backend/modules/payui/network.h' |
471 | --- backend/modules/payui/network.h 2014-11-04 19:39:34 +0000 |
472 | +++ backend/modules/payui/network.h 2014-12-04 20:37:26 +0000 |
473 | @@ -29,6 +29,7 @@ |
474 | #include <token.h> |
475 | #include "credentials_service.h" |
476 | |
477 | +#include "certificateadapter.h" |
478 | #include "pay_info.h" |
479 | |
480 | using namespace UbuntuOne; |
481 | @@ -94,6 +95,7 @@ |
482 | void loginError(const QString& message); |
483 | void twoFactorAuthRequired(); |
484 | void itemNotPurchased(); |
485 | + void certificateFound(QObject* cert); |
486 | |
487 | private Q_SLOTS: |
488 | void onReply(QNetworkReply*); |
489 | |
490 | === added file 'backend/modules/payui/oxideconstants.cpp' |
491 | --- backend/modules/payui/oxideconstants.cpp 1970-01-01 00:00:00 +0000 |
492 | +++ backend/modules/payui/oxideconstants.cpp 2014-12-04 20:37:26 +0000 |
493 | @@ -0,0 +1,19 @@ |
494 | +/* |
495 | + * Copyright 2014 Canonical Ltd. |
496 | + * |
497 | + * This program is free software; you can redistribute it and/or |
498 | + * modify it under the terms of version 3 of the GNU Lesser General Public |
499 | + * License as published by the Free Software Foundation. |
500 | + * |
501 | + * This program is distributed in the hope that it will be useful, |
502 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
503 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
504 | + * General Public License for more details. |
505 | + * |
506 | + * You should have received a copy of the GNU Lesser General Public |
507 | + * License along with this library; if not, write to the |
508 | + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
509 | + * Boston, MA 02110-1301, USA. |
510 | + */ |
511 | + |
512 | +#include "oxideconstants.h" |
513 | |
514 | === added file 'backend/modules/payui/oxideconstants.h' |
515 | --- backend/modules/payui/oxideconstants.h 1970-01-01 00:00:00 +0000 |
516 | +++ backend/modules/payui/oxideconstants.h 2014-12-04 20:37:26 +0000 |
517 | @@ -0,0 +1,53 @@ |
518 | +/* |
519 | + * Copyright 2014 Canonical Ltd. |
520 | + * |
521 | + * This program is free software; you can redistribute it and/or |
522 | + * modify it under the terms of version 3 of the GNU Lesser General Public |
523 | + * License as published by the Free Software Foundation. |
524 | + * |
525 | + * This program is distributed in the hope that it will be useful, |
526 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
527 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
528 | + * General Public License for more details. |
529 | + * |
530 | + * You should have received a copy of the GNU Lesser General Public |
531 | + * License along with this library; if not, write to the |
532 | + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
533 | + * Boston, MA 02110-1301, USA. |
534 | + */ |
535 | + |
536 | +#ifndef OXIDECONSTANTS_H |
537 | +#define OXIDECONSTANTS_H |
538 | + |
539 | +#include <QObject> |
540 | + |
541 | +class SecurityStatus : public QObject |
542 | +{ |
543 | + Q_OBJECT |
544 | + Q_ENUMS(SecurityLevel) |
545 | +public: |
546 | + enum SecurityLevel { |
547 | + SecurityLevelNone, |
548 | + SecurityLevelSecure, |
549 | + SecurityLevelSecureEV, |
550 | + SecurityLevelWarning, |
551 | + SecurityLevelError |
552 | + }; |
553 | +}; |
554 | + |
555 | +class SslCertificate : public QObject |
556 | +{ |
557 | + Q_OBJECT |
558 | + Q_ENUMS(PrincipalAttr) |
559 | +public: |
560 | + enum PrincipalAttr { |
561 | + PrincipalAttrOrganizationName, |
562 | + PrincipalAttrCommonName, |
563 | + PrincipalAttrLocalityName, |
564 | + PrincipalAttrOrganizationUnitName, |
565 | + PrincipalAttrCountryName, |
566 | + PrincipalAttrStateOrProvinceName |
567 | + }; |
568 | +}; |
569 | + |
570 | +#endif // OXIDECONSTANTS_H |
571 | |
572 | === modified file 'backend/modules/payui/purchase.cpp' |
573 | --- backend/modules/payui/purchase.cpp 2014-10-01 22:02:57 +0000 |
574 | +++ backend/modules/payui/purchase.cpp 2014-12-04 20:37:26 +0000 |
575 | @@ -40,6 +40,8 @@ |
576 | this, &Purchase::twoFactorAuthRequired); |
577 | connect(&m_network, &Network::itemNotPurchased, |
578 | this, &Purchase::itemNotPurchased); |
579 | + connect(&m_network, &Network::certificateFound, |
580 | + this, &Purchase::certificateFound); |
581 | |
582 | QCoreApplication* instance = QCoreApplication::instance(); |
583 | Logger::setupLogging(); |
584 | |
585 | === modified file 'backend/modules/payui/purchase.h' |
586 | --- backend/modules/payui/purchase.h 2014-10-01 22:02:57 +0000 |
587 | +++ backend/modules/payui/purchase.h 2014-12-04 20:37:26 +0000 |
588 | @@ -6,6 +6,7 @@ |
589 | #include <QString> |
590 | |
591 | #include "network.h" |
592 | +#include "certificateadapter.h" |
593 | |
594 | namespace UbuntuPurchase { |
595 | |
596 | @@ -45,6 +46,7 @@ |
597 | void loginError(const QString& message); |
598 | void twoFactorAuthRequired(); |
599 | void itemNotPurchased(); |
600 | + void certificateFound(QObject* cert); |
601 | |
602 | private: |
603 | Network m_network; |
604 | |
605 | === modified file 'manifest.json' |
606 | --- manifest.json 2014-10-16 18:49:09 +0000 |
607 | +++ manifest.json 2014-12-04 20:37:26 +0000 |
608 | @@ -11,6 +11,6 @@ |
609 | "pay-ui": "payui_payui.desktop" |
610 | } |
611 | }, |
612 | - "version": "0.4.2", |
613 | + "version": "0.4.3", |
614 | "maintainer": "Ubuntu Appstore Developers <ubuntu-appstore-developers@lists.launchpad.net>" |
615 | -} |
616 | +} |
617 | \ No newline at end of file |
PASSED: Continuous integration, rev:97 jenkins. qa.ubuntu. com/job/ pay-ui- ci/107/ jenkins. qa.ubuntu. com/job/ generic- click-builder- vivid-armhf/ 74 jenkins. qa.ubuntu. com/job/ pay-ui- vivid-amd64- ci/4 jenkins. qa.ubuntu. com/job/ pay-ui- vivid-armhf- ci/4 jenkins. qa.ubuntu. com/job/ pay-ui- vivid-armhf- ci/4/artifact/ work/output/ *zip*/output. zip jenkins. qa.ubuntu. com/job/ pay-ui- vivid-i386- ci/4
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
Click here to trigger a rebuild: s-jenkins. ubuntu- ci:8080/ job/pay- ui-ci/107/ rebuild
http://