Merge lp:~jonas-drange/ubuntu-push/lp1517189 into lp:ubuntu-push/automatic

Proposed by Jonas G. Drange
Status: Merged
Approved by: Jonas G. Drange
Approved revision: 424
Merged at revision: 417
Proposed branch: lp:~jonas-drange/ubuntu-push/lp1517189
Merge into: lp:ubuntu-push/automatic
Diff against target: 492 lines (+88/-50)
17 files modified
accounts/caccounts.go (+2/-0)
click/click_test.go (+28/-13)
client/service/postal_test.go (+16/-11)
client/service/service_test.go (+3/-1)
client/session/session_test.go (+20/-8)
config/config_test.go (+1/-1)
debian/rules (+0/-6)
dependencies.tsv (+2/-2)
http13client/z_last_test.go (+2/-1)
identifier/testing/testing_test.go (+3/-2)
launch_helper/cual/cual_c.go (+2/-0)
launch_helper/kindpool.go (+1/-1)
launch_helper/kindpool_test.go (+1/-1)
messaging/cmessaging/cmessaging_c.go (+2/-0)
scripts/connect-many.py (+1/-1)
signing-helper/CMakeLists.txt (+2/-2)
urldispatcher/curldispatcher/curldispatcher_c.go (+2/-0)
To merge this branch: bzr merge lp:~jonas-drange/ubuntu-push/lp1517189
Reviewer Review Type Date Requested Status
Samuele Pedroni Approve
Review via email: mp+278045@code.launchpad.net

This proposal supersedes a proposal from 2015-11-19.

Commit message

fix tests and warnings

To post a comment you must log in.
Revision history for this message
Samuele Pedroni (pedronis) wrote :

put some comment, quite sure the Makefile change won't help when building in the builders

review: Needs Fixing
422. By Jonas G. Drange

undo maxprocs, insecure. add pedronis' fix for panics

Revision history for this message
Samuele Pedroni (pedronis) wrote :

so it seeems we need -insecure but is not relevant for building so I would like to talk to some people maintaining go first

looks good to me, but put a small suggestion below

review: Approve
423. By Jonas G. Drange

make format

424. By Jonas G. Drange

