OurPlay v5.5.9版本的 MD5 值为:d4e139798f4c2243a1145c8af5e21046

以下内容为反编译后的 HttpsTest.java 源代码,内容仅作参考


package com.github.shadowsocks.net;

import android.os.Build;
import android.os.SystemClock;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;
import com.github.shadowsocks.Core;
import com.github.shadowsocks.core.R;
import com.github.shadowsocks.database.Profile;
import com.github.shadowsocks.preference.DataStore;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.Proxy;
import java.net.URL;
import java.net.URLConnection;
import kotlin.Metadata;
import kotlin.Pair;
import kotlin.Result;
import kotlin.TypeCastException;
import kotlin.coroutines.Continuation;
import kotlin.coroutines.jvm.internal.DebugMetadata;
import kotlin.coroutines.jvm.internal.SuspendLambda;
import kotlin.jvm.functions.Function1;
import kotlin.jvm.functions.Function2;
import kotlin.jvm.internal.k;
import kotlin.p;
import kotlin.u;
import kotlinx.coroutines.BuildersKt;
import kotlinx.coroutines.CoroutineDispatcher;
import kotlinx.coroutines.CoroutineScope;
import kotlinx.coroutines.CoroutineStart;
import kotlinx.coroutines.Dispatchers;
import kotlinx.coroutines.GlobalScope;
import kotlinx.coroutines.Job;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

@Metadata(bv = {1, 0, 3}, d1 = {"\u0000:\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0010\t\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0010\u0002\n\u0002\b\u0005\u0018\u00002\u00020\u0001:\u0001\u0016B\u0005¢\u0006\u0002\u0010\u0002J\u000f\u0010\u0011\u001a\u0004\u0018\u00010\u0012H\u0002¢\u0006\u0002\u0010\u0013J\u0006\u0010\u0014\u001a\u00020\u0012J\u0006\u0010\u0015\u001a\u00020\u0012R\u001c\u0010\u0003\u001a\u0010\u0012\u0004\u0012\u00020\u0005\u0012\u0004\u0012\u00020\u0006\u0018\u00010\u0004X\u0082\u000e¢\u0006\u0002\n\u0000R\u0017\u0010\u0007\u001a\b\u0012\u0004\u0012\u00020\t0\b¢\u0006\b\n\u0000\u001a\u0004\b\n\u0010\u000bR\u0018\u0010\f\u001a\u00020\r*\u00020\u000e8BX\u0082\u0004¢\u0006\u0006\u001a\u0004\b\u000f\u0010\u0010¨\u0006\u0017"}, d2 = {"Lcom/github/shadowsocks/net/HttpsTest;", "Landroidx/lifecycle/ViewModel;", "()V", "running", "Lkotlin/Pair;", "Ljava/net/HttpURLConnection;", "Lkotlinx/coroutines/Job;", "status", "Landroidx/lifecycle/MutableLiveData;", "Lcom/github/shadowsocks/net/HttpsTest$Status;", "getStatus", "()Landroidx/lifecycle/MutableLiveData;", "responseLength", "", "Ljava/net/URLConnection;", "getResponseLength", "(Ljava/net/URLConnection;)J", "cancelTest", "", "()Lkotlin/Unit;", "invalidate", "testConnection", "Status", "core_release"}, k = 1, mv = {1, 1, 13})
public final class HttpsTest extends ViewModel {

    private Pair<? extends HttpURLConnection, ? extends Job> f15950a;

    @NotNull
    private final MutableLiveData<a> f15951b;

    @Metadata(bv = {1, 0, 3}, d1 = {"\u0000:\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0002\b\u0002\n\u0002\u0010\r\n\u0002\b\u0003\n\u0002\u0010\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u000e\n\u0002\b\u0004\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0000\b6\u0018\u00002\u00020\u0001:\u0004\r\u000e\u000f\u0010B\u0007\b\u0002¢\u0006\u0002\u0010\u0002J0\u0010\u0007\u001a\u00020\b2\u0012\u0010\t\u001a\u000e\u0012\u0004\u0012\u00020\u0004\u0012\u0004\u0012\u00020\b0\n2\u0012\u0010\u000b\u001a\u000e\u0012\u0004\u0012\u00020\f\u0012\u0004\u0012\u00020\b0\nH\u0016R\u0012\u0010\u0003\u001a\u00020\u0004X¤\u0004¢\u0006\u0006\u001a\u0004\b\u0005\u0010\u0006\u0082\u0001\u0004\u0011\u0012\u0013\u0014¨\u0006\u0015"}, d2 = {"Lcom/github/shadowsocks/net/HttpsTest$Status;", "", "()V", "status", "", "getStatus", "()Ljava/lang/CharSequence;", "retrieve", "", "setStatus", "Lkotlin/Function1;", "errorCallback", "", "Error", "Idle", "Success", "Testing", "Lcom/github/shadowsocks/net/HttpsTest$Status$Idle;", "Lcom/github/shadowsocks/net/HttpsTest$Status$Testing;", "Lcom/github/shadowsocks/net/HttpsTest$Status$Success;", "Lcom/github/shadowsocks/net/HttpsTest$Status$Error;", "core_release"}, k = 1, mv = {1, 1, 13})
    public static abstract class a {
        @NotNull
        protected abstract CharSequence a();

