public void checkValid()

in AutofillFramework/afservice/src/main/java/com/example/android/autofill/service/data/source/local/DigitalAssetLinksRepository.java [86:158]


    public void checkValid(DalCheckRequirement dalCheckRequirement, DalInfo dalInfo,
            DataCallback<DalCheck> dalCheckDataCallback) {
        if (dalCheckRequirement.equals(Disabled)) {
            DalCheck dalCheck = new DalCheck();
            dalCheck.linked = true;
            dalCheckDataCallback.onLoaded(dalCheck);
            return;
        }

        DalCheck dalCheck = mCache.get(dalInfo);
        if (dalCheck != null) {
            dalCheckDataCallback.onLoaded(dalCheck);
            return;
        }
        String packageName = dalInfo.getPackageName();
        String webDomain = dalInfo.getWebDomain();

        final String fingerprint;
        try {
            PackageInfo packageInfo = mPackageManager.getPackageInfo(packageName,
                    PackageManager.GET_SIGNATURES);
            fingerprint = SecurityHelper.getFingerprint(packageInfo, packageName);
        } catch (Exception e) {
            dalCheckDataCallback.onDataNotAvailable("Error getting fingerprint for %s",
                    packageName);
            return;
        }
        logd("validating domain %s for pkg %s and fingerprint %s.", webDomain,
                packageName, fingerprint);
        mDalService.check(webDomain, PERMISSION_GET_LOGIN_CREDS, packageName, fingerprint).enqueue(
                new Callback<DalCheck>() {
                    @Override
                    public void onResponse(@NonNull Call<DalCheck> call,
                            @NonNull Response<DalCheck> response) {
                        DalCheck dalCheck = response.body();
                        if (dalCheck == null || !dalCheck.linked) {
                            // get_login_creds check failed, so try handle_all_urls check
                            if (dalCheckRequirement.equals(LoginOnly)) {
                                dalCheckDataCallback.onDataNotAvailable(
                                        "DAL: Login creds check failed.");
                            } else if (dalCheckRequirement.equals(AllUrls)) {
                                mDalService.check(webDomain, PERMISSION_HANDLE_ALL_URLS,
                                        packageName, fingerprint).enqueue(new Callback<DalCheck>() {
                                    @Override
                                    public void onResponse(@NonNull Call<DalCheck> call,
                                            @NonNull Response<DalCheck> response) {
                                        DalCheck dalCheck = response.body();
                                        mCache.put(dalInfo, dalCheck);
                                        dalCheckDataCallback.onLoaded(dalCheck);
                                    }

                                    @Override
                                    public void onFailure(@NonNull Call<DalCheck> call,
                                            @NonNull Throwable t) {
                                        dalCheckDataCallback.onDataNotAvailable(t.getMessage());
                                    }
                                });
                            }
                        } else {
                            // get_login_creds check succeeded, so we're finished.
                            mCache.put(dalInfo, dalCheck);
                            dalCheckDataCallback.onLoaded(dalCheck);
                        }
                    }

                    @Override
                    public void onFailure(@NonNull Call<DalCheck> call, @NonNull Throwable t) {
                        // get_login_creds check failed, so try handle_all_urls check.
                        mDalService.check(webDomain, PERMISSION_HANDLE_ALL_URLS, packageName,
                                fingerprint);
                    }
                });
    }