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

Unified Diff: components/devtools_bridge/android/java/src/org/chromium/components/devtools_bridge/SessionDependencyFactoryNative.java

Issue 719043002: Data channel implementation for SessionDependencyFactory. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@native-factory-2
Patch Set: Created 6 years, 1 month 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 side-by-side diff with in-line comments
Download patch
Index: components/devtools_bridge/android/java/src/org/chromium/components/devtools_bridge/SessionDependencyFactoryNative.java
diff --git a/components/devtools_bridge/android/java/src/org/chromium/components/devtools_bridge/SessionDependencyFactoryNative.java b/components/devtools_bridge/android/java/src/org/chromium/components/devtools_bridge/SessionDependencyFactoryNative.java
index 2d44226bc00f29110ffe855eeed365b8bc0544eb..f98f12623767e8e99b861b88d1933a01237fbe42 100644
--- a/components/devtools_bridge/android/java/src/org/chromium/components/devtools_bridge/SessionDependencyFactoryNative.java
+++ b/components/devtools_bridge/android/java/src/org/chromium/components/devtools_bridge/SessionDependencyFactoryNative.java
@@ -106,22 +106,34 @@ public class SessionDependencyFactoryNative extends SessionDependencyFactory {
@Override
public void registerObserver(Observer observer) {
- throw new UnsupportedOperationException("Not implemented yet");
+ nativeRegisterDataChannelObserver(mChannelPtr, observer);
}
@Override
public void unregisterObserver() {
- throw new UnsupportedOperationException("Not implemented yet");
+ nativeUnregisterDataChannelObserver(mChannelPtr);
}
@Override
public void send(ByteBuffer message, MessageType type) {
- throw new UnsupportedOperationException("Not implemented yet");
+ assert message.position() == 0;
+ int length = message.limit();
+ assert length > 0;
+
+ switch (type) {
+ case BINARY:
+ nativeSendBinaryMessage(mChannelPtr, message, length);
+ break;
+
+ case TEXT:
+ nativeSendTextMessage(mChannelPtr, message, length);
+ break;
+ }
}
@Override
public void close() {
- throw new UnsupportedOperationException("Not implemented yet");
+ nativeCloseDataChannel(mChannelPtr);
}
@Override
@@ -130,6 +142,8 @@ public class SessionDependencyFactoryNative extends SessionDependencyFactory {
}
}
+ // Peer connection callbacks.
+
@CalledByNative
private static void notifyLocalOfferCreatedAndSetSet(Object observer, String description) {
((AbstractPeerConnection.Observer) observer).onLocalDescriptionCreatedAndSet(
@@ -166,6 +180,26 @@ public class SessionDependencyFactoryNative extends SessionDependencyFactory {
.onIceConnectionChange(connected);
}
+ // Data channel callbacks.
+
+ @CalledByNative
+ private static void notifyChannelOpen(Object observer) {
+ ((AbstractDataChannel.Observer) observer)
+ .onStateChange(AbstractDataChannel.State.OPEN);
+ }
+
+ @CalledByNative
+ private static void notifyChannelClose(Object observer) {
+ ((AbstractDataChannel.Observer) observer)
+ .onStateChange(AbstractDataChannel.State.CLOSED);
+ }
+
+ @CalledByNative
+ private static void notifyMessage(Object observer, ByteBuffer message) {
+ ((AbstractDataChannel.Observer) observer)
+ .onMessage(message);
+ }
+
private static native long nativeCreateFactory();
private static native void nativeDestroyFactory(long factoryPtr);
@@ -187,4 +221,12 @@ public class SessionDependencyFactoryNative extends SessionDependencyFactory {
private static native long nativeCreateDataChannel(long connectionPtr, int channelId);
private static native void nativeDestroyDataChannel(long channelPtr);
+
+ private static native void nativeRegisterDataChannelObserver(
+ long channelPtr, Object observer);
+ private static native void nativeUnregisterDataChannelObserver(long channelPtr);
+ private static native void nativeSendBinaryMessage(
+ long channelPtr, ByteBuffer message, int size);
+ private static native void nativeSendTextMessage(long channelPtr, ByteBuffer message, int size);
+ private static native void nativeCloseDataChannel(long channelPtr);
}

Powered by Google App Engine
This is Rietveld 408576698