        private a() {
        }

        public a(kotlin.jvm.internal.g gVar) {
            this();
        }

        public void a(@NotNull Function1<? super CharSequence, u> function1, @NotNull Function1<? super String, u> function12) {
            k.b(function1, "setStatus");
            k.b(function12, "errorCallback");
            function1.invoke(a());
        }

        @Metadata(bv = {1, 0, 3}, d1 = {"\u0000\u0014\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\r\n\u0002\b\u0004\bÆ\u0002\u0018\u00002\u00020\u0001B\u0007\b\u0002¢\u0006\u0002\u0010\u0002R\u001c\u0010\u0003\u001a\n \u0005*\u0004\u0018\u00010\u00040\u00048TX\u0094\u0004¢\u0006\u0006\u001a\u0004\b\u0006\u0010\u0007¨\u0006\b"}, d2 = {"Lcom/github/shadowsocks/net/HttpsTest$Status$Idle;", "Lcom/github/shadowsocks/net/HttpsTest$Status;", "()V", "status", "", "kotlin.jvm.PlatformType", "getStatus", "()Ljava/lang/CharSequence;", "core_release"}, k = 1, mv = {1, 1, 13})
        public static final class b extends a {

            public static final b f15955a = new b();

            private b() {
                super(null);
            }

            @Override
            protected CharSequence a() {
                return Core.d.a().getText(R.string.vpn_connected);
            }
        }

        @Metadata(bv = {1, 0, 3}, d1 = {"\u0000\u0014\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\r\n\u0002\b\u0004\bÆ\u0002\u0018\u00002\u00020\u0001B\u0007\b\u0002¢\u0006\u0002\u0010\u0002R\u001c\u0010\u0003\u001a\n \u0005*\u0004\u0018\u00010\u00040\u00048TX\u0094\u0004¢\u0006\u0006\u001a\u0004\b\u0006\u0010\u0007¨\u0006\b"}, d2 = {"Lcom/github/shadowsocks/net/HttpsTest$Status$Testing;", "Lcom/github/shadowsocks/net/HttpsTest$Status;", "()V", "status", "", "kotlin.jvm.PlatformType", "getStatus", "()Ljava/lang/CharSequence;", "core_release"}, k = 1, mv = {1, 1, 13})
        public static final class d extends a {

            public static final d f15957a = new d();

            private d() {
                super(null);
            }

            @Override
            protected CharSequence a() {
                return Core.d.a().getText(R.string.connection_test_testing);
            }
        }

        @Metadata(bv = {1, 0, 3}, d1 = {"\u0000\u001a\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\t\n\u0002\b\u0002\n\u0002\u0010\u000e\n\u0002\b\u0004\u0018\u00002\u00020\u0001B\r\u0012\u0006\u0010\u0002\u001a\u00020\u0003¢\u0006\u0002\u0010\u0004R\u000e\u0010\u0002\u001a\u00020\u0003X\u0082\u0004¢\u0006\u0002\n\u0000R\u001c\u0010\u0005\u001a\n \u0007*\u0004\u0018\u00010\u00060\u00068TX\u0094\u0004¢\u0006\u0006\u001a\u0004\b\b\u0010\t¨\u0006\n"}, d2 = {"Lcom/github/shadowsocks/net/HttpsTest$Status$Success;", "Lcom/github/shadowsocks/net/HttpsTest$Status;", "elapsed", "", "(J)V", "status", "", "kotlin.jvm.PlatformType", "getStatus", "()Ljava/lang/String;", "core_release"}, k = 1, mv = {1, 1, 13})
        public static final class c extends a {

            private final long f15956a;

            public c(long j) {
                super(null);
                this.f15956a = j;
            }

            @Override
            public String a() {
                return Core.d.a().getString(R.string.connection_test_available, new Object[]{Long.valueOf(this.f15956a)});
            }
        }

