Index: remoting/android/java/src/org/chromium/chromoting/jni/Client.java |
diff --git a/remoting/android/java/src/org/chromium/chromoting/jni/Client.java b/remoting/android/java/src/org/chromium/chromoting/jni/Client.java |
index 451a5d4670b675ead9099a2ef40f16b54197ca78..24911e2833a5e8903c75339dbca075cefe068c67 100644 |
--- a/remoting/android/java/src/org/chromium/chromoting/jni/Client.java |
+++ b/remoting/android/java/src/org/chromium/chromoting/jni/Client.java |
@@ -9,6 +9,7 @@ import android.graphics.Point; |
import android.os.Looper; |
import org.chromium.base.Log; |
+import org.chromium.base.annotations.CalledByNative; |
import org.chromium.base.annotations.JNINamespace; |
import org.chromium.base.annotations.SuppressFBWarnings; |
import org.chromium.chromoting.CapabilityManager; |
@@ -44,8 +45,6 @@ public class Client { |
mNativeJniClient = nativeInit(); |
} |
- private native long nativeInit(); |
- |
// Called on the UI thread. Suppress FindBugs warning, since |sClient| is only used on the |
// UI thread. |
@SuppressFBWarnings("LI_LAZY_INIT_STATIC") |
@@ -57,8 +56,6 @@ public class Client { |
} |
} |
- private native void nativeDestroy(long nativeJniClient); |
- |
/** Returns the current Client instance, or null. */ |
public static Client getInstance() { |
return sClient; |
@@ -111,7 +108,7 @@ public class Client { |
mConnectionListener = listener; |
mAuthenticator = authenticator; |
- JniInterface.nativeConnect(username, authToken, hostJid, hostId, hostPubkey, |
+ nativeConnect(mNativeJniClient, username, authToken, hostJid, hostId, hostPubkey, |
mAuthenticator.getPairingId(hostId), mAuthenticator.getPairingSecret(hostId), |
mCapabilityManager.getLocalCapabilities(), flags); |
mConnected = true; |
@@ -135,7 +132,7 @@ public class Client { |
return; |
} |
- JniInterface.nativeDisconnect(); |
+ nativeDisconnect(mNativeJniClient); |
mConnectionListener = null; |
mConnected = false; |
mCapabilityManager.onHostDisconnect(); |
@@ -146,7 +143,8 @@ public class Client { |
} |
} |
- /** Called by native code whenever the connection status changes. Called on the UI thread. */ |
+ /** Called on the UI thread whenever the connection status changes. */ |
+ @CalledByNative |
void onConnectionState(int stateCode, int errorCode) { |
ConnectionListener.State state = ConnectionListener.State.fromValue(stateCode); |
ConnectionListener.Error error = ConnectionListener.Error.fromValue(errorCode); |
@@ -163,9 +161,9 @@ public class Client { |
} |
/** |
- * Called by JniInterface (from native code) to prompt the user to enter a PIN. Called on the |
- * UI thread. |
+ * Called on the UI thread to prompt the user to enter a PIN. |
*/ |
+ @CalledByNative |
void displayAuthenticationPrompt(boolean pairingSupported) { |
mAuthenticator.displayAuthenticationPrompt(pairingSupported); |
} |
@@ -180,13 +178,13 @@ public class Client { |
public void handleAuthenticationResponse( |
String pin, boolean createPair, String deviceName) { |
assert mConnected; |
- JniInterface.nativeAuthenticationResponse(pin, createPair, deviceName); |
+ nativeAuthenticationResponse(mNativeJniClient, pin, createPair, deviceName); |
} |
/** |
- * Called by JniInterface (from native code), to save newly-received pairing credentials to |
- * permanent storage. Called on the UI thread. |
+ * Called on the UI thread to save newly-received pairing credentials to permanent storage. |
*/ |
+ @CalledByNative |
void commitPairingCredentials(String host, String id, String secret) { |
mAuthenticator.commitPairingCredentials(host, id, secret); |
} |
@@ -200,7 +198,7 @@ public class Client { |
return; |
} |
- JniInterface.nativeSendMouseEvent(x, y, whichButton, buttonDown); |
+ nativeSendMouseEvent(mNativeJniClient, x, y, whichButton, buttonDown); |
} |
/** Injects a mouse-wheel event with delta values. Called on the UI thread. */ |
@@ -209,7 +207,7 @@ public class Client { |
return; |
} |
- JniInterface.nativeSendMouseWheelEvent(deltaX, deltaY); |
+ nativeSendMouseWheelEvent(mNativeJniClient, deltaX, deltaY); |
} |
/** |
@@ -221,7 +219,7 @@ public class Client { |
return false; |
} |
- return JniInterface.nativeSendKeyEvent(scanCode, keyCode, keyDown); |
+ return nativeSendKeyEvent(mNativeJniClient, scanCode, keyCode, keyDown); |
} |
/** Sends TextEvent to the host. Called on the UI thread. */ |
@@ -230,7 +228,7 @@ public class Client { |
return; |
} |
- JniInterface.nativeSendTextEvent(text); |
+ nativeSendTextEvent(mNativeJniClient, text); |
} |
/** Sends an array of TouchEvents to the host. Called on the UI thread. */ |
@@ -239,7 +237,7 @@ public class Client { |
return; |
} |
- JniInterface.nativeSendTouchEvent(eventType.value(), data); |
+ nativeSendTouchEvent(mNativeJniClient, eventType.value(), data); |
} |
/** |
@@ -251,7 +249,7 @@ public class Client { |
return; |
} |
- JniInterface.nativeEnableVideoChannel(enable); |
+ nativeEnableVideoChannel(mNativeJniClient, enable); |
} |
/** |
@@ -267,15 +265,15 @@ public class Client { |
public boolean redrawGraphics() { |
if (!mConnected || mRedrawCallback == null) return false; |
- JniInterface.nativeScheduleRedraw(); |
+ nativeScheduleRedraw(mNativeJniClient); |
return true; |
} |
/** |
- * Called by JniInterface to perform the redrawing callback requested by |
+ * Called on the graphics thread to perform the redrawing callback requested by |
* {@link #redrawGraphics}. This is a no-op if the window isn't visible (the callback is null). |
- * Called on the graphics thread. |
*/ |
+ @CalledByNative |
void redrawGraphicsInternal() { |
Runnable callback = mRedrawCallback; |
if (callback != null) { |
@@ -298,9 +296,9 @@ public class Client { |
} |
/** |
- * Called by JniInterface (from native code) to set a new video frame. Called on the native |
- * graphics thread when a new frame is allocated. |
+ * Set a new video frame. Called on the native graphics thread when a new frame is allocated. |
*/ |
+ @CalledByNative |
void setVideoFrame(Bitmap bitmap) { |
if (Looper.myLooper() == Looper.getMainLooper()) { |
Log.w(TAG, "Video frame updated on UI thread"); |
@@ -312,20 +310,20 @@ public class Client { |
} |
/** |
- * Creates a new Bitmap to hold video frame pixels. Called by JniInterface (from native code), |
- * and the returned Bitmap is referenced by native code which writes the decoded frame pixels |
- * to it. |
+ * Creates a new Bitmap to hold video frame pixels. The returned Bitmap is referenced by native |
+ * code which writes the decoded frame pixels to it. |
*/ |
+ @CalledByNative |
static Bitmap newBitmap(int width, int height) { |
return Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); |
} |
/** |
- * Called by JniInterface (from native code) to update the cursor shape. This is called on the |
- * graphics thread when receiving a new cursor shape from the host. |
+ * Updates the cursor shape. This is called on the graphics thread when receiving a new cursor |
+ * shape from the host. |
*/ |
- void updateCursorShape( |
- int width, int height, int hotspotX, int hotspotY, ByteBuffer buffer) { |
+ @CalledByNative |
+ void updateCursorShape(int width, int height, int hotspotX, int hotspotY, ByteBuffer buffer) { |
mCursorHotspot = new Point(hotspotX, hotspotY); |
int[] data = new int[width * height]; |
@@ -349,9 +347,9 @@ public class Client { |
// |
/** |
- * Called by JniInterface (from native code), to pop up a third party login page to fetch the |
- * token required for authentication. |
+ * Pops up a third party login page to fetch the token required for authentication. |
*/ |
+ @CalledByNative |
void fetchThirdPartyToken(String tokenUrl, String clientId, String scope) { |
mAuthenticator.fetchThirdPartyToken(tokenUrl, clientId, scope); |
} |
@@ -365,7 +363,7 @@ public class Client { |
return; |
} |
- JniInterface.nativeOnThirdPartyTokenFetched(token, sharedSecret); |
+ nativeOnThirdPartyTokenFetched(mNativeJniClient, token, sharedSecret); |
} |
// |
@@ -373,9 +371,9 @@ public class Client { |
// |
/** |
- * Called by JniInterface (from native code) to set the list of negotiated capabilities between |
- * host and client. Called on the UI thread. |
+ * Sets the list of negotiated capabilities between host and client. Called on the UI thread. |
*/ |
+ @CalledByNative |
void setCapabilities(String capabilities) { |
mCapabilityManager.setNegotiatedCapabilities(capabilities); |
} |
@@ -385,9 +383,9 @@ public class Client { |
// |
/** |
- * Called by JniInterface (from native code), to pass on the deconstructed ExtensionMessage to |
- * the app. Called on the UI thread. |
+ * Passes on the deconstructed ExtensionMessage to the app. Called on the UI thread. |
*/ |
+ @CalledByNative |
void handleExtensionMessage(String type, String data) { |
mCapabilityManager.onExtensionMessage(type, data); |
} |
@@ -398,6 +396,53 @@ public class Client { |
return; |
} |
- JniInterface.nativeSendExtensionMessage(type, data); |
+ nativeSendExtensionMessage(mNativeJniClient, type, data); |
} |
+ |
+ private native long nativeInit(); |
+ |
+ private native void nativeDestroy(long nativeJniClient); |
+ |
+ /** Performs the native portion of the connection. */ |
+ private native void nativeConnect(long nativeJniClient, String username, String authToken, |
+ String hostJid, String hostId, String hostPubkey, String pairId, String pairSecret, |
+ String capabilities, String flags); |
+ |
+ /** Native implementation of Client.handleAuthenticationResponse(). */ |
+ private native void nativeAuthenticationResponse( |
+ long nativeJniClient, String pin, boolean createPair, String deviceName); |
+ |
+ /** Performs the native portion of the cleanup. */ |
+ private native void nativeDisconnect(long nativeJniClient); |
+ |
+ /** Schedules a redraw on the native graphics thread. */ |
+ private native void nativeScheduleRedraw(long nativeJniClient); |
+ |
+ /** Passes authentication data to the native handling code. */ |
+ private native void nativeOnThirdPartyTokenFetched( |
+ long nativeJniClient, String token, String sharedSecret); |
+ |
+ /** Passes mouse information to the native handling code. */ |
+ private native void nativeSendMouseEvent( |
+ long nativeJniClient, int x, int y, int whichButton, boolean buttonDown); |
+ |
+ /** Passes mouse-wheel information to the native handling code. */ |
+ private native void nativeSendMouseWheelEvent(long nativeJniClient, int deltaX, int deltaY); |
+ |
+ /** Passes key press information to the native handling code. */ |
+ private native boolean nativeSendKeyEvent( |
+ long nativeJniClient, int scanCode, int keyCode, boolean keyDown); |
+ |
+ /** Passes text event information to the native handling code. */ |
+ private native void nativeSendTextEvent(long nativeJniClient, String text); |
+ |
+ /** Passes touch event information to the native handling code. */ |
+ private native void nativeSendTouchEvent( |
+ long nativeJniClient, int eventType, TouchEventData[] data); |
+ |
+ /** Native implementation of Client.enableVideoChannel() */ |
+ private native void nativeEnableVideoChannel(long nativeJniClient, boolean enable); |
+ |
+ /** Passes extension message to the native code. */ |
+ private native void nativeSendExtensionMessage(long nativeJniClient, String type, String data); |
} |