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

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

Issue 451973002: Capabilities + Extensions + Cast Host Extension Support for Android client (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Minor Fixes Created 6 years, 4 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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.app.Activity; 7 import android.app.Activity;
8 import android.app.AlertDialog; 8 import android.app.AlertDialog;
9 import android.content.Context; 9 import android.content.Context;
10 import android.content.DialogInterface; 10 import android.content.DialogInterface;
11 import android.content.SharedPreferences; 11 import android.content.SharedPreferences;
12 import android.graphics.Bitmap; 12 import android.graphics.Bitmap;
13 import android.graphics.Point; 13 import android.graphics.Point;
14 import android.os.Build; 14 import android.os.Build;
15 import android.os.Looper; 15 import android.os.Looper;
16 import android.util.Log; 16 import android.util.Log;
17 import android.view.KeyEvent; 17 import android.view.KeyEvent;
18 import android.view.View; 18 import android.view.View;
19 import android.widget.CheckBox; 19 import android.widget.CheckBox;
20 import android.widget.TextView; 20 import android.widget.TextView;
21 21
22 import org.chromium.base.CalledByNative; 22 import org.chromium.base.CalledByNative;
23 import org.chromium.base.JNINamespace; 23 import org.chromium.base.JNINamespace;
24 import org.chromium.chromoting.CapabilityManager;
24 import org.chromium.chromoting.Chromoting; 25 import org.chromium.chromoting.Chromoting;
25 import org.chromium.chromoting.R; 26 import org.chromium.chromoting.R;
26 27
27 import java.nio.ByteBuffer; 28 import java.nio.ByteBuffer;
28 import java.nio.ByteOrder; 29 import java.nio.ByteOrder;
29 30
30 /** 31 /**
31 * Initializes the Chromium remoting library, and provides JNI calls into it. 32 * Initializes the Chromium remoting library, and provides JNI calls into it.
32 * All interaction with the native code is centralized in this class. 33 * All interaction with the native code is centralized in this class.
33 */ 34 */
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
135 136
136 /** Protects access to sFrameBitmap. */ 137 /** Protects access to sFrameBitmap. */
137 private static final Object sFrameLock = new Object(); 138 private static final Object sFrameLock = new Object();
138 139
139 /** Position of cursor hot-spot. Accessed on the graphics thread. */ 140 /** Position of cursor hot-spot. Accessed on the graphics thread. */
140 private static Point sCursorHotspot = new Point(); 141 private static Point sCursorHotspot = new Point();
141 142
142 /** Bitmap holding the cursor shape. Accessed on the graphics thread. */ 143 /** Bitmap holding the cursor shape. Accessed on the graphics thread. */
143 private static Bitmap sCursorBitmap = null; 144 private static Bitmap sCursorBitmap = null;
144 145
146 /** Capability Manager through which capabilities and extensions are handled . */
147 private static CapabilityManager sCapabilityManager = CapabilityManager.getI nstance();
148
145 /** 149 /**
146 * To be called once from the main Activity. Any subsequent calls will updat e the application 150 * To be called once from the main Activity. Any subsequent calls will updat e the application
147 * context, but not reload the library. This is useful e.g. when the activit y is closed and the 151 * context, but not reload the library. This is useful e.g. when the activit y is closed and the
148 * user later wants to return to the application. Called on the UI thread. 152 * user later wants to return to the application. Called on the UI thread.
149 */ 153 */
150 public static void loadLibrary(Activity context) { 154 public static void loadLibrary(Activity context) {
151 sContext = context; 155 sContext = context;
152 156
153 if (sLoaded) return; 157 if (sLoaded) return;
154 158
(...skipping 14 matching lines...) Expand all
169 public static native String nativeGetClientSecret(); 173 public static native String nativeGetClientSecret();
170 174
171 /** Attempts to form a connection to the user-selected host. Called on the U I thread. */ 175 /** Attempts to form a connection to the user-selected host. Called on the U I thread. */
172 public static void connectToHost(String username, String authToken, 176 public static void connectToHost(String username, String authToken,
173 String hostJid, String hostId, String hostPubkey, ConnectionListener listener) { 177 String hostJid, String hostId, String hostPubkey, ConnectionListener listener) {
174 disconnectFromHost(); 178 disconnectFromHost();
175 179
176 sConnectionListener = listener; 180 sConnectionListener = listener;
177 SharedPreferences prefs = sContext.getPreferences(Activity.MODE_PRIVATE) ; 181 SharedPreferences prefs = sContext.getPreferences(Activity.MODE_PRIVATE) ;
178 nativeConnect(username, authToken, hostJid, hostId, hostPubkey, 182 nativeConnect(username, authToken, hostJid, hostId, hostPubkey,
179 prefs.getString(hostId + "_id", ""), prefs.getString(hostId + "_ secret", "")); 183 prefs.getString(hostId + "_id", ""), prefs.getString(hostId + "_secr et", ""),
184 sCapabilityManager.getLocalCapabilities());
180 sConnected = true; 185 sConnected = true;
181 } 186 }
182 187
183 /** Performs the native portion of the connection. */ 188 /** Performs the native portion of the connection. */
184 private static native void nativeConnect(String username, String authToken, String hostJid, 189 private static native void nativeConnect(
185 String hostId, String hostPubkey, String pairId, String pairSecret); 190 String username, String authToken, String hostJid, String hostId, String hostPubkey,
191 String pairId, String pairSecret, String capabilities);
186 192
187 /** Severs the connection and cleans up. Called on the UI thread. */ 193 /** Severs the connection and cleans up. Called on the UI thread. */
188 public static void disconnectFromHost() { 194 public static void disconnectFromHost() {
189 if (!sConnected) return; 195 if (!sConnected) return;
190 196
191 sConnectionListener.onConnectionState(ConnectionListener.State.CLOSED, 197 sConnectionListener.onConnectionState(ConnectionListener.State.CLOSED,
192 ConnectionListener.Error.OK); 198 ConnectionListener.Error.OK);
193 199
194 nativeDisconnect(); 200 nativeDisconnect();
195 sConnectionListener = null; 201 sConnectionListener = null;
(...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after
451 @CalledByNative 457 @CalledByNative
452 public static void fetchThirdPartyToken(String tokenUrl, String clientId, St ring scope) { 458 public static void fetchThirdPartyToken(String tokenUrl, String clientId, St ring scope) {
453 Chromoting app = (Chromoting) sContext; 459 Chromoting app = (Chromoting) sContext;
454 app.fetchThirdPartyToken(tokenUrl, clientId, scope); 460 app.fetchThirdPartyToken(tokenUrl, clientId, scope);
455 } 461 }
456 462
457 /** 463 /**
458 * Notify the native code to continue authentication with the |token| and th e |sharedSecret|. 464 * Notify the native code to continue authentication with the |token| and th e |sharedSecret|.
459 */ 465 */
460 public static native void nativeOnThirdPartyTokenFetched(String token, Strin g sharedSecret); 466 public static native void nativeOnThirdPartyTokenFetched(String token, Strin g sharedSecret);
467
468 //
469 // Host and Client Capabilities
470 //
471
472 /** Set the list of negotiated capabilities between host and client. Called on the UI thread. */
473 @CalledByNative
474 public static void setCapabilities(String capabilities) {
475 sCapabilityManager.setNegotiatedCapabilities(capabilities);
476 }
477
478 //
479 // Extension Message Handling
480 //
481
482 /** Passes on the deconstructed ExtensionMessage to the app. Called on the U I thread. */
483 @CalledByNative
484 public static void handleExtensionMessage(String type, String data) {
485 sCapabilityManager.onExtensionMessage(type, data);
486 }
487
488
489 public static void sendExtensionMessage(String type, String data) {
490 if (!sConnected)
491 return;
492
493 nativeSendExtensionMessage(type, data);
494 }
495
496 public static native void nativeSendExtensionMessage(String type, String dat a);
461 } 497 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698