        @Metadata(bv = {1, 0, 3}, d1 = {"\u0000:\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\u000e\n\u0002\b\u0003\n\u0002\u0010\u000b\n\u0000\n\u0002\u0010\r\n\u0002\b\u0004\n\u0002\u0010\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0000\b6\u0018\u00002\u00020\u0001:\u0002\u0013\u0014B\u0007\b\u0002¢\u0006\u0002\u0010\u0002J0\u0010\u000e\u001a\u00020\u000f2\u0012\u0010\u0010\u001a\u000e\u0012\u0004\u0012\u00020\n\u0012\u0004\u0012\u00020\u000f0\u00112\u0012\u0010\u0012\u001a\u000e\u0012\u0004\u0012\u00020\u0004\u0012\u0004\u0012\u00020\u000f0\u0011H\u0016R\u0012\u0010\u0003\u001a\u00020\u0004X¤\u0004¢\u0006\u0006\u001a\u0004\b\u0005\u0010\u0006R\u000e\u0010\u0007\u001a\u00020\bX\u0082\u000e¢\u0006\u0002\n\u0000R\u001c\u0010\t\u001a\n \u000b*\u0004\u0018\u00010\n0\n8TX\u0094\u0004¢\u0006\u0006\u001a\u0004\b\f\u0010\r\u0082\u0001\u0002\u0015\u0016¨\u0006\u0017"}, d2 = {"Lcom/github/shadowsocks/net/HttpsTest$Status$Error;", "Lcom/github/shadowsocks/net/HttpsTest$Status;", "()V", com.umeng.analytics.pro.d.O, "", "getError", "()Ljava/lang/String;", "shown", "", "status", "", "kotlin.jvm.PlatformType", "getStatus", "()Ljava/lang/CharSequence;", "retrieve", "", "setStatus", "Lkotlin/Function1;", "errorCallback", "IOFailure", "UnexpectedResponseCode", "Lcom/github/shadowsocks/net/HttpsTest$Status$Error$UnexpectedResponseCode;", "Lcom/github/shadowsocks/net/HttpsTest$Status$Error$IOFailure;", "core_release"}, k = 1, mv = {1, 1, 13})
        public static abstract class AbstractC0637a extends a {

            private boolean f15952a;

            @NotNull
            protected abstract String b();

            private AbstractC0637a() {
                super(null);
            }

            public AbstractC0637a(kotlin.jvm.internal.g gVar) {
                this();
            }

            @Override
            protected CharSequence a() {
                return Core.d.a().getText(R.string.connection_test_fail);
            }

            @Override
            public void a(@NotNull Function1<? super CharSequence, u> function1, @NotNull Function1<? super String, u> function12) {
                k.b(function1, "setStatus");
                k.b(function12, "errorCallback");
                super.a(function1, function12);
                if (this.f15952a) {
                    return;
                }
                this.f15952a = true;
                function12.invoke(b());
            }

            @Metadata(bv = {1, 0, 3}, d1 = {"\u0000\u001a\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\b\n\u0002\b\u0002\n\u0002\u0010\u000e\n\u0002\b\u0004\u0018\u00002\u00020\u0001B\r\u0012\u0006\u0010\u0002\u001a\u00020\u0003¢\u0006\u0002\u0010\u0004R\u000e\u0010\u0002\u001a\u00020\u0003X\u0082\u0004¢\u0006\u0002\n\u0000R\u001c\u0010\u0005\u001a\n \u0007*\u0004\u0018\u00010\u00060\u00068TX\u0094\u0004¢\u0006\u0006\u001a\u0004\b\b\u0010\t¨\u0006\n"}, d2 = {"Lcom/github/shadowsocks/net/HttpsTest$Status$Error$UnexpectedResponseCode;", "Lcom/github/shadowsocks/net/HttpsTest$Status$Error;", "code", "", "(I)V", com.umeng.analytics.pro.d.O, "", "kotlin.jvm.PlatformType", "getError", "()Ljava/lang/String;", "core_release"}, k = 1, mv = {1, 1, 13})
            public static final class b extends AbstractC0637a {

                private final int f15954a;

                public b(int i) {
                    super(null);
                    this.f15954a = i;
                }

                @Override
                protected String b() {
                    return Core.d.a().getString(R.string.connection_test_error_status_code, new Object[]{Integer.valueOf(this.f15954a)});
                }
            }

