1 /* 2 * Copyright (C) 2014 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package android.webkit; 18 19 import android.content.pm.PackageInfo; 20 import android.webkit.WebViewProviderInfo; 21 import android.webkit.WebViewProviderResponse; 22 23 /** 24 * Private service to wait for the updatable WebView to be ready for use. 25 * @hide 26 */ 27 interface IWebViewUpdateService { 28 29 /** 30 * Used by the relro file creator to notify the service that it's done. 31 */ notifyRelroCreationCompleted()32 void notifyRelroCreationCompleted(); 33 34 /** 35 * Used by WebViewFactory to block loading of WebView code until 36 * preparations are complete. Returns the package used as WebView provider. 37 */ waitForAndGetProvider()38 WebViewProviderResponse waitForAndGetProvider(); 39 40 /** 41 * DevelopmentSettings uses this to notify WebViewUpdateService that a new provider has been 42 * selected by the user. Returns the provider we end up switching to, this could be different to 43 * the one passed as argument to this method since the Dev Setting calling this method could be 44 * stale. I.e. the Dev setting could be letting the user choose uninstalled/disabled packages, 45 * it would then try to update the provider to such a package while in reality the update 46 * service would switch to another one. 47 */ changeProviderAndSetting(String newProvider)48 String changeProviderAndSetting(String newProvider); 49 50 /** 51 * DevelopmentSettings uses this to get the current available WebView 52 * providers (to display as choices to the user). 53 */ 54 @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553) getValidWebViewPackages()55 WebViewProviderInfo[] getValidWebViewPackages(); 56 57 /** 58 * Fetch all packages that could potentially implement WebView. 59 */ getAllWebViewPackages()60 WebViewProviderInfo[] getAllWebViewPackages(); 61 62 /** 63 * Used by DevelopmentSetting to get the name of the WebView provider currently in use. 64 */ 65 @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553) getCurrentWebViewPackageName()66 String getCurrentWebViewPackageName(); 67 68 /** 69 * Used by public API for debugging purposes. 70 */ getCurrentWebViewPackage()71 PackageInfo getCurrentWebViewPackage(); 72 73 /** 74 * Used by Settings to determine whether multiprocess is enabled. 75 */ isMultiProcessEnabled()76 boolean isMultiProcessEnabled(); 77 78 /** 79 * Used by Settings to enable/disable multiprocess. 80 */ enableMultiProcess(boolean enable)81 void enableMultiProcess(boolean enable); 82 } 83