1737.2.16
by Gord Allott
added tests |
1 |
#include "test_service_hud.h" |
2 |
||
3149.2.1
by Marco Trevisan (Treviño)
test-gtest-service: move services to GDBusServer/GDBusObject |
3 |
namespace unity |
4 |
{
|
|
5 |
namespace service |
|
6 |
{
|
|
7 |
namespace
|
|
8 |
{
|
|
9 |
const char * hud_interface = |
|
1737.2.16
by Gord Allott
added tests |
10 |
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" |
11 |
"<node name=\"/\">\n" |
|
1737.2.24
by Gord Allott
fixed up tests |
12 |
" <interface name=\"com.canonical.hud\">\n" |
1737.2.16
by Gord Allott
added tests |
13 |
"<!-- Properties -->\n" |
1737.2.24
by Gord Allott
fixed up tests |
14 |
" <!-- None -->\n" |
1737.2.16
by Gord Allott
added tests |
15 |
"\n" |
16 |
"<!-- Functions -->\n" |
|
1737.2.24
by Gord Allott
fixed up tests |
17 |
" <method name=\"StartQuery\">\n" |
18 |
" <!-- in -->\n" |
|
19 |
" <arg type=\"s\" name=\"query\" direction=\"in\" />\n" |
|
20 |
" <arg type=\"i\" name=\"entries\" direction=\"in\" />\n" |
|
21 |
" <!-- out -->\n" |
|
22 |
" <arg type=\"s\" name=\"target\" direction=\"out\" />\n" |
|
23 |
" <arg type=\"a(sssssv)\" name=\"suggestions\" direction=\"out\" />\n" |
|
24 |
" <arg type=\"v\" name=\"querykey\" direction=\"out\" />\n" |
|
25 |
" </method>\n" |
|
26 |
"\n" |
|
27 |
" <method name=\"ExecuteQuery\">\n" |
|
28 |
" <arg type=\"v\" name=\"key\" direction=\"in\" />\n" |
|
29 |
" <arg type=\"u\" name=\"timestamp\" direction=\"in\" />\n" |
|
30 |
" </method>\n" |
|
31 |
"\n" |
|
32 |
" <method name=\"CloseQuery\">\n" |
|
33 |
" <arg type=\"v\" name=\"querykey\" direction=\"in\" />\n" |
|
34 |
" </method>\n" |
|
1737.2.16
by Gord Allott
added tests |
35 |
"\n" |
36 |
"<!-- Signals -->\n" |
|
1737.2.24
by Gord Allott
fixed up tests |
37 |
" <signal name=\"UpdatedQuery\">\n" |
38 |
" <arg type=\"s\" name=\"target\" direction=\"out\" />\n" |
|
39 |
" <arg type=\"a(sssssv)\" name=\"suggestions\" direction=\"out\" />\n" |
|
40 |
" <arg type=\"v\" name=\"querykey\" direction=\"out\" />\n" |
|
41 |
" </signal>\n" |
|
1737.2.16
by Gord Allott
added tests |
42 |
"\n" |
43 |
"<!-- End of interesting stuff -->\n" |
|
44 |
"\n" |
|
1737.2.24
by Gord Allott
fixed up tests |
45 |
" </interface>\n" |
1737.2.16
by Gord Allott
added tests |
46 |
"</node>\n" |
47 |
;
|
|
3149.2.1
by Marco Trevisan (Treviño)
test-gtest-service: move services to GDBusServer/GDBusObject |
48 |
}
|
49 |
||
50 |
||
51 |
Hud::Hud() |
|
52 |
{
|
|
53 |
auto object = std::make_shared<glib::DBusObject>(hud_interface, "com.canonical.hud"); |
|
54 |
object->SetMethodsCallsHandler(sigc::mem_fun(this, &Hud::OnMethodCall)); |
|
55 |
object->registered.connect([this] (std::string const&) { |
|
56 |
timeout_.reset(new glib::TimeoutSeconds(1)); |
|
57 |
timeout_->Run([this] { EmitSignal(); return true; }); |
|
58 |
});
|
|
59 |
||
60 |
server_.AddObject(object, "/com/canonical/hud"); |
|
61 |
}
|
|
62 |
||
63 |
void Hud::EmitSignal() |
|
2120.5.1
by Gord Allott
emit signal (1 line) and tests (about a billion lines) |
64 |
{
|
65 |
GVariant *query; |
|
66 |
int num_entries = 5; |
|
67 |
||
68 |
/* Build into into a variant */
|
|
69 |
GVariantBuilder ret_builder; |
|
70 |
g_variant_builder_init(&ret_builder, G_VARIANT_TYPE_TUPLE); |
|
71 |
g_variant_builder_add_value(&ret_builder, g_variant_new_string("target")); |
|
72 |
GVariantBuilder builder; |
|
3149.2.1
by Marco Trevisan (Treviño)
test-gtest-service: move services to GDBusServer/GDBusObject |
73 |
|
2120.5.1
by Gord Allott
emit signal (1 line) and tests (about a billion lines) |
74 |
g_variant_builder_init(&builder, G_VARIANT_TYPE_ARRAY); |
3149.2.1
by Marco Trevisan (Treviño)
test-gtest-service: move services to GDBusServer/GDBusObject |
75 |
|
2120.5.1
by Gord Allott
emit signal (1 line) and tests (about a billion lines) |
76 |
int i = 0; |
3149.2.1
by Marco Trevisan (Treviño)
test-gtest-service: move services to GDBusServer/GDBusObject |
77 |
for (i = 0; i < num_entries; i++) |
2120.5.1
by Gord Allott
emit signal (1 line) and tests (about a billion lines) |
78 |
{
|
79 |
gchar* target = g_strdup_printf("test-%i", i); |
|
80 |
gchar* icon = g_strdup_printf("icon-%i", i); |
|
81 |
gchar* future_icon = g_strdup(icon); |
|
82 |
gchar* completion_text = g_strdup_printf("completion-%i", i); |
|
83 |
gchar* accelerator = g_strdup_printf("<alt>+whatever"); |
|
84 |
||
85 |
GVariantBuilder tuple; |
|
86 |
g_variant_builder_init(&tuple, G_VARIANT_TYPE_TUPLE); |
|
87 |
g_variant_builder_add_value(&tuple, g_variant_new_string(target)); |
|
88 |
g_variant_builder_add_value(&tuple, g_variant_new_string(icon)); |
|
89 |
g_variant_builder_add_value(&tuple, g_variant_new_string(future_icon)); |
|
90 |
g_variant_builder_add_value(&tuple, g_variant_new_string(completion_text)); |
|
91 |
g_variant_builder_add_value(&tuple, g_variant_new_string(accelerator)); |
|
92 |
// build a fake key
|
|
93 |
GVariant* key; |
|
94 |
{
|
|
95 |
GVariantBuilder keybuilder; |
|
96 |
g_variant_builder_init(&keybuilder, G_VARIANT_TYPE_TUPLE); |
|
97 |
g_variant_builder_add_value(&keybuilder, g_variant_new_string("dummy string")); |
|
98 |
g_variant_builder_add_value(&keybuilder, g_variant_new_string("dummy string")); |
|
99 |
g_variant_builder_add_value(&keybuilder, g_variant_new_string("dummy string")); |
|
100 |
g_variant_builder_add_value(&keybuilder, g_variant_new_int32(1986)); |
|
101 |
||
102 |
key = g_variant_new_variant(g_variant_builder_end(&keybuilder)); |
|
103 |
}
|
|
104 |
g_variant_ref_sink(key); |
|
105 |
g_variant_builder_add_value(&tuple, key); |
|
106 |
g_variant_builder_add_value(&builder, g_variant_builder_end(&tuple)); |
|
107 |
g_free(target); |
|
108 |
g_free(icon); |
|
109 |
g_free(future_icon); |
|
110 |
g_free(completion_text); |
|
111 |
}
|
|
112 |
g_variant_builder_add_value(&ret_builder, g_variant_builder_end(&builder)); |
|
3149.2.1
by Marco Trevisan (Treviño)
test-gtest-service: move services to GDBusServer/GDBusObject |
113 |
|
2120.5.1
by Gord Allott
emit signal (1 line) and tests (about a billion lines) |
114 |
GVariant* query_key; |
115 |
{
|
|
116 |
GVariantBuilder keybuilder; |
|
117 |
g_variant_builder_init(&keybuilder, G_VARIANT_TYPE_TUPLE); |
|
118 |
g_variant_builder_add_value(&keybuilder, g_variant_new_string("dummy string")); |
|
119 |
g_variant_builder_add_value(&keybuilder, g_variant_new_string("dummy string")); |
|
120 |
g_variant_builder_add_value(&keybuilder, g_variant_new_string("dummy string")); |
|
121 |
g_variant_builder_add_value(&keybuilder, g_variant_new_int32(1986)); |
|
122 |
||
123 |
query_key = g_variant_new_variant(g_variant_builder_end(&keybuilder)); |
|
124 |
}
|
|
125 |
g_variant_ref_sink(query_key); |
|
126 |
g_variant_builder_add_value(&ret_builder, query_key); |
|
3149.2.1
by Marco Trevisan (Treviño)
test-gtest-service: move services to GDBusServer/GDBusObject |
127 |
|
2120.5.1
by Gord Allott
emit signal (1 line) and tests (about a billion lines) |
128 |
query = g_variant_builder_end(&ret_builder); |
3149.2.1
by Marco Trevisan (Treviño)
test-gtest-service: move services to GDBusServer/GDBusObject |
129 |
|
130 |
server_.EmitSignal("com.canonical.hud", "UpdatedQuery", query); |
|
2120.5.1
by Gord Allott
emit signal (1 line) and tests (about a billion lines) |
131 |
}
|
132 |
||
3149.2.1
by Marco Trevisan (Treviño)
test-gtest-service: move services to GDBusServer/GDBusObject |
133 |
GVariant* Hud::OnMethodCall(std::string const& method, GVariant *parameters) |
1737.2.16
by Gord Allott
added tests |
134 |
{
|
3149.2.1
by Marco Trevisan (Treviño)
test-gtest-service: move services to GDBusServer/GDBusObject |
135 |
if (method == "StartQuery") |
1737.2.16
by Gord Allott
added tests |
136 |
{
|
3149.2.1
by Marco Trevisan (Treviño)
test-gtest-service: move services to GDBusServer/GDBusObject |
137 |
glib::String query; |
1737.2.24
by Gord Allott
fixed up tests |
138 |
int num_entries = 0; |
1737.2.16
by Gord Allott
added tests |
139 |
|
1737.2.24
by Gord Allott
fixed up tests |
140 |
g_variant_get(parameters, "(si)", &query, &num_entries); |
1737.2.16
by Gord Allott
added tests |
141 |
|
142 |
/* Build into into a variant */
|
|
143 |
GVariantBuilder ret_builder; |
|
144 |
g_variant_builder_init(&ret_builder, G_VARIANT_TYPE_TUPLE); |
|
145 |
g_variant_builder_add_value(&ret_builder, g_variant_new_string("target")); |
|
146 |
GVariantBuilder builder; |
|
3149.2.1
by Marco Trevisan (Treviño)
test-gtest-service: move services to GDBusServer/GDBusObject |
147 |
|
1737.2.24
by Gord Allott
fixed up tests |
148 |
g_variant_builder_init(&builder, G_VARIANT_TYPE_ARRAY); |
3149.2.1
by Marco Trevisan (Treviño)
test-gtest-service: move services to GDBusServer/GDBusObject |
149 |
|
1737.2.24
by Gord Allott
fixed up tests |
150 |
int i = 0; |
3149.2.1
by Marco Trevisan (Treviño)
test-gtest-service: move services to GDBusServer/GDBusObject |
151 |
for (i = 0; i < num_entries; i++) |
1737.2.16
by Gord Allott
added tests |
152 |
{
|
1737.2.24
by Gord Allott
fixed up tests |
153 |
gchar* target = g_strdup_printf("test-%i", i); |
154 |
gchar* icon = g_strdup_printf("icon-%i", i); |
|
155 |
gchar* future_icon = g_strdup(icon); |
|
156 |
gchar* completion_text = g_strdup_printf("completion-%i", i); |
|
157 |
gchar* accelerator = g_strdup_printf("<alt>+whatever"); |
|
158 |
||
159 |
GVariantBuilder tuple; |
|
160 |
g_variant_builder_init(&tuple, G_VARIANT_TYPE_TUPLE); |
|
161 |
g_variant_builder_add_value(&tuple, g_variant_new_string(target)); |
|
162 |
g_variant_builder_add_value(&tuple, g_variant_new_string(icon)); |
|
163 |
g_variant_builder_add_value(&tuple, g_variant_new_string(future_icon)); |
|
164 |
g_variant_builder_add_value(&tuple, g_variant_new_string(completion_text)); |
|
165 |
g_variant_builder_add_value(&tuple, g_variant_new_string(accelerator)); |
|
166 |
// build a fake key
|
|
167 |
GVariant* key; |
|
1737.2.16
by Gord Allott
added tests |
168 |
{
|
1737.2.24
by Gord Allott
fixed up tests |
169 |
GVariantBuilder keybuilder; |
170 |
g_variant_builder_init(&keybuilder, G_VARIANT_TYPE_TUPLE); |
|
171 |
g_variant_builder_add_value(&keybuilder, g_variant_new_string("dummy string")); |
|
172 |
g_variant_builder_add_value(&keybuilder, g_variant_new_string("dummy string")); |
|
173 |
g_variant_builder_add_value(&keybuilder, g_variant_new_string("dummy string")); |
|
174 |
g_variant_builder_add_value(&keybuilder, g_variant_new_int32(1986)); |
|
175 |
||
176 |
key = g_variant_new_variant(g_variant_builder_end(&keybuilder)); |
|
1737.2.16
by Gord Allott
added tests |
177 |
}
|
1737.2.24
by Gord Allott
fixed up tests |
178 |
g_variant_ref_sink(key); |
179 |
g_variant_builder_add_value(&tuple, key); |
|
180 |
g_variant_builder_add_value(&builder, g_variant_builder_end(&tuple)); |
|
181 |
g_free(target); |
|
182 |
g_free(icon); |
|
183 |
g_free(future_icon); |
|
184 |
g_free(completion_text); |
|
185 |
}
|
|
186 |
g_variant_builder_add_value(&ret_builder, g_variant_builder_end(&builder)); |
|
3149.2.1
by Marco Trevisan (Treviño)
test-gtest-service: move services to GDBusServer/GDBusObject |
187 |
|
1737.2.24
by Gord Allott
fixed up tests |
188 |
GVariant* query_key; |
1737.2.16
by Gord Allott
added tests |
189 |
{
|
1737.2.24
by Gord Allott
fixed up tests |
190 |
GVariantBuilder keybuilder; |
191 |
g_variant_builder_init(&keybuilder, G_VARIANT_TYPE_TUPLE); |
|
192 |
g_variant_builder_add_value(&keybuilder, g_variant_new_string("dummy string")); |
|
193 |
g_variant_builder_add_value(&keybuilder, g_variant_new_string("dummy string")); |
|
194 |
g_variant_builder_add_value(&keybuilder, g_variant_new_string("dummy string")); |
|
195 |
g_variant_builder_add_value(&keybuilder, g_variant_new_int32(1986)); |
|
196 |
||
197 |
query_key = g_variant_new_variant(g_variant_builder_end(&keybuilder)); |
|
1737.2.16
by Gord Allott
added tests |
198 |
}
|
1737.2.24
by Gord Allott
fixed up tests |
199 |
g_variant_ref_sink(query_key); |
200 |
g_variant_builder_add_value(&ret_builder, query_key); |
|
3149.2.1
by Marco Trevisan (Treviño)
test-gtest-service: move services to GDBusServer/GDBusObject |
201 |
|
202 |
return g_variant_builder_end(&ret_builder); |
|
203 |
}
|
|
204 |
else if (method == "ExecuteQuery") |
|
205 |
{
|
|
206 |
GVariant * key = NULL; |
|
207 |
key = g_variant_get_child_value(parameters, 0); |
|
208 |
g_variant_unref(key); |
|
209 |
}
|
|
210 |
else if (method == "CloseQuery") |
|
211 |
{
|
|
212 |
GVariant * key = NULL; |
|
213 |
key = g_variant_get_child_value(parameters, 0); |
|
214 |
g_variant_unref(key); |
|
215 |
}
|
|
216 |
||
217 |
return nullptr; |
|
218 |
}
|
|
219 |
||
220 |
}
|
|
1737.2.16
by Gord Allott
added tests |
221 |
}
|
222 |