            @Metadata(bv = {1, 0, 3}, d1 = {"\u0000\u001a\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\u000e\n\u0002\b\u0004\u0018\u00002\u00020\u0001B\r\u0012\u0006\u0010\u0002\u001a\u00020\u0003¢\u0006\u0002\u0010\u0004R\u000e\u0010\u0002\u001a\u00020\u0003X\u0082\u0004¢\u0006\u0002\n\u0000R\u001c\u0010\u0005\u001a\n \u0007*\u0004\u0018\u00010\u00060\u00068TX\u0094\u0004¢\u0006\u0006\u001a\u0004\b\b\u0010\t¨\u0006\n"}, d2 = {"Lcom/github/shadowsocks/net/HttpsTest$Status$Error$IOFailure;", "Lcom/github/shadowsocks/net/HttpsTest$Status$Error;", com.excelliance.kxqp.util.e.f15034a, "Ljava/io/IOException;", "(Ljava/io/IOException;)V", com.umeng.analytics.pro.d.O, "", "kotlin.jvm.PlatformType", "getError", "()Ljava/lang/String;", "core_release"}, k = 1, mv = {1, 1, 13})
            public static final class C0638a extends AbstractC0637a {

                private final IOException f15953a;

                public C0638a(@NotNull IOException iOException) {
                    super(null);
                    k.b(iOException, com.excelliance.kxqp.util.e.f15034a);
                    this.f15953a = iOException;
                }

                @Override
                protected String b() {
                    return Core.d.a().getString(R.string.connection_test_error, new Object[]{this.f15953a.getMessage()});
                }
            }
        }
    }

    public HttpsTest() {
        MutableLiveData<a> mutableLiveData = new MutableLiveData<>();
        mutableLiveData.setValue(a.b.f15955a);
        this.f15951b = mutableLiveData;
    }

    @NotNull
    public final MutableLiveData<a> a() {
        return this.f15951b;
    }

    public final void b() {
        URLConnection openConnection;
        d();
        this.f15951b.setValue(a.d.f15957a);
        Pair<Profile, Profile> h = Core.d.h();
        if (h == null) {
            k.a();
        }
        String h2 = h.a().getH();
        URL url = new URL("https", (h2.hashCode() == -1297114284 && h2.equals("china-list")) ? "www.qualcomm.cn" : "www.google.com", "/generate_204");
        if (!k.a((Object) DataStore.f16084b.g(), (Object) "vpn")) {
            openConnection = url.openConnection(new Proxy(Proxy.Type.SOCKS, DataStore.f16084b.k()));
        } else {
            openConnection = url.openConnection();
        }
        if (openConnection != null) {
            HttpURLConnection httpURLConnection = (HttpURLConnection) openConnection;
            httpURLConnection.setRequestProperty("Connection", "close");
            httpURLConnection.setInstanceFollowRedirects(false);
            httpURLConnection.setUseCaches(false);
            this.f15950a = p.a(httpURLConnection, BuildersKt.launch(GlobalScope.INSTANCE, Dispatchers.getMain(), CoroutineStart.UNDISPATCHED, new b(httpURLConnection, null)));
            return;
        }
        throw new TypeCastException("null cannot be cast to non-null type java.net.HttpURLConnection");
    }

    @Metadata(bv = {1, 0, 3}, d1 = {"\u0000\u000e\n\u0000\n\u0002\u0010\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\u0010\u0000\u001a\u00020\u0001*\u00020\u0002H\u008a@ø\u0001\u0000¢\u0006\u0004\b\u0003\u0010\u0004"}, d2 = {"<anonymous>", "", "Lkotlinx/coroutines/CoroutineScope;", "invoke", "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"}, k = 3, mv = {1, 1, 13})
    @DebugMetadata(c = "com.github.shadowsocks.net.HttpsTest$testConnection$1", f = "HttpsTest.kt", i = {}, l = {95}, m = "invokeSuspend", n = {}, s = {})
    public static final class b extends SuspendLambda implements Function2<CoroutineScope, Continuation<? super u>, Object> {

        Object f15958a;

        int f15959b;
        final HttpURLConnection d;
        private CoroutineScope e;

        b(HttpURLConnection httpURLConnection, Continuation continuation) {
            super(2, continuation);
            this.d = httpURLConnection;
        }

        @Override
        @NotNull
        public final Continuation<u> create(@Nullable Object obj, @NotNull Continuation<?> continuation) {
            k.b(continuation, "completion");
            b bVar = new b(this.d, continuation);
            bVar.e = (CoroutineScope) obj;
            return bVar;
        }

        @Override
        public final Object invoke(CoroutineScope coroutineScope, Continuation<? super u> continuation) {
            return ((b) create(coroutineScope, continuation)).invokeSuspend(u.f19091a);
        }

