blob: e33be400a84902d3b3b7dd329f25a44bc069ccf0 [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;
22import android.webkit.WebViewProviderInfo;
23
24import java.util.HashMap;
25
26public class TestSystemImpl implements SystemInterface {
Gustav Sennton95f7e8e2016-04-14 15:07:09 +010027 private String mUserProvider = null;
Gustav Sennton53b78242016-04-07 15:56:10 +010028 private final WebViewProviderInfo[] mPackageConfigs;
29 HashMap<String, PackageInfo> mPackages = new HashMap();
30 private boolean mFallbackLogicEnabled;
31 private final int mNumRelros;
32 private final boolean mIsDebuggable;
33
34 public TestSystemImpl(WebViewProviderInfo[] packageConfigs, boolean fallbackLogicEnabled,
35 int numRelros, boolean isDebuggable) {
36 mPackageConfigs = packageConfigs;
37 mFallbackLogicEnabled = fallbackLogicEnabled;
38 mNumRelros = numRelros;
39 mIsDebuggable = isDebuggable;
40 }
41
42 @Override
43 public WebViewProviderInfo[] getWebViewPackages() {
44 return mPackageConfigs;
45 }
46
47 @Override
48 public int onWebViewProviderChanged(PackageInfo packageInfo) {
49 return mNumRelros;
50 }
51
52 @Override
53 public String getUserChosenWebViewProvider(Context context) { return mUserProvider; }
54
55 @Override
56 public void updateUserSetting(Context context, String newProviderName) {
57 mUserProvider = newProviderName;
58 }
59
60 @Override
61 public void killPackageDependents(String packageName) {}
62
63 @Override
64 public boolean isFallbackLogicEnabled() {
65 return mFallbackLogicEnabled;
66 }
67
68 @Override
69 public void enableFallbackLogic(boolean enable) {
70 mFallbackLogicEnabled = enable;
71 }
72
73 @Override
74 public void uninstallAndDisablePackageForAllUsers(Context context, String packageName) {
75 enablePackageForAllUsers(context, packageName, false);
76 }
77
78 @Override
79 public void enablePackageForAllUsers(Context context, String packageName, boolean enable) {
80 enablePackageForUser(packageName, enable, 0);
81 }
82
83 @Override
84 public void enablePackageForUser(String packageName, boolean enable, int userId) {
85 PackageInfo packageInfo = mPackages.get(packageName);
86 if (packageInfo == null) {
87 throw new IllegalArgumentException("There is no package called " + packageName);
88 }
89 packageInfo.applicationInfo.enabled = enable;
90 setPackageInfo(packageInfo);
91 }
92
93 @Override
94 public boolean systemIsDebuggable() { return mIsDebuggable; }
95
96 @Override
97 public PackageInfo getPackageInfoForProvider(WebViewProviderInfo info) throws
98 NameNotFoundException {
99 PackageInfo ret = mPackages.get(info.packageName);
100 if (ret == null) throw new NameNotFoundException(info.packageName);
101 return ret;
102 }
103
104 public void setPackageInfo(PackageInfo pi) {
105 mPackages.put(pi.packageName, pi);
106 }
107
Gustav Sennton95f7e8e2016-04-14 15:07:09 +0100108 public void removePackageInfo(String packageName) {
109 mPackages.remove(packageName);
110 }
111
Gustav Sennton53b78242016-04-07 15:56:10 +0100112 @Override
113 public int getFactoryPackageVersion(String packageName) {
114 return 0;
115 }
116}