OkHttpProtocolNegotiator.smali
.class Lio/grpc/okhttp/OkHttpProtocolNegotiator;
.super Ljava/lang/Object;
.source "OkHttpProtocolNegotiator.java"
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lio/grpc/okhttp/OkHttpProtocolNegotiator$AndroidNegotiator;
}
.end annotation
# static fields
.field private static final DEFAULT_PLATFORM:Lio/grpc/okhttp/internal/Platform;
.field private static NEGOTIATOR:Lio/grpc/okhttp/OkHttpProtocolNegotiator;
# instance fields
.field private final platform:Lio/grpc/okhttp/internal/Platform;
# direct methods
.method static constructor <clinit>()V
.registers 1
.line 1
invoke-static {}, Lio/grpc/okhttp/internal/Platform;->get()Lio/grpc/okhttp/internal/Platform;
move-result-object v0
sput-object v0, Lio/grpc/okhttp/OkHttpProtocolNegotiator;->DEFAULT_PLATFORM:Lio/grpc/okhttp/internal/Platform;
.line 2
const-class v0, Lio/grpc/okhttp/OkHttpProtocolNegotiator;
.line 3
invoke-virtual {v0}, Ljava/lang/Class;->getClassLoader()Ljava/lang/ClassLoader;
move-result-object v0
invoke-static {v0}, Lio/grpc/okhttp/OkHttpProtocolNegotiator;->createNegotiator(Ljava/lang/ClassLoader;)Lio/grpc/okhttp/OkHttpProtocolNegotiator;
move-result-object v0
sput-object v0, Lio/grpc/okhttp/OkHttpProtocolNegotiator;->NEGOTIATOR:Lio/grpc/okhttp/OkHttpProtocolNegotiator;
return-void
.end method
.method constructor <init>(Lio/grpc/okhttp/internal/Platform;)V
.registers 2
.line 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 2
invoke-static {p1}, Lcom/google/common/base/r;->a(Ljava/lang/Object;)Ljava/lang/Object;
check-cast p1, Lio/grpc/okhttp/internal/Platform;
iput-object p1, p0, Lio/grpc/okhttp/OkHttpProtocolNegotiator;->platform:Lio/grpc/okhttp/internal/Platform;
return-void
.end method
.method static createNegotiator(Ljava/lang/ClassLoader;)Lio/grpc/okhttp/OkHttpProtocolNegotiator;
.registers 3
:try_start_0
const-string v0, "com.android.org.conscrypt.OpenSSLSocketImpl"
.line 1
invoke-virtual {p0, v0}, Ljava/lang/ClassLoader;->loadClass(Ljava/lang/String;)Ljava/lang/Class;
:try_end_5
.catch Ljava/lang/ClassNotFoundException; {:try_start_0 .. :try_end_5} :catch_6
goto :goto_b
:catch_6
:try_start_6
const-string v0, "org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl"
.line 2
invoke-virtual {p0, v0}, Ljava/lang/ClassLoader;->loadClass(Ljava/lang/String;)Ljava/lang/Class;
:try_end_b
.catch Ljava/lang/ClassNotFoundException; {:try_start_6 .. :try_end_b} :catch_d
:goto_b
const/4 p0, 0x1
goto :goto_e
:catch_d
const/4 p0, 0x0
:goto_e
if-eqz p0, :cond_1c
.line 3
new-instance p0, Lio/grpc/okhttp/OkHttpProtocolNegotiator$AndroidNegotiator;
sget-object v0, Lio/grpc/okhttp/OkHttpProtocolNegotiator;->DEFAULT_PLATFORM:Lio/grpc/okhttp/internal/Platform;
.line 4
# getter for: Lio/grpc/okhttp/OkHttpProtocolNegotiator$AndroidNegotiator;->DEFAULT_TLS_EXTENSION_TYPE:Lio/grpc/okhttp/OkHttpProtocolNegotiator$AndroidNegotiator$TlsExtensionType;
invoke-static {}, Lio/grpc/okhttp/OkHttpProtocolNegotiator$AndroidNegotiator;->access$000()Lio/grpc/okhttp/OkHttpProtocolNegotiator$AndroidNegotiator$TlsExtensionType;
move-result-object v1
invoke-direct {p0, v0, v1}, Lio/grpc/okhttp/OkHttpProtocolNegotiator$AndroidNegotiator;-><init>(Lio/grpc/okhttp/internal/Platform;Lio/grpc/okhttp/OkHttpProtocolNegotiator$AndroidNegotiator$TlsExtensionType;)V
goto :goto_23
:cond_1c
new-instance p0, Lio/grpc/okhttp/OkHttpProtocolNegotiator;
sget-object v0, Lio/grpc/okhttp/OkHttpProtocolNegotiator;->DEFAULT_PLATFORM:Lio/grpc/okhttp/internal/Platform;
invoke-direct {p0, v0}, Lio/grpc/okhttp/OkHttpProtocolNegotiator;-><init>(Lio/grpc/okhttp/internal/Platform;)V
:goto_23
return-object p0
.end method
.method public static get()Lio/grpc/okhttp/OkHttpProtocolNegotiator;
.registers 1
.line 1
sget-object v0, Lio/grpc/okhttp/OkHttpProtocolNegotiator;->NEGOTIATOR:Lio/grpc/okhttp/OkHttpProtocolNegotiator;
return-object v0
.end method
# virtual methods
.method protected configureTlsExtensions(Ljavax/net/ssl/SSLSocket;Ljava/lang/String;Ljava/util/List;)V
.registers 5
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljavax/net/ssl/SSLSocket;",
"Ljava/lang/String;",
"Ljava/util/List<",
"Lio/grpc/okhttp/internal/Protocol;",
">;)V"
}
.end annotation
.line 1
iget-object v0, p0, Lio/grpc/okhttp/OkHttpProtocolNegotiator;->platform:Lio/grpc/okhttp/internal/Platform;
invoke-virtual {v0, p1, p2, p3}, Lio/grpc/okhttp/internal/Platform;->configureTlsExtensions(Ljavax/net/ssl/SSLSocket;Ljava/lang/String;Ljava/util/List;)V
return-void
.end method
.method public getSelectedProtocol(Ljavax/net/ssl/SSLSocket;)Ljava/lang/String;
.registers 3
.line 1
iget-object v0, p0, Lio/grpc/okhttp/OkHttpProtocolNegotiator;->platform:Lio/grpc/okhttp/internal/Platform;
invoke-virtual {v0, p1}, Lio/grpc/okhttp/internal/Platform;->getSelectedProtocol(Ljavax/net/ssl/SSLSocket;)Ljava/lang/String;
move-result-object p1
return-object p1
.end method
.method public negotiate(Ljavax/net/ssl/SSLSocket;Ljava/lang/String;Ljava/util/List;)Ljava/lang/String;
.registers 4
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljavax/net/ssl/SSLSocket;",
"Ljava/lang/String;",
"Ljava/util/List<",
"Lio/grpc/okhttp/internal/Protocol;",
">;)",
"Ljava/lang/String;"
}
.end annotation
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
if-eqz p3, :cond_5
.line 1
invoke-virtual {p0, p1, p2, p3}, Lio/grpc/okhttp/OkHttpProtocolNegotiator;->configureTlsExtensions(Ljavax/net/ssl/SSLSocket;Ljava/lang/String;Ljava/util/List;)V
.line 2
:cond_5
:try_start_5
invoke-virtual {p1}, Ljavax/net/ssl/SSLSocket;->startHandshake()V
.line 3
invoke-virtual {p0, p1}, Lio/grpc/okhttp/OkHttpProtocolNegotiator;->getSelectedProtocol(Ljavax/net/ssl/SSLSocket;)Ljava/lang/String;
move-result-object p2
:try_end_c
.catchall {:try_start_5 .. :try_end_c} :catchall_1c
if-eqz p2, :cond_14
.line 4
iget-object p3, p0, Lio/grpc/okhttp/OkHttpProtocolNegotiator;->platform:Lio/grpc/okhttp/internal/Platform;
invoke-virtual {p3, p1}, Lio/grpc/okhttp/internal/Platform;->afterHandshake(Ljavax/net/ssl/SSLSocket;)V
return-object p2
.line 5
:cond_14
:try_start_14
new-instance p2, Ljava/lang/RuntimeException;
const-string p3, "protocol negotiation failed"
invoke-direct {p2, p3}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V
throw p2
:try_end_1c
.catchall {:try_start_14 .. :try_end_1c} :catchall_1c
:catchall_1c
move-exception p2
.line 6
iget-object p3, p0, Lio/grpc/okhttp/OkHttpProtocolNegotiator;->platform:Lio/grpc/okhttp/internal/Platform;
invoke-virtual {p3, p1}, Lio/grpc/okhttp/internal/Platform;->afterHandshake(Ljavax/net/ssl/SSLSocket;)V
throw p2
.end method