Merge lp:~mandel/ubuntu-download-manager/properties into lp:ubuntu-download-manager
- properties
- Merge into trunk
Status: | Merged |
---|---|
Approved by: | Ricardo Mendoza |
Approved revision: | no longer in the source branch. |
Merged at revision: | 322 |
Proposed branch: | lp:~mandel/ubuntu-download-manager/properties |
Merge into: | lp:ubuntu-download-manager |
Diff against target: |
816 lines (+410/-29) 19 files modified
CMakeLists.txt (+1/-1) debian/changelog (+7/-0) debian/libudm-common0.symbols (+12/-0) docs/dbus/com.canonical.applications.download.xml (+10/-4) src/common/public/ubuntu/transfers/metadata.cpp (+54/-3) src/common/public/ubuntu/transfers/metadata.h (+15/-0) src/downloads/priv/ubuntu/downloads/download.cpp (+19/-0) src/downloads/priv/ubuntu/downloads/download.h (+9/-1) src/downloads/priv/ubuntu/downloads/download_adaptor.cpp (+19/-1) src/downloads/priv/ubuntu/downloads/download_adaptor.h (+16/-4) src/downloads/priv/ubuntu/downloads/file_download.cpp (+11/-8) src/downloads/priv/ubuntu/downloads/mms_file_download.cpp (+2/-0) tests/downloads/client/test_client_manager.cpp (+1/-1) tests/downloads/daemon/test_download.cpp (+29/-0) tests/downloads/daemon/test_download.h (+2/-0) tests/downloads/daemon/test_metadata.cpp (+159/-6) tests/downloads/daemon/test_metadata.h (+18/-0) tests/downloads/daemon/test_mms_download.cpp (+25/-0) tests/downloads/daemon/test_mms_download.h (+1/-0) |
To merge this branch: | bzr merge lp:~mandel/ubuntu-download-manager/properties |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
PS Jenkins bot | continuous-integration | Approve | |
Ricardo Mendoza (community) | Approve | ||
Review via email: mp+233348@code.launchpad.net |
Commit message
Add properties that will allow the indicator filter the downloads accordingly. This new properties change the ABI.
Description of the change
Add properties that will allow the indicator filter the downloads accordingly. The udm clients that use the cpp lib can use the new methods in the metadata object to set the properties at creation time of the download.
The click property CANNOT be set by confined applications (something that is tested) so that click applications cannot create downloads that look as a click app in the indicator.
PS Jenkins bot (ps-jenkins) wrote : | # |
Ricardo Mendoza (ricmm) wrote : | # |
LGTM, minor typos.
PS Jenkins bot (ps-jenkins) wrote : | # |
PASSED: Continuous integration, rev:324
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild:
http://
- 324. By Manuel de la Peña
-
Update the version number.
- 325. By Manuel de la Peña
-
Merged with previous code in the review.
- 326. By Manuel de la Peña
-
Merged with trunk.
- 327. By Manuel de la Peña
-
Increase the timeout in some failing tests when building the .deb
Preview Diff
1 | === modified file 'CMakeLists.txt' |
2 | --- CMakeLists.txt 2014-07-17 08:40:07 +0000 |
3 | +++ CMakeLists.txt 2014-09-22 17:35:56 +0000 |
4 | @@ -31,7 +31,7 @@ |
5 | ) |
6 | |
7 | set(UDM_VERSION_MAJOR 0) |
8 | -set(UDM_VERSION_MINOR 7) |
9 | +set(UDM_VERSION_MINOR 9) |
10 | set(UDM_VERSION_PATCH 0) |
11 | |
12 | find_package(Gtest REQUIRED) |
13 | |
14 | === modified file 'debian/changelog' |
15 | --- debian/changelog 2014-09-16 02:33:46 +0000 |
16 | +++ debian/changelog 2014-09-22 17:35:56 +0000 |
17 | @@ -1,3 +1,10 @@ |
18 | +ubuntu-download-manager (0.9) UNRELEASED; urgency=medium |
19 | + |
20 | + * Add new properties that can be used to filter the downloads shown in the |
21 | + indicator. This changes the ABI. |
22 | + |
23 | + -- Manuel de la Pena <manuel.delapena@canonical.com> Thu, 04 Sep 2014 13:36:59 +0200 |
24 | + |
25 | ubuntu-download-manager (0.8+14.10.20140916-0ubuntu1) 14.09; urgency=low |
26 | |
27 | [ Sergio Schvezov ] |
28 | |
29 | === modified file 'debian/libudm-common0.symbols' |
30 | --- debian/libudm-common0.symbols 2014-07-14 15:14:37 +0000 |
31 | +++ debian/libudm-common0.symbols 2014-09-22 17:35:56 +0000 |
32 | @@ -74,6 +74,18 @@ |
33 | (c++)"Ubuntu::Transfers::System::Logger::~Logger()@Base" 0.4+14.10.20140618 |
34 | (c++)"Ubuntu::Transfers::System::Logger::~Logger()@Base" 0.4+14.10.20140618 |
35 | (c++)"Ubuntu::Transfers::System::Logger::~Logger()@Base" 0.4+14.10.20140618 |
36 | + (c++)"Ubuntu::Transfers::Metadata::setClickPackage(QString const&)@Base" 0replaceme |
37 | + (c++)"Ubuntu::Transfers::Metadata::CLICK_PACKAGE_KEY@Base" 0replaceme |
38 | + (c++)"Ubuntu::Transfers::Metadata::setShowInIndicator(bool)@Base" 0replaceme |
39 | + (c++)"Ubuntu::Transfers::Metadata::SHOW_IN_INDICATOR_KEY@Base" 0replaceme |
40 | + (c++)"Ubuntu::Transfers::Metadata::setTitle(QString const&)@Base" 0replaceme |
41 | + (c++)"Ubuntu::Transfers::Metadata::TITLE_KEY@Base" 0replaceme |
42 | + (c++)"Ubuntu::Transfers::Metadata::clickPackage() const@Base" 0replaceme |
43 | + (c++)"Ubuntu::Transfers::Metadata::hasClickPackage() const@Base" 0replaceme |
44 | + (c++)"Ubuntu::Transfers::Metadata::showInIndicator() const@Base" 0replaceme |
45 | + (c++)"Ubuntu::Transfers::Metadata::hasShowInIndicator() const@Base" 0replaceme |
46 | + (c++)"Ubuntu::Transfers::Metadata::title() const@Base" 0replaceme |
47 | + (c++)"Ubuntu::Transfers::Metadata::hasTitle() const@Base" 0replaceme |
48 | (c++)"Ubuntu::Transfers::Metadata::setCommand(QString const&)@Base" 0.4+14.10.20140618 |
49 | (c++)"Ubuntu::Transfers::Metadata::COMMAND_KEY@Base" 0.4+14.10.20140618 |
50 | (c++)"Ubuntu::Transfers::Metadata::setLocalPath(QString const&)@Base" 0.4+14.10.20140618 |
51 | |
52 | === modified file 'docs/dbus/com.canonical.applications.download.xml' |
53 | --- docs/dbus/com.canonical.applications.download.xml 2014-06-18 11:10:18 +0000 |
54 | +++ docs/dbus/com.canonical.applications.download.xml 2014-09-22 17:35:56 +0000 |
55 | @@ -14,6 +14,10 @@ |
56 | <arg name="data" type="a{sv}" direction="out" /> |
57 | </method> |
58 | |
59 | + <method name="throttle"> |
60 | + <arg name="speed" type="t" direction="out"/> |
61 | + </method> |
62 | + |
63 | <method name="setThrottle"> |
64 | <arg name="speed" type="t" direction="in"/> |
65 | </method> |
66 | @@ -28,10 +32,6 @@ |
67 | <arg name="headers" type="a{ss}" direction="in"/> |
68 | </method> |
69 | |
70 | - <method name="throttle"> |
71 | - <arg name="speed" type="t" direction="out"/> |
72 | - </method> |
73 | - |
74 | <method name="setDestinationDir"> |
75 | <arg name="path" type="s" direction="in"/> |
76 | </method> |
77 | @@ -102,5 +102,11 @@ |
78 | <arg name="path" type="s" direction="out"/> |
79 | </signal> |
80 | |
81 | + <property access="read" type="b" name="ShowInIndicator" /> |
82 | + |
83 | + <property access="read" type="s" name="Title" /> |
84 | + |
85 | + <property access="read" type="s" name="ClickPackage" /> |
86 | + |
87 | </interface> |
88 | </node> |
89 | |
90 | === modified file 'src/common/public/ubuntu/transfers/metadata.cpp' |
91 | --- src/common/public/ubuntu/transfers/metadata.cpp 2014-03-26 10:00:28 +0000 |
92 | +++ src/common/public/ubuntu/transfers/metadata.cpp 2014-09-22 17:35:56 +0000 |
93 | @@ -26,11 +26,14 @@ |
94 | const QString Metadata::COMMAND_FILE_KEY = "$file"; |
95 | const QString Metadata::LOCAL_PATH_KEY = "local-path"; |
96 | const QString Metadata::OBJECT_PATH_KEY = "objectpath"; |
97 | +const QString Metadata::TITLE_KEY = "title"; |
98 | +const QString Metadata::SHOW_IN_INDICATOR_KEY = "indicator-shown"; |
99 | +const QString Metadata::CLICK_PACKAGE_KEY = "click-package"; |
100 | |
101 | QString |
102 | Metadata::command() const { |
103 | return (contains(Metadata::COMMAND_KEY))? |
104 | - value(COMMAND_KEY).toString():""; |
105 | + value(Metadata::COMMAND_KEY).toString():""; |
106 | } |
107 | |
108 | void |
109 | @@ -46,7 +49,7 @@ |
110 | QString |
111 | Metadata::localPath() const { |
112 | return (contains(Metadata::LOCAL_PATH_KEY))? |
113 | - value(LOCAL_PATH_KEY).toString():""; |
114 | + value(Metadata::LOCAL_PATH_KEY).toString():""; |
115 | } |
116 | |
117 | void |
118 | @@ -62,7 +65,7 @@ |
119 | QString |
120 | Metadata::objectPath() const { |
121 | return (contains(Metadata::OBJECT_PATH_KEY))? |
122 | - value(OBJECT_PATH_KEY).toString():""; |
123 | + value(Metadata::OBJECT_PATH_KEY).toString():""; |
124 | } |
125 | |
126 | void |
127 | @@ -75,6 +78,54 @@ |
128 | return contains(Metadata::OBJECT_PATH_KEY); |
129 | } |
130 | |
131 | +QString |
132 | +Metadata::title() const { |
133 | + return (contains(Metadata::TITLE_KEY))? |
134 | + value(Metadata::TITLE_KEY).toString():""; |
135 | +} |
136 | + |
137 | +void |
138 | +Metadata::setTitle(const QString& title) { |
139 | + insert(Metadata::TITLE_KEY, title); |
140 | +} |
141 | + |
142 | +bool |
143 | +Metadata::hasTitle() const { |
144 | + return contains(Metadata::TITLE_KEY); |
145 | +} |
146 | + |
147 | +bool |
148 | +Metadata::showInIndicator() const { |
149 | + return (contains(Metadata::SHOW_IN_INDICATOR_KEY))? |
150 | + value(Metadata::SHOW_IN_INDICATOR_KEY).toBool():true; |
151 | +} |
152 | + |
153 | +void |
154 | +Metadata::setShowInIndicator(bool shown) { |
155 | + insert(Metadata::SHOW_IN_INDICATOR_KEY, shown); |
156 | +} |
157 | + |
158 | +bool |
159 | +Metadata::hasShowInIndicator() const { |
160 | + return contains(Metadata::SHOW_IN_INDICATOR_KEY); |
161 | +} |
162 | + |
163 | +QString |
164 | +Metadata::clickPackage() const { |
165 | + return (contains(Metadata::CLICK_PACKAGE_KEY))? |
166 | + value(Metadata::CLICK_PACKAGE_KEY).toString():""; |
167 | +} |
168 | + |
169 | +void |
170 | +Metadata::setClickPackage(const QString& click) { |
171 | + insert(Metadata::CLICK_PACKAGE_KEY, click); |
172 | +} |
173 | + |
174 | +bool |
175 | +Metadata::hasClickPackage() const { |
176 | + return contains(Metadata::CLICK_PACKAGE_KEY); |
177 | +} |
178 | + |
179 | } // DownloadManager |
180 | |
181 | } // Ubuntu |
182 | |
183 | === modified file 'src/common/public/ubuntu/transfers/metadata.h' |
184 | --- src/common/public/ubuntu/transfers/metadata.h 2014-03-26 10:00:28 +0000 |
185 | +++ src/common/public/ubuntu/transfers/metadata.h 2014-09-22 17:35:56 +0000 |
186 | @@ -34,6 +34,9 @@ |
187 | static const QString COMMAND_FILE_KEY; |
188 | static const QString LOCAL_PATH_KEY; |
189 | static const QString OBJECT_PATH_KEY; |
190 | + static const QString TITLE_KEY; |
191 | + static const QString SHOW_IN_INDICATOR_KEY; |
192 | + static const QString CLICK_PACKAGE_KEY; |
193 | |
194 | // accessors to simplify the use of the metadata |
195 | QString command() const; |
196 | @@ -47,6 +50,18 @@ |
197 | QString objectPath() const; |
198 | void setObjectPath(const QString& path); |
199 | bool hasObjectPath() const; |
200 | + |
201 | + QString title() const; |
202 | + void setTitle(const QString& title); |
203 | + bool hasTitle() const; |
204 | + |
205 | + bool showInIndicator() const; |
206 | + void setShowInIndicator(bool shown); |
207 | + bool hasShowInIndicator() const; |
208 | + |
209 | + QString clickPackage() const; |
210 | + void setClickPackage(const QString& click); |
211 | + bool hasClickPackage() const; |
212 | }; |
213 | |
214 | } // DownloadManager |
215 | |
216 | === modified file 'src/downloads/priv/ubuntu/downloads/download.cpp' |
217 | --- src/downloads/priv/ubuntu/downloads/download.cpp 2014-07-16 08:41:38 +0000 |
218 | +++ src/downloads/priv/ubuntu/downloads/download.cpp 2014-09-22 17:35:56 +0000 |
219 | @@ -17,6 +17,7 @@ |
220 | */ |
221 | |
222 | #include <QStringList> |
223 | +#include "ubuntu/transfers/metadata.h" |
224 | #include "ubuntu/transfers/system/logger.h" |
225 | #include "download.h" |
226 | |
227 | @@ -57,6 +58,24 @@ |
228 | emit error(errorStr); |
229 | } |
230 | |
231 | +QString |
232 | +Download::clickPackage() const { |
233 | + return (_metadata.contains(Metadata::CLICK_PACKAGE_KEY))? |
234 | + _metadata.value(Metadata::CLICK_PACKAGE_KEY).toString():""; |
235 | +} |
236 | + |
237 | +bool |
238 | +Download::showInIndicator() const { |
239 | + return (_metadata.contains(Metadata::SHOW_IN_INDICATOR_KEY))? |
240 | + _metadata.value(Metadata::SHOW_IN_INDICATOR_KEY).toBool():true; |
241 | +} |
242 | + |
243 | +QString |
244 | +Download::title() const { |
245 | + return (_metadata.contains(Metadata::TITLE_KEY))? |
246 | + _metadata.value(Metadata::TITLE_KEY).toString():""; |
247 | +} |
248 | + |
249 | } // Daemon |
250 | |
251 | } // DownloadManager |
252 | |
253 | === modified file 'src/downloads/priv/ubuntu/downloads/download.h' |
254 | --- src/downloads/priv/ubuntu/downloads/download.h 2014-07-16 08:41:38 +0000 |
255 | +++ src/downloads/priv/ubuntu/downloads/download.h 2014-09-22 17:35:56 +0000 |
256 | @@ -41,6 +41,9 @@ |
257 | |
258 | class Download : public Transfer { |
259 | Q_OBJECT |
260 | + Q_PROPERTY(QString ClickPackage READ clickPackage) |
261 | + Q_PROPERTY(bool ShowInIndicator READ showInIndicator) |
262 | + Q_PROPERTY(QString Title READ title) |
263 | |
264 | public: |
265 | Download(const QString& id, |
266 | @@ -95,9 +98,14 @@ |
267 | |
268 | protected: |
269 | virtual void emitError(const QString& error); |
270 | + virtual QString clickPackage() const; |
271 | + virtual bool showInIndicator() const; |
272 | + virtual QString title() const; |
273 | + |
274 | + protected: |
275 | + QVariantMap _metadata; |
276 | |
277 | private: |
278 | - QVariantMap _metadata; |
279 | QMap<QString, QString> _headers; |
280 | QObject* _adaptor = nullptr; |
281 | }; |
282 | |
283 | === modified file 'src/downloads/priv/ubuntu/downloads/download_adaptor.cpp' |
284 | --- src/downloads/priv/ubuntu/downloads/download_adaptor.cpp 2014-06-18 11:10:18 +0000 |
285 | +++ src/downloads/priv/ubuntu/downloads/download_adaptor.cpp 2014-09-22 17:35:56 +0000 |
286 | @@ -2,7 +2,7 @@ |
287 | * This file was generated by qdbusxml2cpp version 0.8 |
288 | * Command line was: qdbusxml2cpp -c DownloadAdaptor -a download_adaptor.h:download_adaptor.cpp com.canonical.applications.download.xml |
289 | * |
290 | - * qdbusxml2cpp is Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). |
291 | + * qdbusxml2cpp is Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). |
292 | * |
293 | * This is an auto-generated file. |
294 | * Do not edit! All changes made to it will be lost. |
295 | @@ -33,6 +33,24 @@ |
296 | // destructor |
297 | } |
298 | |
299 | +QString DownloadAdaptor::clickPackage() const |
300 | +{ |
301 | + // get the value of property ClickPackage |
302 | + return qvariant_cast< QString >(parent()->property("ClickPackage")); |
303 | +} |
304 | + |
305 | +bool DownloadAdaptor::showInIndicator() const |
306 | +{ |
307 | + // get the value of property ShowInIndicator |
308 | + return qvariant_cast< bool >(parent()->property("ShowInIndicator")); |
309 | +} |
310 | + |
311 | +QString DownloadAdaptor::title() const |
312 | +{ |
313 | + // get the value of property Title |
314 | + return qvariant_cast< QString >(parent()->property("Title")); |
315 | +} |
316 | + |
317 | void DownloadAdaptor::allowGSMDownload(bool allowed) |
318 | { |
319 | // handle method call com.canonical.applications.Download.allowGSMDownload |
320 | |
321 | === modified file 'src/downloads/priv/ubuntu/downloads/download_adaptor.h' |
322 | --- src/downloads/priv/ubuntu/downloads/download_adaptor.h 2014-06-18 11:10:18 +0000 |
323 | +++ src/downloads/priv/ubuntu/downloads/download_adaptor.h 2014-09-22 17:35:56 +0000 |
324 | @@ -2,7 +2,7 @@ |
325 | * This file was generated by qdbusxml2cpp version 0.8 |
326 | * Command line was: qdbusxml2cpp -c DownloadAdaptor -a download_adaptor.h:download_adaptor.cpp com.canonical.applications.download.xml |
327 | * |
328 | - * qdbusxml2cpp is Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). |
329 | + * qdbusxml2cpp is Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). |
330 | * |
331 | * This is an auto-generated file. |
332 | * This file may have been hand-edited. Look for HAND-EDIT comments |
333 | @@ -44,6 +44,9 @@ |
334 | " <annotation value=\"QVariantMap\" name=\"org.qtproject.QtDBus.QtTypeName.Out0\"/>\n" |
335 | " <arg direction=\"out\" type=\"a{sv}\" name=\"data\"/>\n" |
336 | " </method>\n" |
337 | +" <method name=\"throttle\">\n" |
338 | +" <arg direction=\"out\" type=\"t\" name=\"speed\"/>\n" |
339 | +" </method>\n" |
340 | " <method name=\"setThrottle\">\n" |
341 | " <arg direction=\"in\" type=\"t\" name=\"speed\"/>\n" |
342 | " </method>\n" |
343 | @@ -55,9 +58,6 @@ |
344 | " <annotation value=\"StringMap\" name=\"org.qtproject.QtDBus.QtTypeName.In0\"/>\n" |
345 | " <arg direction=\"in\" type=\"a{ss}\" name=\"headers\"/>\n" |
346 | " </method>\n" |
347 | -" <method name=\"throttle\">\n" |
348 | -" <arg direction=\"out\" type=\"t\" name=\"speed\"/>\n" |
349 | -" </method>\n" |
350 | " <method name=\"setDestinationDir\">\n" |
351 | " <arg direction=\"in\" type=\"s\" name=\"path\"/>\n" |
352 | " </method>\n" |
353 | @@ -112,6 +112,9 @@ |
354 | " <signal name=\"processing\">\n" |
355 | " <arg direction=\"out\" type=\"s\" name=\"path\"/>\n" |
356 | " </signal>\n" |
357 | +" <property access=\"read\" type=\"b\" name=\"ShowInIndicator\"/>\n" |
358 | +" <property access=\"read\" type=\"s\" name=\"Title\"/>\n" |
359 | +" <property access=\"read\" type=\"s\" name=\"ClickPackage\"/>\n" |
360 | " </interface>\n" |
361 | "") |
362 | public: |
363 | @@ -119,6 +122,15 @@ |
364 | virtual ~DownloadAdaptor(); |
365 | |
366 | public: // PROPERTIES |
367 | + Q_PROPERTY(QString ClickPackage READ clickPackage) |
368 | + QString clickPackage() const; |
369 | + |
370 | + Q_PROPERTY(bool ShowInIndicator READ showInIndicator) |
371 | + bool showInIndicator() const; |
372 | + |
373 | + Q_PROPERTY(QString Title READ title) |
374 | + QString title() const; |
375 | + |
376 | public Q_SLOTS: // METHODS |
377 | void allowGSMDownload(bool allowed); |
378 | void cancel(); |
379 | |
380 | === modified file 'src/downloads/priv/ubuntu/downloads/file_download.cpp' |
381 | --- src/downloads/priv/ubuntu/downloads/file_download.cpp 2014-08-05 14:38:52 +0000 |
382 | +++ src/downloads/priv/ubuntu/downloads/file_download.cpp 2014-09-22 17:35:56 +0000 |
383 | @@ -532,7 +532,7 @@ |
384 | // file path that will be used by the download, do not do it if the app is |
385 | // unconfined |
386 | if ((_reply->hasRawHeader(CONTENT_DISPOSITION) && ( |
387 | - isConfined() || !metadata().contains(Metadata::LOCAL_PATH_KEY)))) { |
388 | + isConfined() || !_metadata.contains(Metadata::LOCAL_PATH_KEY)))) { |
389 | QString contentDisposition = _reply->rawHeader(CONTENT_DISPOSITION); |
390 | DOWN_LOG(INFO) << "Content-Disposition header" << contentDisposition; |
391 | |
392 | @@ -579,7 +579,7 @@ |
393 | // means we are done here else we execute the command AND raise the |
394 | // finish signals once the command was done (or an error occurred in |
395 | // the command execution. |
396 | - if (metadata().contains(Metadata::COMMAND_KEY)) { |
397 | + if (_metadata.contains(Metadata::COMMAND_KEY)) { |
398 | // just emit processing if we DO NOT have a hash because else we |
399 | // already emitted it. |
400 | if (_hash.isEmpty()) { |
401 | @@ -587,7 +587,7 @@ |
402 | } |
403 | // toStringList will return an empty list if it cannot be converted |
404 | QStringList commandData = |
405 | - metadata()[Metadata::COMMAND_KEY].toStringList(); |
406 | + _metadata[Metadata::COMMAND_KEY].toStringList(); |
407 | if (commandData.count() == 0) { |
408 | DOWN_LOG(ERROR) << "COMMAND DATA MISSING"; |
409 | emitError(COMMAND_ERROR); |
410 | @@ -746,6 +746,11 @@ |
411 | _connected = networkInfo->isOnline(); |
412 | _downloading = false; |
413 | |
414 | + // applications that are confined are not allowed to set the click metadata. |
415 | + if (isConfined() && _metadata.contains(Metadata::CLICK_PACKAGE_KEY)) { |
416 | + _metadata.remove(Metadata::CLICK_PACKAGE_KEY); |
417 | + } |
418 | + |
419 | // connect to the network changed signals |
420 | CHECK(connect(networkInfo, &SystemNetworkInfo::onlineStateChanged, |
421 | this, &FileDownload::onOnlineStateChanged)) |
422 | @@ -815,10 +820,8 @@ |
423 | _basename = UuidUtils::getDBusString(uuidFactory->createUuid()); |
424 | } |
425 | |
426 | - auto metadataMap = metadata(); |
427 | - |
428 | - if (!isConfined() && metadataMap.contains(Metadata::LOCAL_PATH_KEY)) { |
429 | - _filePath = metadataMap[Metadata::LOCAL_PATH_KEY].toString(); |
430 | + if (!isConfined() && _metadata.contains(Metadata::LOCAL_PATH_KEY)) { |
431 | + _filePath = _metadata[Metadata::LOCAL_PATH_KEY].toString(); |
432 | _tempFilePath = _fileNameMutex->lockFileName( |
433 | _filePath + TEMP_EXTENSION); |
434 | |
435 | @@ -862,7 +865,7 @@ |
436 | |
437 | void |
438 | FileDownload::unlockFilePath() { |
439 | - if (!isConfined() && metadata().contains(Metadata::LOCAL_PATH_KEY)) { |
440 | + if (!isConfined() && _metadata.contains(Metadata::LOCAL_PATH_KEY)) { |
441 | _fileNameMutex->unlockFileName(_tempFilePath); |
442 | } else { |
443 | _fileNameMutex->unlockFileName(_filePath); |
444 | |
445 | === modified file 'src/downloads/priv/ubuntu/downloads/mms_file_download.cpp' |
446 | --- src/downloads/priv/ubuntu/downloads/mms_file_download.cpp 2014-04-15 12:37:16 +0000 |
447 | +++ src/downloads/priv/ubuntu/downloads/mms_file_download.cpp 2014-09-22 17:35:56 +0000 |
448 | @@ -39,6 +39,8 @@ |
449 | metadata, headers, parent){ |
450 | _requestFactory = new ApnRequestFactory(proxy); |
451 | setAddToQueue(false); |
452 | + // mms downloads should by default not be shown in the indicator. |
453 | + _metadata[Ubuntu::Transfers::Metadata::SHOW_IN_INDICATOR_KEY] = false; |
454 | } |
455 | |
456 | MmsFileDownload::~MmsFileDownload() { |
457 | |
458 | === modified file 'tests/downloads/client/test_client_manager.cpp' |
459 | --- tests/downloads/client/test_client_manager.cpp 2014-07-03 09:01:01 +0000 |
460 | +++ tests/downloads/client/test_client_manager.cpp 2014-09-22 17:35:56 +0000 |
461 | @@ -318,7 +318,7 @@ |
462 | } |
463 | // ensure that all of the are created |
464 | QVERIFY(managerSpy.ensureSignalEmitted()); |
465 | - QTRY_COMPARE(count + metadataCount, managerSpy.count()); |
466 | + QTRY_COMPARE_WITH_TIMEOUT(count + metadataCount, managerSpy.count(), 10000); |
467 | _man->getAllDownloadsWithMetadata(key, value, cb, cb); |
468 | |
469 | QVERIFY(listSpy.ensureSignalEmitted()); |
470 | |
471 | === modified file 'tests/downloads/daemon/test_download.cpp' |
472 | --- tests/downloads/daemon/test_download.cpp 2014-07-30 09:19:10 +0000 |
473 | +++ tests/downloads/daemon/test_download.cpp 2014-09-22 17:35:56 +0000 |
474 | @@ -20,6 +20,7 @@ |
475 | #include <QNetworkRequest> |
476 | #include <QSslError> |
477 | #include <ubuntu/download_manager/metatypes.h> |
478 | +#include <ubuntu/transfers/metadata.h> |
479 | #include <ubuntu/transfers/system/hash_algorithm.h> |
480 | #include <ubuntu/transfers/system/uuid_utils.h> |
481 | #include <network_reply.h> |
482 | @@ -176,6 +177,34 @@ |
483 | } |
484 | |
485 | void |
486 | +TestDownload::testConfinedNoClickMetadata() { |
487 | + QVariantMap metadata; |
488 | + metadata[Ubuntu::Transfers::Metadata::CLICK_PACKAGE_KEY] = "click"; |
489 | + |
490 | + EXPECT_CALL(*_networkInfo, isOnline()) |
491 | + .WillRepeatedly(Return(true)); |
492 | + |
493 | + QScopedPointer<FileDownload> download(new FileDownload(_id, _appId, _path, |
494 | + true, _rootPath, _url, metadata, _headers)); |
495 | + auto downMetadata = download->metadata(); |
496 | + QVERIFY(!downMetadata.contains(Ubuntu::Transfers::Metadata::CLICK_PACKAGE_KEY)); |
497 | +} |
498 | + |
499 | +void |
500 | +TestDownload::testUnconfinedWithClickMetadata() { |
501 | + QVariantMap metadata; |
502 | + metadata[Ubuntu::Transfers::Metadata::CLICK_PACKAGE_KEY] = "click"; |
503 | + |
504 | + EXPECT_CALL(*_networkInfo, isOnline()) |
505 | + .WillRepeatedly(Return(true)); |
506 | + |
507 | + QScopedPointer<FileDownload> download(new FileDownload(_id, _appId, _path, |
508 | + false, _rootPath, _url, metadata, _headers)); |
509 | + auto downMetadata = download->metadata(); |
510 | + QVERIFY(downMetadata.contains(Ubuntu::Transfers::Metadata::CLICK_PACKAGE_KEY)); |
511 | +} |
512 | + |
513 | +void |
514 | TestDownload::testPath_data() { |
515 | // create a number of rows with a diff path to ensure that |
516 | // the accessor does return the correct one |
517 | |
518 | === modified file 'tests/downloads/daemon/test_download.h' |
519 | --- tests/downloads/daemon/test_download.h 2014-07-16 11:46:55 +0000 |
520 | +++ tests/downloads/daemon/test_download.h 2014-09-22 17:35:56 +0000 |
521 | @@ -54,6 +54,8 @@ |
522 | // constructors tests |
523 | void testNoHashConstructor(); |
524 | void testHashConstructor(); |
525 | + void testConfinedNoClickMetadata(); |
526 | + void testUnconfinedWithClickMetadata(); |
527 | |
528 | // data function to be used for the accessor tests |
529 | void testNoHashConstructor_data(); |
530 | |
531 | === modified file 'tests/downloads/daemon/test_metadata.cpp' |
532 | --- tests/downloads/daemon/test_metadata.cpp 2014-07-03 09:01:01 +0000 |
533 | +++ tests/downloads/daemon/test_metadata.cpp 2014-09-22 17:35:56 +0000 |
534 | @@ -120,7 +120,8 @@ |
535 | QVERIFY(!metadata.hasLocalPath()); |
536 | } |
537 | |
538 | -void TestMetadata::testObjectPath_data() { |
539 | +void |
540 | +TestMetadata::testObjectPath_data() { |
541 | QTest::addColumn<QString>("objectPath"); |
542 | |
543 | QTest::newRow("/com/canonica/si") << "/com/canonical/si"; |
544 | @@ -128,7 +129,8 @@ |
545 | QTest::newRow("/com/data/download") << "/com/data/download"; |
546 | } |
547 | |
548 | -void TestMetadata::testObjectPath() { |
549 | +void |
550 | +TestMetadata::testObjectPath() { |
551 | QFETCH(QString, objectPath); |
552 | |
553 | Metadata metadata; |
554 | @@ -136,7 +138,8 @@ |
555 | QCOMPARE(objectPath, metadata.objectPath()); |
556 | } |
557 | |
558 | -void TestMetadata::testSetObjectPath_data() { |
559 | +void |
560 | +TestMetadata::testSetObjectPath_data() { |
561 | QTest::addColumn<QString>("objectPath"); |
562 | |
563 | QTest::newRow("/com/canonica/si") << "/com/canonical/si"; |
564 | @@ -144,7 +147,8 @@ |
565 | QTest::newRow("/com/data/download") << "/com/data/download"; |
566 | } |
567 | |
568 | -void TestMetadata::testSetObjectPath() { |
569 | +void |
570 | +TestMetadata::testSetObjectPath() { |
571 | QFETCH(QString, objectPath); |
572 | |
573 | Metadata metadata; |
574 | @@ -152,17 +156,166 @@ |
575 | QCOMPARE(metadata[Metadata::OBJECT_PATH_KEY].toString(), objectPath); |
576 | } |
577 | |
578 | -void TestMetadata::testHasObjectPathTrue() { |
579 | +void |
580 | +TestMetadata::testHasObjectPathTrue() { |
581 | Metadata metadata; |
582 | metadata.setObjectPath("command"); |
583 | |
584 | QVERIFY(metadata.hasObjectPath()); |
585 | } |
586 | |
587 | -void TestMetadata::testHasObjectPathFalse() { |
588 | +void |
589 | +TestMetadata::testHasObjectPathFalse() { |
590 | Metadata metadata; |
591 | QVERIFY(!metadata.hasObjectPath()); |
592 | } |
593 | |
594 | +void |
595 | +TestMetadata::testTitle_data() { |
596 | + QTest::addColumn<QString>("title"); |
597 | + |
598 | + QTest::newRow("Profile image") << "Profile image"; |
599 | + QTest::newRow("Americana.mp3") << "Americana.mp3"; |
600 | + QTest::newRow("Test title") << "Test title"; |
601 | +} |
602 | + |
603 | +void |
604 | +TestMetadata::testTitle() { |
605 | + QFETCH(QString, title); |
606 | + |
607 | + Metadata metadata; |
608 | + metadata[Metadata::TITLE_KEY] = title; |
609 | + QCOMPARE(title, metadata.title()); |
610 | +} |
611 | + |
612 | +void |
613 | +TestMetadata::testSetTitle_data() { |
614 | + QTest::addColumn<QString>("title"); |
615 | + |
616 | + QTest::newRow("Profile image") << "Profile image"; |
617 | + QTest::newRow("Americana.mp3") << "Americana.mp3"; |
618 | + QTest::newRow("Test title") << "Test title"; |
619 | +} |
620 | + |
621 | +void |
622 | +TestMetadata::testSetTitle() { |
623 | + QFETCH(QString, title); |
624 | + |
625 | + Metadata metadata; |
626 | + metadata.setTitle(title); |
627 | + QCOMPARE(metadata[Metadata::TITLE_KEY].toString(), title); |
628 | +} |
629 | + |
630 | +void |
631 | +TestMetadata::testHasTitleTrue() { |
632 | + Metadata metadata; |
633 | + metadata.setTitle("tlte"); |
634 | + |
635 | + QVERIFY(metadata.hasTitle()); |
636 | +} |
637 | + |
638 | +void |
639 | +TestMetadata::testHasTitleFalse() { |
640 | + Metadata metadata; |
641 | + QVERIFY(!metadata.hasTitle()); |
642 | +} |
643 | + |
644 | +void |
645 | +TestMetadata::testIndicator_data() { |
646 | + QTest::addColumn<bool>("show"); |
647 | + |
648 | + QTest::newRow("True") << true; |
649 | + QTest::newRow("False") << false; |
650 | +} |
651 | + |
652 | +void |
653 | +TestMetadata::testIndicator() { |
654 | + QFETCH(bool, show); |
655 | + |
656 | + Metadata metadata; |
657 | + metadata[Metadata::SHOW_IN_INDICATOR_KEY] = show; |
658 | + QCOMPARE(show, metadata.showInIndicator()); |
659 | +} |
660 | + |
661 | +void |
662 | +TestMetadata::testSetIndicator_data() { |
663 | + QTest::addColumn<bool>("show"); |
664 | + |
665 | + QTest::newRow("True") << true; |
666 | + QTest::newRow("False") << false; |
667 | +} |
668 | + |
669 | +void |
670 | +TestMetadata::testSetIndicator() { |
671 | + QFETCH(bool, show); |
672 | + |
673 | + Metadata metadata; |
674 | + metadata.setShowInIndicator(show); |
675 | + QCOMPARE(metadata[Metadata::SHOW_IN_INDICATOR_KEY].toBool(), show); |
676 | +} |
677 | + |
678 | +void |
679 | +TestMetadata::testHasIndicatorTrue() { |
680 | + Metadata metadata; |
681 | + metadata.setShowInIndicator(true); |
682 | + |
683 | + QVERIFY(metadata.hasShowInIndicator()); |
684 | +} |
685 | + |
686 | +void |
687 | +TestMetadata::testHasIndicatorFasle() { |
688 | + Metadata metadata; |
689 | + QVERIFY(!metadata.hasShowInIndicator()); |
690 | +} |
691 | + |
692 | +void |
693 | +TestMetadata::testClick_data() { |
694 | + QTest::addColumn<QString>("click"); |
695 | + |
696 | + QTest::newRow("My click") << "My click"; |
697 | + QTest::newRow("Maps") << "Maps"; |
698 | + QTest::newRow("Test") << "Test"; |
699 | +} |
700 | + |
701 | +void |
702 | +TestMetadata::testClick() { |
703 | + QFETCH(QString, click); |
704 | + |
705 | + Metadata metadata; |
706 | + metadata[Metadata::CLICK_PACKAGE_KEY] = click; |
707 | + QCOMPARE(click, metadata.clickPackage()); |
708 | +} |
709 | + |
710 | +void |
711 | +TestMetadata::testSetClick_data() { |
712 | + QTest::addColumn<QString>("click"); |
713 | + |
714 | + QTest::newRow("My click") << "My click"; |
715 | + QTest::newRow("Maps") << "Maps"; |
716 | + QTest::newRow("Test") << "Test"; |
717 | +} |
718 | + |
719 | +void |
720 | +TestMetadata::testSetClick() { |
721 | + QFETCH(QString, click); |
722 | + |
723 | + Metadata metadata; |
724 | + metadata.setClickPackage(click); |
725 | + QCOMPARE(metadata[Metadata::CLICK_PACKAGE_KEY].toString(), click); |
726 | +} |
727 | + |
728 | +void |
729 | +TestMetadata::testHasClickTrue() { |
730 | + Metadata metadata; |
731 | + metadata.setClickPackage("test"); |
732 | + QVERIFY(metadata.hasClickPackage()); |
733 | +} |
734 | + |
735 | +void |
736 | +TestMetadata::testHasClickFalse() { |
737 | + Metadata metadata; |
738 | + QVERIFY(!metadata.hasClickPackage()); |
739 | +} |
740 | + |
741 | QTEST_MAIN(TestMetadata) |
742 | #include "moc_test_metadata.cpp" |
743 | |
744 | === modified file 'tests/downloads/daemon/test_metadata.h' |
745 | --- tests/downloads/daemon/test_metadata.h 2014-07-03 09:01:01 +0000 |
746 | +++ tests/downloads/daemon/test_metadata.h 2014-09-22 17:35:56 +0000 |
747 | @@ -49,6 +49,24 @@ |
748 | void testSetObjectPath(); |
749 | void testHasObjectPathTrue(); |
750 | void testHasObjectPathFalse(); |
751 | + void testTitle_data(); |
752 | + void testTitle(); |
753 | + void testSetTitle_data(); |
754 | + void testSetTitle(); |
755 | + void testHasTitleTrue(); |
756 | + void testHasTitleFalse(); |
757 | + void testIndicator_data(); |
758 | + void testIndicator(); |
759 | + void testSetIndicator_data(); |
760 | + void testSetIndicator(); |
761 | + void testHasIndicatorTrue(); |
762 | + void testHasIndicatorFasle(); |
763 | + void testClick_data(); |
764 | + void testClick(); |
765 | + void testSetClick_data(); |
766 | + void testSetClick(); |
767 | + void testHasClickTrue(); |
768 | + void testHasClickFalse(); |
769 | }; |
770 | |
771 | #endif // TEST_METADATA_H |
772 | |
773 | === modified file 'tests/downloads/daemon/test_mms_download.cpp' |
774 | --- tests/downloads/daemon/test_mms_download.cpp 2014-07-03 09:01:01 +0000 |
775 | +++ tests/downloads/daemon/test_mms_download.cpp 2014-09-22 17:35:56 +0000 |
776 | @@ -69,4 +69,29 @@ |
777 | QVERIFY(!down->addToQueue()); |
778 | } |
779 | |
780 | +void |
781 | +TestMmsDownload::testShowInIndicator() { |
782 | + QString id = "id of the download"; |
783 | + QString appId = "MY APP"; |
784 | + QString path = "my-file"; |
785 | + bool isConfined = false; |
786 | + QString rootPath = "/root/path/to/use"; |
787 | + QUrl url("http://example.com"); |
788 | + QVariantMap metadata; |
789 | + metadata[Ubuntu::Transfers::Metadata::SHOW_IN_INDICATOR_KEY] = true; |
790 | + QMap<QString, QString> headers; |
791 | + QString hostname = "http://example.com"; |
792 | + int port = 80; |
793 | + QString username = "username"; |
794 | + QString password = "password"; |
795 | + QNetworkProxy proxy(QNetworkProxy::HttpProxy, hostname, |
796 | + port, username, password); |
797 | + |
798 | + QScopedPointer<PublicMmsFileDownload> down( |
799 | + new PublicMmsFileDownload(id, appId, path, isConfined, rootPath, |
800 | + url, metadata, headers, proxy)); |
801 | + auto downMetadata = down->metadata(); |
802 | + QVERIFY(!downMetadata[Ubuntu::Transfers::Metadata::SHOW_IN_INDICATOR_KEY].toBool()); |
803 | +} |
804 | + |
805 | QTEST_MAIN(TestMmsDownload) |
806 | |
807 | === modified file 'tests/downloads/daemon/test_mms_download.h' |
808 | --- tests/downloads/daemon/test_mms_download.h 2014-07-03 09:01:01 +0000 |
809 | +++ tests/downloads/daemon/test_mms_download.h 2014-09-22 17:35:56 +0000 |
810 | @@ -61,6 +61,7 @@ |
811 | |
812 | void testNetworkAccessManager(); |
813 | void testAddToQueue(); |
814 | + void testShowInIndicator(); |
815 | |
816 | }; |
817 |
PASSED: Continuous integration, rev:323 jenkins. qa.ubuntu. com/job/ ubuntu- download- manager- ci/715/ jenkins. qa.ubuntu. com/job/ ubuntu- download- manager- utopic- amd64-ci/ 74 jenkins. qa.ubuntu. com/job/ ubuntu- download- manager- utopic- armhf-ci/ 74 jenkins. qa.ubuntu. com/job/ ubuntu- download- manager- utopic- armhf-ci/ 74/artifact/ work/output/ *zip*/output. zip
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild: s-jenkins. ubuntu- ci:8080/ job/ubuntu- download- manager- ci/715/ rebuild
http://