.class public Landroidx/webkit/internal/WebMessagePortImpl; .super Landroidx/webkit/WebMessagePortCompat; .source "SourceFile" # instance fields .field private mBoundaryInterface:Lorg/chromium/support_lib_boundary/WebMessagePortBoundaryInterface; .field private mFrameworksImpl:Landroid/webkit/WebMessagePort; # direct methods .method public constructor (Landroid/webkit/WebMessagePort;)V .locals 0 .param p1 # Landroid/webkit/WebMessagePort; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .line 44 invoke-direct {p0}, Landroidx/webkit/WebMessagePortCompat;->()V iput-object p1, p0, Landroidx/webkit/internal/WebMessagePortImpl;->mFrameworksImpl:Landroid/webkit/WebMessagePort; return-void .end method .method public constructor (Ljava/lang/reflect/InvocationHandler;)V .locals 1 .param p1 # Ljava/lang/reflect/InvocationHandler; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .line 48 invoke-direct {p0}, Landroidx/webkit/WebMessagePortCompat;->()V const-class v0, Lorg/chromium/support_lib_boundary/WebMessagePortBoundaryInterface; .line 49 invoke-static {v0, p1}, Lorg/chromium/support_lib_boundary/util/BoundaryInterfaceReflectionUtil;->castToSuppLibClass(Ljava/lang/Class;Ljava/lang/reflect/InvocationHandler;)Ljava/lang/Object; move-result-object p1 check-cast p1, Lorg/chromium/support_lib_boundary/WebMessagePortBoundaryInterface; iput-object p1, p0, Landroidx/webkit/internal/WebMessagePortImpl;->mBoundaryInterface:Lorg/chromium/support_lib_boundary/WebMessagePortBoundaryInterface; return-void .end method .method public static compatToFrameworkMessage(Landroidx/webkit/WebMessageCompat;)Landroid/webkit/WebMessage; .locals 0 .param p0 # Landroidx/webkit/WebMessageCompat; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .annotation build Landroidx/annotation/NonNull; .end annotation .annotation build Landroidx/annotation/RequiresApi; value = 0x17 .end annotation .line 181 invoke-static {p0}, Landroidx/webkit/internal/ApiHelperForM;->createWebMessage(Landroidx/webkit/WebMessageCompat;)Landroid/webkit/WebMessage; move-result-object p0 return-object p0 .end method .method public static compatToPorts([Landroidx/webkit/WebMessagePortCompat;)[Landroid/webkit/WebMessagePort; .locals 4 .param p0 # [Landroidx/webkit/WebMessagePortCompat; .annotation build Landroidx/annotation/Nullable; .end annotation .end param .annotation build Landroidx/annotation/Nullable; .end annotation .annotation build Landroidx/annotation/RequiresApi; value = 0x17 .end annotation if-nez p0, :cond_0 const/4 p0, 0x0 return-object p0 .line 168 :cond_0 array-length v0, p0 new-array v1, v0, [Landroid/webkit/WebMessagePort; const/4 v2, 0x0 :goto_0 if-ge v2, v0, :cond_1 .line 170 aget-object v3, p0, v2 invoke-virtual {v3}, Landroidx/webkit/WebMessagePortCompat;->getFrameworkPort()Landroid/webkit/WebMessagePort; move-result-object v3 aput-object v3, v1, v2 add-int/lit8 v2, v2, 0x1 goto :goto_0 :cond_1 return-object v1 .end method .method public static frameworkMessageToCompat(Landroid/webkit/WebMessage;)Landroidx/webkit/WebMessageCompat; .locals 0 .param p0 # Landroid/webkit/WebMessage; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .annotation build Landroidx/annotation/NonNull; .end annotation .annotation build Landroidx/annotation/RequiresApi; value = 0x17 .end annotation .line 191 invoke-static {p0}, Landroidx/webkit/internal/ApiHelperForM;->createWebMessageCompat(Landroid/webkit/WebMessage;)Landroidx/webkit/WebMessageCompat; move-result-object p0 return-object p0 .end method .method private getBoundaryInterface()Lorg/chromium/support_lib_boundary/WebMessagePortBoundaryInterface; .locals 2 iget-object v0, p0, Landroidx/webkit/internal/WebMessagePortImpl;->mBoundaryInterface:Lorg/chromium/support_lib_boundary/WebMessagePortBoundaryInterface; if-nez v0, :cond_0 .line 66 invoke-static {}, Landroidx/webkit/internal/WebViewGlueCommunicator;->getCompatConverter()Landroidx/webkit/internal/WebkitToCompatConverter; move-result-object v0 iget-object v1, p0, Landroidx/webkit/internal/WebMessagePortImpl;->mFrameworksImpl:Landroid/webkit/WebMessagePort; invoke-virtual {v0, v1}, Landroidx/webkit/internal/WebkitToCompatConverter;->convertWebMessagePort(Landroid/webkit/WebMessagePort;)Ljava/lang/reflect/InvocationHandler; move-result-object v0 const-class v1, Lorg/chromium/support_lib_boundary/WebMessagePortBoundaryInterface; .line 64 invoke-static {v1, v0}, Lorg/chromium/support_lib_boundary/util/BoundaryInterfaceReflectionUtil;->castToSuppLibClass(Ljava/lang/Class;Ljava/lang/reflect/InvocationHandler;)Ljava/lang/Object; move-result-object v0 check-cast v0, Lorg/chromium/support_lib_boundary/WebMessagePortBoundaryInterface; iput-object v0, p0, Landroidx/webkit/internal/WebMessagePortImpl;->mBoundaryInterface:Lorg/chromium/support_lib_boundary/WebMessagePortBoundaryInterface; :cond_0 iget-object v0, p0, Landroidx/webkit/internal/WebMessagePortImpl;->mBoundaryInterface:Lorg/chromium/support_lib_boundary/WebMessagePortBoundaryInterface; return-object v0 .end method .method private getFrameworksImpl()Landroid/webkit/WebMessagePort; .locals 2 .annotation build Landroidx/annotation/RequiresApi; value = 0x17 .end annotation iget-object v0, p0, Landroidx/webkit/internal/WebMessagePortImpl;->mFrameworksImpl:Landroid/webkit/WebMessagePort; if-nez v0, :cond_0 .line 56 invoke-static {}, Landroidx/webkit/internal/WebViewGlueCommunicator;->getCompatConverter()Landroidx/webkit/internal/WebkitToCompatConverter; move-result-object v0 iget-object v1, p0, Landroidx/webkit/internal/WebMessagePortImpl;->mBoundaryInterface:Lorg/chromium/support_lib_boundary/WebMessagePortBoundaryInterface; .line 57 invoke-static {v1}, Ljava/lang/reflect/Proxy;->getInvocationHandler(Ljava/lang/Object;)Ljava/lang/reflect/InvocationHandler; move-result-object v1 .line 56 invoke-virtual {v0, v1}, Landroidx/webkit/internal/WebkitToCompatConverter;->convertWebMessagePort(Ljava/lang/reflect/InvocationHandler;)Landroid/webkit/WebMessagePort; move-result-object v0 iput-object v0, p0, Landroidx/webkit/internal/WebMessagePortImpl;->mFrameworksImpl:Landroid/webkit/WebMessagePort; :cond_0 iget-object v0, p0, Landroidx/webkit/internal/WebMessagePortImpl;->mFrameworksImpl:Landroid/webkit/WebMessagePort; return-object v0 .end method .method public static portsToCompat([Landroid/webkit/WebMessagePort;)[Landroidx/webkit/WebMessagePortCompat; .locals 4 .param p0 # [Landroid/webkit/WebMessagePort; .annotation build Landroidx/annotation/Nullable; .end annotation .end param .annotation build Landroidx/annotation/Nullable; .end annotation if-nez p0, :cond_0 const/4 p0, 0x0 return-object p0 .line 153 :cond_0 array-length v0, p0 new-array v0, v0, [Landroidx/webkit/WebMessagePortCompat; const/4 v1, 0x0 .line 154 :goto_0 array-length v2, p0 if-ge v1, v2, :cond_1 .line 155 new-instance v2, Landroidx/webkit/internal/WebMessagePortImpl; aget-object v3, p0, v1 invoke-direct {v2, v3}, Landroidx/webkit/internal/WebMessagePortImpl;->(Landroid/webkit/WebMessagePort;)V aput-object v2, v0, v1 add-int/lit8 v1, v1, 0x1 goto :goto_0 :cond_1 return-object v0 .end method # virtual methods .method public close()V .locals 2 .line 90 sget-object v0, Landroidx/webkit/internal/WebViewFeatureInternal;->WEB_MESSAGE_PORT_CLOSE:Landroidx/webkit/internal/ApiFeature$M; .line 91 invoke-virtual {v0}, Landroidx/webkit/internal/ApiFeature$M;->isSupportedByFramework()Z move-result v1 if-eqz v1, :cond_0 .line 92 invoke-direct {p0}, Landroidx/webkit/internal/WebMessagePortImpl;->getFrameworksImpl()Landroid/webkit/WebMessagePort; move-result-object v0 invoke-static {v0}, Landroidx/webkit/internal/ApiHelperForM;->close(Landroid/webkit/WebMessagePort;)V goto :goto_0 .line 93 :cond_0 invoke-virtual {v0}, Landroidx/webkit/internal/ApiFeature;->isSupportedByWebView()Z move-result v0 if-eqz v0, :cond_1 .line 94 invoke-direct {p0}, Landroidx/webkit/internal/WebMessagePortImpl;->getBoundaryInterface()Lorg/chromium/support_lib_boundary/WebMessagePortBoundaryInterface; move-result-object v0 invoke-interface {v0}, Lorg/chromium/support_lib_boundary/WebMessagePortBoundaryInterface;->close()V :goto_0 return-void .line 96 :cond_1 invoke-static {}, Landroidx/webkit/internal/WebViewFeatureInternal;->getUnsupportedOperationException()Ljava/lang/UnsupportedOperationException; move-result-object v0 throw v0 .end method .method public getFrameworkPort()Landroid/webkit/WebMessagePort; .locals 1 .annotation build Landroidx/annotation/NonNull; .end annotation .annotation build Landroidx/annotation/RequiresApi; value = 0x17 .end annotation .line 137 invoke-direct {p0}, Landroidx/webkit/internal/WebMessagePortImpl;->getFrameworksImpl()Landroid/webkit/WebMessagePort; move-result-object v0 return-object v0 .end method .method public getInvocationHandler()Ljava/lang/reflect/InvocationHandler; .locals 1 .annotation build Landroidx/annotation/NonNull; .end annotation .line 143 invoke-direct {p0}, Landroidx/webkit/internal/WebMessagePortImpl;->getBoundaryInterface()Lorg/chromium/support_lib_boundary/WebMessagePortBoundaryInterface; move-result-object v0 invoke-static {v0}, Ljava/lang/reflect/Proxy;->getInvocationHandler(Ljava/lang/Object;)Ljava/lang/reflect/InvocationHandler; move-result-object v0 return-object v0 .end method .method public postMessage(Landroidx/webkit/WebMessageCompat;)V .locals 2 .param p1 # Landroidx/webkit/WebMessageCompat; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .line 74 sget-object v0, Landroidx/webkit/internal/WebViewFeatureInternal;->WEB_MESSAGE_PORT_POST_MESSAGE:Landroidx/webkit/internal/ApiFeature$M; .line 76 invoke-virtual {v0}, Landroidx/webkit/internal/ApiFeature$M;->isSupportedByFramework()Z move-result v1 if-eqz v1, :cond_0 invoke-virtual {p1}, Landroidx/webkit/WebMessageCompat;->getType()I move-result v1 if-nez v1, :cond_0 .line 77 invoke-direct {p0}, Landroidx/webkit/internal/WebMessagePortImpl;->getFrameworksImpl()Landroid/webkit/WebMessagePort; move-result-object v0 invoke-static {p1}, Landroidx/webkit/internal/WebMessagePortImpl;->compatToFrameworkMessage(Landroidx/webkit/WebMessageCompat;)Landroid/webkit/WebMessage; move-result-object p1 invoke-static {v0, p1}, Landroidx/webkit/internal/ApiHelperForM;->postMessage(Landroid/webkit/WebMessagePort;Landroid/webkit/WebMessage;)V goto :goto_0 .line 78 :cond_0 invoke-virtual {v0}, Landroidx/webkit/internal/ApiFeature;->isSupportedByWebView()Z move-result v0 if-eqz v0, :cond_1 .line 79 invoke-virtual {p1}, Landroidx/webkit/WebMessageCompat;->getType()I move-result v0 invoke-static {v0}, Landroidx/webkit/internal/WebMessageAdapter;->isMessagePayloadTypeSupportedByWebView(I)Z move-result v0 if-eqz v0, :cond_1 .line 80 invoke-direct {p0}, Landroidx/webkit/internal/WebMessagePortImpl;->getBoundaryInterface()Lorg/chromium/support_lib_boundary/WebMessagePortBoundaryInterface; move-result-object v0 new-instance v1, Landroidx/webkit/internal/WebMessageAdapter; invoke-direct {v1, p1}, Landroidx/webkit/internal/WebMessageAdapter;->(Landroidx/webkit/WebMessageCompat;)V .line 81 invoke-static {v1}, Lorg/chromium/support_lib_boundary/util/BoundaryInterfaceReflectionUtil;->createInvocationHandlerFor(Ljava/lang/Object;)Ljava/lang/reflect/InvocationHandler; move-result-object p1 .line 80 invoke-interface {v0, p1}, Lorg/chromium/support_lib_boundary/WebMessagePortBoundaryInterface;->postMessage(Ljava/lang/reflect/InvocationHandler;)V :goto_0 return-void .line 84 :cond_1 invoke-static {}, Landroidx/webkit/internal/WebViewFeatureInternal;->getUnsupportedOperationException()Ljava/lang/UnsupportedOperationException; move-result-object p1 throw p1 .end method .method public setWebMessageCallback(Landroid/os/Handler;Landroidx/webkit/WebMessagePortCompat$WebMessageCallbackCompat;)V .locals 2 .param p1 # Landroid/os/Handler; .annotation build Landroidx/annotation/Nullable; .end annotation .end param .param p2 # Landroidx/webkit/WebMessagePortCompat$WebMessageCallbackCompat; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .line 119 sget-object v0, Landroidx/webkit/internal/WebViewFeatureInternal;->CREATE_WEB_MESSAGE_CHANNEL:Landroidx/webkit/internal/ApiFeature$M; .line 120 invoke-virtual {v0}, Landroidx/webkit/internal/ApiFeature;->isSupportedByWebView()Z move-result v1 if-eqz v1, :cond_0 .line 123 invoke-direct {p0}, Landroidx/webkit/internal/WebMessagePortImpl;->getBoundaryInterface()Lorg/chromium/support_lib_boundary/WebMessagePortBoundaryInterface; move-result-object v0 new-instance v1, Landroidx/webkit/internal/WebMessageCallbackAdapter; invoke-direct {v1, p2}, Landroidx/webkit/internal/WebMessageCallbackAdapter;->(Landroidx/webkit/WebMessagePortCompat$WebMessageCallbackCompat;)V .line 124 invoke-static {v1}, Lorg/chromium/support_lib_boundary/util/BoundaryInterfaceReflectionUtil;->createInvocationHandlerFor(Ljava/lang/Object;)Ljava/lang/reflect/InvocationHandler; move-result-object p2 .line 123 invoke-interface {v0, p2, p1}, Lorg/chromium/support_lib_boundary/WebMessagePortBoundaryInterface;->setWebMessageCallback(Ljava/lang/reflect/InvocationHandler;Landroid/os/Handler;)V goto :goto_0 .line 126 :cond_0 invoke-virtual {v0}, Landroidx/webkit/internal/ApiFeature$M;->isSupportedByFramework()Z move-result v0 if-eqz v0, :cond_1 .line 127 invoke-direct {p0}, Landroidx/webkit/internal/WebMessagePortImpl;->getFrameworksImpl()Landroid/webkit/WebMessagePort; move-result-object v0 invoke-static {v0, p2, p1}, Landroidx/webkit/internal/ApiHelperForM;->setWebMessageCallback(Landroid/webkit/WebMessagePort;Landroidx/webkit/WebMessagePortCompat$WebMessageCallbackCompat;Landroid/os/Handler;)V :goto_0 return-void .line 129 :cond_1 invoke-static {}, Landroidx/webkit/internal/WebViewFeatureInternal;->getUnsupportedOperationException()Ljava/lang/UnsupportedOperationException; move-result-object p1 throw p1 .end method .method public setWebMessageCallback(Landroidx/webkit/WebMessagePortCompat$WebMessageCallbackCompat;)V .locals 2 .param p1 # Landroidx/webkit/WebMessagePortCompat$WebMessageCallbackCompat; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .line 102 sget-object v0, Landroidx/webkit/internal/WebViewFeatureInternal;->WEB_MESSAGE_PORT_SET_MESSAGE_CALLBACK:Landroidx/webkit/internal/ApiFeature$M; .line 103 invoke-virtual {v0}, Landroidx/webkit/internal/ApiFeature;->isSupportedByWebView()Z move-result v1 if-eqz v1, :cond_0 .line 106 invoke-direct {p0}, Landroidx/webkit/internal/WebMessagePortImpl;->getBoundaryInterface()Lorg/chromium/support_lib_boundary/WebMessagePortBoundaryInterface; move-result-object v0 new-instance v1, Landroidx/webkit/internal/WebMessageCallbackAdapter; invoke-direct {v1, p1}, Landroidx/webkit/internal/WebMessageCallbackAdapter;->(Landroidx/webkit/WebMessagePortCompat$WebMessageCallbackCompat;)V .line 107 invoke-static {v1}, Lorg/chromium/support_lib_boundary/util/BoundaryInterfaceReflectionUtil;->createInvocationHandlerFor(Ljava/lang/Object;)Ljava/lang/reflect/InvocationHandler; move-result-object p1 .line 106 invoke-interface {v0, p1}, Lorg/chromium/support_lib_boundary/WebMessagePortBoundaryInterface;->setWebMessageCallback(Ljava/lang/reflect/InvocationHandler;)V goto :goto_0 .line 109 :cond_0 invoke-virtual {v0}, Landroidx/webkit/internal/ApiFeature$M;->isSupportedByFramework()Z move-result v0 if-eqz v0, :cond_1 .line 110 invoke-direct {p0}, Landroidx/webkit/internal/WebMessagePortImpl;->getFrameworksImpl()Landroid/webkit/WebMessagePort; move-result-object v0 invoke-static {v0, p1}, Landroidx/webkit/internal/ApiHelperForM;->setWebMessageCallback(Landroid/webkit/WebMessagePort;Landroidx/webkit/WebMessagePortCompat$WebMessageCallbackCompat;)V :goto_0 return-void .line 112 :cond_1 invoke-static {}, Landroidx/webkit/internal/WebViewFeatureInternal;->getUnsupportedOperationException()Ljava/lang/UnsupportedOperationException; move-result-object p1 throw p1 .end method