.class public final Landroidx/window/java/layout/WindowInfoTrackerCallbackAdapter; .super Ljava/lang/Object; .source "WindowInfoTrackerCallbackAdapter.kt" # interfaces .implements Landroidx/window/layout/WindowInfoTracker; # annotations .annotation runtime Lkotlin/Metadata; d1 = { "\u0000D\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\u0008\u0003\n\u0002\u0010%\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u0002\n\u0002\u0008\u0002\n\u0002\u0018\u0002\n\u0002\u0008\u0002\n\u0002\u0018\u0002\n\u0002\u0008\u0002\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\u0008\u0004\u0018\u00002\u00020\u0001B\r\u0012\u0006\u0010\u0002\u001a\u00020\u0001\u00a2\u0006\u0002\u0010\u0003J2\u0010\n\u001a\u00020\u000b\"\u0004\u0008\u0000\u0010\u000c2\u0006\u0010\r\u001a\u00020\u000e2\u000c\u0010\u000f\u001a\u0008\u0012\u0004\u0012\u0002H\u000c0\u00062\u000c\u0010\u0010\u001a\u0008\u0012\u0004\u0012\u0002H\u000c0\u0011H\u0002J$\u0010\u0012\u001a\u00020\u000b2\u0006\u0010\u0013\u001a\u00020\u00142\u0006\u0010\r\u001a\u00020\u000e2\u000c\u0010\u000f\u001a\u0008\u0012\u0004\u0012\u00020\u00150\u0006J\u0014\u0010\u0016\u001a\u00020\u000b2\n\u0010\u000f\u001a\u0006\u0012\u0002\u0008\u00030\u0006H\u0002J\u0014\u0010\u0017\u001a\u00020\u000b2\u000c\u0010\u000f\u001a\u0008\u0012\u0004\u0012\u00020\u00150\u0006J\u0017\u0010\u0018\u001a\u0008\u0012\u0004\u0012\u00020\u00150\u00112\u0006\u0010\u0013\u001a\u00020\u0014H\u0096\u0001R\u001e\u0010\u0004\u001a\u0012\u0012\u0008\u0012\u0006\u0012\u0002\u0008\u00030\u0006\u0012\u0004\u0012\u00020\u00070\u0005X\u0082\u0004\u00a2\u0006\u0002\n\u0000R\u000e\u0010\u0008\u001a\u00020\tX\u0082\u0004\u00a2\u0006\u0002\n\u0000R\u000e\u0010\u0002\u001a\u00020\u0001X\u0082\u0004\u00a2\u0006\u0002\n\u0000\u00a8\u0006\u0019" } d2 = { "Landroidx/window/java/layout/WindowInfoTrackerCallbackAdapter;", "Landroidx/window/layout/WindowInfoTracker;", "tracker", "(Landroidx/window/layout/WindowInfoTracker;)V", "consumerToJobMap", "", "Landroidx/core/util/Consumer;", "Lkotlinx/coroutines/Job;", "lock", "Ljava/util/concurrent/locks/ReentrantLock;", "addListener", "", "T", "executor", "Ljava/util/concurrent/Executor;", "consumer", "flow", "Lkotlinx/coroutines/flow/Flow;", "addWindowLayoutInfoListener", "activity", "Landroid/app/Activity;", "Landroidx/window/layout/WindowLayoutInfo;", "removeListener", "removeWindowLayoutInfoListener", "windowLayoutInfo", "window-java_release" } k = 0x1 mv = { 0x1, 0x5, 0x1 } xi = 0x30 .end annotation # instance fields .field private final consumerToJobMap:Ljava/util/Map; .annotation system Ldalvik/annotation/Signature; value = { "Ljava/util/Map<", "Landroidx/core/util/Consumer<", "*>;", "Lkotlinx/coroutines/Job;", ">;" } .end annotation .end field .field private final lock:Ljava/util/concurrent/locks/ReentrantLock; .field private final tracker:Landroidx/window/layout/WindowInfoTracker; # direct methods .method public constructor (Landroidx/window/layout/WindowInfoTracker;)V .locals 1 const-string v0, "tracker" invoke-static {p1, v0}, Lkotlin/jvm/internal/Intrinsics;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V .line 37 invoke-direct {p0}, Ljava/lang/Object;->()V iput-object p1, p0, Landroidx/window/java/layout/WindowInfoTrackerCallbackAdapter;->tracker:Landroidx/window/layout/WindowInfoTracker; .line 44 new-instance p1, Ljava/util/concurrent/locks/ReentrantLock; invoke-direct {p1}, Ljava/util/concurrent/locks/ReentrantLock;->()V iput-object p1, p0, Landroidx/window/java/layout/WindowInfoTrackerCallbackAdapter;->lock:Ljava/util/concurrent/locks/ReentrantLock; .line 45 new-instance p1, Ljava/util/LinkedHashMap; invoke-direct {p1}, Ljava/util/LinkedHashMap;->()V check-cast p1, Ljava/util/Map; iput-object p1, p0, Landroidx/window/java/layout/WindowInfoTrackerCallbackAdapter;->consumerToJobMap:Ljava/util/Map; return-void .end method .method private final addListener(Ljava/util/concurrent/Executor;Landroidx/core/util/Consumer;Lkotlinx/coroutines/flow/Flow;)V .locals 7 .annotation system Ldalvik/annotation/Signature; value = { "(", "Ljava/util/concurrent/Executor;", "Landroidx/core/util/Consumer<", "TT;>;", "Lkotlinx/coroutines/flow/Flow<", "+TT;>;)V" } .end annotation iget-object v0, p0, Landroidx/window/java/layout/WindowInfoTrackerCallbackAdapter;->lock:Ljava/util/concurrent/locks/ReentrantLock; .line 74 check-cast v0, Ljava/util/concurrent/locks/Lock; invoke-interface {v0}, Ljava/util/concurrent/locks/Lock;->lock()V :try_start_0 iget-object v1, p0, Landroidx/window/java/layout/WindowInfoTrackerCallbackAdapter;->consumerToJobMap:Ljava/util/Map; .line 75 invoke-interface {v1, p2}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object; move-result-object v1 if-nez v1, :cond_0 .line 76 invoke-static {p1}, Lkotlinx/coroutines/ExecutorsKt;->from(Ljava/util/concurrent/Executor;)Lkotlinx/coroutines/CoroutineDispatcher; move-result-object p1 check-cast p1, Lkotlin/coroutines/CoroutineContext; invoke-static {p1}, Lkotlinx/coroutines/CoroutineScopeKt;->CoroutineScope(Lkotlin/coroutines/CoroutineContext;)Lkotlinx/coroutines/CoroutineScope; move-result-object v1 iget-object p0, p0, Landroidx/window/java/layout/WindowInfoTrackerCallbackAdapter;->consumerToJobMap:Ljava/util/Map; const/4 v2, 0x0 const/4 v3, 0x0 .line 77 new-instance p1, Landroidx/window/java/layout/WindowInfoTrackerCallbackAdapter$addListener$1$1; const/4 v4, 0x0 invoke-direct {p1, p3, p2, v4}, Landroidx/window/java/layout/WindowInfoTrackerCallbackAdapter$addListener$1$1;->(Lkotlinx/coroutines/flow/Flow;Landroidx/core/util/Consumer;Lkotlin/coroutines/Continuation;)V move-object v4, p1 check-cast v4, Lkotlin/jvm/functions/Function2; const/4 v5, 0x3 const/4 v6, 0x0 invoke-static/range {v1 .. v6}, Lkotlinx/coroutines/BuildersKt;->launch$default(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/CoroutineContext;Lkotlinx/coroutines/CoroutineStart;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/Job; move-result-object p1 invoke-interface {p0, p2, p1}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; .line 81 :cond_0 sget-object p0, Lkotlin/Unit;->INSTANCE:Lkotlin/Unit; :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 .line 74 invoke-interface {v0}, Ljava/util/concurrent/locks/Lock;->unlock()V return-void :catchall_0 move-exception p0 invoke-interface {v0}, Ljava/util/concurrent/locks/Lock;->unlock()V throw p0 .end method .method private final removeListener(Landroidx/core/util/Consumer;)V .locals 4 .annotation system Ldalvik/annotation/Signature; value = { "(", "Landroidx/core/util/Consumer<", "*>;)V" } .end annotation iget-object v0, p0, Landroidx/window/java/layout/WindowInfoTrackerCallbackAdapter;->lock:Ljava/util/concurrent/locks/ReentrantLock; .line 89 check-cast v0, Ljava/util/concurrent/locks/Lock; invoke-interface {v0}, Ljava/util/concurrent/locks/Lock;->lock()V :try_start_0 iget-object v1, p0, Landroidx/window/java/layout/WindowInfoTrackerCallbackAdapter;->consumerToJobMap:Ljava/util/Map; .line 90 invoke-interface {v1, p1}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object; move-result-object v1 check-cast v1, Lkotlinx/coroutines/Job; if-nez v1, :cond_0 goto :goto_0 :cond_0 const/4 v2, 0x1 const/4 v3, 0x0 invoke-static {v1, v3, v2, v3}, Lkotlinx/coroutines/Job$DefaultImpls;->cancel$default(Lkotlinx/coroutines/Job;Ljava/util/concurrent/CancellationException;ILjava/lang/Object;)V :goto_0 iget-object p0, p0, Landroidx/window/java/layout/WindowInfoTrackerCallbackAdapter;->consumerToJobMap:Ljava/util/Map; .line 91 invoke-interface {p0, p1}, Ljava/util/Map;->remove(Ljava/lang/Object;)Ljava/lang/Object; move-result-object p0 check-cast p0, Lkotlinx/coroutines/Job; :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 .line 89 invoke-interface {v0}, Ljava/util/concurrent/locks/Lock;->unlock()V return-void :catchall_0 move-exception p0 invoke-interface {v0}, Ljava/util/concurrent/locks/Lock;->unlock()V throw p0 .end method # virtual methods .method public final addWindowLayoutInfoListener(Landroid/app/Activity;Ljava/util/concurrent/Executor;Landroidx/core/util/Consumer;)V .locals 1 .annotation system Ldalvik/annotation/Signature; value = { "(", "Landroid/app/Activity;", "Ljava/util/concurrent/Executor;", "Landroidx/core/util/Consumer<", "Landroidx/window/layout/WindowLayoutInfo;", ">;)V" } .end annotation const-string v0, "activity" invoke-static {p1, v0}, Lkotlin/jvm/internal/Intrinsics;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V const-string v0, "executor" invoke-static {p2, v0}, Lkotlin/jvm/internal/Intrinsics;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V const-string v0, "consumer" invoke-static {p3, v0}, Lkotlin/jvm/internal/Intrinsics;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V iget-object v0, p0, Landroidx/window/java/layout/WindowInfoTrackerCallbackAdapter;->tracker:Landroidx/window/layout/WindowInfoTracker; .line 57 invoke-interface {v0, p1}, Landroidx/window/layout/WindowInfoTracker;->windowLayoutInfo(Landroid/app/Activity;)Lkotlinx/coroutines/flow/Flow; move-result-object p1 invoke-direct {p0, p2, p3, p1}, Landroidx/window/java/layout/WindowInfoTrackerCallbackAdapter;->addListener(Ljava/util/concurrent/Executor;Landroidx/core/util/Consumer;Lkotlinx/coroutines/flow/Flow;)V return-void .end method .method public final removeWindowLayoutInfoListener(Landroidx/core/util/Consumer;)V .locals 1 .annotation system Ldalvik/annotation/Signature; value = { "(", "Landroidx/core/util/Consumer<", "Landroidx/window/layout/WindowLayoutInfo;", ">;)V" } .end annotation const-string v0, "consumer" invoke-static {p1, v0}, Lkotlin/jvm/internal/Intrinsics;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V .line 66 invoke-direct {p0, p1}, Landroidx/window/java/layout/WindowInfoTrackerCallbackAdapter;->removeListener(Landroidx/core/util/Consumer;)V return-void .end method .method public windowLayoutInfo(Landroid/app/Activity;)Lkotlinx/coroutines/flow/Flow; .locals 1 .annotation system Ldalvik/annotation/Signature; value = { "(", "Landroid/app/Activity;", ")", "Lkotlinx/coroutines/flow/Flow<", "Landroidx/window/layout/WindowLayoutInfo;", ">;" } .end annotation const-string v0, "activity" invoke-static {p1, v0}, Lkotlin/jvm/internal/Intrinsics;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V iget-object p0, p0, Landroidx/window/java/layout/WindowInfoTrackerCallbackAdapter;->tracker:Landroidx/window/layout/WindowInfoTracker; invoke-interface {p0, p1}, Landroidx/window/layout/WindowInfoTracker;->windowLayoutInfo(Landroid/app/Activity;)Lkotlinx/coroutines/flow/Flow; move-result-object p0 return-object p0 .end method