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 */ getValidWebViewPackages()54 WebViewProviderInfo[] getValidWebViewPackages(); 55 56 /** 57 * Fetch all packages that could potentially implement WebView. 58 */ getAllWebViewPackages()59 WebViewProviderInfo[] getAllWebViewPackages(); 60 61 /** 62 * Used by DevelopmentSetting to get the name of the WebView provider currently in use. 63 */ getCurrentWebViewPackageName()64 String getCurrentWebViewPackageName(); 65 66 /** 67 * Used by Settings to determine whether a certain package can be enabled/disabled by the user - 68 * the package should not be modifiable in this way if it is a fallback package. 69 */ isFallbackPackage(String packageName)70 boolean isFallbackPackage(String packageName); 71 72 /** 73 * Enable or disable the WebView package fallback mechanism. 74 */ enableFallbackLogic(boolean enable)75 void enableFallbackLogic(boolean enable); 76 } 77