Files
packages_apps_Settings/src/com/android/settings/webview/WebViewAppPreferenceController.java
Gustav Sennton 5b596285a0 Have WebView Implementation Dev Setting use DefaultAppPickerFragment.
Make the WebView Implementation Dev Setting look like the fullscreen
settings deriving from DefaultAppPickerFragment.
Point the Activity opened through Settings.ACTION_WEBVIEW_SETTINGS to
the class WebViewAppPicker which is our new implementation of the
WebView Implementation setting.

Ensure the new setting closes if it is reached from a user that isn't an
admin of the device.

Bug: 34806477
Bug: 34966439
Test: Ensure WebView implementation Dev Setting looks ok (disabled
packages should have a text showing why they cannot be chosen).
Test: Start Intent with action Settings.ACTION_WEBVIEW_SETTINGS and
ensure the started Activity looks similar to the WebView Implementation
Dev Setting.
Test: Ensure picking a package that is no longer active, updates the
setting (so that package isn't visible anymore).
Change-Id: I08007c515193739ad61dfd735bb5130fc07bd6e6
2017-02-09 10:17:17 +00:00

74 lines
2.4 KiB
Java

/*
* Copyright (C) 2017 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
package com.android.settings.webview;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceScreen;
import com.android.settings.applications.defaultapps.DefaultAppInfo;
import com.android.settings.applications.defaultapps.DefaultAppPreferenceController;
public class WebViewAppPreferenceController extends DefaultAppPreferenceController {
private static final String WEBVIEW_APP_KEY = "select_webview_provider";
private Context mContext;
private Preference mPreference;
private final WebViewUpdateServiceWrapper mWebViewUpdateServiceWrapper;
public WebViewAppPreferenceController(Context context) {
this(context, new WebViewUpdateServiceWrapper());
}
public WebViewAppPreferenceController(Context context,
WebViewUpdateServiceWrapper webviewUpdateServiceWrapper) {
super(context);
mContext = context;
mWebViewUpdateServiceWrapper = webviewUpdateServiceWrapper;
}
@Override
public DefaultAppInfo getDefaultAppInfo() {
PackageInfo currentPackage = mWebViewUpdateServiceWrapper.getCurrentWebViewPackage();
return new DefaultAppInfo(currentPackage == null ? null : currentPackage.applicationInfo);
}
@Override
public void displayPreference(PreferenceScreen screen) {
super.displayPreference(screen);
if (isAvailable()) {
mPreference = screen.findPreference(WEBVIEW_APP_KEY);
}
}
@Override
public String getPreferenceKey() {
return WEBVIEW_APP_KEY;
}
@Override
public boolean isAvailable() {
return true;
}
public void enablePreference(boolean enabled) {
if (isAvailable()) {
mPreference.setEnabled(enabled);
}
}
}