Merge "Add shadow and wrapper classes" into oc-dr1-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
0782535daf
@@ -0,0 +1,37 @@
|
|||||||
|
/*
|
||||||
|
* 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.applications;
|
||||||
|
|
||||||
|
import android.accessibilityservice.AccessibilityServiceInfo;
|
||||||
|
import android.content.ComponentName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This interface replicates a subset of the
|
||||||
|
* {@link android.accessibilityservice.AccessibilityServiceInfo}. The interface
|
||||||
|
* exists so that we can use a thin wrapper around it in production code and a mock in tests.
|
||||||
|
* We cannot directly mock or shadow it, because some of the methods we rely on are newer than
|
||||||
|
* the API version supported by Robolectric.
|
||||||
|
*/
|
||||||
|
public interface AccessibilityServiceInfoWrapper {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the real {@code AccessibilityServiceInfo} object.
|
||||||
|
*/
|
||||||
|
AccessibilityServiceInfo getAccessibilityServiceInfo();
|
||||||
|
|
||||||
|
ComponentName getComponentName();
|
||||||
|
}
|
@@ -0,0 +1,39 @@
|
|||||||
|
/*
|
||||||
|
* 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.applications;
|
||||||
|
|
||||||
|
import android.accessibilityservice.AccessibilityServiceInfo;
|
||||||
|
import android.content.ComponentName;
|
||||||
|
|
||||||
|
public class AccessibilityServiceInfoWrapperImpl implements AccessibilityServiceInfoWrapper {
|
||||||
|
|
||||||
|
private final AccessibilityServiceInfo mServiceInfo;
|
||||||
|
|
||||||
|
public AccessibilityServiceInfoWrapperImpl(AccessibilityServiceInfo serviceInfo) {
|
||||||
|
mServiceInfo = serviceInfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AccessibilityServiceInfo getAccessibilityServiceInfo() {
|
||||||
|
return mServiceInfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ComponentName getComponentName() {
|
||||||
|
return mServiceInfo.getComponentName();
|
||||||
|
}
|
||||||
|
}
|
@@ -66,10 +66,11 @@ public class ResultPayload implements Parcelable {
|
|||||||
* Enumerates the possible values for the Availability of a setting.
|
* Enumerates the possible values for the Availability of a setting.
|
||||||
*/
|
*/
|
||||||
@IntDef({Availability.AVAILABLE,
|
@IntDef({Availability.AVAILABLE,
|
||||||
Availability.DISABLED_DEPENDENCY,
|
Availability.DISABLED_DEPENDENT_SETTING,
|
||||||
|
Availability.DISABLED_DEPENDENT_APP,
|
||||||
Availability.DISABLED_UNSUPPORTED,
|
Availability.DISABLED_UNSUPPORTED,
|
||||||
Availability.RESOURCE_CONTENTION,
|
Availability.RESOURCE_CONTENTION,
|
||||||
Availability.INTENT_ONLY,})
|
Availability.INTENT_ONLY})
|
||||||
@Retention(RetentionPolicy.SOURCE)
|
@Retention(RetentionPolicy.SOURCE)
|
||||||
public @interface Availability {
|
public @interface Availability {
|
||||||
/**
|
/**
|
||||||
@@ -78,9 +79,10 @@ public class ResultPayload implements Parcelable {
|
|||||||
int AVAILABLE = 0;
|
int AVAILABLE = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The setting has a dependency which is currently disabled, blocking access.
|
* The setting has a dependency in settings app which is currently disabled, blocking
|
||||||
|
* access.
|
||||||
*/
|
*/
|
||||||
int DISABLED_DEPENDENCY = 1;
|
int DISABLED_DEPENDENT_SETTING = 1;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The setting is not supported by the device.
|
* The setting is not supported by the device.
|
||||||
@@ -93,10 +95,15 @@ public class ResultPayload implements Parcelable {
|
|||||||
*/
|
*/
|
||||||
int RESOURCE_CONTENTION = 3;
|
int RESOURCE_CONTENTION = 3;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The setting is disabled because corresponding app is disabled
|
||||||
|
*/
|
||||||
|
int DISABLED_DEPENDENT_APP = 4;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This setting is supported on the device but cannot be changed inline.
|
* This setting is supported on the device but cannot be changed inline.
|
||||||
*/
|
*/
|
||||||
int INTENT_ONLY = 4;
|
int INTENT_ONLY = 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
@IntDef({SettingsSource.UNKNOWN, SettingsSource.SYSTEM, SettingsSource.SECURE,
|
@IntDef({SettingsSource.UNKNOWN, SettingsSource.SYSTEM, SettingsSource.SECURE,
|
||||||
|
@@ -0,0 +1,44 @@
|
|||||||
|
/*
|
||||||
|
* 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.testutils.shadow;
|
||||||
|
|
||||||
|
import android.accessibilityservice.AccessibilityServiceInfo;
|
||||||
|
import android.content.ComponentName;
|
||||||
|
import android.view.accessibility.AccessibilityManager;
|
||||||
|
|
||||||
|
import org.robolectric.annotation.Implementation;
|
||||||
|
import org.robolectric.annotation.Implements;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Implements(AccessibilityManager.class)
|
||||||
|
public class ShadowAccessibilityManager {
|
||||||
|
private static final List<AccessibilityServiceInfo> mInstalledAccessibilityList =
|
||||||
|
new ArrayList<>();
|
||||||
|
|
||||||
|
public static void addAccessibilityService(String serviceName) {
|
||||||
|
AccessibilityServiceInfo serviceInfo = new AccessibilityServiceInfo();
|
||||||
|
serviceInfo.setComponentName(ComponentName.unflattenFromString(serviceName));
|
||||||
|
mInstalledAccessibilityList.add(serviceInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Implementation
|
||||||
|
public List<AccessibilityServiceInfo> getInstalledAccessibilityServiceList() {
|
||||||
|
return mInstalledAccessibilityList;
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,37 @@
|
|||||||
|
/*
|
||||||
|
* 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.testutils.shadow;
|
||||||
|
|
||||||
|
import android.content.ComponentName;
|
||||||
|
|
||||||
|
import com.android.settings.applications.AccessibilityServiceInfoWrapperImpl;
|
||||||
|
|
||||||
|
import org.robolectric.annotation.Implementation;
|
||||||
|
import org.robolectric.annotation.Implements;
|
||||||
|
@Implements(AccessibilityServiceInfoWrapperImpl.class)
|
||||||
|
public class ShadowAccessibilityServiceInfoWrapperImpl {
|
||||||
|
private static ComponentName sComponentName;
|
||||||
|
|
||||||
|
public static void setComponentName(String componentName) {
|
||||||
|
sComponentName = ComponentName.unflattenFromString(componentName);;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Implementation
|
||||||
|
public ComponentName getComponentName() {
|
||||||
|
return sComponentName;
|
||||||
|
}
|
||||||
|
}
|
@@ -42,6 +42,13 @@ public class ShadowSecureSettings {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Implementation
|
||||||
|
public static boolean putStringForUser(ContentResolver resolver, String name, String value,
|
||||||
|
int userHandle) {
|
||||||
|
mValueMap.put(name, value);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
@Implementation
|
@Implementation
|
||||||
public static String getString(ContentResolver resolver, String name) {
|
public static String getString(ContentResolver resolver, String name) {
|
||||||
return (String) mValueMap.get(name);
|
return (String) mValueMap.get(name);
|
||||||
|
Reference in New Issue
Block a user