TestSystemImpl.java revision 86f7bbe134a274a4936b73e2fc2287482ac0157e
1/* 2 * Copyright (C) 2016 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 17package com.android.server.webkit; 18 19import android.content.Context; 20import android.content.pm.PackageInfo; 21import android.content.pm.PackageManager.NameNotFoundException; 22import android.database.ContentObserver; 23import android.webkit.WebViewProviderInfo; 24 25import java.util.HashMap; 26 27public class TestSystemImpl implements SystemInterface { 28 private String mUserProvider = null; 29 private final WebViewProviderInfo[] mPackageConfigs; 30 HashMap<String, PackageInfo> mPackages = new HashMap(); 31 private boolean mFallbackLogicEnabled; 32 private final int mNumRelros; 33 private final boolean mIsDebuggable; 34 35 public TestSystemImpl(WebViewProviderInfo[] packageConfigs, boolean fallbackLogicEnabled, 36 int numRelros, boolean isDebuggable) { 37 mPackageConfigs = packageConfigs; 38 mFallbackLogicEnabled = fallbackLogicEnabled; 39 mNumRelros = numRelros; 40 mIsDebuggable = isDebuggable; 41 } 42 43 @Override 44 public WebViewProviderInfo[] getWebViewPackages() { 45 return mPackageConfigs; 46 } 47 48 @Override 49 public int onWebViewProviderChanged(PackageInfo packageInfo) { 50 return mNumRelros; 51 } 52 53 @Override 54 public String getUserChosenWebViewProvider(Context context) { return mUserProvider; } 55 56 @Override 57 public void updateUserSetting(Context context, String newProviderName) { 58 mUserProvider = newProviderName; 59 } 60 61 @Override 62 public void killPackageDependents(String packageName) {} 63 64 @Override 65 public boolean isFallbackLogicEnabled() { 66 return mFallbackLogicEnabled; 67 } 68 69 @Override 70 public void enableFallbackLogic(boolean enable) { 71 mFallbackLogicEnabled = enable; 72 } 73 74 @Override 75 public void uninstallAndDisablePackageForAllUsers(Context context, String packageName) { 76 enablePackageForAllUsers(context, packageName, false); 77 } 78 79 @Override 80 public void enablePackageForAllUsers(Context context, String packageName, boolean enable) { 81 enablePackageForUser(packageName, enable, 0); 82 } 83 84 @Override 85 public void enablePackageForUser(String packageName, boolean enable, int userId) { 86 PackageInfo packageInfo = mPackages.get(packageName); 87 if (packageInfo == null) { 88 throw new IllegalArgumentException("There is no package called " + packageName); 89 } 90 packageInfo.applicationInfo.enabled = enable; 91 setPackageInfo(packageInfo); 92 } 93 94 @Override 95 public boolean systemIsDebuggable() { return mIsDebuggable; } 96 97 @Override 98 public PackageInfo getPackageInfoForProvider(WebViewProviderInfo info) throws 99 NameNotFoundException { 100 PackageInfo ret = mPackages.get(info.packageName); 101 if (ret == null) throw new NameNotFoundException(info.packageName); 102 return ret; 103 } 104 105 public void setPackageInfo(PackageInfo pi) { 106 mPackages.put(pi.packageName, pi); 107 } 108 109 public void removePackageInfo(String packageName) { 110 mPackages.remove(packageName); 111 } 112 113 @Override 114 public int getFactoryPackageVersion(String packageName) { 115 return 0; 116 } 117 118 @Override 119 public void setMultiProcessEnabledFromContext(Context context) {} 120 121 @Override 122 public void registerContentObserver(Context context, ContentObserver contentObserver) {} 123} 124