Merge lp:~abreu-alexandre/unity-webapps-qml/14.10-backport-oa-api-requestaccount into lp:unity-webapps-qml/14.10
- 14.10-backport-oa-api-requestaccount
- Merge into 14.10
Proposed by
Alexandre Abreu
Status: | Needs review |
---|---|
Proposed branch: | lp:~abreu-alexandre/unity-webapps-qml/14.10-backport-oa-api-requestaccount |
Merge into: | lp:unity-webapps-qml/14.10 |
Diff against target: |
318 lines (+164/-10) 10 files modified
debian/control (+2/-1) examples/api-bindings/online-accounts/www/js/app.js (+11/-1) src/Ubuntu/UnityWebApps/UnityWebApps.js (+1/-2) src/Ubuntu/UnityWebApps/UnityWebApps.pro (+3/-1) src/Ubuntu/UnityWebApps/UnityWebApps.qml (+9/-1) src/Ubuntu/UnityWebApps/UnityWebAppsUtils.js (+2/-2) src/Ubuntu/UnityWebApps/bindings/online-accounts/backend/online-accounts-client.js (+87/-0) src/Ubuntu/UnityWebApps/bindings/online-accounts/backend/online-accounts.js (+2/-0) src/Ubuntu/UnityWebApps/bindings/online-accounts/client/online-accounts.js (+46/-1) src/Ubuntu/UnityWebApps/common/js/unity-backend-messaging-proxy.js (+1/-1) |
To merge this branch: | bzr merge lp:~abreu-alexandre/unity-webapps-qml/14.10-backport-oa-api-requestaccount |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Alberto Mardegan (community) | Approve | ||
Review via email: mp+253057@code.launchpad.net |
Commit message
Backport requestAccount() new OA API to 14.10
Description of the change
Backport requestAccount() new OA API to 14.10
To post a comment you must log in.
- 135. By Alexandre Abreu
-
fixes
Unmerged revisions
- 135. By Alexandre Abreu
-
fixes
- 134. By Alexandre Abreu
-
backport requestAccount() for OA API
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'debian/control' | |||
2 | --- debian/control 2014-10-14 10:02:49 +0000 | |||
3 | +++ debian/control 2015-03-16 20:19:48 +0000 | |||
4 | @@ -36,7 +36,8 @@ | |||
5 | 36 | qtdeclarative5-accounts-plugin, | 36 | qtdeclarative5-accounts-plugin, |
6 | 37 | ${misc:Depends}, | 37 | ${misc:Depends}, |
7 | 38 | ${shlibs:Depends}, | 38 | ${shlibs:Depends}, |
9 | 39 | Suggests: qtdeclarative5-ubuntu-content1, | 39 | Suggests: qtdeclarative5-online-accounts-client0.1 (>= 0.3+14.10.20140530), |
10 | 40 | qtdeclarative5-ubuntu-content1, | ||
11 | 40 | qtdeclarative5-ubuntu-download-manager0.1 | 41 | qtdeclarative5-ubuntu-download-manager0.1 |
12 | 41 | Description: Unity Webapps QML component | 42 | Description: Unity Webapps QML component |
13 | 42 | Unity Webapps QML is a QML component that binds to a QML WebView and allows | 43 | Unity Webapps QML is a QML component that binds to a QML WebView and allows |
14 | 43 | 44 | ||
15 | === modified file 'examples/api-bindings/online-accounts/www/js/app.js' | |||
16 | --- examples/api-bindings/online-accounts/www/js/app.js 2014-05-09 13:17:09 +0000 | |||
17 | +++ examples/api-bindings/online-accounts/www/js/app.js 2015-03-16 20:19:48 +0000 | |||
18 | @@ -4,13 +4,23 @@ | |||
19 | 4 | var api = external.getUnityObject('1.0'); | 4 | var api = external.getUnityObject('1.0'); |
20 | 5 | var oa = api.OnlineAccounts; | 5 | var oa = api.OnlineAccounts; |
21 | 6 | 6 | ||
23 | 7 | oa.api.getProviders({"applicationId": "webbrowser-app"}, function(providers) { | 7 | var appId = "shotwell"; |
24 | 8 | |||
25 | 9 | oa.api.getProviders({"applicationId": appId}, function(providers) { | ||
26 | 8 | var ul = document.querySelector('#providers ul'); | 10 | var ul = document.querySelector('#providers ul'); |
27 | 9 | 11 | ||
28 | 10 | for (var i = 0; i < providers.length; ++i) { | 12 | for (var i = 0; i < providers.length; ++i) { |
29 | 11 | var li = document.createElement('li'); | 13 | var li = document.createElement('li'); |
30 | 14 | var button = document.createElement('input'); | ||
31 | 15 | button.type = 'button'; | ||
32 | 16 | button.providerId = providers[i].providerId; | ||
33 | 17 | button.value = 'Request account'; | ||
34 | 18 | button.addEventListener('click', function() { | ||
35 | 19 | oa.api.requestAccount(appId, this.providerId, function() {}); | ||
36 | 20 | }); | ||
37 | 12 | li.innerHTML = 'displayName: ' + providers[i].displayName | 21 | li.innerHTML = 'displayName: ' + providers[i].displayName |
38 | 13 | + ', providerId: ' + providers[i].providerId; | 22 | + ', providerId: ' + providers[i].providerId; |
39 | 23 | li.appendChild(button); | ||
40 | 14 | ul.appendChild(li); | 24 | ul.appendChild(li); |
41 | 15 | } | 25 | } |
42 | 16 | }); | 26 | }); |
43 | 17 | 27 | ||
44 | === modified file 'src/Ubuntu/UnityWebApps/UnityWebApps.js' | |||
45 | --- src/Ubuntu/UnityWebApps/UnityWebApps.js 2014-07-18 13:43:55 +0000 | |||
46 | +++ src/Ubuntu/UnityWebApps/UnityWebApps.js 2015-03-16 20:19:48 +0000 | |||
47 | @@ -75,8 +75,7 @@ | |||
48 | 75 | var cb = this._onMessageReceivedCallback.bind(self); | 75 | var cb = this._onMessageReceivedCallback.bind(self); |
49 | 76 | self._bindeeProxies.messageReceivedConnect(cb); | 76 | self._bindeeProxies.messageReceivedConnect(cb); |
50 | 77 | 77 | ||
53 | 78 | cb = this._onLoadingStartedCallback.bind(self); | 78 | this._onLoadingStartedCallback(); |
52 | 79 | self._bindeeProxies.loadingStartedConnect(cb); | ||
54 | 80 | }, | 79 | }, |
55 | 81 | 80 | ||
56 | 82 | /** | 81 | /** |
57 | 83 | 82 | ||
58 | === modified file 'src/Ubuntu/UnityWebApps/UnityWebApps.pro' | |||
59 | --- src/Ubuntu/UnityWebApps/UnityWebApps.pro 2014-07-11 17:13:18 +0000 | |||
60 | +++ src/Ubuntu/UnityWebApps/UnityWebApps.pro 2015-03-16 20:19:48 +0000 | |||
61 | @@ -60,7 +60,9 @@ | |||
62 | 60 | alarm_binding_backend_js_files.files = ./bindings/alarm-api/backend/alarm-api.js | 60 | alarm_binding_backend_js_files.files = ./bindings/alarm-api/backend/alarm-api.js |
63 | 61 | 61 | ||
64 | 62 | online_accounts_binding_backend_js_files.path = $$installPath/bindings/online-accounts/backend/ | 62 | online_accounts_binding_backend_js_files.path = $$installPath/bindings/online-accounts/backend/ |
66 | 63 | online_accounts_binding_backend_js_files.files = ./bindings/online-accounts/backend/online-accounts.js | 63 | online_accounts_binding_backend_js_files.files = \ |
67 | 64 | ./bindings/online-accounts/backend/online-accounts.js \ | ||
68 | 65 | ./bindings/online-accounts/backend/online-accounts-client.js | ||
69 | 64 | 66 | ||
70 | 65 | runtime_api_binding_backend_js_files.path = $$installPath/bindings/runtime-api/backend/ | 67 | runtime_api_binding_backend_js_files.path = $$installPath/bindings/runtime-api/backend/ |
71 | 66 | runtime_api_binding_backend_js_files.files = ./bindings/runtime-api/backend/runtime-api.js | 68 | runtime_api_binding_backend_js_files.files = ./bindings/runtime-api/backend/runtime-api.js |
72 | 67 | 69 | ||
73 | === modified file 'src/Ubuntu/UnityWebApps/UnityWebApps.qml' | |||
74 | --- src/Ubuntu/UnityWebApps/UnityWebApps.qml 2014-07-18 21:46:57 +0000 | |||
75 | +++ src/Ubuntu/UnityWebApps/UnityWebApps.qml 2015-03-16 20:19:48 +0000 | |||
76 | @@ -26,6 +26,7 @@ | |||
77 | 26 | import "./bindings/alarm-api/backend/alarm-api.js" as AlarmApiBackend | 26 | import "./bindings/alarm-api/backend/alarm-api.js" as AlarmApiBackend |
78 | 27 | import "./bindings/content-hub/backend/content-hub.js" as ContentHubApiBackend | 27 | import "./bindings/content-hub/backend/content-hub.js" as ContentHubApiBackend |
79 | 28 | import "./bindings/online-accounts/backend/online-accounts.js" as OnlineAccountsApiBackend | 28 | import "./bindings/online-accounts/backend/online-accounts.js" as OnlineAccountsApiBackend |
80 | 29 | import "./bindings/online-accounts/backend/online-accounts-client.js" as OnlineAccountsClientApiBackend | ||
81 | 29 | import "./bindings/download-manager/backend/download-api.js" as DownloadApiBackend | 30 | import "./bindings/download-manager/backend/download-api.js" as DownloadApiBackend |
82 | 30 | 31 | ||
83 | 31 | /*! | 32 | /*! |
84 | @@ -167,6 +168,7 @@ | |||
85 | 167 | */ | 168 | */ |
86 | 168 | property string _opt_homepage: "" | 169 | property string _opt_homepage: "" |
87 | 169 | 170 | ||
88 | 171 | signal userScriptsInjected() | ||
89 | 170 | 172 | ||
90 | 171 | Settings { | 173 | Settings { |
91 | 172 | id: settings | 174 | id: settings |
92 | @@ -237,6 +239,8 @@ | |||
93 | 237 | 239 | ||
94 | 238 | if (internal.backends) | 240 | if (internal.backends) |
95 | 239 | internal.instance.setBackends(internal.backends) | 241 | internal.instance.setBackends(internal.backends) |
96 | 242 | |||
97 | 243 | userScriptsInjected(); | ||
98 | 240 | } | 244 | } |
99 | 241 | 245 | ||
100 | 242 | /*! | 246 | /*! |
101 | @@ -392,7 +396,11 @@ | |||
102 | 392 | \internal | 396 | \internal |
103 | 393 | 397 | ||
104 | 394 | */ | 398 | */ |
106 | 395 | onModelChanged: model.modelContentChanged.connect(__setupNamedWebappEnvironment) | 399 | onModelChanged: { |
107 | 400 | if (model) { | ||
108 | 401 | model.modelContentChanged.connect(__setupNamedWebappEnvironment) | ||
109 | 402 | } | ||
110 | 403 | } | ||
111 | 396 | 404 | ||
112 | 397 | /*! | 405 | /*! |
113 | 398 | \internal | 406 | \internal |
114 | 399 | 407 | ||
115 | === modified file 'src/Ubuntu/UnityWebApps/UnityWebAppsUtils.js' | |||
116 | --- src/Ubuntu/UnityWebApps/UnityWebAppsUtils.js 2014-07-18 13:43:55 +0000 | |||
117 | +++ src/Ubuntu/UnityWebApps/UnityWebAppsUtils.js 2015-03-16 20:19:48 +0000 | |||
118 | @@ -64,7 +64,7 @@ | |||
119 | 64 | this.disposer = disposer; | 64 | this.disposer = disposer; |
120 | 65 | this.makeSignalDisconnecter = makeSignalDisconnecter; | 65 | this.makeSignalDisconnecter = makeSignalDisconnecter; |
121 | 66 | this._userScriptInjected = false; | 66 | this._userScriptInjected = false; |
123 | 67 | this._WEBAPPS_USER_SCRIPT_CONTEXT = "oxide://UnityWebappsApi"; | 67 | this._WEBAPPS_USER_SCRIPT_CONTEXT = "oxide://main-world"; |
124 | 68 | } | 68 | } |
125 | 69 | OxideWebviewAdapter.prototype = { | 69 | OxideWebviewAdapter.prototype = { |
126 | 70 | injectUserScripts: function(userScriptUrls) { | 70 | injectUserScripts: function(userScriptUrls) { |
127 | @@ -82,7 +82,7 @@ | |||
128 | 82 | var scriptEnd = "}"; | 82 | var scriptEnd = "}"; |
129 | 83 | var statement = scriptStart + | 83 | var statement = scriptStart + |
130 | 84 | '"' + this._WEBAPPS_USER_SCRIPT_CONTEXT + '"' + | 84 | '"' + this._WEBAPPS_USER_SCRIPT_CONTEXT + '"' + |
132 | 85 | '; matchAllFrames: false; url: "' + userScriptUrls[i] + '";' + scriptEnd; | 85 | '; matchAllFrames: false; emulateGreasemonkey: true; url: "' + userScriptUrls[i] + '";' + scriptEnd; |
133 | 86 | context.addUserScript(Qt.createQmlObject(statement, this.webview)); | 86 | context.addUserScript(Qt.createQmlObject(statement, this.webview)); |
134 | 87 | } | 87 | } |
135 | 88 | this._userScriptInjected = true; | 88 | this._userScriptInjected = true; |
136 | 89 | 89 | ||
137 | === added file 'src/Ubuntu/UnityWebApps/bindings/online-accounts/backend/online-accounts-client.js' | |||
138 | --- src/Ubuntu/UnityWebApps/bindings/online-accounts/backend/online-accounts-client.js 1970-01-01 00:00:00 +0000 | |||
139 | +++ src/Ubuntu/UnityWebApps/bindings/online-accounts/backend/online-accounts-client.js 2015-03-16 20:19:48 +0000 | |||
140 | @@ -0,0 +1,87 @@ | |||
141 | 1 | /* | ||
142 | 2 | * Copyright 2014 Canonical Ltd. | ||
143 | 3 | * | ||
144 | 4 | * This file is part of unity-webapps-qml. | ||
145 | 5 | * | ||
146 | 6 | * unity-webapps-qml is free software; you can redistribute it and/or modify | ||
147 | 7 | * it under the terms of the GNU General Public License as published by | ||
148 | 8 | * the Free Software Foundation; version 3. | ||
149 | 9 | * | ||
150 | 10 | * unity-webapps-qml is distributed in the hope that it will be useful, | ||
151 | 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
152 | 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
153 | 13 | * GNU General Public License for more details. | ||
154 | 14 | * | ||
155 | 15 | * You should have received a copy of the GNU General Public License | ||
156 | 16 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
157 | 17 | */ | ||
158 | 18 | |||
159 | 19 | /** | ||
160 | 20 | * | ||
161 | 21 | * Online Accounts client API backend binding | ||
162 | 22 | * | ||
163 | 23 | */ | ||
164 | 24 | function createOnlineAccountsClientApi(backendDelegate) { | ||
165 | 25 | var PLUGIN_URI = 'Ubuntu.OnlineAccounts.Client'; | ||
166 | 26 | var VERSION = 0.1; | ||
167 | 27 | |||
168 | 28 | function Setup(params) { | ||
169 | 29 | var result = backendDelegate.createQmlObject( | ||
170 | 30 | PLUGIN_URI, VERSION, 'Setup', params); | ||
171 | 31 | this._id = result.id; | ||
172 | 32 | this._object = result.object; | ||
173 | 33 | }; | ||
174 | 34 | Setup.prototype = { | ||
175 | 35 | _validate: function() { | ||
176 | 36 | if (! this._object) | ||
177 | 37 | throw new TypeError("Invalid object null"); | ||
178 | 38 | }, | ||
179 | 39 | |||
180 | 40 | destroy: function() { | ||
181 | 41 | if (! this._object) | ||
182 | 42 | return; | ||
183 | 43 | this._object.destroy(); | ||
184 | 44 | backendDelegate.deleteId(this._id); | ||
185 | 45 | }, | ||
186 | 46 | |||
187 | 47 | // object methods | ||
188 | 48 | serialize: function() { | ||
189 | 49 | this._validate(); | ||
190 | 50 | return { | ||
191 | 51 | type: 'object-proxy', | ||
192 | 52 | apiid: 'OnlineAccounts.Client', | ||
193 | 53 | objecttype: 'Setup', | ||
194 | 54 | objectid: this._id, | ||
195 | 55 | } | ||
196 | 56 | }, | ||
197 | 57 | |||
198 | 58 | // methods | ||
199 | 59 | exec: function(callback) { | ||
200 | 60 | this._validate(); | ||
201 | 61 | |||
202 | 62 | var self = this; | ||
203 | 63 | |||
204 | 64 | var onFinished = function() { | ||
205 | 65 | self._object.onFinished.disconnect(onFinished); | ||
206 | 66 | callback(); | ||
207 | 67 | } | ||
208 | 68 | |||
209 | 69 | this._object.onFinished.connect(onFinished); | ||
210 | 70 | this._object.exec(); | ||
211 | 71 | } | ||
212 | 72 | }; | ||
213 | 73 | |||
214 | 74 | return { | ||
215 | 75 | requestAccount: function(applicationId, providerId, callback) { | ||
216 | 76 | var setup = new Setup({ | ||
217 | 77 | 'applicationId': applicationId, | ||
218 | 78 | 'providerId': providerId, | ||
219 | 79 | }); | ||
220 | 80 | var onFinished = function() { | ||
221 | 81 | setup.destroy(); | ||
222 | 82 | callback(); | ||
223 | 83 | }; | ||
224 | 84 | setup.exec(onFinished); | ||
225 | 85 | }, | ||
226 | 86 | }; | ||
227 | 87 | } | ||
228 | 0 | 88 | ||
229 | === modified file 'src/Ubuntu/UnityWebApps/bindings/online-accounts/backend/online-accounts.js' | |||
230 | --- src/Ubuntu/UnityWebApps/bindings/online-accounts/backend/online-accounts.js 2014-05-22 08:54:56 +0000 | |||
231 | +++ src/Ubuntu/UnityWebApps/bindings/online-accounts/backend/online-accounts.js 2015-03-16 20:19:48 +0000 | |||
232 | @@ -673,6 +673,8 @@ | |||
233 | 673 | } | 673 | } |
234 | 674 | }, | 674 | }, |
235 | 675 | 675 | ||
236 | 676 | Client: OnlineAccountsClientApiBackend.createOnlineAccountsClientApi(backendDelegate), | ||
237 | 677 | |||
238 | 676 | // Internal | 678 | // Internal |
239 | 677 | 679 | ||
240 | 678 | dispatchToObject: function(infos) { | 680 | dispatchToObject: function(infos) { |
241 | 679 | 681 | ||
242 | === modified file 'src/Ubuntu/UnityWebApps/bindings/online-accounts/client/online-accounts.js' | |||
243 | --- src/Ubuntu/UnityWebApps/bindings/online-accounts/client/online-accounts.js 2014-05-09 13:17:09 +0000 | |||
244 | +++ src/Ubuntu/UnityWebApps/bindings/online-accounts/client/online-accounts.js 2015-03-16 20:19:48 +0000 | |||
245 | @@ -161,7 +161,7 @@ | |||
246 | 161 | * | 161 | * |
247 | 162 | * @method api.getAccounts | 162 | * @method api.getAccounts |
248 | 163 | * @param filters {Object} A dictionary of parameters to filter the result. The filtering keys are: | 163 | * @param filters {Object} A dictionary of parameters to filter the result. The filtering keys are: |
250 | 164 | * - application: the ID of a application (see /usr/share/accounts/applications/ or ~/.local/share/accounts/applications/ for a list of the available applications) | 164 | * - applicationId: the ID of a application (see /usr/share/accounts/applications/ or ~/.local/share/accounts/applications/ for a list of the available applications) |
251 | 165 | * - provider: the ID of a provider (see /usr/share/accounts/providers/ or ~/.local/share/accounts/providers/ for a list of the available providers) | 165 | * - provider: the ID of a provider (see /usr/share/accounts/providers/ or ~/.local/share/accounts/providers/ for a list of the available providers) |
252 | 166 | * - service: the ID of a service (see /usr/share/accounts/services/ or ~/.local/share/accounts/services/ for a list of the available services) | 166 | * - service: the ID of a service (see /usr/share/accounts/services/ or ~/.local/share/accounts/services/ for a list of the available services) |
253 | 167 | * | 167 | * |
254 | @@ -215,6 +215,51 @@ | |||
255 | 215 | , [filters] | 215 | , [filters] |
256 | 216 | , callback); | 216 | , callback); |
257 | 217 | }, | 217 | }, |
258 | 218 | /** | ||
259 | 219 | * Requests access to an account. | ||
260 | 220 | * | ||
261 | 221 | * Applications must invoke this method in order to obtain access | ||
262 | 222 | * to an account. The user will be prompted to grant access to | ||
263 | 223 | * either an existing account, to create a new one or to decline | ||
264 | 224 | * the request. | ||
265 | 225 | * | ||
266 | 226 | * @method api.requestAccount | ||
267 | 227 | * @param applicationId {String} The ID of the application | ||
268 | 228 | * requesting the account (see /usr/share/accounts/applications/ or | ||
269 | 229 | * ~/.local/share/accounts/applications/ for a list of the | ||
270 | 230 | * available applications) | ||
271 | 231 | * @param providerId {String} The ID of the provider of the desired | ||
272 | 232 | * account (see /usr/share/accounts/providers/ or | ||
273 | 233 | * ~/.local/share/accounts/providers/ for a list of the available | ||
274 | 234 | * providers) | ||
275 | 235 | * @param callback {Function()} Callback which will be invoked | ||
276 | 236 | * after the access request has been decided (either with the | ||
277 | 237 | * access to an account being granted, or with a refusal). | ||
278 | 238 | * | ||
279 | 239 | * @example | ||
280 | 240 | var api = external.getUnityObject(1.0); | ||
281 | 241 | var oa = api.OnlineAccounts; | ||
282 | 242 | |||
283 | 243 | var appId = 'com.ubuntu.developer.me.MyPackage_MyApp'; | ||
284 | 244 | oa.api.requestAccount(appId, | ||
285 | 245 | 'facebook', | ||
286 | 246 | function() { | ||
287 | 247 | oa.api.getAccounts({ 'application': appId }, function(result) { | ||
288 | 248 | for (var i = 0; i < result.length; ++i) { | ||
289 | 249 | console.log("name: " + result[i].displayName() | ||
290 | 250 | + ', id: ' + result[i].accountId() | ||
291 | 251 | + ', providerName: ' + result[i].provider().displayName | ||
292 | 252 | + ', enabled: ' + (result[i].enabled() ? "true" : "false") | ||
293 | 253 | ); | ||
294 | 254 | } | ||
295 | 255 | }); | ||
296 | 256 | }); | ||
297 | 257 | */ | ||
298 | 258 | requestAccount: function(applicationId, providerId, callback) { | ||
299 | 259 | backendBridge.call('OnlineAccounts.Client.requestAccount', | ||
300 | 260 | [ applicationId, providerId], | ||
301 | 261 | callback); | ||
302 | 262 | }, | ||
303 | 218 | }, | 263 | }, |
304 | 219 | 264 | ||
305 | 220 | 265 | ||
306 | 221 | 266 | ||
307 | === modified file 'src/Ubuntu/UnityWebApps/common/js/unity-backend-messaging-proxy.js' | |||
308 | --- src/Ubuntu/UnityWebApps/common/js/unity-backend-messaging-proxy.js 2014-03-28 13:21:47 +0000 | |||
309 | +++ src/Ubuntu/UnityWebApps/common/js/unity-backend-messaging-proxy.js 2015-03-16 20:19:48 +0000 | |||
310 | @@ -4,7 +4,7 @@ | |||
311 | 4 | navigator.qt.postMessage) { | 4 | navigator.qt.postMessage) { |
312 | 5 | return new UnityQtWebkitBackendMessagingProxy(); | 5 | return new UnityQtWebkitBackendMessagingProxy(); |
313 | 6 | } | 6 | } |
315 | 7 | else if (window.oxide) { | 7 | else if (oxide) { |
316 | 8 | return new UnityOxideBackendMessagingProxy(); | 8 | return new UnityOxideBackendMessagingProxy(); |
317 | 9 | } | 9 | } |
318 | 10 | return null; | 10 | return null; |
Yes, looks familiar :-)