Merge lp:~fourdollars/indicator-power/xenial into lp:indicator-power/16.04
- xenial
- Merge into trunk.16.04
Proposed by
Shih-Yuan Lee
Status: | Needs review |
---|---|
Proposed branch: | lp:~fourdollars/indicator-power/xenial |
Merge into: | lp:indicator-power/16.04 |
Diff against target: |
453 lines (+111/-52) 7 files modified
src/device-provider-upower.c (+5/-1) src/device.c (+37/-5) src/device.h (+4/-1) src/service.c (+18/-6) src/testing.c (+2/-1) tests/test-device.cc (+39/-35) tests/test-notify.cc (+6/-3) |
To merge this branch: | bzr merge lp:~fourdollars/indicator-power/xenial |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Indicator Applet Developers | Pending | ||
Review via email: mp+314127@code.launchpad.net |
This proposal supersedes a proposal from 2017-01-05.
Commit message
Make device with power supply has higher sorting priority. (LP: #1100546)
Description of the change
To post a comment you must log in.
Unmerged revisions
- 293. By Shih-Yuan Lee
-
Make device with power supply has higher sorting priority. (LP: #1100546)
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'src/device-provider-upower.c' | |||
2 | --- src/device-provider-upower.c 2014-09-08 14:50:22 +0000 | |||
3 | +++ src/device-provider-upower.c 2017-01-05 04:47:47 +0000 | |||
4 | @@ -113,6 +113,7 @@ | |||
5 | 113 | gint64 time_to_empty = 0; | 113 | gint64 time_to_empty = 0; |
6 | 114 | gint64 time_to_full = 0; | 114 | gint64 time_to_full = 0; |
7 | 115 | gint64 time; | 115 | gint64 time; |
8 | 116 | gboolean power_supply = FALSE; | ||
9 | 116 | IndicatorPowerDevice * device; | 117 | IndicatorPowerDevice * device; |
10 | 117 | priv_t * p = get_priv(data->self); | 118 | priv_t * p = get_priv(data->self); |
11 | 118 | GVariant * dict = g_variant_get_child_value (response, 0); | 119 | GVariant * dict = g_variant_get_child_value (response, 0); |
12 | @@ -122,6 +123,7 @@ | |||
13 | 122 | g_variant_lookup (dict, "Percentage", "d", &percentage); | 123 | g_variant_lookup (dict, "Percentage", "d", &percentage); |
14 | 123 | g_variant_lookup (dict, "TimeToEmpty", "x", &time_to_empty); | 124 | g_variant_lookup (dict, "TimeToEmpty", "x", &time_to_empty); |
15 | 124 | g_variant_lookup (dict, "TimeToFull", "x", &time_to_full); | 125 | g_variant_lookup (dict, "TimeToFull", "x", &time_to_full); |
16 | 126 | g_variant_lookup (dict, "PowerSupply", "b", &power_supply); | ||
17 | 125 | time = time_to_empty ? time_to_empty : time_to_full; | 127 | time = time_to_empty ? time_to_empty : time_to_full; |
18 | 126 | 128 | ||
19 | 127 | if ((device = g_hash_table_lookup (p->devices, data->path))) | 129 | if ((device = g_hash_table_lookup (p->devices, data->path))) |
20 | @@ -131,6 +133,7 @@ | |||
21 | 131 | INDICATOR_POWER_DEVICE_OBJECT_PATH, data->path, | 133 | INDICATOR_POWER_DEVICE_OBJECT_PATH, data->path, |
22 | 132 | INDICATOR_POWER_DEVICE_PERCENTAGE, percentage, | 134 | INDICATOR_POWER_DEVICE_PERCENTAGE, percentage, |
23 | 133 | INDICATOR_POWER_DEVICE_TIME, time, | 135 | INDICATOR_POWER_DEVICE_TIME, time, |
24 | 136 | INDICATOR_POWER_DEVICE_POWER_SUPPLY, power_supply, | ||
25 | 134 | NULL); | 137 | NULL); |
26 | 135 | } | 138 | } |
27 | 136 | else | 139 | else |
28 | @@ -139,7 +142,8 @@ | |||
29 | 139 | kind, | 142 | kind, |
30 | 140 | percentage, | 143 | percentage, |
31 | 141 | state, | 144 | state, |
33 | 142 | (time_t)time); | 145 | (time_t)time, |
34 | 146 | power_supply); | ||
35 | 143 | 147 | ||
36 | 144 | g_hash_table_insert (p->devices, | 148 | g_hash_table_insert (p->devices, |
37 | 145 | g_strdup (data->path), | 149 | g_strdup (data->path), |
38 | 146 | 150 | ||
39 | === modified file 'src/device.c' | |||
40 | --- src/device.c 2015-01-12 22:43:49 +0000 | |||
41 | +++ src/device.c 2017-01-05 04:47:47 +0000 | |||
42 | @@ -42,6 +42,7 @@ | |||
43 | 42 | the time-remaining field for this device, or 0 if not applicable. | 42 | the time-remaining field for this device, or 0 if not applicable. |
44 | 43 | This is used when generating the time-remaining string. */ | 43 | This is used when generating the time-remaining string. */ |
45 | 44 | GTimer * inestimable; | 44 | GTimer * inestimable; |
46 | 45 | gboolean power_supply; | ||
47 | 45 | }; | 46 | }; |
48 | 46 | 47 | ||
49 | 47 | /* Properties */ | 48 | /* Properties */ |
50 | @@ -53,6 +54,7 @@ | |||
51 | 53 | PROP_OBJECT_PATH, | 54 | PROP_OBJECT_PATH, |
52 | 54 | PROP_PERCENTAGE, | 55 | PROP_PERCENTAGE, |
53 | 55 | PROP_TIME, | 56 | PROP_TIME, |
54 | 57 | PROP_POWER_SUPPLY, | ||
55 | 56 | N_PROPERTIES | 58 | N_PROPERTIES |
56 | 57 | }; | 59 | }; |
57 | 58 | 60 | ||
58 | @@ -116,6 +118,12 @@ | |||
59 | 116 | 0, | 118 | 0, |
60 | 117 | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); | 119 | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); |
61 | 118 | 120 | ||
62 | 121 | properties[PROP_POWER_SUPPLY] = g_param_spec_boolean (INDICATOR_POWER_DEVICE_POWER_SUPPLY, | ||
63 | 122 | "power supply", | ||
64 | 123 | "The device's power supply", | ||
65 | 124 | FALSE, | ||
66 | 125 | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); | ||
67 | 126 | |||
68 | 119 | g_object_class_install_properties (object_class, N_PROPERTIES, properties); | 127 | g_object_class_install_properties (object_class, N_PROPERTIES, properties); |
69 | 120 | } | 128 | } |
70 | 121 | 129 | ||
71 | @@ -132,6 +140,7 @@ | |||
72 | 132 | priv->object_path = NULL; | 140 | priv->object_path = NULL; |
73 | 133 | priv->percentage = 0.0; | 141 | priv->percentage = 0.0; |
74 | 134 | priv->time = 0; | 142 | priv->time = 0; |
75 | 143 | priv->power_supply = FALSE; | ||
76 | 135 | 144 | ||
77 | 136 | self->priv = priv; | 145 | self->priv = priv; |
78 | 137 | } | 146 | } |
79 | @@ -190,6 +199,10 @@ | |||
80 | 190 | g_value_set_uint64 (value, (guint64)priv->time); | 199 | g_value_set_uint64 (value, (guint64)priv->time); |
81 | 191 | break; | 200 | break; |
82 | 192 | 201 | ||
83 | 202 | case PROP_POWER_SUPPLY: | ||
84 | 203 | g_value_set_boolean (value, priv->power_supply); | ||
85 | 204 | break; | ||
86 | 205 | |||
87 | 193 | default: | 206 | default: |
88 | 194 | G_OBJECT_WARN_INVALID_PROPERTY_ID(o, prop_id, pspec); | 207 | G_OBJECT_WARN_INVALID_PROPERTY_ID(o, prop_id, pspec); |
89 | 195 | break; | 208 | break; |
90 | @@ -225,6 +238,10 @@ | |||
91 | 225 | p->time = (time_t) g_value_get_uint64(value); | 238 | p->time = (time_t) g_value_get_uint64(value); |
92 | 226 | break; | 239 | break; |
93 | 227 | 240 | ||
94 | 241 | case PROP_POWER_SUPPLY: | ||
95 | 242 | p->power_supply = g_value_get_boolean (value); | ||
96 | 243 | break; | ||
97 | 244 | |||
98 | 228 | default: | 245 | default: |
99 | 229 | G_OBJECT_WARN_INVALID_PROPERTY_ID(o, prop_id, pspec); | 246 | G_OBJECT_WARN_INVALID_PROPERTY_ID(o, prop_id, pspec); |
100 | 230 | break; | 247 | break; |
101 | @@ -304,6 +321,16 @@ | |||
102 | 304 | return device->priv->time; | 321 | return device->priv->time; |
103 | 305 | } | 322 | } |
104 | 306 | 323 | ||
105 | 324 | gboolean | ||
106 | 325 | indicator_power_device_get_power_supply (const IndicatorPowerDevice * device) | ||
107 | 326 | { | ||
108 | 327 | /* LCOV_EXCL_START */ | ||
109 | 328 | g_return_val_if_fail (INDICATOR_IS_POWER_DEVICE(device), FALSE); | ||
110 | 329 | /* LCOV_EXCL_STOP */ | ||
111 | 330 | |||
112 | 331 | return device->priv->power_supply; | ||
113 | 332 | } | ||
114 | 333 | |||
115 | 307 | /*** | 334 | /*** |
116 | 308 | **** | 335 | **** |
117 | 309 | **** | 336 | **** |
118 | @@ -866,7 +893,8 @@ | |||
119 | 866 | UpDeviceKind kind, | 893 | UpDeviceKind kind, |
120 | 867 | gdouble percentage, | 894 | gdouble percentage, |
121 | 868 | UpDeviceState state, | 895 | UpDeviceState state, |
123 | 869 | time_t timestamp) | 896 | time_t timestamp, |
124 | 897 | gboolean power_supply) | ||
125 | 870 | { | 898 | { |
126 | 871 | GObject * o = g_object_new (INDICATOR_POWER_DEVICE_TYPE, | 899 | GObject * o = g_object_new (INDICATOR_POWER_DEVICE_TYPE, |
127 | 872 | INDICATOR_POWER_DEVICE_KIND, kind, | 900 | INDICATOR_POWER_DEVICE_KIND, kind, |
128 | @@ -874,6 +902,7 @@ | |||
129 | 874 | INDICATOR_POWER_DEVICE_OBJECT_PATH, object_path, | 902 | INDICATOR_POWER_DEVICE_OBJECT_PATH, object_path, |
130 | 875 | INDICATOR_POWER_DEVICE_PERCENTAGE, percentage, | 903 | INDICATOR_POWER_DEVICE_PERCENTAGE, percentage, |
131 | 876 | INDICATOR_POWER_DEVICE_TIME, (guint64)timestamp, | 904 | INDICATOR_POWER_DEVICE_TIME, (guint64)timestamp, |
132 | 905 | INDICATOR_POWER_DEVICE_POWER_SUPPLY, power_supply, | ||
133 | 877 | NULL); | 906 | NULL); |
134 | 878 | return INDICATOR_POWER_DEVICE(o); | 907 | return INDICATOR_POWER_DEVICE(o); |
135 | 879 | } | 908 | } |
136 | @@ -881,7 +910,7 @@ | |||
137 | 881 | IndicatorPowerDevice * | 910 | IndicatorPowerDevice * |
138 | 882 | indicator_power_device_new_from_variant (GVariant * v) | 911 | indicator_power_device_new_from_variant (GVariant * v) |
139 | 883 | { | 912 | { |
141 | 884 | g_return_val_if_fail (g_variant_is_of_type (v, G_VARIANT_TYPE("(susdut)")), NULL); | 913 | g_return_val_if_fail (g_variant_is_of_type (v, G_VARIANT_TYPE("(susdutb)")), NULL); |
142 | 885 | 914 | ||
143 | 886 | UpDeviceKind kind = UP_DEVICE_KIND_UNKNOWN; | 915 | UpDeviceKind kind = UP_DEVICE_KIND_UNKNOWN; |
144 | 887 | UpDeviceState state = UP_DEVICE_STATE_UNKNOWN; | 916 | UpDeviceState state = UP_DEVICE_STATE_UNKNOWN; |
145 | @@ -889,18 +918,21 @@ | |||
146 | 889 | const gchar * object_path = NULL; | 918 | const gchar * object_path = NULL; |
147 | 890 | gdouble percentage = 0; | 919 | gdouble percentage = 0; |
148 | 891 | guint64 time = 0; | 920 | guint64 time = 0; |
149 | 921 | gboolean power_supply = FALSE; | ||
150 | 892 | 922 | ||
152 | 893 | g_variant_get (v, "(&su&sdut)", | 923 | g_variant_get (v, "(&su&sdutb)", |
153 | 894 | &object_path, | 924 | &object_path, |
154 | 895 | &kind, | 925 | &kind, |
155 | 896 | &icon, | 926 | &icon, |
156 | 897 | &percentage, | 927 | &percentage, |
157 | 898 | &state, | 928 | &state, |
159 | 899 | &time); | 929 | &time, |
160 | 930 | &power_supply); | ||
161 | 900 | 931 | ||
162 | 901 | return indicator_power_device_new (object_path, | 932 | return indicator_power_device_new (object_path, |
163 | 902 | kind, | 933 | kind, |
164 | 903 | percentage, | 934 | percentage, |
165 | 904 | state, | 935 | state, |
167 | 905 | (time_t)time); | 936 | (time_t)time, |
168 | 937 | power_supply); | ||
169 | 906 | } | 938 | } |
170 | 907 | 939 | ||
171 | === modified file 'src/device.h' | |||
172 | --- src/device.h 2014-07-24 20:20:16 +0000 | |||
173 | +++ src/device.h 2017-01-05 04:47:47 +0000 | |||
174 | @@ -44,6 +44,7 @@ | |||
175 | 44 | #define INDICATOR_POWER_DEVICE_OBJECT_PATH "object-path" | 44 | #define INDICATOR_POWER_DEVICE_OBJECT_PATH "object-path" |
176 | 45 | #define INDICATOR_POWER_DEVICE_PERCENTAGE "percentage" | 45 | #define INDICATOR_POWER_DEVICE_PERCENTAGE "percentage" |
177 | 46 | #define INDICATOR_POWER_DEVICE_TIME "time" | 46 | #define INDICATOR_POWER_DEVICE_TIME "time" |
178 | 47 | #define INDICATOR_POWER_DEVICE_POWER_SUPPLY "power-supply" | ||
179 | 47 | 48 | ||
180 | 48 | typedef enum | 49 | typedef enum |
181 | 49 | { | 50 | { |
182 | @@ -107,7 +108,8 @@ | |||
183 | 107 | UpDeviceKind kind, | 108 | UpDeviceKind kind, |
184 | 108 | gdouble percentage, | 109 | gdouble percentage, |
185 | 109 | UpDeviceState state, | 110 | UpDeviceState state, |
187 | 110 | time_t time); | 111 | time_t time, |
188 | 112 | gboolean power_supply); | ||
189 | 111 | 113 | ||
190 | 112 | /** | 114 | /** |
191 | 113 | * Convenience wrapper around indicator_power_device_new() | 115 | * Convenience wrapper around indicator_power_device_new() |
192 | @@ -121,6 +123,7 @@ | |||
193 | 121 | const gchar * indicator_power_device_get_object_path (const IndicatorPowerDevice * device); | 123 | const gchar * indicator_power_device_get_object_path (const IndicatorPowerDevice * device); |
194 | 122 | gdouble indicator_power_device_get_percentage (const IndicatorPowerDevice * device); | 124 | gdouble indicator_power_device_get_percentage (const IndicatorPowerDevice * device); |
195 | 123 | time_t indicator_power_device_get_time (const IndicatorPowerDevice * device); | 125 | time_t indicator_power_device_get_time (const IndicatorPowerDevice * device); |
196 | 126 | gboolean indicator_power_device_get_power_supply (const IndicatorPowerDevice * device); | ||
197 | 124 | 127 | ||
198 | 125 | GStrv indicator_power_device_get_icon_names (const IndicatorPowerDevice * device); | 128 | GStrv indicator_power_device_get_icon_names (const IndicatorPowerDevice * device); |
199 | 126 | GIcon * indicator_power_device_get_gicon (const IndicatorPowerDevice * device); | 129 | GIcon * indicator_power_device_get_gicon (const IndicatorPowerDevice * device); |
200 | 127 | 130 | ||
201 | === modified file 'src/service.c' | |||
202 | --- src/service.c 2016-01-02 02:19:45 +0000 | |||
203 | +++ src/service.c 2017-01-05 04:47:47 +0000 | |||
204 | @@ -162,11 +162,12 @@ | |||
205 | 162 | } | 162 | } |
206 | 163 | 163 | ||
207 | 164 | /* sort devices from most interesting to least interesting on this criteria: | 164 | /* sort devices from most interesting to least interesting on this criteria: |
213 | 165 | 1. discharging items from least time remaining until most time remaining | 165 | 1. device that supplied the power to the system |
214 | 166 | 2. charging items from most time left to charge to least time left to charge | 166 | 2. discharging items from least time remaining until most time remaining |
215 | 167 | 3. charging items with an unknown time remaining | 167 | 3. charging items from most time left to charge to least time left to charge |
216 | 168 | 4. discharging items with an unknown time remaining | 168 | 4. charging items with an unknown time remaining |
217 | 169 | 5. batteries, then non-line power, then line-power */ | 169 | 5. discharging items with an unknown time remaining |
218 | 170 | 6. batteries, then non-line power, then line-power */ | ||
219 | 170 | static gint | 171 | static gint |
220 | 171 | device_compare_func (gconstpointer ga, gconstpointer gb) | 172 | device_compare_func (gconstpointer ga, gconstpointer gb) |
221 | 172 | { | 173 | { |
222 | @@ -174,6 +175,8 @@ | |||
223 | 174 | int state; | 175 | int state; |
224 | 175 | const IndicatorPowerDevice * a = ga; | 176 | const IndicatorPowerDevice * a = ga; |
225 | 176 | const IndicatorPowerDevice * b = gb; | 177 | const IndicatorPowerDevice * b = gb; |
226 | 178 | const gboolean a_power_supply = indicator_power_device_get_power_supply (a); | ||
227 | 179 | const gboolean b_power_supply = indicator_power_device_get_power_supply (b); | ||
228 | 177 | const int a_state = indicator_power_device_get_state (a); | 180 | const int a_state = indicator_power_device_get_state (a); |
229 | 178 | const int b_state = indicator_power_device_get_state (b); | 181 | const int b_state = indicator_power_device_get_state (b); |
230 | 179 | const gdouble a_percentage = indicator_power_device_get_percentage (a); | 182 | const gdouble a_percentage = indicator_power_device_get_percentage (a); |
231 | @@ -183,6 +186,14 @@ | |||
232 | 183 | 186 | ||
233 | 184 | ret = 0; | 187 | ret = 0; |
234 | 185 | 188 | ||
235 | 189 | if (!ret) | ||
236 | 190 | { | ||
237 | 191 | if (a_power_supply == TRUE && b_power_supply == FALSE) | ||
238 | 192 | ret = -1; | ||
239 | 193 | else if (a_power_supply == FALSE && b_power_supply == TRUE) | ||
240 | 194 | ret = 1; | ||
241 | 195 | } | ||
242 | 196 | |||
243 | 186 | state = UP_DEVICE_STATE_DISCHARGING; | 197 | state = UP_DEVICE_STATE_DISCHARGING; |
244 | 187 | if (!ret && (((a_state == state) && a_time) || | 198 | if (!ret && (((a_state == state) && a_time) || |
245 | 188 | ((b_state == state) && b_time))) | 199 | ((b_state == state) && b_time))) |
246 | @@ -1418,7 +1429,8 @@ | |||
247 | 1418 | UP_DEVICE_KIND_BATTERY, | 1429 | UP_DEVICE_KIND_BATTERY, |
248 | 1419 | percent, | 1430 | percent, |
249 | 1420 | state, | 1431 | state, |
251 | 1421 | time_left); | 1432 | time_left, |
252 | 1433 | TRUE); | ||
253 | 1422 | } | 1434 | } |
254 | 1423 | 1435 | ||
255 | 1424 | return device; | 1436 | return device; |
256 | 1425 | 1437 | ||
257 | === modified file 'src/testing.c' | |||
258 | --- src/testing.c 2014-10-14 19:50:47 +0000 | |||
259 | +++ src/testing.c 2017-01-05 04:47:47 +0000 | |||
260 | @@ -301,7 +301,8 @@ | |||
261 | 301 | UP_DEVICE_KIND_BATTERY, | 301 | UP_DEVICE_KIND_BATTERY, |
262 | 302 | 50.0, | 302 | 50.0, |
263 | 303 | UP_DEVICE_STATE_DISCHARGING, | 303 | UP_DEVICE_STATE_DISCHARGING, |
265 | 304 | 60*30); | 304 | 60*30, |
266 | 305 | TRUE); | ||
267 | 305 | 306 | ||
268 | 306 | 307 | ||
269 | 307 | /* Mock Provider */ | 308 | /* Mock Provider */ |
270 | 308 | 309 | ||
271 | === modified file 'tests/test-device.cc' | |||
272 | --- tests/test-device.cc 2015-01-12 21:47:27 +0000 | |||
273 | +++ tests/test-device.cc 2017-01-05 04:47:47 +0000 | |||
274 | @@ -190,7 +190,8 @@ | |||
275 | 190 | UP_DEVICE_KIND_BATTERY, | 190 | UP_DEVICE_KIND_BATTERY, |
276 | 191 | 50.0, | 191 | 50.0, |
277 | 192 | UP_DEVICE_STATE_CHARGING, | 192 | UP_DEVICE_STATE_CHARGING, |
279 | 193 | 30); | 193 | 30, |
280 | 194 | TRUE); | ||
281 | 194 | ASSERT_TRUE (device != NULL); | 195 | ASSERT_TRUE (device != NULL); |
282 | 195 | ASSERT_TRUE (INDICATOR_IS_POWER_DEVICE(device)); | 196 | ASSERT_TRUE (INDICATOR_IS_POWER_DEVICE(device)); |
283 | 196 | ASSERT_EQ (UP_DEVICE_KIND_BATTERY, indicator_power_device_get_kind(device)); | 197 | ASSERT_EQ (UP_DEVICE_KIND_BATTERY, indicator_power_device_get_kind(device)); |
284 | @@ -198,6 +199,7 @@ | |||
285 | 198 | ASSERT_STREQ ("/object/path", indicator_power_device_get_object_path(device)); | 199 | ASSERT_STREQ ("/object/path", indicator_power_device_get_object_path(device)); |
286 | 199 | ASSERT_EQ (50, int(indicator_power_device_get_percentage(device))); | 200 | ASSERT_EQ (50, int(indicator_power_device_get_percentage(device))); |
287 | 200 | ASSERT_EQ (30, indicator_power_device_get_time(device)); | 201 | ASSERT_EQ (30, indicator_power_device_get_time(device)); |
288 | 202 | ASSERT_TRUE (indicator_power_device_get_power_supply(device)); | ||
289 | 201 | 203 | ||
290 | 202 | // cleanup | 204 | // cleanup |
291 | 203 | g_object_unref (device); | 205 | g_object_unref (device); |
292 | @@ -205,13 +207,14 @@ | |||
293 | 205 | 207 | ||
294 | 206 | TEST_F(DeviceTest, NewFromVariant) | 208 | TEST_F(DeviceTest, NewFromVariant) |
295 | 207 | { | 209 | { |
297 | 208 | auto variant = g_variant_new("(susdut)", | 210 | auto variant = g_variant_new("(susdutb)", |
298 | 209 | "/object/path", | 211 | "/object/path", |
299 | 210 | guint32(UP_DEVICE_KIND_BATTERY), | 212 | guint32(UP_DEVICE_KIND_BATTERY), |
300 | 211 | "icon", | 213 | "icon", |
301 | 212 | 50.0, | 214 | 50.0, |
302 | 213 | guint32(UP_DEVICE_STATE_CHARGING), | 215 | guint32(UP_DEVICE_STATE_CHARGING), |
304 | 214 | guint64(30)); | 216 | guint64(30), |
305 | 217 | TRUE); | ||
306 | 215 | IndicatorPowerDevice * device = indicator_power_device_new_from_variant (variant); | 218 | IndicatorPowerDevice * device = indicator_power_device_new_from_variant (variant); |
307 | 216 | ASSERT_TRUE (variant != NULL); | 219 | ASSERT_TRUE (variant != NULL); |
308 | 217 | ASSERT_TRUE (device != NULL); | 220 | ASSERT_TRUE (device != NULL); |
309 | @@ -221,6 +224,7 @@ | |||
310 | 221 | ASSERT_STREQ ("/object/path", indicator_power_device_get_object_path(device)); | 224 | ASSERT_STREQ ("/object/path", indicator_power_device_get_object_path(device)); |
311 | 222 | ASSERT_EQ (50, int(indicator_power_device_get_percentage(device))); | 225 | ASSERT_EQ (50, int(indicator_power_device_get_percentage(device))); |
312 | 223 | ASSERT_EQ (30, indicator_power_device_get_time(device)); | 226 | ASSERT_EQ (30, indicator_power_device_get_time(device)); |
313 | 227 | ASSERT_TRUE (indicator_power_device_get_power_supply(device)); | ||
314 | 224 | 228 | ||
315 | 225 | // cleanup | 229 | // cleanup |
316 | 226 | g_object_unref (device); | 230 | g_object_unref (device); |
317 | @@ -709,26 +713,27 @@ | |||
318 | 709 | UpDeviceState state; | 713 | UpDeviceState state; |
319 | 710 | guint64 time; | 714 | guint64 time; |
320 | 711 | double percentage; | 715 | double percentage; |
321 | 716 | gboolean power_supply; | ||
322 | 712 | }; | 717 | }; |
323 | 713 | 718 | ||
324 | 714 | const Description descriptions[] = { | 719 | const Description descriptions[] = { |
337 | 715 | { "/some/path/d0", UP_DEVICE_KIND_BATTERY, UP_DEVICE_STATE_DISCHARGING, 10, 60.0 }, // 0 | 720 | { "/some/path/d0", UP_DEVICE_KIND_BATTERY, UP_DEVICE_STATE_DISCHARGING, 10, 60.0, TRUE }, // 0 |
338 | 716 | { "/some/path/d1", UP_DEVICE_KIND_BATTERY, UP_DEVICE_STATE_DISCHARGING, 20, 80.0 }, // 1 | 721 | { "/some/path/d1", UP_DEVICE_KIND_BATTERY, UP_DEVICE_STATE_DISCHARGING, 20, 80.0, TRUE }, // 1 |
339 | 717 | { "/some/path/d2", UP_DEVICE_KIND_BATTERY, UP_DEVICE_STATE_DISCHARGING, 30, 100.0 }, // 2 | 722 | { "/some/path/d2", UP_DEVICE_KIND_BATTERY, UP_DEVICE_STATE_DISCHARGING, 30, 100.0, TRUE }, // 2 |
340 | 718 | 723 | ||
341 | 719 | { "/some/path/c0", UP_DEVICE_KIND_BATTERY, UP_DEVICE_STATE_CHARGING, 10, 60.0 }, // 3 | 724 | { "/some/path/c0", UP_DEVICE_KIND_BATTERY, UP_DEVICE_STATE_CHARGING, 10, 60.0, TRUE }, // 3 |
342 | 720 | { "/some/path/c1", UP_DEVICE_KIND_BATTERY, UP_DEVICE_STATE_CHARGING, 20, 80.0 }, // 4 | 725 | { "/some/path/c1", UP_DEVICE_KIND_BATTERY, UP_DEVICE_STATE_CHARGING, 20, 80.0, TRUE }, // 4 |
343 | 721 | { "/some/path/c2", UP_DEVICE_KIND_BATTERY, UP_DEVICE_STATE_CHARGING, 30, 100.0 }, // 5 | 726 | { "/some/path/c2", UP_DEVICE_KIND_BATTERY, UP_DEVICE_STATE_CHARGING, 30, 100.0, TRUE }, // 5 |
344 | 722 | 727 | ||
345 | 723 | { "/some/path/f0", UP_DEVICE_KIND_BATTERY, UP_DEVICE_STATE_FULLY_CHARGED, 0, 100.0 }, // 6 | 728 | { "/some/path/f0", UP_DEVICE_KIND_BATTERY, UP_DEVICE_STATE_FULLY_CHARGED, 0, 100.0, TRUE }, // 6 |
346 | 724 | { "/some/path/m0", UP_DEVICE_KIND_MOUSE, UP_DEVICE_STATE_DISCHARGING, 20, 80.0 }, // 7 | 729 | { "/some/path/m0", UP_DEVICE_KIND_MOUSE, UP_DEVICE_STATE_DISCHARGING, 20, 80.0, FALSE }, // 7 |
347 | 725 | { "/some/path/m1", UP_DEVICE_KIND_MOUSE, UP_DEVICE_STATE_FULLY_CHARGED, 0, 100.0 }, // 8 | 730 | { "/some/path/m1", UP_DEVICE_KIND_MOUSE, UP_DEVICE_STATE_FULLY_CHARGED, 0, 100.0, FALSE }, // 8 |
348 | 726 | { "/some/path/pw", UP_DEVICE_KIND_LINE_POWER, UP_DEVICE_STATE_UNKNOWN, 0, 0.0 } // 9 | 731 | { "/some/path/pw", UP_DEVICE_KIND_LINE_POWER, UP_DEVICE_STATE_UNKNOWN, 0, 0.0, TRUE } // 9 |
349 | 727 | }; | 732 | }; |
350 | 728 | 733 | ||
351 | 729 | std::vector<IndicatorPowerDevice*> devices; | 734 | std::vector<IndicatorPowerDevice*> devices; |
352 | 730 | for(const auto& desc : descriptions) | 735 | for(const auto& desc : descriptions) |
354 | 731 | devices.push_back(indicator_power_device_new(desc.path, desc.kind, desc.percentage, desc.state, time_t(desc.time))); | 736 | devices.push_back(indicator_power_device_new(desc.path, desc.kind, desc.percentage, desc.state, time_t(desc.time), desc.power_supply)); |
355 | 732 | 737 | ||
356 | 733 | const struct { | 738 | const struct { |
357 | 734 | std::vector<unsigned int> device_indices; | 739 | std::vector<unsigned int> device_indices; |
358 | @@ -736,29 +741,26 @@ | |||
359 | 736 | } tests[] = { | 741 | } tests[] = { |
360 | 737 | 742 | ||
361 | 738 | { { 0 }, descriptions[0] }, // 1 discharging | 743 | { { 0 }, descriptions[0] }, // 1 discharging |
365 | 739 | { { 0, 1 }, { nullptr, UP_DEVICE_KIND_BATTERY, UP_DEVICE_STATE_DISCHARGING, 20, 70.0 } }, // 2 discharging | 744 | { { 0, 1 }, { nullptr, UP_DEVICE_KIND_BATTERY, UP_DEVICE_STATE_DISCHARGING, 20, 70.0, TRUE } }, // 2 discharging |
366 | 740 | { { 1, 2 }, { nullptr, UP_DEVICE_KIND_BATTERY, UP_DEVICE_STATE_DISCHARGING, 30, 90.0 } }, // 2 discharging | 745 | { { 1, 2 }, { nullptr, UP_DEVICE_KIND_BATTERY, UP_DEVICE_STATE_DISCHARGING, 30, 90.0, TRUE } }, // 2 discharging |
367 | 741 | { { 0, 1, 2 }, { nullptr, UP_DEVICE_KIND_BATTERY, UP_DEVICE_STATE_DISCHARGING, 30, 80.0 } }, // 3 discharging | 746 | { { 0, 1, 2 }, { nullptr, UP_DEVICE_KIND_BATTERY, UP_DEVICE_STATE_DISCHARGING, 30, 80.0, TRUE } }, // 3 discharging |
368 | 747 | { { 0, 1, 2, 7 }, { nullptr, UP_DEVICE_KIND_BATTERY, UP_DEVICE_STATE_DISCHARGING, 30, 80.0, TRUE } }, // ignore mouse | ||
369 | 742 | 748 | ||
370 | 743 | { { 3 }, descriptions[3] }, // 1 charging | 749 | { { 3 }, descriptions[3] }, // 1 charging |
374 | 744 | { { 3, 4 }, { nullptr, UP_DEVICE_KIND_BATTERY, UP_DEVICE_STATE_CHARGING, 20, 70.0 } }, // 2 charging | 750 | { { 3, 4 }, { nullptr, UP_DEVICE_KIND_BATTERY, UP_DEVICE_STATE_CHARGING, 20, 70.0, TRUE } }, // 2 charging |
375 | 745 | { { 4, 5 }, { nullptr, UP_DEVICE_KIND_BATTERY, UP_DEVICE_STATE_CHARGING, 30, 90.0 } }, // 2 charging | 751 | { { 4, 5 }, { nullptr, UP_DEVICE_KIND_BATTERY, UP_DEVICE_STATE_CHARGING, 30, 90.0, TRUE } }, // 2 charging |
376 | 746 | { { 3, 4, 5 }, { nullptr, UP_DEVICE_KIND_BATTERY, UP_DEVICE_STATE_CHARGING, 30, 80.0 } }, // 3 charging | 752 | { { 3, 4, 5 }, { nullptr, UP_DEVICE_KIND_BATTERY, UP_DEVICE_STATE_CHARGING, 30, 80.0, TRUE } }, // 3 charging |
377 | 753 | { { 3, 4, 5, 8 }, { nullptr, UP_DEVICE_KIND_BATTERY, UP_DEVICE_STATE_CHARGING, 30, 80.0, TRUE } }, // ignore mouse | ||
378 | 747 | 754 | ||
379 | 748 | { { 6 }, descriptions[6] }, // 1 charged | 755 | { { 6 }, descriptions[6] }, // 1 charged |
393 | 749 | { { 6, 0 }, { nullptr, UP_DEVICE_KIND_BATTERY, UP_DEVICE_STATE_DISCHARGING, 10, 80.0 } }, // 1 charged, 1 discharging | 756 | { { 6, 0 }, { nullptr, UP_DEVICE_KIND_BATTERY, UP_DEVICE_STATE_DISCHARGING, 10, 80.0, TRUE } }, // 1 charged, 1 discharging |
394 | 750 | { { 6, 3 }, { nullptr, UP_DEVICE_KIND_BATTERY, UP_DEVICE_STATE_CHARGING, 10, 80.0 } }, // 1 charged, 1 charging | 757 | { { 6, 3 }, { nullptr, UP_DEVICE_KIND_BATTERY, UP_DEVICE_STATE_CHARGING, 10, 80.0, TRUE } }, // 1 charged, 1 charging |
395 | 751 | { { 6, 0, 3 }, { nullptr, UP_DEVICE_KIND_BATTERY, UP_DEVICE_STATE_DISCHARGING, 10, 73.3 } }, // 1 charged, 1 charging, 1 discharging | 758 | { { 6, 0, 3 }, { nullptr, UP_DEVICE_KIND_BATTERY, UP_DEVICE_STATE_DISCHARGING, 10, 73.3, TRUE } }, // 1 charged, 1 charging, 1 discharging |
396 | 752 | 759 | { { 6, 0, 3, 7, 8 }, { nullptr, UP_DEVICE_KIND_BATTERY, UP_DEVICE_STATE_DISCHARGING, 10, 73.3, TRUE } }, // ignore mouse | |
397 | 753 | { { 0, 7 }, descriptions[0] }, // 1 discharging battery, 1 discharging mouse. pick the one with the least time left. | 760 | |
398 | 754 | { { 2, 7 }, descriptions[7] }, // 1 discharging battery, 1 discharging mouse. pick the one with the least time left. | 761 | { { 0, 9 }, descriptions[0] }, // everything comes before power lines except devices without power supply |
399 | 755 | 762 | { { 3, 9 }, descriptions[3] }, | |
400 | 756 | { { 0, 8 }, descriptions[0] }, // 1 discharging battery, 1 fully-charged mouse. pick the one that's discharging. | 763 | { { 7, 9 }, descriptions[9] }, |
388 | 757 | { { 6, 7 }, descriptions[7] }, // 1 discharging mouse, 1 fully-charged battery. pick the one that's discharging. | ||
389 | 758 | |||
390 | 759 | { { 0, 9 }, descriptions[0] }, // everything comes before power lines | ||
391 | 760 | { { 3, 9 }, descriptions[3] }, | ||
392 | 761 | { { 7, 9 }, descriptions[7] } | ||
401 | 762 | }; | 764 | }; |
402 | 763 | 765 | ||
403 | 764 | for(const auto& test : tests) | 766 | for(const auto& test : tests) |
404 | @@ -775,6 +777,7 @@ | |||
405 | 775 | EXPECT_EQ(x.state, indicator_power_device_get_state(primary)); | 777 | EXPECT_EQ(x.state, indicator_power_device_get_state(primary)); |
406 | 776 | EXPECT_EQ(x.time, indicator_power_device_get_time(primary)); | 778 | EXPECT_EQ(x.time, indicator_power_device_get_time(primary)); |
407 | 777 | EXPECT_EQ(int(ceil(x.percentage)), int(ceil(indicator_power_device_get_percentage(primary)))); | 779 | EXPECT_EQ(int(ceil(x.percentage)), int(ceil(indicator_power_device_get_percentage(primary)))); |
408 | 780 | EXPECT_EQ(x.power_supply, indicator_power_device_get_power_supply(primary)); | ||
409 | 778 | g_object_unref(primary); | 781 | g_object_unref(primary); |
410 | 779 | 782 | ||
411 | 780 | // reverse the list and repeat the test | 783 | // reverse the list and repeat the test |
412 | @@ -786,6 +789,7 @@ | |||
413 | 786 | EXPECT_EQ(x.state, indicator_power_device_get_state(primary)); | 789 | EXPECT_EQ(x.state, indicator_power_device_get_state(primary)); |
414 | 787 | EXPECT_EQ(x.time, indicator_power_device_get_time(primary)); | 790 | EXPECT_EQ(x.time, indicator_power_device_get_time(primary)); |
415 | 788 | EXPECT_EQ(int(ceil(x.percentage)), int(ceil(indicator_power_device_get_percentage(primary)))); | 791 | EXPECT_EQ(int(ceil(x.percentage)), int(ceil(indicator_power_device_get_percentage(primary)))); |
416 | 792 | EXPECT_EQ(x.power_supply, indicator_power_device_get_power_supply(primary)); | ||
417 | 789 | g_object_unref(primary); | 793 | g_object_unref(primary); |
418 | 790 | 794 | ||
419 | 791 | // cleanup | 795 | // cleanup |
420 | 792 | 796 | ||
421 | === modified file 'tests/test-notify.cc' | |||
422 | --- tests/test-notify.cc 2016-01-02 01:37:51 +0000 | |||
423 | +++ tests/test-notify.cc 2017-01-05 04:47:47 +0000 | |||
424 | @@ -194,7 +194,8 @@ | |||
425 | 194 | UP_DEVICE_KIND_BATTERY, | 194 | UP_DEVICE_KIND_BATTERY, |
426 | 195 | 50.0, | 195 | 50.0, |
427 | 196 | UP_DEVICE_STATE_DISCHARGING, | 196 | UP_DEVICE_STATE_DISCHARGING, |
429 | 197 | 30); | 197 | 30, |
430 | 198 | TRUE); | ||
431 | 198 | 199 | ||
432 | 199 | // confirm that the power levels trigger at the right percentages | 200 | // confirm that the power levels trigger at the right percentages |
433 | 200 | for (int i=100; i>=0; --i) | 201 | for (int i=100; i>=0; --i) |
434 | @@ -272,7 +273,8 @@ | |||
435 | 272 | UP_DEVICE_KIND_BATTERY, | 273 | UP_DEVICE_KIND_BATTERY, |
436 | 273 | 50.0, | 274 | 50.0, |
437 | 274 | UP_DEVICE_STATE_DISCHARGING, | 275 | UP_DEVICE_STATE_DISCHARGING, |
439 | 275 | 30); | 276 | 30, |
440 | 277 | TRUE); | ||
441 | 276 | 278 | ||
442 | 277 | // set up a notifier and give it the battery so changing the battery's | 279 | // set up a notifier and give it the battery so changing the battery's |
443 | 278 | // charge should show up on the bus. | 280 | // charge should show up on the bus. |
444 | @@ -354,7 +356,8 @@ | |||
445 | 354 | UP_DEVICE_KIND_BATTERY, | 356 | UP_DEVICE_KIND_BATTERY, |
446 | 355 | percent_low + 1.0, | 357 | percent_low + 1.0, |
447 | 356 | UP_DEVICE_STATE_DISCHARGING, | 358 | UP_DEVICE_STATE_DISCHARGING, |
449 | 357 | 30); | 359 | 30, |
450 | 360 | TRUE); | ||
451 | 358 | 361 | ||
452 | 359 | // the file we expect to play on a low battery notification... | 362 | // the file we expect to play on a low battery notification... |
453 | 360 | const char* expected_file = XDG_DATA_HOME "/" GETTEXT_PACKAGE "/sounds/" LOW_BATTERY_SOUND; | 363 | const char* expected_file = XDG_DATA_HOME "/" GETTEXT_PACKAGE "/sounds/" LOW_BATTERY_SOUND; |