package com.vungle.ads.internal; import android.R; import android.app.Activity; import android.content.Context; import android.graphics.Rect; import android.os.Handler; import android.view.View; import android.view.ViewGroup; import android.view.ViewParent; import android.view.ViewTreeObserver; import androidx.annotation.VisibleForTesting; import androidx.core.view.ViewCompat; import com.vungle.ads.internal.util.Logger; import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.Iterator; import java.util.Map; import java.util.WeakHashMap; import kotlin.jvm.internal.DefaultConstructorMarker; import kotlin.jvm.internal.Intrinsics; /* loaded from: classes4.dex */ public final class ImpressionTracker { private static final int MIN_VISIBILITY_PERCENTAGE = 1; private static final int VISIBILITY_THROTTLE_MILLIS = 100; private final Rect clipRect; private boolean isVisibilityScheduled; private final ViewTreeObserver.OnPreDrawListener onPreDrawListener; private boolean setViewTreeObserverSucceed; private final Map trackedViews; private final Handler visibilityHandler; private final VisibilityRunnable visibilityRunnable; private WeakReference weakViewTreeObserver; public static final Companion Companion = new Companion(null); private static final String TAG = ImpressionTracker.class.getSimpleName(); public interface ImpressionListener { void onImpression(View view); } @VisibleForTesting public static final class TrackingInfo { private ImpressionListener impressionListener; private int minViewablePercent; public final ImpressionListener getImpressionListener() { return this.impressionListener; } public final int getMinViewablePercent() { return this.minViewablePercent; } public final void setImpressionListener(ImpressionListener impressionListener) { this.impressionListener = impressionListener; } public final void setMinViewablePercent(int i) { this.minViewablePercent = i; } } @VisibleForTesting public static /* synthetic */ void getOnPreDrawListener$annotations() { } @VisibleForTesting public static /* synthetic */ void getWeakViewTreeObserver$annotations() { } public final ViewTreeObserver.OnPreDrawListener getOnPreDrawListener() { return this.onPreDrawListener; } public final WeakReference getWeakViewTreeObserver() { return this.weakViewTreeObserver; } public final void setWeakViewTreeObserver(WeakReference weakReference) { Intrinsics.checkNotNullParameter(weakReference, ""); this.weakViewTreeObserver = weakReference; } @VisibleForTesting public ImpressionTracker(Context context, Map trackedViews, Handler visibilityHandler) { Intrinsics.checkNotNullParameter(context, "context"); Intrinsics.checkNotNullParameter(trackedViews, "trackedViews"); Intrinsics.checkNotNullParameter(visibilityHandler, "visibilityHandler"); this.trackedViews = trackedViews; this.visibilityHandler = visibilityHandler; this.clipRect = new Rect(); this.visibilityRunnable = new VisibilityRunnable(); this.onPreDrawListener = new ViewTreeObserver.OnPreDrawListener() { // from class: com.vungle.ads.internal.ImpressionTracker$$ExternalSyntheticLambda0 @Override // android.view.ViewTreeObserver.OnPreDrawListener public final boolean onPreDraw() { boolean m3859_init_$lambda0; m3859_init_$lambda0 = ImpressionTracker.m3859_init_$lambda0(ImpressionTracker.this); return m3859_init_$lambda0; } }; this.weakViewTreeObserver = new WeakReference<>(null); this.setViewTreeObserverSucceed = setViewTreeObserver(context, null); } /* JADX WARN: 'this' call moved to the top of the method (can break code semantics) */ public ImpressionTracker(Context context) { this(context, new WeakHashMap(10), new Handler()); Intrinsics.checkNotNullParameter(context, "context"); } private final boolean setViewTreeObserver(Context context, View view) { ViewTreeObserver viewTreeObserver = this.weakViewTreeObserver.get(); if (viewTreeObserver != null && viewTreeObserver.isAlive()) { return true; } View topView = getTopView(context, view); if (topView == null) { Logger.Companion companion = Logger.Companion; String TAG2 = TAG; Intrinsics.checkNotNullExpressionValue(TAG2, "TAG"); companion.d(TAG2, "Unable to set ViewTreeObserver due to no available root view."); return false; } ViewTreeObserver viewTreeObserver2 = topView.getViewTreeObserver(); if (!viewTreeObserver2.isAlive()) { Logger.Companion companion2 = Logger.Companion; String TAG3 = TAG; Intrinsics.checkNotNullExpressionValue(TAG3, "TAG"); companion2.d(TAG3, "The root view tree observer was not alive"); return false; } this.weakViewTreeObserver = new WeakReference<>(viewTreeObserver2); viewTreeObserver2.addOnPreDrawListener(this.onPreDrawListener); return true; } public final void addView(View view, ImpressionListener impressionListener) { Intrinsics.checkNotNullParameter(view, "view"); this.setViewTreeObserverSucceed = setViewTreeObserver(view.getContext(), view); TrackingInfo trackingInfo = this.trackedViews.get(view); if (trackingInfo == null) { trackingInfo = new TrackingInfo(); this.trackedViews.put(view, trackingInfo); scheduleVisibilityCheck(); } trackingInfo.setMinViewablePercent(1); trackingInfo.setImpressionListener(impressionListener); } @VisibleForTesting public final void removeView(View view) { Intrinsics.checkNotNullParameter(view, "view"); this.trackedViews.remove(view); } public final void clear() { this.trackedViews.clear(); this.visibilityHandler.removeMessages(0); this.isVisibilityScheduled = false; } public final void destroy() { clear(); ViewTreeObserver viewTreeObserver = this.weakViewTreeObserver.get(); if (viewTreeObserver != null && viewTreeObserver.isAlive()) { viewTreeObserver.removeOnPreDrawListener(this.onPreDrawListener); } this.weakViewTreeObserver.clear(); } private final View getTopView(Context context, View view) { View findViewById = context instanceof Activity ? ((Activity) context).getWindow().getDecorView().findViewById(R.id.content) : null; if (findViewById != null || view == null) { return findViewById; } if (!ViewCompat.isAttachedToWindow(view)) { Logger.Companion companion = Logger.Companion; String TAG2 = TAG; Intrinsics.checkNotNullExpressionValue(TAG2, "TAG"); companion.w(TAG2, "Trying to call View#rootView() on an unattached View."); } View rootView = view.getRootView(); if (rootView != null) { findViewById = rootView.findViewById(R.id.content); } return findViewById == null ? rootView : findViewById; } /* JADX INFO: Access modifiers changed from: private */ public final void scheduleVisibilityCheck() { if (this.isVisibilityScheduled) { return; } this.isVisibilityScheduled = true; this.visibilityHandler.postDelayed(this.visibilityRunnable, 100L); } @VisibleForTesting public final class VisibilityRunnable implements Runnable { private final ArrayList visibleViews = new ArrayList<>(); public VisibilityRunnable() { } @Override // java.lang.Runnable public void run() { ImpressionListener impressionListener; ImpressionTracker.this.isVisibilityScheduled = false; for (Map.Entry entry : ImpressionTracker.this.trackedViews.entrySet()) { View view = (View) entry.getKey(); if (ImpressionTracker.this.isVisible(view, ((TrackingInfo) entry.getValue()).getMinViewablePercent())) { this.visibleViews.add(view); } } Iterator it = this.visibleViews.iterator(); while (it.hasNext()) { View view2 = it.next(); TrackingInfo trackingInfo = (TrackingInfo) ImpressionTracker.this.trackedViews.get(view2); if (trackingInfo != null && (impressionListener = trackingInfo.getImpressionListener()) != null) { impressionListener.onImpression(view2); } ImpressionTracker impressionTracker = ImpressionTracker.this; Intrinsics.checkNotNullExpressionValue(view2, "view"); impressionTracker.removeView(view2); } this.visibleViews.clear(); if (!(!ImpressionTracker.this.trackedViews.isEmpty()) || ImpressionTracker.this.setViewTreeObserverSucceed) { return; } ImpressionTracker.this.scheduleVisibilityCheck(); } } /* JADX INFO: Access modifiers changed from: private */ public final boolean isVisible(View view, int i) { if (view == null || view.getVisibility() != 0 || view.getParent() == null) { return false; } ViewParent parent = view.getParent(); while (parent instanceof ViewGroup) { ViewGroup viewGroup = (ViewGroup) parent; if (viewGroup.getVisibility() != 0) { Logger.Companion.w("ImpressionTracker", "Parent visibility is not visible: " + parent); return false; } parent = viewGroup.getParent(); } if (!view.getGlobalVisibleRect(this.clipRect)) { return false; } long height = view.getHeight() * view.getWidth(); return height > 0 && ((long) 100) * (this.clipRect.height() * this.clipRect.width()) >= ((long) i) * height; } public static final class Companion { public /* synthetic */ Companion(DefaultConstructorMarker defaultConstructorMarker) { this(); } private Companion() { } } /* JADX INFO: Access modifiers changed from: private */ /* renamed from: _init_$lambda-0, reason: not valid java name */ public static final boolean m3859_init_$lambda0(ImpressionTracker this$0) { Intrinsics.checkNotNullParameter(this$0, "this$0"); this$0.scheduleVisibilityCheck(); return true; } }