Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1c177d8d authored by Gustav Sennton's avatar Gustav Sennton
Browse files

Add system api to reach WebViewUpdateService Binder interface.

Instead of using reflection in XTS tests we add some system-apis to
enable fetching information about webview packages.

Bug: 26381867
Change-Id: If983a01b6855e4a4c08ef0b5873304918d499b76
parent 76e287b4
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -48858,6 +48858,24 @@ package android.webkit {
    method public abstract boolean shouldDelayChildPressedState();
  }
  public final class WebViewProviderInfo implements android.os.Parcelable {
    ctor public WebViewProviderInfo(java.lang.String, java.lang.String, boolean, boolean, java.lang.String[]);
    method public int describeContents();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.webkit.WebViewProviderInfo> CREATOR;
    field public final boolean availableByDefault;
    field public final java.lang.String description;
    field public final boolean isFallback;
    field public final java.lang.String packageName;
    field public final java.lang.String[] signatures;
  }
  public final class WebViewUpdateService {
    method public static android.webkit.WebViewProviderInfo[] getAllWebViewPackages();
    method public static java.lang.String getCurrentWebViewPackageName();
    method public static android.webkit.WebViewProviderInfo[] getValidWebViewPackages();
  }
}
package android.widget {
+6 −2
Original line number Diff line number Diff line
@@ -573,8 +573,12 @@ public final class WebViewFactory {
                intent.getDataString().substring("package:".length()));
    }

    private static IWebViewUpdateService getUpdateService() {
        return IWebViewUpdateService.Stub.asInterface(ServiceManager.getService("webviewupdate"));
    private static String WEBVIEW_UPDATE_SERVICE_NAME = "webviewupdate";

    /** @hide */
    public static IWebViewUpdateService getUpdateService() {
        return IWebViewUpdateService.Stub.asInterface(
                ServiceManager.getService(WEBVIEW_UPDATE_SERVICE_NAME));
    }

    private static native boolean nativeReserveAddressSpace(long addressSpaceToReserve);
+5 −1
Original line number Diff line number Diff line
@@ -16,12 +16,16 @@

package android.webkit;

import android.annotation.SystemApi;
import android.os.Parcel;
import android.os.Parcelable;

import java.util.Arrays;

/** @hide */
/**
 * @hide
 */
@SystemApi
public final class WebViewProviderInfo implements Parcelable {

    public WebViewProviderInfo(String packageName, String description,
+66 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2016 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.webkit;

import android.annotation.SystemApi;
import android.os.RemoteException;

/**
 * @hide
 */
@SystemApi
public final class WebViewUpdateService {

    private WebViewUpdateService () {}

    /**
     * Fetch all packages that could potentially implement WebView.
     */
    public static WebViewProviderInfo[] getAllWebViewPackages() {
        try {
            return getUpdateService().getAllWebViewPackages();
        } catch (RemoteException e) {
            throw new RuntimeException(e);
        }
    }

    /**
     * Fetch all packages that could potentially implement WebView and are currently valid.
     */
    public static WebViewProviderInfo[] getValidWebViewPackages() {
        try {
            return getUpdateService().getValidWebViewPackages();
        } catch (RemoteException e) {
            throw new RuntimeException(e);
        }
    }

    /**
     * Used by DevelopmentSetting to get the name of the WebView provider currently in use.
     */
    public static String getCurrentWebViewPackageName() {
        try {
            return getUpdateService().getCurrentWebViewPackageName();
        } catch (RemoteException e) {
            throw new RuntimeException(e);
        }
    }

    private static IWebViewUpdateService getUpdateService() {
        return WebViewFactory.getUpdateService();
    }
}