Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2)

Side by Side Diff: remoting/android/java/src/org/chromium/chromoting/jni/Client.java

Issue 2007403002: [Android Client] Move session-scoped native interface into JniClient (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Merged with latest changes Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | remoting/android/java/src/org/chromium/chromoting/jni/JniInterface.java » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.chromoting.jni; 5 package org.chromium.chromoting.jni;
6 6
7 import android.graphics.Bitmap; 7 import android.graphics.Bitmap;
8 import android.graphics.Point; 8 import android.graphics.Point;
9 import android.os.Looper; 9 import android.os.Looper;
10 10
11 import org.chromium.base.Log; 11 import org.chromium.base.Log;
12 import org.chromium.base.annotations.CalledByNative;
12 import org.chromium.base.annotations.JNINamespace; 13 import org.chromium.base.annotations.JNINamespace;
13 import org.chromium.base.annotations.SuppressFBWarnings; 14 import org.chromium.base.annotations.SuppressFBWarnings;
14 import org.chromium.chromoting.CapabilityManager; 15 import org.chromium.chromoting.CapabilityManager;
15 import org.chromium.chromoting.SessionAuthenticator; 16 import org.chromium.chromoting.SessionAuthenticator;
16 17
17 import java.nio.ByteBuffer; 18 import java.nio.ByteBuffer;
18 import java.nio.ByteOrder; 19 import java.nio.ByteOrder;
19 20
20 /** 21 /**
21 * Class to manage a client connection to the host. This class controls the life time of the 22 * Class to manage a client connection to the host. This class controls the life time of the
(...skipping 15 matching lines...) Expand all
37 // Called on the UI thread. 38 // Called on the UI thread.
38 public Client() { 39 public Client() {
39 if (sClient != null) { 40 if (sClient != null) {
40 throw new RuntimeException("Client instance already created."); 41 throw new RuntimeException("Client instance already created.");
41 } 42 }
42 43
43 sClient = this; 44 sClient = this;
44 mNativeJniClient = nativeInit(); 45 mNativeJniClient = nativeInit();
45 } 46 }
46 47
47 private native long nativeInit();
48
49 // Called on the UI thread. Suppress FindBugs warning, since |sClient| is on ly used on the 48 // Called on the UI thread. Suppress FindBugs warning, since |sClient| is on ly used on the
50 // UI thread. 49 // UI thread.
51 @SuppressFBWarnings("LI_LAZY_INIT_STATIC") 50 @SuppressFBWarnings("LI_LAZY_INIT_STATIC")
52 public void destroy() { 51 public void destroy() {
53 if (sClient != null) { 52 if (sClient != null) {
54 disconnectFromHost(); 53 disconnectFromHost();
55 nativeDestroy(mNativeJniClient); 54 nativeDestroy(mNativeJniClient);
56 sClient = null; 55 sClient = null;
57 } 56 }
58 } 57 }
59 58
60 private native void nativeDestroy(long nativeJniClient);
61
62 /** Returns the current Client instance, or null. */ 59 /** Returns the current Client instance, or null. */
63 public static Client getInstance() { 60 public static Client getInstance() {
64 return sClient; 61 return sClient;
65 } 62 }
66 63
67 /** Used for authentication-related UX during connection. Accessed on the UI thread. */ 64 /** Used for authentication-related UX during connection. Accessed on the UI thread. */
68 private SessionAuthenticator mAuthenticator; 65 private SessionAuthenticator mAuthenticator;
69 66
70 /** Whether the native code is attempting a connection. Accessed on the UI t hread. */ 67 /** Whether the native code is attempting a connection. Accessed on the UI t hread. */
71 private boolean mConnected; 68 private boolean mConnected;
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 } 101 }
105 102
106 /** Attempts to form a connection to the user-selected host. Called on the U I thread. */ 103 /** Attempts to form a connection to the user-selected host. Called on the U I thread. */
107 public void connectToHost(String username, String authToken, String hostJid, 104 public void connectToHost(String username, String authToken, String hostJid,
108 String hostId, String hostPubkey, SessionAuthenticator authenticator , String flags, 105 String hostId, String hostPubkey, SessionAuthenticator authenticator , String flags,
109 ConnectionListener listener) { 106 ConnectionListener listener) {
110 disconnectFromHost(); 107 disconnectFromHost();
111 108
112 mConnectionListener = listener; 109 mConnectionListener = listener;
113 mAuthenticator = authenticator; 110 mAuthenticator = authenticator;
114 JniInterface.nativeConnect(username, authToken, hostJid, hostId, hostPub key, 111 nativeConnect(mNativeJniClient, username, authToken, hostJid, hostId, ho stPubkey,
115 mAuthenticator.getPairingId(hostId), mAuthenticator.getPairingSe cret(hostId), 112 mAuthenticator.getPairingId(hostId), mAuthenticator.getPairingSe cret(hostId),
116 mCapabilityManager.getLocalCapabilities(), flags); 113 mCapabilityManager.getLocalCapabilities(), flags);
117 mConnected = true; 114 mConnected = true;
118 } 115 }
119 116
120 /** Severs the connection and cleans up. Called on the UI thread. */ 117 /** Severs the connection and cleans up. Called on the UI thread. */
121 public void disconnectFromHost() { 118 public void disconnectFromHost() {
122 if (!mConnected) { 119 if (!mConnected) {
123 return; 120 return;
124 } 121 }
125 122
126 mConnectionListener.onConnectionState( 123 mConnectionListener.onConnectionState(
127 ConnectionListener.State.CLOSED, ConnectionListener.Error.OK); 124 ConnectionListener.State.CLOSED, ConnectionListener.Error.OK);
128 125
129 disconnectFromHostWithoutNotification(); 126 disconnectFromHostWithoutNotification();
130 } 127 }
131 128
132 /** Same as disconnectFromHost() but without notifying the ConnectionListene r. */ 129 /** Same as disconnectFromHost() but without notifying the ConnectionListene r. */
133 private void disconnectFromHostWithoutNotification() { 130 private void disconnectFromHostWithoutNotification() {
134 if (!mConnected) { 131 if (!mConnected) {
135 return; 132 return;
136 } 133 }
137 134
138 JniInterface.nativeDisconnect(); 135 nativeDisconnect(mNativeJniClient);
139 mConnectionListener = null; 136 mConnectionListener = null;
140 mConnected = false; 137 mConnected = false;
141 mCapabilityManager.onHostDisconnect(); 138 mCapabilityManager.onHostDisconnect();
142 139
143 // Drop the reference to free the Bitmap for GC. 140 // Drop the reference to free the Bitmap for GC.
144 synchronized (mFrameLock) { 141 synchronized (mFrameLock) {
145 mFrameBitmap = null; 142 mFrameBitmap = null;
146 } 143 }
147 } 144 }
148 145
149 /** Called by native code whenever the connection status changes. Called on the UI thread. */ 146 /** Called on the UI thread whenever the connection status changes. */
147 @CalledByNative
150 void onConnectionState(int stateCode, int errorCode) { 148 void onConnectionState(int stateCode, int errorCode) {
151 ConnectionListener.State state = ConnectionListener.State.fromValue(stat eCode); 149 ConnectionListener.State state = ConnectionListener.State.fromValue(stat eCode);
152 ConnectionListener.Error error = ConnectionListener.Error.fromValue(erro rCode); 150 ConnectionListener.Error error = ConnectionListener.Error.fromValue(erro rCode);
153 mConnectionListener.onConnectionState(state, error); 151 mConnectionListener.onConnectionState(state, error);
154 if (state == ConnectionListener.State.FAILED || state == ConnectionListe ner.State.CLOSED) { 152 if (state == ConnectionListener.State.FAILED || state == ConnectionListe ner.State.CLOSED) {
155 // Disconnect from the host here, otherwise the next time connectToH ost() is called, 153 // Disconnect from the host here, otherwise the next time connectToH ost() is called,
156 // it will try to disconnect, triggering an incorrect status notific ation. 154 // it will try to disconnect, triggering an incorrect status notific ation.
157 155
158 // TODO(lambroslambrou): Connection state notifications for separate sessions should 156 // TODO(lambroslambrou): Connection state notifications for separate sessions should
159 // go to separate Client instances. Once this is true, we can remove this line and 157 // go to separate Client instances. Once this is true, we can remove this line and
160 // simplify the disconnectFromHost() code. 158 // simplify the disconnectFromHost() code.
161 disconnectFromHostWithoutNotification(); 159 disconnectFromHostWithoutNotification();
162 } 160 }
163 } 161 }
164 162
165 /** 163 /**
166 * Called by JniInterface (from native code) to prompt the user to enter a P IN. Called on the 164 * Called on the UI thread to prompt the user to enter a PIN.
167 * UI thread.
168 */ 165 */
166 @CalledByNative
169 void displayAuthenticationPrompt(boolean pairingSupported) { 167 void displayAuthenticationPrompt(boolean pairingSupported) {
170 mAuthenticator.displayAuthenticationPrompt(pairingSupported); 168 mAuthenticator.displayAuthenticationPrompt(pairingSupported);
171 } 169 }
172 170
173 /** 171 /**
174 * Called by the SessionAuthenticator after the user enters a PIN. 172 * Called by the SessionAuthenticator after the user enters a PIN.
175 * @param pin The entered PIN. 173 * @param pin The entered PIN.
176 * @param createPair Whether to create a new pairing for this client. 174 * @param createPair Whether to create a new pairing for this client.
177 * @param deviceName The device name to appear in the pairing registry. Only used if createPair 175 * @param deviceName The device name to appear in the pairing registry. Only used if createPair
178 * is true. 176 * is true.
179 */ 177 */
180 public void handleAuthenticationResponse( 178 public void handleAuthenticationResponse(
181 String pin, boolean createPair, String deviceName) { 179 String pin, boolean createPair, String deviceName) {
182 assert mConnected; 180 assert mConnected;
183 JniInterface.nativeAuthenticationResponse(pin, createPair, deviceName); 181 nativeAuthenticationResponse(mNativeJniClient, pin, createPair, deviceNa me);
184 } 182 }
185 183
186 /** 184 /**
187 * Called by JniInterface (from native code), to save newly-received pairing credentials to 185 * Called on the UI thread to save newly-received pairing credentials to per manent storage.
188 * permanent storage. Called on the UI thread.
189 */ 186 */
187 @CalledByNative
190 void commitPairingCredentials(String host, String id, String secret) { 188 void commitPairingCredentials(String host, String id, String secret) {
191 mAuthenticator.commitPairingCredentials(host, id, secret); 189 mAuthenticator.commitPairingCredentials(host, id, secret);
192 } 190 }
193 191
194 /** 192 /**
195 * Moves the mouse cursor, possibly while clicking the specified (nonnegativ e) button. Called 193 * Moves the mouse cursor, possibly while clicking the specified (nonnegativ e) button. Called
196 * on the UI thread. 194 * on the UI thread.
197 */ 195 */
198 public void sendMouseEvent(int x, int y, int whichButton, boolean buttonDown ) { 196 public void sendMouseEvent(int x, int y, int whichButton, boolean buttonDown ) {
199 if (!mConnected) { 197 if (!mConnected) {
200 return; 198 return;
201 } 199 }
202 200
203 JniInterface.nativeSendMouseEvent(x, y, whichButton, buttonDown); 201 nativeSendMouseEvent(mNativeJniClient, x, y, whichButton, buttonDown);
204 } 202 }
205 203
206 /** Injects a mouse-wheel event with delta values. Called on the UI thread. */ 204 /** Injects a mouse-wheel event with delta values. Called on the UI thread. */
207 public void sendMouseWheelEvent(int deltaX, int deltaY) { 205 public void sendMouseWheelEvent(int deltaX, int deltaY) {
208 if (!mConnected) { 206 if (!mConnected) {
209 return; 207 return;
210 } 208 }
211 209
212 JniInterface.nativeSendMouseWheelEvent(deltaX, deltaY); 210 nativeSendMouseWheelEvent(mNativeJniClient, deltaX, deltaY);
213 } 211 }
214 212
215 /** 213 /**
216 * Presses or releases the specified key. Called on the UI thread. If scanCo de is not zero then 214 * Presses or releases the specified key. Called on the UI thread. If scanCo de is not zero then
217 * keyCode is ignored. 215 * keyCode is ignored.
218 */ 216 */
219 public boolean sendKeyEvent(int scanCode, int keyCode, boolean keyDown) { 217 public boolean sendKeyEvent(int scanCode, int keyCode, boolean keyDown) {
220 if (!mConnected) { 218 if (!mConnected) {
221 return false; 219 return false;
222 } 220 }
223 221
224 return JniInterface.nativeSendKeyEvent(scanCode, keyCode, keyDown); 222 return nativeSendKeyEvent(mNativeJniClient, scanCode, keyCode, keyDown);
225 } 223 }
226 224
227 /** Sends TextEvent to the host. Called on the UI thread. */ 225 /** Sends TextEvent to the host. Called on the UI thread. */
228 public void sendTextEvent(String text) { 226 public void sendTextEvent(String text) {
229 if (!mConnected) { 227 if (!mConnected) {
230 return; 228 return;
231 } 229 }
232 230
233 JniInterface.nativeSendTextEvent(text); 231 nativeSendTextEvent(mNativeJniClient, text);
234 } 232 }
235 233
236 /** Sends an array of TouchEvents to the host. Called on the UI thread. */ 234 /** Sends an array of TouchEvents to the host. Called on the UI thread. */
237 public void sendTouchEvent(TouchEventData.EventType eventType, TouchEventDat a[] data) { 235 public void sendTouchEvent(TouchEventData.EventType eventType, TouchEventDat a[] data) {
238 if (!mConnected) { 236 if (!mConnected) {
239 return; 237 return;
240 } 238 }
241 239
242 JniInterface.nativeSendTouchEvent(eventType.value(), data); 240 nativeSendTouchEvent(mNativeJniClient, eventType.value(), data);
243 } 241 }
244 242
245 /** 243 /**
246 * Enables or disables the video channel. Called on the UI thread in respons e to Activity 244 * Enables or disables the video channel. Called on the UI thread in respons e to Activity
247 * lifecycle events. 245 * lifecycle events.
248 */ 246 */
249 public void enableVideoChannel(boolean enable) { 247 public void enableVideoChannel(boolean enable) {
250 if (!mConnected) { 248 if (!mConnected) {
251 return; 249 return;
252 } 250 }
253 251
254 JniInterface.nativeEnableVideoChannel(enable); 252 nativeEnableVideoChannel(mNativeJniClient, enable);
255 } 253 }
256 254
257 /** 255 /**
258 * Sets the redraw callback to the provided functor. Provide a value of null whenever the 256 * Sets the redraw callback to the provided functor. Provide a value of null whenever the
259 * window is no longer visible so that we don't continue to draw onto it. Ca lled on the UI 257 * window is no longer visible so that we don't continue to draw onto it. Ca lled on the UI
260 * thread. 258 * thread.
261 */ 259 */
262 public void provideRedrawCallback(Runnable redrawCallback) { 260 public void provideRedrawCallback(Runnable redrawCallback) {
263 mRedrawCallback = redrawCallback; 261 mRedrawCallback = redrawCallback;
264 } 262 }
265 263
266 /** Forces the native graphics thread to redraw to the canvas. Called on the UI thread. */ 264 /** Forces the native graphics thread to redraw to the canvas. Called on the UI thread. */
267 public boolean redrawGraphics() { 265 public boolean redrawGraphics() {
268 if (!mConnected || mRedrawCallback == null) return false; 266 if (!mConnected || mRedrawCallback == null) return false;
269 267
270 JniInterface.nativeScheduleRedraw(); 268 nativeScheduleRedraw(mNativeJniClient);
271 return true; 269 return true;
272 } 270 }
273 271
274 /** 272 /**
275 * Called by JniInterface to perform the redrawing callback requested by 273 * Called on the graphics thread to perform the redrawing callback requested by
276 * {@link #redrawGraphics}. This is a no-op if the window isn't visible (the callback is null). 274 * {@link #redrawGraphics}. This is a no-op if the window isn't visible (the callback is null).
277 * Called on the graphics thread.
278 */ 275 */
276 @CalledByNative
279 void redrawGraphicsInternal() { 277 void redrawGraphicsInternal() {
280 Runnable callback = mRedrawCallback; 278 Runnable callback = mRedrawCallback;
281 if (callback != null) { 279 if (callback != null) {
282 callback.run(); 280 callback.run();
283 } 281 }
284 } 282 }
285 283
286 /** 284 /**
287 * Returns a bitmap of the latest video frame. Called on the native graphics thread when 285 * Returns a bitmap of the latest video frame. Called on the native graphics thread when
288 * DesktopView is repainted. 286 * DesktopView is repainted.
289 */ 287 */
290 public Bitmap getVideoFrame() { 288 public Bitmap getVideoFrame() {
291 if (Looper.myLooper() == Looper.getMainLooper()) { 289 if (Looper.myLooper() == Looper.getMainLooper()) {
292 Log.w(TAG, "Canvas being redrawn on UI thread"); 290 Log.w(TAG, "Canvas being redrawn on UI thread");
293 } 291 }
294 292
295 synchronized (mFrameLock) { 293 synchronized (mFrameLock) {
296 return mFrameBitmap; 294 return mFrameBitmap;
297 } 295 }
298 } 296 }
299 297
300 /** 298 /**
301 * Called by JniInterface (from native code) to set a new video frame. Calle d on the native 299 * Set a new video frame. Called on the native graphics thread when a new fr ame is allocated.
302 * graphics thread when a new frame is allocated.
303 */ 300 */
301 @CalledByNative
304 void setVideoFrame(Bitmap bitmap) { 302 void setVideoFrame(Bitmap bitmap) {
305 if (Looper.myLooper() == Looper.getMainLooper()) { 303 if (Looper.myLooper() == Looper.getMainLooper()) {
306 Log.w(TAG, "Video frame updated on UI thread"); 304 Log.w(TAG, "Video frame updated on UI thread");
307 } 305 }
308 306
309 synchronized (mFrameLock) { 307 synchronized (mFrameLock) {
310 mFrameBitmap = bitmap; 308 mFrameBitmap = bitmap;
311 } 309 }
312 } 310 }
313 311
314 /** 312 /**
315 * Creates a new Bitmap to hold video frame pixels. Called by JniInterface ( from native code), 313 * Creates a new Bitmap to hold video frame pixels. The returned Bitmap is r eferenced by native
316 * and the returned Bitmap is referenced by native code which writes the dec oded frame pixels 314 * code which writes the decoded frame pixels to it.
317 * to it.
318 */ 315 */
316 @CalledByNative
319 static Bitmap newBitmap(int width, int height) { 317 static Bitmap newBitmap(int width, int height) {
320 return Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); 318 return Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
321 } 319 }
322 320
323 /** 321 /**
324 * Called by JniInterface (from native code) to update the cursor shape. Thi s is called on the 322 * Updates the cursor shape. This is called on the graphics thread when rece iving a new cursor
325 * graphics thread when receiving a new cursor shape from the host. 323 * shape from the host.
326 */ 324 */
327 void updateCursorShape( 325 @CalledByNative
328 int width, int height, int hotspotX, int hotspotY, ByteBuffer buffer ) { 326 void updateCursorShape(int width, int height, int hotspotX, int hotspotY, By teBuffer buffer) {
329 mCursorHotspot = new Point(hotspotX, hotspotY); 327 mCursorHotspot = new Point(hotspotX, hotspotY);
330 328
331 int[] data = new int[width * height]; 329 int[] data = new int[width * height];
332 buffer.order(ByteOrder.LITTLE_ENDIAN); 330 buffer.order(ByteOrder.LITTLE_ENDIAN);
333 buffer.asIntBuffer().get(data, 0, data.length); 331 buffer.asIntBuffer().get(data, 0, data.length);
334 mCursorBitmap = Bitmap.createBitmap(data, width, height, Bitmap.Config.A RGB_8888); 332 mCursorBitmap = Bitmap.createBitmap(data, width, height, Bitmap.Config.A RGB_8888);
335 } 333 }
336 334
337 /** Position of cursor hotspot within cursor image. Called on the graphics t hread. */ 335 /** Position of cursor hotspot within cursor image. Called on the graphics t hread. */
338 public Point getCursorHotspot() { 336 public Point getCursorHotspot() {
339 return mCursorHotspot; 337 return mCursorHotspot;
340 } 338 }
341 339
342 /** Returns the current cursor shape. Called on the graphics thread. */ 340 /** Returns the current cursor shape. Called on the graphics thread. */
343 public Bitmap getCursorBitmap() { 341 public Bitmap getCursorBitmap() {
344 return mCursorBitmap; 342 return mCursorBitmap;
345 } 343 }
346 344
347 // 345 //
348 // Third Party Authentication 346 // Third Party Authentication
349 // 347 //
350 348
351 /** 349 /**
352 * Called by JniInterface (from native code), to pop up a third party login page to fetch the 350 * Pops up a third party login page to fetch the token required for authenti cation.
353 * token required for authentication.
354 */ 351 */
352 @CalledByNative
355 void fetchThirdPartyToken(String tokenUrl, String clientId, String scope) { 353 void fetchThirdPartyToken(String tokenUrl, String clientId, String scope) {
356 mAuthenticator.fetchThirdPartyToken(tokenUrl, clientId, scope); 354 mAuthenticator.fetchThirdPartyToken(tokenUrl, clientId, scope);
357 } 355 }
358 356
359 /** 357 /**
360 * Called by the SessionAuthenticator to pass the |token| and |sharedSecret| to native code to 358 * Called by the SessionAuthenticator to pass the |token| and |sharedSecret| to native code to
361 * continue authentication. 359 * continue authentication.
362 */ 360 */
363 public void onThirdPartyTokenFetched(String token, String sharedSecret) { 361 public void onThirdPartyTokenFetched(String token, String sharedSecret) {
364 if (!mConnected) { 362 if (!mConnected) {
365 return; 363 return;
366 } 364 }
367 365
368 JniInterface.nativeOnThirdPartyTokenFetched(token, sharedSecret); 366 nativeOnThirdPartyTokenFetched(mNativeJniClient, token, sharedSecret);
369 } 367 }
370 368
371 // 369 //
372 // Host and Client Capabilities 370 // Host and Client Capabilities
373 // 371 //
374 372
375 /** 373 /**
376 * Called by JniInterface (from native code) to set the list of negotiated c apabilities between 374 * Sets the list of negotiated capabilities between host and client. Called on the UI thread.
377 * host and client. Called on the UI thread.
378 */ 375 */
376 @CalledByNative
379 void setCapabilities(String capabilities) { 377 void setCapabilities(String capabilities) {
380 mCapabilityManager.setNegotiatedCapabilities(capabilities); 378 mCapabilityManager.setNegotiatedCapabilities(capabilities);
381 } 379 }
382 380
383 // 381 //
384 // Extension Message Handling 382 // Extension Message Handling
385 // 383 //
386 384
387 /** 385 /**
388 * Called by JniInterface (from native code), to pass on the deconstructed E xtensionMessage to 386 * Passes on the deconstructed ExtensionMessage to the app. Called on the UI thread.
389 * the app. Called on the UI thread.
390 */ 387 */
388 @CalledByNative
391 void handleExtensionMessage(String type, String data) { 389 void handleExtensionMessage(String type, String data) {
392 mCapabilityManager.onExtensionMessage(type, data); 390 mCapabilityManager.onExtensionMessage(type, data);
393 } 391 }
394 392
395 /** Sends an extension message to the Chromoting host. Called on the UI thre ad. */ 393 /** Sends an extension message to the Chromoting host. Called on the UI thre ad. */
396 public void sendExtensionMessage(String type, String data) { 394 public void sendExtensionMessage(String type, String data) {
397 if (!mConnected) { 395 if (!mConnected) {
398 return; 396 return;
399 } 397 }
400 398
401 JniInterface.nativeSendExtensionMessage(type, data); 399 nativeSendExtensionMessage(mNativeJniClient, type, data);
402 } 400 }
401
402 private native long nativeInit();
403
404 private native void nativeDestroy(long nativeJniClient);
405
406 /** Performs the native portion of the connection. */
407 private native void nativeConnect(long nativeJniClient, String username, Str ing authToken,
408 String hostJid, String hostId, String hostPubkey, String pairId, Str ing pairSecret,
409 String capabilities, String flags);
410
411 /** Native implementation of Client.handleAuthenticationResponse(). */
412 private native void nativeAuthenticationResponse(
413 long nativeJniClient, String pin, boolean createPair, String deviceN ame);
414
415 /** Performs the native portion of the cleanup. */
416 private native void nativeDisconnect(long nativeJniClient);
417
418 /** Schedules a redraw on the native graphics thread. */
419 private native void nativeScheduleRedraw(long nativeJniClient);
420
421 /** Passes authentication data to the native handling code. */
422 private native void nativeOnThirdPartyTokenFetched(
423 long nativeJniClient, String token, String sharedSecret);
424
425 /** Passes mouse information to the native handling code. */
426 private native void nativeSendMouseEvent(
427 long nativeJniClient, int x, int y, int whichButton, boolean buttonD own);
428
429 /** Passes mouse-wheel information to the native handling code. */
430 private native void nativeSendMouseWheelEvent(long nativeJniClient, int delt aX, int deltaY);
431
432 /** Passes key press information to the native handling code. */
433 private native boolean nativeSendKeyEvent(
434 long nativeJniClient, int scanCode, int keyCode, boolean keyDown);
435
436 /** Passes text event information to the native handling code. */
437 private native void nativeSendTextEvent(long nativeJniClient, String text);
438
439 /** Passes touch event information to the native handling code. */
440 private native void nativeSendTouchEvent(
441 long nativeJniClient, int eventType, TouchEventData[] data);
442
443 /** Native implementation of Client.enableVideoChannel() */
444 private native void nativeEnableVideoChannel(long nativeJniClient, boolean e nable);
445
446 /** Passes extension message to the native code. */
447 private native void nativeSendExtensionMessage(long nativeJniClient, String type, String data);
403 } 448 }
OLDNEW
« no previous file with comments | « no previous file | remoting/android/java/src/org/chromium/chromoting/jni/JniInterface.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698