blob: afa5bac22887993fb8fd49e8c78b8a7c460886c3 [file] [log] [blame]
Gustav Sennton53b78242016-04-07 15:56:10 +01001/*
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;
Gustav Sennton86f7bbe2016-10-24 16:49:32 +010022import android.database.ContentObserver;
Gustav Sennton53b78242016-04-07 15:56:10 +010023import android.webkit.WebViewProviderInfo;
24
25import java.util.HashMap;
26
27public class TestSystemImpl implements SystemInterface {
Gustav Sennton95f7e8e2016-04-14 15:07:09 +010028 private String mUserProvider = null;
Gustav Sennton53b78242016-04-07 15:56:10 +010029 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
Gustav Sennton95f7e8e2016-04-14 15:07:09 +0100109 public void removePackageInfo(String packageName) {
110 mPackages.remove(packageName);
111 }
112
Gustav Sennton53b78242016-04-07 15:56:10 +0100113 @Override
114 public int getFactoryPackageVersion(String packageName) {
115 return 0;
116 }
Robert Sesekded20982016-08-15 13:59:13 -0400117
118 @Override
Gustav Sennton86f7bbe2016-10-24 16:49:32 +0100119 public void setMultiProcessEnabledFromContext(Context context) {}
120
121 @Override
122 public void registerContentObserver(Context context, ContentObserver contentObserver) {}
Gustav Sennton53b78242016-04-07 15:56:10 +0100123}