        @Metadata(bv = {1, 0, 3}, d1 = {"\u0000\u000e\n\u0000\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\u0010\u0000\u001a\u00020\u0001*\u00020\u0002H\u008a@ø\u0001\u0000¢\u0006\u0004\b\u0003\u0010\u0004"}, d2 = {"<anonymous>", "Lcom/github/shadowsocks/net/HttpsTest$Status;", "Lkotlinx/coroutines/CoroutineScope;", "invoke", "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"}, k = 3, mv = {1, 1, 13})
        @DebugMetadata(c = "com.github.shadowsocks.net.HttpsTest$testConnection$1$1", f = "HttpsTest.kt", i = {}, l = {}, m = "invokeSuspend", n = {}, s = {})
        public static final class AnonymousClass1 extends SuspendLambda implements Function2<CoroutineScope, Continuation<? super a>, Object> {

            int f15960a;
            private CoroutineScope c;

            AnonymousClass1(Continuation continuation) {
                super(2, continuation);
            }

            @Override
            @NotNull
            public final Continuation<u> create(@Nullable Object obj, @NotNull Continuation<?> continuation) {
                k.b(continuation, "completion");
                AnonymousClass1 anonymousClass1 = new AnonymousClass1(continuation);
                anonymousClass1.c = (CoroutineScope) obj;
                return anonymousClass1;
            }

            @Override
            public final Object invoke(CoroutineScope coroutineScope, Continuation<? super a> continuation) {
                return ((AnonymousClass1) create(coroutineScope, continuation)).invokeSuspend(u.f19091a);
            }

            @Override
            @Nullable
            public final Object invokeSuspend(@NotNull Object obj) {
                a.AbstractC0637a.C0638a c0638a;
                int responseCode;
                long elapsedRealtime;
                kotlin.coroutines.intrinsics.b.a();
                if (this.f15960a != 0) {
                    throw new IllegalStateException("call to 'resume' before 'invoke' with coroutine");
                }
                if (obj instanceof Result.Failure) {
                    throw ((Result.Failure) obj).f19083a;
                }
                CoroutineScope coroutineScope = this.c;
                try {
                    try {
                        long elapsedRealtime2 = SystemClock.elapsedRealtime();
                        responseCode = b.this.d.getResponseCode();
                        elapsedRealtime = SystemClock.elapsedRealtime() - elapsedRealtime2;
                    } catch (IOException e) {
                        c0638a = new a.AbstractC0637a.C0638a(e);
                    }
                    if (responseCode != 204 && (responseCode != 200 || HttpsTest.this.a(b.this.d) != 0)) {
                        c0638a = new a.AbstractC0637a.b(responseCode);
                        return c0638a;
                    }
                    c0638a = new a.c(elapsedRealtime);
                    return c0638a;
                } finally {
                    b.this.d.disconnect();
                }
            }
        }

        @Override
        @Nullable
        public final Object invokeSuspend(@NotNull Object obj) {
            MutableLiveData mutableLiveData;
            Object a2 = kotlin.coroutines.intrinsics.b.a();
            switch (this.f15959b) {
                case 0:
                    if (obj instanceof Result.Failure) {
                        throw ((Result.Failure) obj).f19083a;
                    }
                    CoroutineScope coroutineScope = this.e;
                    MutableLiveData<a> a3 = HttpsTest.this.a();
                    CoroutineDispatcher io2 = Dispatchers.getIO();
                    AnonymousClass1 anonymousClass1 = new AnonymousClass1(null);
                    this.f15958a = a3;
                    this.f15959b = 1;
                    Object withContext = BuildersKt.withContext(io2, anonymousClass1, this);
                    if (withContext != a2) {
                        mutableLiveData = a3;
                        obj = withContext;
                        break;
                    } else {
                        return a2;
                    }
                case 1:
                    mutableLiveData = (MutableLiveData) this.f15958a;
                    if (obj instanceof Result.Failure) {
                        throw ((Result.Failure) obj).f19083a;
                    }
                    break;
                default:
                    throw new IllegalStateException("call to 'resume' before 'invoke' with coroutine");
            }
            mutableLiveData.setValue(obj);
            return u.f19091a;
        }
    }

    private final u d() {
        Pair<? extends HttpURLConnection, ? extends Job> pair = this.f15950a;
        if (pair == null) {
            return null;
        }
        HttpURLConnection c = pair.c();
        pair.d().cancel();
        com.github.shadowsocks.utils.h.a(c);
        this.f15950a = (Pair) null;
        return u.f19091a;
    }

    public final void c() {
        d();
        this.f15951b.setValue(a.b.f15955a);
    }

    public final long a(@NotNull URLConnection uRLConnection) {
        return Build.VERSION.SDK_INT >= 24 ? uRLConnection.getContentLengthLong() : uRLConnection.getContentLength();
    }
}