panic on err in helper

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'accounts/caccounts.go'
2--- accounts/caccounts.go 2014-09-05 10:47:29 +0000
3+++ accounts/caccounts.go 2015-11-20 14:56:43 +0000
4@@ -3,6 +3,8 @@
5 /*
6 #include <libaccounts-glib/accounts-glib.h>
7
8+void gocb();
9+
10 static void cb(AgManager *manager, AgAccountId account_id, gpointer p) {
11 AgAccount *account = ag_manager_get_account(manager, account_id);
12 if (!account) {
13
14=== modified file 'click/click_test.go'
15--- click/click_test.go 2014-09-17 19:38:34 +0000
16+++ click/click_test.go 2015-11-20 14:56:43 +0000
17@@ -1,5 +1,5 @@
18 /*
19- Copyright 2013-2014 Canonical Ltd.
20+ Copyright 2013-2015 Canonical Ltd.
21
22 This program is free software: you can redistribute it and/or modify it
23 under the terms of the GNU General Public License version 3, as published
24@@ -19,6 +19,8 @@
25 import (
26 "encoding/json"
27 "fmt"
28+ "os/exec"
29+ "strings"
30 "testing"
31
32 . "launchpad.net/gocheck"
33@@ -32,6 +34,16 @@
34
35 var _ = Suite(&clickSuite{})
36
37+func GetPyVer() string {
38+ out, err := exec.Command("python3", "-V").Output()
39+ if err != nil {
40+ panic(err)
41+ }
42+ pyver := strings.Replace(string(out[:]), "Python ", "", -1)
43+ vers := strings.Split(pyver, ".")
44+ return fmt.Sprintf("%s.%s", vers[0], vers[1])
45+}
46+
47 func (cs *clickSuite) TestParseAppId(c *C) {
48 app, err := ParseAppId("com.ubuntu.clock_clock")
49 c.Assert(err, IsNil)
50@@ -72,18 +84,19 @@
51 }
52
53 func (cs *clickSuite) TestParseAppIdLegacy(c *C) {
54- app, err := ParseAppId("_python3.4")
55+ pyver := fmt.Sprintf("python%s", GetPyVer())
56+ app, err := ParseAppId(fmt.Sprintf("_%s", pyver))
57 c.Assert(err, IsNil)
58 c.Check(app.Package, Equals, "")
59 c.Check(app.InPackage(""), Equals, true)
60- c.Check(app.Application, Equals, "python3.4")
61+ c.Check(app.Application, Equals, pyver)
62 c.Check(app.Version, Equals, "")
63 c.Check(app.Click, Equals, false)
64- c.Check(app.Original(), Equals, "_python3.4")
65- c.Check(app.Versioned(), Equals, "python3.4")
66- c.Check(app.Base(), Equals, "python3.4")
67- c.Check(app.DesktopId(), Equals, "python3.4.desktop")
68- c.Check(app.DispatchPackage(), Equals, "python3.4")
69+ c.Check(app.Original(), Equals, fmt.Sprintf("_%s", pyver))
70+ c.Check(app.Versioned(), Equals, pyver)
71+ c.Check(app.Base(), Equals, pyver)
72+ c.Check(app.DesktopId(), Equals, fmt.Sprintf("%s.desktop", pyver))
73+ c.Check(app.DispatchPackage(), Equals, pyver)
74
75 for _, s := range []string{"_.foo", "_foo/", "_/foo"} {
76 app, err = ParseAppId(s)
77@@ -93,7 +106,8 @@
78 }
79
80 func (cs *clickSuite) TestJSON(c *C) {
81- for _, appId := range []string{"com.ubuntu.clock_clock", "com.ubuntu.clock_clock_10", "_python3.4"} {
82+ pyver := fmt.Sprintf("python%s", GetPyVer())
83+ for _, appId := range []string{"com.ubuntu.clock_clock", "com.ubuntu.clock_clock_10", fmt.Sprintf("_%s", pyver)} {
84 app, err := ParseAppId(appId)
85 c.Assert(err, IsNil, Commentf(appId))
86 b, err := json.Marshal(app)
87@@ -106,9 +120,10 @@
88 }
89
90 func (cs *clickSuite) TestIcon(c *C) {
91- app, err := ParseAppId("_python3.4")
92+ pyver := fmt.Sprintf("python%s", GetPyVer())
93+ app, err := ParseAppId(fmt.Sprintf("_%s", pyver))
94 c.Assert(err, IsNil)
95- c.Check(app.Icon(), Equals, "/usr/share/pixmaps/python3.4.xpm")
96+ c.Check(app.Icon(), Equals, fmt.Sprintf("/usr/share/pixmaps/%s.xpm", pyver))
97 }
98
99 func (s *clickSuite) TestUser(c *C) {
100@@ -161,7 +176,7 @@
101 func (s *clickSuite) TestInstalledLegacy(c *C) {
102 u, err := User()
103 c.Assert(err, IsNil)
104- app, err := ParseAppId("_python3.4")
105+ app, err := ParseAppId(fmt.Sprintf("_python%s", GetPyVer()))
106 c.Assert(err, IsNil)
107 c.Check(u.Installed(app, false), Equals, true)
108 }
109@@ -198,7 +213,7 @@
110 func (s *clickSuite) TestSymbolicIconCallsSymbolic(c *C) {
111 symbolic = func(string) string { return "xyzzy" }
112 defer func() { symbolic = _symbolic }()
113- app, err := ParseAppId("_python3.4")
114+ app, err := ParseAppId(fmt.Sprintf("_python%s", GetPyVer()))
115 c.Assert(err, IsNil)
116 c.Check(app.SymbolicIcon(), Equals, "xyzzy")
117 }
118
119=== modified file 'client/service/postal_test.go'
120--- client/service/postal_test.go 2015-10-29 15:51:59 +0000
121+++ client/service/postal_test.go 2015-11-20 14:56:43 +0000
122@@ -134,6 +134,7 @@
123 }
124
125 type fakeUrlDispatcher struct {
126+ DispatchDone chan bool
127 DispatchCalls [][]string
128 TestURLCalls []map[string][]string
129 NextTestURLResult bool
130@@ -148,6 +149,7 @@
131 if fud.DispatchShouldFail {
132 return errors.New("fail!")
133 }
134+ fud.DispatchDone <- true
135 return nil
136 }
137
138@@ -196,7 +198,13 @@
139 ps.bus = testibus.NewTestingEndpoint(condition.Work(true), condition.Work(true))
140 ps.notifBus = testibus.NewTestingEndpoint(condition.Work(true), condition.Work(true))
141 ps.counterBus = testibus.NewTestingEndpoint(condition.Work(true), condition.Work(true))
142- ps.accountsBus = testibus.NewTestingEndpoint(condition.Work(true), condition.Work(true), map[string]dbus.Variant{"IncomingMessageVibrate": dbus.Variant{true}})
143+ ps.accountsBus = testibus.NewTestingEndpoint(condition.Work(true), condition.Work(true), map[string]dbus.Variant{
144+ "IncomingMessageVibrate": dbus.Variant{true},
145+ "SilentMode": dbus.Variant{false},
146+ "IncomingMessageSound": dbus.Variant{""},
147+ "IncomingMessageVibrateSilentMode": dbus.Variant{false},
148+ })
149+
150 ps.hapticBus = testibus.NewTestingEndpoint(condition.Work(true), condition.Work(true))
151 ps.unityGreeterBus = testibus.NewTestingEndpoint(condition.Work(true), condition.Work(true), false)
152 ps.winStackBus = testibus.NewTestingEndpoint(condition.Work(true), condition.Work(true), []windowstack.WindowsInfo{})
153@@ -557,14 +565,13 @@
154 svc.NotificationsEndp = endp
155 svc.UnityGreeterEndp = ps.unityGreeterBus
156 svc.WindowStackEndp = ps.winStackBus
157+ nopTicker := make(chan []interface{})
158+ testibus.SetWatchSource(endp, "ActionInvoked", nopTicker)
159+ defer close(nopTicker)
160 svc.launchers = map[string]launch_helper.HelperLauncher{}
161 svc.fallbackVibration = &launch_helper.Vibration{Pattern: []uint32{1}}
162 c.Assert(svc.Start(), IsNil)
163
164- nopTicker := make(chan []interface{})
165- testibus.SetWatchSource(endp, "ActionInvoked", nopTicker)
166- defer close(nopTicker)
167-
168 // Persist is false so we just check the log
169 card := &launch_helper.Card{Icon: "icon-value", Summary: "summary-value", Body: "body-value", Popup: true, Persist: false}
170 vib := json.RawMessage(`true`)
171@@ -660,20 +667,19 @@
172 app, _ := click.ParseAppId("com.example.test_test-app")
173 c.Assert(svc.Start(), IsNil)
174 fakeDisp := new(fakeUrlDispatcher)
175+ fakeDisp.DispatchDone = make(chan bool)
176 svc.urlDispatcher = fakeDisp
177 fakeDisp.NextTestURLResult = true
178 svc.messagingMenu = fmm
179 aCh := make(chan *notifications.RawAction)
180 rCh := make(chan *reply.MMActionReply)
181- bCh := make(chan bool)
182 go func() {
183 aCh <- nil // just in case?
184 aCh <- &notifications.RawAction{App: app, Action: "potato://", Nid: "xyzzy"}
185 close(aCh)
186- bCh <- true
187 }()
188 go svc.handleActions(aCh, rCh)
189- takeNextBool(bCh)
190+ takeNextBool(fakeDisp.DispatchDone)
191 fakeDisp.Lock.Lock()
192 defer fakeDisp.Lock.Unlock()
193 c.Assert(len(fakeDisp.DispatchCalls), Equals, 1)
194@@ -687,19 +693,18 @@
195 c.Assert(svc.Start(), IsNil)
196 fakeDisp := new(fakeUrlDispatcher)
197 svc.urlDispatcher = fakeDisp
198+ fakeDisp.DispatchDone = make(chan bool)
199 fakeDisp.NextTestURLResult = true
200 app, _ := click.ParseAppId("com.example.test_test-app")
201 aCh := make(chan *notifications.RawAction)
202 rCh := make(chan *reply.MMActionReply)
203- bCh := make(chan bool)
204 go func() {
205 rCh <- nil // just in case?
206 rCh <- &reply.MMActionReply{App: app, Action: "potato://", Notification: "foo.bar"}
207 close(rCh)
208- bCh <- true
209 }()
210 go svc.handleActions(aCh, rCh)
211- takeNextBool(bCh)
212+ takeNextBool(fakeDisp.DispatchDone)
213 fakeDisp.Lock.Lock()
214 defer fakeDisp.Lock.Unlock()
215 c.Assert(len(fakeDisp.DispatchCalls), Equals, 1)
216
217=== modified file 'client/service/service_test.go'
218--- client/service/service_test.go 2014-11-25 17:30:03 +0000
219+++ client/service/service_test.go 2015-11-20 14:56:43 +0000
220@@ -36,7 +36,9 @@
221 "launchpad.net/ubuntu-push/testing/condition"
222 )
223
224-func TestService(t *testing.T) { TestingT(t) }
225+func TestService(t *testing.T) {
226+ TestingT(t)
227+}
228
229 type serviceSuite struct {
230 log logger.Logger
231
232=== modified file 'client/session/session_test.go'
233--- client/session/session_test.go 2015-04-17 12:55:00 +0000
234+++ client/session/session_test.go 2015-11-20 14:56:43 +0000
235@@ -1021,8 +1021,20 @@
236 }()
237 }
238
239+func (s *loopSuite) waitUntilRunning(c *C) {
240+ delay := time.Duration(1000)
241+ for i := 0; i < 5; i++ {
242+ if s.sess.State() == Running {
243+ return
244+ }
245+ time.Sleep(delay)
246+ delay *= 2
247+ }
248+ c.Check(s.sess.State(), Equals, Running)
249+}
250+
251 func (s *loopSuite) TestLoopReadError(c *C) {
252- c.Check(s.sess.State(), Equals, Running)
253+ s.waitUntilRunning(c)
254 s.upCh <- errors.New("Read")
255 err := <-s.sess.errCh
256 c.Check(err, ErrorMatches, "Read")
257@@ -1030,7 +1042,7 @@
258 }
259
260 func (s *loopSuite) TestLoopPing(c *C) {
261- c.Check(s.sess.State(), Equals, Running)
262+ s.waitUntilRunning(c)
263 c.Check(takeNext(s.downCh), Equals, "deadline 1ms")
264 s.upCh <- protocol.PingPongMsg{Type: "ping"}
265 c.Check(takeNext(s.downCh), Equals, protocol.PingPongMsg{Type: "pong"})
266@@ -1040,7 +1052,7 @@
267 }
268
269 func (s *loopSuite) TestLoopLoopsDaLoop(c *C) {
270- c.Check(s.sess.State(), Equals, Running)
271+ s.waitUntilRunning(c)
272 for i := 1; i < 10; i++ {
273 c.Check(takeNext(s.downCh), Equals, "deadline 1ms")
274 s.upCh <- protocol.PingPongMsg{Type: "ping"}
275@@ -1053,7 +1065,7 @@
276 }
277
278 func (s *loopSuite) TestLoopBroadcast(c *C) {
279- c.Check(s.sess.State(), Equals, Running)
280+ s.waitUntilRunning(c)
281 b := &protocol.BroadcastMsg{
282 Type: "broadcast",
283 AppId: "--ignored--",
284@@ -1070,7 +1082,7 @@
285 }
286
287 func (s *loopSuite) TestLoopNotifications(c *C) {
288- c.Check(s.sess.State(), Equals, Running)
289+ s.waitUntilRunning(c)
290
291 n1 := protocol.Notification{
292 AppId: "app1",
293@@ -1090,7 +1102,7 @@
294 }
295
296 func (s *loopSuite) TestLoopSetParams(c *C) {
297- c.Check(s.sess.State(), Equals, Running)
298+ s.waitUntilRunning(c)
299 setParams := protocol.SetParamsMsg{
300 Type: "setparams",
301 SetCookie: "COOKIE",
302@@ -1104,7 +1116,7 @@
303 }
304
305 func (s *loopSuite) TestLoopConnBroken(c *C) {
306- c.Check(s.sess.State(), Equals, Running)
307+ s.waitUntilRunning(c)
308 broken := protocol.ConnBrokenMsg{
309 Type: "connbroken",
310 Reason: "REASON",
311@@ -1126,7 +1138,7 @@
312 failure := errors.New("warn")
313 log := s.sess.Log.(*helpers.TestLogger)
314
315- c.Check(s.sess.State(), Equals, Running)
316+ s.waitUntilRunning(c)
317 c.Check(takeNext(s.downCh), Equals, "deadline 1ms")
318 log.ResetCapture()
319 s.upCh <- warn
320
321=== modified file 'config/config_test.go'
322--- config/config_test.go 2014-05-16 15:37:24 +0000
323+++ config/config_test.go 2015-11-20 14:56:43 +0000
324@@ -344,7 +344,7 @@
325 "d": json.RawMessage(`"2s"`),
326 }
327 readUsingFlags(p, reflect.ValueOf(&cfg))
328- c.Check(buf.String(), Matches, `(?s).*-cfg@=<config.json>: get config values from file\n.*-d="2s": duration.*`)
329+ c.Check(buf.String(), Matches, `(?s).*get config values from file.*duration.*`)
330 }
331
332 func (s *configFlagsSuite) TestReadUsingFlagsAlreadyParsed(c *C) {
333
334=== modified file 'debian/rules'
335--- debian/rules 2015-08-14 13:03:23 +0000
336+++ debian/rules 2015-11-20 14:56:43 +0000
337@@ -8,12 +8,6 @@
338 dh_auto_build --buildsystem=golang
339 (cd signing-helper && cmake . && make)
340
341-# overriding dh_auto_test because the http13client tests don't all pass on go < 1.3
342-# (should go away once we ship go 1.3)
343-override_dh_auto_test:
344- cd $$( find ./ -type d -regex '\./[^/]*/src/launchpad.net' -printf "%h\n" | head -n1) && \
345- env GOPATH=$$(cd ..; pwd) go test -v $$(env GOPATH=$$(cd ..; pwd) go list $(DH_GOPKG)/... | grep -v acceptance | grep -v http13client )
346-
347 override_dh_install:
348 dh_install -Xusr/bin/cmd --fail-missing
349
350
351=== modified file 'dependencies.tsv'
352--- dependencies.tsv 2015-03-19 14:35:51 +0000
353+++ dependencies.tsv 2015-11-20 14:56:43 +0000
354@@ -1,5 +1,5 @@
355-code.google.com/p/go-uuid hg 7dda39b2e7d5e265014674c5af696ba4186679e9 11
356+code.google.com/p/go-uuid hg 35bc42037350f0078e3c974c6ea690f1926603ab 14
357 code.google.com/p/gosqlite hg 74691fb6f83716190870cde1b658538dd4b18eb0 15
358-launchpad.net/go-dbus/v1 bzr jlenton@gmail.com-20141023032446-s5icvsucwlv5o38a 129
359+launchpad.net/go-dbus/v1 bzr jlenton@gmail.com-20150203130125-kqqbam1jsp3tmlk5 136
360 launchpad.net/go-xdg/v0 bzr john.lenton@canonical.com-20140208094800-gubd5md7cro3mtxa 10
361 launchpad.net/gocheck bzr gustavo@niemeyer.net-20140225173054-xu9zlkf9kxhvow02 87
362
363=== modified file 'http13client/z_last_test.go'
364--- http13client/z_last_test.go 2014-03-19 20:20:19 +0000
365+++ http13client/z_last_test.go 2015-11-20 14:56:43 +0000
366@@ -5,7 +5,7 @@
367 package http_test
368
369 import (
370- "launchpad.net/ubuntu-push/http13client"
371+ "net/http"
372 "runtime"
373 "sort"
374 "strings"
375@@ -26,6 +26,7 @@
376 strings.Contains(stack, "created by net.startServer") ||
377 strings.Contains(stack, "created by testing.RunTests") ||
378 strings.Contains(stack, "closeWriteAndWait") ||
379+ strings.Contains(stack, "main.main(") ||
380 strings.Contains(stack, "testing.Main(") ||
381 // These only show up with GOTRACEBACK=2; Issue 5005 (comment 28)
382 strings.Contains(stack, "runtime.goexit") ||
383
384=== modified file 'identifier/testing/testing_test.go'
385--- identifier/testing/testing_test.go 2014-08-04 20:40:50 +0000
386+++ identifier/testing/testing_test.go 2015-11-20 14:56:43 +0000
387@@ -17,9 +17,10 @@
388 package testing
389
390 import (
391- identifier ".."
392+ "testing"
393+
394 . "launchpad.net/gocheck"
395- "testing"
396+ "launchpad.net/ubuntu-push/identifier"
397 )
398
399 // hook up gocheck
400
401=== modified file 'launch_helper/cual/cual_c.go'
402--- launch_helper/cual/cual_c.go 2014-07-17 15:46:19 +0000
403+++ launch_helper/cual/cual_c.go 2015-11-20 14:56:43 +0000
404@@ -24,6 +24,8 @@
405
406 #define HELPER_ERROR g_quark_from_static_string ("cgo-ual-helper-error-quark")
407
408+void helperDone(gpointer gp, const gchar * ciid);
409+
410 static void observer_of_stop (const gchar * app_id, const gchar * instance_id, const gchar * helper_type, gpointer user_data) {
411 helperDone (user_data, instance_id);
412 }
413
414=== modified file 'launch_helper/kindpool.go'
415--- launch_helper/kindpool.go 2015-08-21 19:53:23 +0000
416+++ launch_helper/kindpool.go 2015-11-20 14:56:43 +0000
417@@ -26,7 +26,7 @@
418 "sync"
419 "time"
420
421- "launchpad.net/go-xdg/v0"
422+ xdg "launchpad.net/go-xdg/v0"
423
424 "launchpad.net/ubuntu-push/click"
425 "launchpad.net/ubuntu-push/launch_helper/cual"
426
427=== modified file 'launch_helper/kindpool_test.go'
428--- launch_helper/kindpool_test.go 2015-08-21 19:53:23 +0000
429+++ launch_helper/kindpool_test.go 2015-11-20 14:56:43 +0000
430@@ -24,7 +24,7 @@
431 "path/filepath"
432 "time"
433
434- "launchpad.net/go-xdg/v0"
435+ xdg "launchpad.net/go-xdg/v0"
436 . "launchpad.net/gocheck"
437
438 "launchpad.net/ubuntu-push/click"
439
440=== modified file 'messaging/cmessaging/cmessaging_c.go'
441--- messaging/cmessaging/cmessaging_c.go 2014-07-24 10:33:28 +0000
442+++ messaging/cmessaging/cmessaging_c.go 2015-11-20 14:56:43 +0000
443@@ -21,6 +21,8 @@
444
445 // this is a .go file instead of a .c file because of dh-golang limitations
446
447+void handleActivate(gchar* c_action, const gchar * c_notification , gpointer obj);
448+
449 static void activate_cb(MessagingMenuMessage* msg, gchar* action, GVariant* parameter, gpointer obj) {
450 handleActivate(action, messaging_menu_message_get_id(msg), obj);
451 }
452
453=== modified file 'scripts/connect-many.py'
454--- scripts/connect-many.py 2014-08-04 14:47:00 +0000
455+++ scripts/connect-many.py 2015-11-20 14:56:43 +0000
456@@ -16,7 +16,7 @@
457 try:
458 for i in range(soft+100):
459 s=socket.socket()
460- w = ssl.wrap_socket(s)
461+ w = ssl.wrap_socket(s, ssl_version=ssl.PROTOCOL_TLSv1)
462 w.settimeout(1)
463 w.connect(addr)
464 conns.append(w)
465
466=== modified file 'signing-helper/CMakeLists.txt'
467--- signing-helper/CMakeLists.txt 2014-04-30 17:34:57 +0000
468+++ signing-helper/CMakeLists.txt 2015-11-20 14:56:43 +0000
469@@ -13,8 +13,8 @@
470 SET (CMAKE_AUTOMOC ON)
471 find_package(Qt5Core REQUIRED)
472
473-FILE (GLOB SIGNING_SOURCES signing*.cpp)
474-FILE (GLOB SIGNING_HEADERS signing*.h)
475+SET (SIGNING_SOURCES signing-helper.cpp)
476+SET (SIGNING_HEADERS signing.h)
477
478 add_executable (${SIGNING_EXE}
479 ${SIGNING_SOURCES}
480
481=== modified file 'urldispatcher/curldispatcher/curldispatcher_c.go'
482--- urldispatcher/curldispatcher/curldispatcher_c.go 2014-08-29 16:36:30 +0000
483+++ urldispatcher/curldispatcher/curldispatcher_c.go 2015-11-20 14:56:43 +0000
484@@ -23,6 +23,8 @@
485 #include <liburl-dispatcher-1/url-dispatcher.h>
486 #include <glib.h>
487
488+char* handleDispatchURLResult(const gchar * url, gboolean success, gpointer user_data);
489+
490 static void url_dispatch_callback(const gchar * url, gboolean success, gpointer user_data) {
491 handleDispatchURLResult(url, success, user_data);
492 }

Subscribers

People subscribed via source and target branches