Merge "Build service-connectivity with system_server API"
diff --git a/.prebuilt_info/prebuilt_info_packages_CtsShim_apk__arm_CtsShimPriv_apk.asciipb b/.prebuilt_info/prebuilt_info_packages_CtsShim_apk__arm_CtsShimPriv_apk.asciipb
index cfcb4e7..80317e4 100644
--- a/.prebuilt_info/prebuilt_info_packages_CtsShim_apk__arm_CtsShimPriv_apk.asciipb
+++ b/.prebuilt_info/prebuilt_info_packages_CtsShim_apk__arm_CtsShimPriv_apk.asciipb
@@ -1,6 +1,6 @@
drops {
android_build_drop {
- build_id: "7351002"
+ build_id: "7396576"
target: "CtsShim"
source_file: "aosp_arm64/CtsShimPriv.apk"
}
@@ -9,4 +9,5 @@
version_group: ""
git_project: "platform/frameworks/base"
git_branch: "sc-dev"
+ transform: TRANSFORM_NONE
}
diff --git a/.prebuilt_info/prebuilt_info_packages_CtsShim_apk__arm_CtsShim_apk.asciipb b/.prebuilt_info/prebuilt_info_packages_CtsShim_apk__arm_CtsShim_apk.asciipb
index 0948e47..3605b6d 100644
--- a/.prebuilt_info/prebuilt_info_packages_CtsShim_apk__arm_CtsShim_apk.asciipb
+++ b/.prebuilt_info/prebuilt_info_packages_CtsShim_apk__arm_CtsShim_apk.asciipb
@@ -1,6 +1,6 @@
drops {
android_build_drop {
- build_id: "7351002"
+ build_id: "7396576"
target: "CtsShim"
source_file: "aosp_arm64/CtsShim.apk"
}
@@ -9,4 +9,5 @@
version_group: ""
git_project: "platform/frameworks/base"
git_branch: "sc-dev"
+ transform: TRANSFORM_NONE
}
diff --git a/.prebuilt_info/prebuilt_info_packages_CtsShim_apk__x86_CtsShimPriv_apk.asciipb b/.prebuilt_info/prebuilt_info_packages_CtsShim_apk__x86_CtsShimPriv_apk.asciipb
index db64475..025ec3a 100644
--- a/.prebuilt_info/prebuilt_info_packages_CtsShim_apk__x86_CtsShimPriv_apk.asciipb
+++ b/.prebuilt_info/prebuilt_info_packages_CtsShim_apk__x86_CtsShimPriv_apk.asciipb
@@ -1,6 +1,6 @@
drops {
android_build_drop {
- build_id: "7351002"
+ build_id: "7396576"
target: "CtsShim"
source_file: "aosp_x86_64/CtsShimPriv.apk"
}
@@ -9,4 +9,5 @@
version_group: ""
git_project: "platform/frameworks/base"
git_branch: "sc-dev"
+ transform: TRANSFORM_NONE
}
diff --git a/.prebuilt_info/prebuilt_info_packages_CtsShim_apk__x86_CtsShim_apk.asciipb b/.prebuilt_info/prebuilt_info_packages_CtsShim_apk__x86_CtsShim_apk.asciipb
index 80812df..e19235a 100644
--- a/.prebuilt_info/prebuilt_info_packages_CtsShim_apk__x86_CtsShim_apk.asciipb
+++ b/.prebuilt_info/prebuilt_info_packages_CtsShim_apk__x86_CtsShim_apk.asciipb
@@ -1,6 +1,6 @@
drops {
android_build_drop {
- build_id: "7351002"
+ build_id: "7396576"
target: "CtsShim"
source_file: "aosp_x86_64/CtsShim.apk"
}
@@ -9,4 +9,5 @@
version_group: ""
git_project: "platform/frameworks/base"
git_branch: "sc-dev"
+ transform: TRANSFORM_NONE
}
diff --git a/core/java/android/accessibilityservice/AccessibilityService.java b/core/java/android/accessibilityservice/AccessibilityService.java
index ac00a04..f1ba8dc 100644
--- a/core/java/android/accessibilityservice/AccessibilityService.java
+++ b/core/java/android/accessibilityservice/AccessibilityService.java
@@ -100,14 +100,14 @@
* An accessibility is declared as any other service in an AndroidManifest.xml, but it
* must do two things:
* <ul>
- * <ol>
+ * <li>
* Specify that it handles the "android.accessibilityservice.AccessibilityService"
* {@link android.content.Intent}.
- * </ol>
- * <ol>
+ * </li>
+ * <li>
* Request the {@link android.Manifest.permission#BIND_ACCESSIBILITY_SERVICE} permission to
* ensure that only the system can bind to it.
- * </ol>
+ * </li>
* </ul>
* If either of these items is missing, the system will ignore the accessibility service.
* Following is an example declaration:
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java
index 71cc11b..b087054 100644
--- a/core/java/android/app/ActivityThread.java
+++ b/core/java/android/app/ActivityThread.java
@@ -1123,7 +1123,7 @@
InetAddress.clearDnsCache();
// Allow libcore to perform the necessary actions as it sees fit upon a network
// configuration change.
- NetworkEventDispatcher.getInstance().onNetworkConfigurationChanged();
+ NetworkEventDispatcher.getInstance().dispatchNetworkConfigurationChange();
}
public void updateHttpProxy() {
diff --git a/core/java/android/content/pm/PackagePartitions.java b/core/java/android/content/pm/PackagePartitions.java
index 98a20f7..4eb991c 100644
--- a/core/java/android/content/pm/PackagePartitions.java
+++ b/core/java/android/content/pm/PackagePartitions.java
@@ -119,6 +119,9 @@
@Nullable
private final DeferredCanonicalFile mOverlayFolder;
+ @NonNull
+ private final File mNonConicalFolder;
+
private SystemPartition(@NonNull File folder, @PartitionType int type,
boolean containsPrivApp, boolean containsOverlay) {
this.type = type;
@@ -128,6 +131,7 @@
: null;
this.mOverlayFolder = containsOverlay ? new DeferredCanonicalFile(folder, "overlay")
: null;
+ this.mNonConicalFolder = folder;
}
public SystemPartition(@NonNull SystemPartition original) {
@@ -136,6 +140,7 @@
this.mAppFolder = original.mAppFolder;
this.mPrivAppFolder = original.mPrivAppFolder;
this.mOverlayFolder = original.mOverlayFolder;
+ this.mNonConicalFolder = original.mNonConicalFolder;
}
/**
@@ -153,6 +158,12 @@
return mFolder.getFile();
}
+ /** Returns the non-canonical folder of the partition. */
+ @NonNull
+ public File getNonConicalFolder() {
+ return mNonConicalFolder;
+ }
+
/** Returns the canonical app folder of the partition. */
@Nullable
public File getAppFolder() {
diff --git a/core/java/android/net/NetworkTemplate.java b/core/java/android/net/NetworkTemplate.java
index 352f2e9..68917a8 100644
--- a/core/java/android/net/NetworkTemplate.java
+++ b/core/java/android/net/NetworkTemplate.java
@@ -514,6 +514,10 @@
return mSubscriberIdMatchRule;
}
+ public int getMeteredness() {
+ return mMetered;
+ }
+
/**
* Test if given {@link NetworkIdentity} matches this template.
*/
diff --git a/core/java/android/widget/OWNERS b/core/java/android/widget/OWNERS
index 64570a8..e1d6012 100644
--- a/core/java/android/widget/OWNERS
+++ b/core/java/android/widget/OWNERS
@@ -8,6 +8,6 @@
mount@google.com
njawad@google.com
-per-file TextView.java, EditText.java, Editor.java = siyamed@google.com, nona@google.com, clarabayarri@google.com
+per-file TextView*, EditText.java, Editor.java = siyamed@google.com, nona@google.com, clarabayarri@google.com
per-file SpellChecker.java = file:../view/inputmethod/OWNERS
diff --git a/core/java/com/android/internal/content/om/OverlayConfig.java b/core/java/com/android/internal/content/om/OverlayConfig.java
index 3b5cf48..c36e37a 100644
--- a/core/java/com/android/internal/content/om/OverlayConfig.java
+++ b/core/java/com/android/internal/content/om/OverlayConfig.java
@@ -111,7 +111,7 @@
// Rebase the system partitions and settings file on the specified root directory.
partitions = new ArrayList<>(PackagePartitions.getOrderedPartitions(
p -> new OverlayPartition(
- new File(rootDirectory, p.getFolder().getPath()),
+ new File(rootDirectory, p.getNonConicalFolder().getPath()),
p)));
}
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index 4a57448..8db1bbf 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -575,8 +575,6 @@
<protected-broadcast android:name="android.intent.action.DYNAMIC_SENSOR_CHANGED" />
- <protected-broadcast android:name="android.intent.action.ACTION_RADIO_OFF" />
-
<protected-broadcast android:name="android.accounts.LOGIN_ACCOUNTS_CHANGED" />
<protected-broadcast android:name="android.accounts.action.ACCOUNT_REMOVED" />
<protected-broadcast android:name="android.accounts.action.VISIBLE_ACCOUNTS_CHANGED" />
diff --git a/core/res/res/xml/sms_short_codes.xml b/core/res/res/xml/sms_short_codes.xml
index 2650d9f..2be5c47 100644
--- a/core/res/res/xml/sms_short_codes.xml
+++ b/core/res/res/xml/sms_short_codes.xml
@@ -245,6 +245,9 @@
<!-- Slovakia: 4 digits (premium), plus EU: http://www.cmtelecom.com/premium-sms/slovakia -->
<shortcode country="sk" premium="\\d{4}" free="116\\d{3}|8000" />
+ <!-- Taiwan -->
+ <shortcode country="tw" pattern="\\d{4}" free="1922" />
+
<!-- Thailand: 4186001 used by AIS_TH_DCB -->
<shortcode country="th" pattern="\\d{1,5}" premium="4\\d{6}" free="4186001" />
diff --git a/data/etc/Android.bp b/data/etc/Android.bp
index d0e2474..e7c8f9d 100644
--- a/data/etc/Android.bp
+++ b/data/etc/Android.bp
@@ -119,6 +119,20 @@
}
prebuilt_etc {
+ name: "privapp_whitelist_com.android.networkstack",
+ sub_dir: "permissions",
+ src: "com.android.networkstack.xml",
+ filename_from_src: true,
+}
+
+prebuilt_etc {
+ name: "privapp_whitelist_com.android.networkstack.tethering",
+ sub_dir: "permissions",
+ src: "com.android.networkstack.tethering.xml",
+ filename_from_src: true,
+}
+
+prebuilt_etc {
name: "privapp_whitelist_com.android.provision",
system_ext_specific: true,
sub_dir: "permissions",
diff --git a/data/etc/com.android.networkstack.tethering.xml b/data/etc/com.android.networkstack.tethering.xml
new file mode 100644
index 0000000..f26a961
--- /dev/null
+++ b/data/etc/com.android.networkstack.tethering.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2021 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
+-->
+
+<permissions>
+ <privapp-permissions package="com.android.networkstack.tethering">
+ <permission name="android.permission.BLUETOOTH_PRIVILEGED" />
+ <permission name="android.permission.MANAGE_USB"/>
+ <permission name="android.permission.MODIFY_PHONE_STATE"/>
+ <permission name="android.permission.READ_NETWORK_USAGE_HISTORY"/>
+ <permission name="android.permission.TETHER_PRIVILEGED"/>
+ <permission name="android.permission.UPDATE_APP_OPS_STATS"/>
+ <permission name="android.permission.UPDATE_DEVICE_STATS"/>
+ </privapp-permissions>
+</permissions>
diff --git a/data/etc/com.android.networkstack.xml b/data/etc/com.android.networkstack.xml
new file mode 100644
index 0000000..06fec1c
--- /dev/null
+++ b/data/etc/com.android.networkstack.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2021 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
+-->
+
+<permissions>
+ <privapp-permissions package="com.android.networkstack">
+ <permission name="android.permission.ACCESS_NETWORK_CONDITIONS"/>
+ <permission name="android.permission.CONNECTIVITY_INTERNAL"/>
+ <permission name="android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS"/>
+ <permission name="android.permission.CONTROL_VPN"/>
+ <permission name="android.permission.INTERACT_ACROSS_USERS"/>
+ <permission name="android.permission.LOCAL_MAC_ADDRESS"/>
+ <permission name="android.permission.MANAGE_SUBSCRIPTION_PLANS"/>
+ <permission name="android.permission.MANAGE_USB"/>
+ <permission name="android.permission.NETWORK_BYPASS_PRIVATE_DNS"/>
+ <permission name="android.permission.PACKET_KEEPALIVE_OFFLOAD"/>
+ <permission name="android.permission.READ_NETWORK_USAGE_HISTORY"/>
+ <permission name="android.permission.READ_PRECISE_PHONE_STATE"/>
+ <permission name="android.permission.READ_PRIVILEGED_PHONE_STATE"/>
+ <permission name="android.permission.READ_WIFI_CREDENTIAL"/>
+ <permission name="android.permission.RECEIVE_DATA_ACTIVITY_CHANGE"/>
+ <permission name="android.permission.TETHER_PRIVILEGED"/>
+ <permission name="android.permission.WRITE_SECURE_SETTINGS"/>
+ </privapp-permissions>
+</permissions>
diff --git a/data/etc/privapp-permissions-platform.xml b/data/etc/privapp-permissions-platform.xml
index f858e52..4731a8e 100644
--- a/data/etc/privapp-permissions-platform.xml
+++ b/data/etc/privapp-permissions-platform.xml
@@ -254,36 +254,6 @@
<permission name="android.permission.READ_COMPAT_CHANGE_CONFIG" />
</privapp-permissions>
- <privapp-permissions package="com.android.networkstack">
- <permission name="android.permission.ACCESS_NETWORK_CONDITIONS"/>
- <permission name="android.permission.CONNECTIVITY_INTERNAL"/>
- <permission name="android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS"/>
- <permission name="android.permission.CONTROL_VPN"/>
- <permission name="android.permission.INTERACT_ACROSS_USERS"/>
- <permission name="android.permission.LOCAL_MAC_ADDRESS"/>
- <permission name="android.permission.MANAGE_SUBSCRIPTION_PLANS"/>
- <permission name="android.permission.MANAGE_USB"/>
- <permission name="android.permission.NETWORK_BYPASS_PRIVATE_DNS"/>
- <permission name="android.permission.PACKET_KEEPALIVE_OFFLOAD"/>
- <permission name="android.permission.READ_NETWORK_USAGE_HISTORY"/>
- <permission name="android.permission.READ_PRECISE_PHONE_STATE"/>
- <permission name="android.permission.READ_PRIVILEGED_PHONE_STATE"/>
- <permission name="android.permission.READ_WIFI_CREDENTIAL"/>
- <permission name="android.permission.RECEIVE_DATA_ACTIVITY_CHANGE"/>
- <permission name="android.permission.TETHER_PRIVILEGED"/>
- <permission name="android.permission.WRITE_SECURE_SETTINGS"/>
- </privapp-permissions>
-
- <privapp-permissions package="com.android.networkstack.tethering">
- <permission name="android.permission.BLUETOOTH_PRIVILEGED" />
- <permission name="android.permission.MANAGE_USB"/>
- <permission name="android.permission.MODIFY_PHONE_STATE"/>
- <permission name="android.permission.READ_NETWORK_USAGE_HISTORY"/>
- <permission name="android.permission.TETHER_PRIVILEGED"/>
- <permission name="android.permission.UPDATE_APP_OPS_STATS"/>
- <permission name="android.permission.UPDATE_DEVICE_STATS"/>
- </privapp-permissions>
-
<privapp-permissions package="com.android.server.telecom">
<permission name="android.permission.BIND_CONNECTION_SERVICE"/>
<permission name="android.permission.BIND_INCALL_SERVICE"/>
diff --git a/libs/usb/Android.bp b/libs/usb/Android.bp
index edc8474..e685a73 100644
--- a/libs/usb/Android.bp
+++ b/libs/usb/Android.bp
@@ -28,4 +28,5 @@
name: "com.android.future.usb.accessory",
srcs: ["src/**/*.java"],
api_packages: ["com.android.future.usb"],
+ dist_group: "android",
}
diff --git a/location/lib/Android.bp b/location/lib/Android.bp
index 5cd5a59..f99c59c 100644
--- a/location/lib/Android.bp
+++ b/location/lib/Android.bp
@@ -30,4 +30,5 @@
"androidx.annotation_annotation",
],
api_packages: ["com.android.location.provider"],
+ dist_group: "android",
}
diff --git a/media/jni/android_media_tv_Tuner.cpp b/media/jni/android_media_tv_Tuner.cpp
index 49ef504..f7b0fb5 100644
--- a/media/jni/android_media_tv_Tuner.cpp
+++ b/media/jni/android_media_tv_Tuner.cpp
@@ -3094,7 +3094,7 @@
r = iFilterSp->setDataSource(NULL);
} else {
sp<IFilter> srcSp = getFilter(env, srcFilter)->getIFilter();
- if (iFilterSp == NULL) {
+ if (srcSp == NULL) {
ALOGD("Failed to set filter data source: src filter not found");
return (jint) Result::INVALID_ARGUMENT;
}
diff --git a/media/lib/remotedisplay/Android.bp b/media/lib/remotedisplay/Android.bp
index bfb0cb8..e1d7cae 100644
--- a/media/lib/remotedisplay/Android.bp
+++ b/media/lib/remotedisplay/Android.bp
@@ -27,4 +27,5 @@
name: "com.android.media.remotedisplay",
srcs: ["java/**/*.java"],
api_packages: ["com.android.media.remotedisplay"],
+ dist_group: "android",
}
diff --git a/media/lib/signer/Android.bp b/media/lib/signer/Android.bp
index 6504176..65a6073a4 100644
--- a/media/lib/signer/Android.bp
+++ b/media/lib/signer/Android.bp
@@ -27,4 +27,5 @@
name: "com.android.mediadrm.signer",
srcs: ["java/**/*.java"],
api_packages: ["com.android.mediadrm.signer"],
+ dist_group: "android",
}
diff --git a/media/lib/tvremote/Android.bp b/media/lib/tvremote/Android.bp
index 5f9185a..1f3401f 100644
--- a/media/lib/tvremote/Android.bp
+++ b/media/lib/tvremote/Android.bp
@@ -29,5 +29,6 @@
api_packages: ["com.android.media.tv.remoteprovider"],
dex_preopt: {
enabled: false,
- }
+ },
+ dist_group: "android",
}
diff --git a/nfc-extras/Android.bp b/nfc-extras/Android.bp
index 43b2830..cb9ac6f 100644
--- a/nfc-extras/Android.bp
+++ b/nfc-extras/Android.bp
@@ -27,4 +27,5 @@
name: "com.android.nfc_extras",
srcs: ["java/**/*.java"],
api_packages: ["com.android.nfc_extras"],
+ dist_group: "android",
}
diff --git a/obex/Android.bp b/obex/Android.bp
index 95eac81..37e7f76 100644
--- a/obex/Android.bp
+++ b/obex/Android.bp
@@ -48,4 +48,5 @@
name: "javax.obex",
srcs: ["javax/**/*.java"],
api_packages: ["javax.obex"],
+ dist_group: "android",
}
diff --git a/packages/CtsShim/apk/arm/CtsShim.apk b/packages/CtsShim/apk/arm/CtsShim.apk
index ca69a28..bb6dfa3 100644
--- a/packages/CtsShim/apk/arm/CtsShim.apk
+++ b/packages/CtsShim/apk/arm/CtsShim.apk
Binary files differ
diff --git a/packages/CtsShim/apk/arm/CtsShimPriv.apk b/packages/CtsShim/apk/arm/CtsShimPriv.apk
index d7cfb96..2835d57 100644
--- a/packages/CtsShim/apk/arm/CtsShimPriv.apk
+++ b/packages/CtsShim/apk/arm/CtsShimPriv.apk
Binary files differ
diff --git a/packages/CtsShim/apk/x86/CtsShim.apk b/packages/CtsShim/apk/x86/CtsShim.apk
index ca69a28..bb6dfa3 100644
--- a/packages/CtsShim/apk/x86/CtsShim.apk
+++ b/packages/CtsShim/apk/x86/CtsShim.apk
Binary files differ
diff --git a/packages/CtsShim/apk/x86/CtsShimPriv.apk b/packages/CtsShim/apk/x86/CtsShimPriv.apk
index 84c3401..2e1a789 100644
--- a/packages/CtsShim/apk/x86/CtsShimPriv.apk
+++ b/packages/CtsShim/apk/x86/CtsShimPriv.apk
Binary files differ
diff --git a/packages/SettingsLib/src/com/android/settingslib/net/DataUsageUtils.java b/packages/SettingsLib/src/com/android/settingslib/net/DataUsageUtils.java
index b1234f2..51e533a 100644
--- a/packages/SettingsLib/src/com/android/settingslib/net/DataUsageUtils.java
+++ b/packages/SettingsLib/src/com/android/settingslib/net/DataUsageUtils.java
@@ -73,6 +73,7 @@
private static NetworkTemplate getMobileTemplateForSubId(
TelephonyManager telephonyManager, int subId) {
- return NetworkTemplate.buildTemplateMobileAll(telephonyManager.getSubscriberId(subId));
+ return NetworkTemplate.buildTemplateCarrierMetered(
+ telephonyManager.getSubscriberId(subId));
}
}
diff --git a/packages/SettingsLib/tests/integ/src/com/android/settingslib/utils/NetworkPolicyEditorTest.java b/packages/SettingsLib/tests/integ/src/com/android/settingslib/utils/NetworkPolicyEditorTest.java
index 37f2600..7e389a1 100644
--- a/packages/SettingsLib/tests/integ/src/com/android/settingslib/utils/NetworkPolicyEditorTest.java
+++ b/packages/SettingsLib/tests/integ/src/com/android/settingslib/utils/NetworkPolicyEditorTest.java
@@ -44,7 +44,7 @@
@Before
public void setUp() {
- mNetworkTemplate = NetworkTemplate.buildTemplateMobileAll("123456789123456");
+ mNetworkTemplate = NetworkTemplate.buildTemplateCarrierMetered("123456789123456");
NetworkPolicyManager policyManager = NetworkPolicyManager.from(InstrumentationRegistry
.getContext());
mNetworkPolicyEditor = new NetworkPolicyEditor(policyManager);
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/net/DataUsageControllerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/net/DataUsageControllerTest.java
index 27d877d..9be783d 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/net/DataUsageControllerTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/net/DataUsageControllerTest.java
@@ -87,8 +87,8 @@
ShadowSubscriptionManager.setDefaultDataSubscriptionId(mDefaultSubscriptionId);
doReturn(SUB_ID).when(mTelephonyManager).getSubscriberId();
- mNetworkTemplate = NetworkTemplate.buildTemplateMobileAll(SUB_ID);
- mNetworkTemplate2 = NetworkTemplate.buildTemplateMobileAll(SUB_ID_2);
+ mNetworkTemplate = NetworkTemplate.buildTemplateCarrierMetered(SUB_ID);
+ mNetworkTemplate2 = NetworkTemplate.buildTemplateCarrierMetered(SUB_ID_2);
mWifiNetworkTemplate = NetworkTemplate.buildTemplateWifi(
NetworkTemplate.WIFI_NETWORKID_ALL, null);
}
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/net/NetworkCycleDataForUidLoaderTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/net/NetworkCycleDataForUidLoaderTest.java
index 877eb61..e8d5844 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/net/NetworkCycleDataForUidLoaderTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/net/NetworkCycleDataForUidLoaderTest.java
@@ -62,7 +62,7 @@
when(mContext.getSystemService(Context.NETWORK_POLICY_SERVICE))
.thenReturn(mNetworkPolicyManager);
when(mNetworkPolicyManager.getNetworkPolicies()).thenReturn(new NetworkPolicy[0]);
- mNetworkTemplate = NetworkTemplate.buildTemplateMobileAll(SUB_ID);
+ mNetworkTemplate = NetworkTemplate.buildTemplateCarrierMetered(SUB_ID);
}
@Test
diff --git a/services/core/java/com/android/server/BluetoothManagerService.java b/services/core/java/com/android/server/BluetoothManagerService.java
index 992ef26..12a94e1 100644
--- a/services/core/java/com/android/server/BluetoothManagerService.java
+++ b/services/core/java/com/android/server/BluetoothManagerService.java
@@ -601,8 +601,12 @@
}
// waive WRITE_SECURE_SETTINGS permission check
long callingIdentity = Binder.clearCallingIdentity();
- Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.BLUETOOTH_ON, value);
- Binder.restoreCallingIdentity(callingIdentity);
+ try {
+ Settings.Global.putInt(mContext.getContentResolver(),
+ Settings.Global.BLUETOOTH_ON, value);
+ } finally {
+ Binder.restoreCallingIdentity(callingIdentity);
+ }
}
/**
diff --git a/services/core/java/com/android/server/locksettings/LockSettingsService.java b/services/core/java/com/android/server/locksettings/LockSettingsService.java
index 07ac14f..aba9615 100644
--- a/services/core/java/com/android/server/locksettings/LockSettingsService.java
+++ b/services/core/java/com/android/server/locksettings/LockSettingsService.java
@@ -105,6 +105,7 @@
import android.security.keystore2.AndroidKeyStoreProvider;
import android.service.gatekeeper.GateKeeperResponse;
import android.service.gatekeeper.IGateKeeperService;
+import android.system.keystore2.Domain;
import android.text.TextUtils;
import android.util.ArrayMap;
import android.util.ArraySet;
@@ -253,8 +254,7 @@
* The UIDs that are used for system credential storage in keystore.
*/
private static final int[] SYSTEM_CREDENTIAL_UIDS = {
- Process.WIFI_UID, Process.VPN_UID,
- Process.ROOT_UID, Process.SYSTEM_UID };
+ Process.VPN_UID, Process.ROOT_UID, Process.SYSTEM_UID};
// This class manages life cycle events for encrypted users on File Based Encryption (FBE)
// devices. The most basic of these is to show/hide notifications about missing features until
@@ -1987,9 +1987,14 @@
// Clear all the users credentials could have been installed in for this user.
for (int profileId : mUserManager.getProfileIdsWithDisabled(userId)) {
for (int uid : SYSTEM_CREDENTIAL_UIDS) {
- mKeyStore.clearUid(UserHandle.getUid(profileId, uid));
+ AndroidKeyStoreMaintenance.clearNamespace(Domain.APP,
+ UserHandle.getUid(profileId, uid));
}
}
+ if (mUserManager.getUserInfo(userId).isPrimary()) {
+ AndroidKeyStoreMaintenance.clearNamespace(Domain.SELINUX,
+ KeyProperties.NAMESPACE_WIFI);
+ }
} finally {
if (managedUserId != -1 && managedUserDecryptedPassword != null) {
if (DEBUG) Slog.v(TAG, "Restore tied profile lock");
diff --git a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
index d0da912..9fb5f04 100644
--- a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
+++ b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
@@ -97,8 +97,12 @@
import static android.net.NetworkPolicyManager.uidPoliciesToString;
import static android.net.NetworkPolicyManager.uidRulesToString;
import static android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK;
+import static android.net.NetworkStats.METERED_ALL;
+import static android.net.NetworkStats.METERED_YES;
+import static android.net.NetworkTemplate.MATCH_CARRIER;
import static android.net.NetworkTemplate.MATCH_MOBILE;
import static android.net.NetworkTemplate.MATCH_WIFI;
+import static android.net.NetworkTemplate.buildTemplateCarrierMetered;
import static android.net.NetworkTemplate.buildTemplateMobileAll;
import static android.net.TrafficStats.MB_IN_BYTES;
import static android.net.netstats.provider.NetworkStatsProvider.QUOTA_UNLIMITED;
@@ -350,7 +354,8 @@
private static final int VERSION_SWITCH_UID = 10;
private static final int VERSION_ADDED_CYCLE = 11;
private static final int VERSION_ADDED_NETWORK_TYPES = 12;
- private static final int VERSION_LATEST = VERSION_ADDED_NETWORK_TYPES;
+ private static final int VERSION_SUPPORTED_CARRIER_USAGE = 13;
+ private static final int VERSION_LATEST = VERSION_SUPPORTED_CARRIER_USAGE;
@VisibleForTesting
public static final int TYPE_WARNING = SystemMessage.NOTE_NET_WARNING;
@@ -375,7 +380,9 @@
private static final String ATTR_RESTRICT_BACKGROUND = "restrictBackground";
private static final String ATTR_NETWORK_TEMPLATE = "networkTemplate";
private static final String ATTR_SUBSCRIBER_ID = "subscriberId";
+ private static final String ATTR_SUBSCRIBER_ID_MATCH_RULE = "subscriberIdMatchRule";
private static final String ATTR_NETWORK_ID = "networkId";
+ private static final String ATTR_TEMPLATE_METERED = "templateMetered";
@Deprecated private static final String ATTR_CYCLE_DAY = "cycleDay";
@Deprecated private static final String ATTR_CYCLE_TIMEZONE = "cycleTimezone";
private static final String ATTR_CYCLE_START = "cycleStart";
@@ -1430,7 +1437,7 @@
*/
@GuardedBy("mNetworkPoliciesSecondLock")
private int findRelevantSubIdNL(NetworkTemplate template) {
- // Mobile template is relevant when any active subscriber matches
+ // Carrier template is relevant when any active subscriber matches
for (int i = 0; i < mSubIdToSubscriberId.size(); i++) {
final int subId = mSubIdToSubscriberId.keyAt(i);
final String subscriberId = mSubIdToSubscriberId.valueAt(i);
@@ -1508,6 +1515,7 @@
}
case TYPE_LIMIT: {
switch (policy.template.getMatchRule()) {
+ case MATCH_CARRIER:
case MATCH_MOBILE:
title = res.getText(R.string.data_usage_mobile_limit_title);
break;
@@ -1536,6 +1544,7 @@
}
case TYPE_LIMIT_SNOOZED: {
switch (policy.template.getMatchRule()) {
+ case MATCH_CARRIER:
case MATCH_MOBILE:
title = res.getText(R.string.data_usage_mobile_limit_snoozed_title);
break;
@@ -1632,7 +1641,7 @@
synchronized (mUidRulesFirstLock) {
synchronized (mNetworkPoliciesSecondLock) {
- ensureActiveMobilePolicyAL();
+ ensureActiveCarrierPolicyAL();
normalizePoliciesNL();
updateNetworkEnabledNL();
updateNetworkRulesNL();
@@ -1657,17 +1666,17 @@
}
/**
- * Update mobile policies with data cycle information from {@link CarrierConfigManager}
+ * Update carrier policies with data cycle information from {@link CarrierConfigManager}
* if necessary.
*
* @param subId that has its associated NetworkPolicy updated if necessary
* @return if any policies were updated
*/
@GuardedBy("mNetworkPoliciesSecondLock")
- private boolean maybeUpdateMobilePolicyCycleAL(int subId, String subscriberId) {
- if (LOGV) Slog.v(TAG, "maybeUpdateMobilePolicyCycleAL()");
+ private boolean maybeUpdateCarrierPolicyCycleAL(int subId, String subscriberId) {
+ if (LOGV) Slog.v(TAG, "maybeUpdateCarrierPolicyCycleAL()");
- // find and update the mobile NetworkPolicy for this subscriber id
+ // find and update the carrier NetworkPolicy for this subscriber id
boolean policyUpdated = false;
final NetworkIdentity probeIdent = new NetworkIdentity(TYPE_MOBILE,
TelephonyManager.NETWORK_TYPE_UNKNOWN, subscriberId, null, false, true, true,
@@ -1676,21 +1685,21 @@
final NetworkTemplate template = mNetworkPolicy.keyAt(i);
if (template.matches(probeIdent)) {
final NetworkPolicy policy = mNetworkPolicy.valueAt(i);
- policyUpdated |= updateDefaultMobilePolicyAL(subId, policy);
+ policyUpdated |= updateDefaultCarrierPolicyAL(subId, policy);
}
}
return policyUpdated;
}
/**
- * Returns the cycle day that should be used for a mobile NetworkPolicy.
+ * Returns the cycle day that should be used for a carrier NetworkPolicy.
*
* It attempts to get an appropriate cycle day from the passed in CarrierConfig. If it's unable
* to do so, it returns the fallback value.
*
* @param config The CarrierConfig to read the value from.
* @param fallbackCycleDay to return if the CarrierConfig can't be read.
- * @return cycleDay to use in the mobile NetworkPolicy.
+ * @return cycleDay to use in the carrier NetworkPolicy.
*/
@VisibleForTesting
int getCycleDayFromCarrierConfig(@Nullable PersistableBundle config,
@@ -1715,14 +1724,14 @@
}
/**
- * Returns the warning bytes that should be used for a mobile NetworkPolicy.
+ * Returns the warning bytes that should be used for a carrier NetworkPolicy.
*
* It attempts to get an appropriate value from the passed in CarrierConfig. If it's unable
* to do so, it returns the fallback value.
*
* @param config The CarrierConfig to read the value from.
* @param fallbackWarningBytes to return if the CarrierConfig can't be read.
- * @return warningBytes to use in the mobile NetworkPolicy.
+ * @return warningBytes to use in the carrier NetworkPolicy.
*/
@VisibleForTesting
long getWarningBytesFromCarrierConfig(@Nullable PersistableBundle config,
@@ -1748,14 +1757,14 @@
}
/**
- * Returns the limit bytes that should be used for a mobile NetworkPolicy.
+ * Returns the limit bytes that should be used for a carrier NetworkPolicy.
*
* It attempts to get an appropriate value from the passed in CarrierConfig. If it's unable
* to do so, it returns the fallback value.
*
* @param config The CarrierConfig to read the value from.
* @param fallbackLimitBytes to return if the CarrierConfig can't be read.
- * @return limitBytes to use in the mobile NetworkPolicy.
+ * @return limitBytes to use in the carrier NetworkPolicy.
*/
@VisibleForTesting
long getLimitBytesFromCarrierConfig(@Nullable PersistableBundle config,
@@ -1801,8 +1810,8 @@
synchronized (mNetworkPoliciesSecondLock) {
final String subscriberId = mSubIdToSubscriberId.get(subId, null);
if (subscriberId != null) {
- ensureActiveMobilePolicyAL(subId, subscriberId);
- maybeUpdateMobilePolicyCycleAL(subId, subscriberId);
+ ensureActiveCarrierPolicyAL(subId, subscriberId);
+ maybeUpdateCarrierPolicyCycleAL(subId, subscriberId);
} else {
Slog.wtf(TAG, "Missing subscriberId for subId " + subId);
}
@@ -1888,10 +1897,12 @@
// TODO: reach into ConnectivityManager to proactively disable bringing
// up this network, since we know that traffic will be blocked.
- if (template.getMatchRule() == MATCH_MOBILE) {
- // If mobile data usage hits the limit or if the user resumes the data, we need to
+ if (template.getMatchRule() == MATCH_MOBILE
+ || template.getMatchRule() == MATCH_CARRIER) {
+ // If carrier data usage hits the limit or if the user resumes the data, we need to
// notify telephony.
+ // TODO: It needs to check if it matches the merged WIFI and notify to wifi module.
final IntArray matchingSubIds = new IntArray();
synchronized (mNetworkPoliciesSecondLock) {
for (int i = 0; i < mSubIdToSubscriberId.size(); i++) {
@@ -2151,7 +2162,7 @@
.truncatedTo(ChronoUnit.DAYS)
.toInstant().toEpochMilli();
final long totalBytes = getTotalBytes(
- NetworkTemplate.buildTemplateMobileAll(snapshot.getSubscriberId()),
+ buildTemplateCarrierMetered(snapshot.getSubscriberId()),
start, startOfDay);
final long remainingBytes = limitBytes - totalBytes;
// Number of remaining days including current day
@@ -2177,31 +2188,31 @@
/**
* Once any {@link #mNetworkPolicy} are loaded from disk, ensure that we
- * have at least a default mobile policy defined.
+ * have at least a default carrier policy defined.
*/
@GuardedBy("mNetworkPoliciesSecondLock")
- private void ensureActiveMobilePolicyAL() {
- if (LOGV) Slog.v(TAG, "ensureActiveMobilePolicyAL()");
+ private void ensureActiveCarrierPolicyAL() {
+ if (LOGV) Slog.v(TAG, "ensureActiveCarrierPolicyAL()");
if (mSuppressDefaultPolicy) return;
for (int i = 0; i < mSubIdToSubscriberId.size(); i++) {
final int subId = mSubIdToSubscriberId.keyAt(i);
final String subscriberId = mSubIdToSubscriberId.valueAt(i);
- ensureActiveMobilePolicyAL(subId, subscriberId);
+ ensureActiveCarrierPolicyAL(subId, subscriberId);
}
}
/**
* Once any {@link #mNetworkPolicy} are loaded from disk, ensure that we
- * have at least a default mobile policy defined.
+ * have at least a default carrier policy defined.
*
* @param subId to build a default policy for
* @param subscriberId that we check for an existing policy
- * @return true if a mobile network policy was added, or false one already existed.
+ * @return true if a carrier network policy was added, or false one already existed.
*/
@GuardedBy("mNetworkPoliciesSecondLock")
- private boolean ensureActiveMobilePolicyAL(int subId, String subscriberId) {
+ private boolean ensureActiveCarrierPolicyAL(int subId, String subscriberId) {
// Poke around to see if we already have a policy
final NetworkIdentity probeIdent = new NetworkIdentity(TYPE_MOBILE,
TelephonyManager.NETWORK_TYPE_UNKNOWN, subscriberId, null, false, true, true,
@@ -2220,7 +2231,7 @@
Slog.i(TAG, "No policy for subscriber "
+ NetworkIdentityUtils.scrubSubscriberId(subscriberId)
+ "; generating default policy");
- final NetworkPolicy policy = buildDefaultMobilePolicy(subId, subscriberId);
+ final NetworkPolicy policy = buildDefaultCarrierPolicy(subId, subscriberId);
addNetworkPolicyAL(policy);
return true;
}
@@ -2240,8 +2251,8 @@
}
@VisibleForTesting
- NetworkPolicy buildDefaultMobilePolicy(int subId, String subscriberId) {
- final NetworkTemplate template = buildTemplateMobileAll(subscriberId);
+ NetworkPolicy buildDefaultCarrierPolicy(int subId, String subscriberId) {
+ final NetworkTemplate template = buildTemplateCarrierMetered(subscriberId);
final RecurrenceRule cycleRule = NetworkPolicy
.buildRule(ZonedDateTime.now().getDayOfMonth(), ZoneId.systemDefault());
final NetworkPolicy policy = new NetworkPolicy(template, cycleRule,
@@ -2249,7 +2260,7 @@
SNOOZE_NEVER, SNOOZE_NEVER, true, true);
synchronized (mUidRulesFirstLock) {
synchronized (mNetworkPoliciesSecondLock) {
- updateDefaultMobilePolicyAL(subId, policy);
+ updateDefaultCarrierPolicyAL(subId, policy);
}
}
return policy;
@@ -2263,7 +2274,7 @@
* @return if the policy was modified
*/
@GuardedBy("mNetworkPoliciesSecondLock")
- private boolean updateDefaultMobilePolicyAL(int subId, NetworkPolicy policy) {
+ private boolean updateDefaultCarrierPolicyAL(int subId, NetworkPolicy policy) {
if (!policy.inferred) {
if (LOGD) Slog.d(TAG, "Ignoring user-defined policy " + policy);
return false;
@@ -2350,14 +2361,33 @@
mLoadedRestrictBackground = (version >= VERSION_ADDED_RESTRICT_BACKGROUND)
&& readBooleanAttribute(in, ATTR_RESTRICT_BACKGROUND);
} else if (TAG_NETWORK_POLICY.equals(tag)) {
- final int networkTemplate = readIntAttribute(in, ATTR_NETWORK_TEMPLATE);
+ int templateType = readIntAttribute(in, ATTR_NETWORK_TEMPLATE);
final String subscriberId = in.getAttributeValue(null, ATTR_SUBSCRIBER_ID);
final String networkId;
+ final int subscriberIdMatchRule;
+ final int templateMeteredness;
if (version >= VERSION_ADDED_NETWORK_ID) {
networkId = in.getAttributeValue(null, ATTR_NETWORK_ID);
} else {
networkId = null;
}
+
+ if (version >= VERSION_SUPPORTED_CARRIER_USAGE) {
+ subscriberIdMatchRule = readIntAttribute(in,
+ ATTR_SUBSCRIBER_ID_MATCH_RULE);
+ templateMeteredness = readIntAttribute(in, ATTR_TEMPLATE_METERED);
+
+ } else {
+ subscriberIdMatchRule = NetworkTemplate.SUBSCRIBER_ID_MATCH_RULE_EXACT;
+ if (templateType == MATCH_MOBILE) {
+ Log.d(TAG, "Update template match rule from mobile to carrier and"
+ + " force to metered");
+ templateType = MATCH_CARRIER;
+ templateMeteredness = METERED_YES;
+ } else {
+ templateMeteredness = METERED_ALL;
+ }
+ }
final RecurrenceRule cycleRule;
if (version >= VERSION_ADDED_CYCLE) {
final String start = readStringAttribute(in, ATTR_CYCLE_START);
@@ -2391,7 +2421,7 @@
if (version >= VERSION_ADDED_METERED) {
metered = readBooleanAttribute(in, ATTR_METERED);
} else {
- switch (networkTemplate) {
+ switch (templateType) {
case MATCH_MOBILE:
metered = true;
break;
@@ -2411,9 +2441,11 @@
} else {
inferred = false;
}
-
- final NetworkTemplate template = new NetworkTemplate(networkTemplate,
- subscriberId, networkId);
+ final NetworkTemplate template = new NetworkTemplate(templateType,
+ subscriberId, new String[] { subscriberId },
+ networkId, templateMeteredness, NetworkStats.ROAMING_ALL,
+ NetworkStats.DEFAULT_NETWORK_ALL, NetworkTemplate.NETWORK_TYPE_ALL,
+ NetworkTemplate.OEM_MANAGED_ALL, subscriberIdMatchRule);
if (template.isPersistable()) {
mNetworkPolicy.put(template, new NetworkPolicy(template, cycleRule,
warningBytes, limitBytes, lastWarningSnooze,
@@ -2621,10 +2653,14 @@
if (subscriberId != null) {
out.attribute(null, ATTR_SUBSCRIBER_ID, subscriberId);
}
+ writeIntAttribute(out, ATTR_SUBSCRIBER_ID_MATCH_RULE,
+ template.getSubscriberIdMatchRule());
final String networkId = template.getNetworkId();
if (networkId != null) {
out.attribute(null, ATTR_NETWORK_ID, networkId);
}
+ writeIntAttribute(out, ATTR_TEMPLATE_METERED,
+ template.getMeteredness());
writeStringAttribute(out, ATTR_CYCLE_START,
RecurrenceRule.convertZonedDateTime(policy.cycleRule.start));
writeStringAttribute(out, ATTR_CYCLE_END,
@@ -3492,8 +3528,8 @@
final String subscriberId = mSubIdToSubscriberId.get(subId, null);
if (subscriberId != null) {
- ensureActiveMobilePolicyAL(subId, subscriberId);
- maybeUpdateMobilePolicyCycleAL(subId, subscriberId);
+ ensureActiveCarrierPolicyAL(subId, subscriberId);
+ maybeUpdateCarrierPolicyCycleAL(subId, subscriberId);
} else {
Slog.wtf(TAG, "Missing subscriberId for subId " + subId);
}
@@ -5534,11 +5570,15 @@
return;
}
- // Turn mobile data limit off
+ // Turn carrier/mobile data limit off
NetworkPolicy[] policies = getNetworkPolicies(mContext.getOpPackageName());
- NetworkTemplate template = NetworkTemplate.buildTemplateMobileAll(subscriber);
+ NetworkTemplate templateCarrier = buildTemplateCarrierMetered(subscriber);
+ NetworkTemplate templateMobile = buildTemplateMobileAll(subscriber);
for (NetworkPolicy policy : policies) {
- if (policy.template.equals(template)) {
+ // All policies loaded from disk will be carrier templates, and setting will also only
+ // set carrier templates, but we clear mobile templates just in case one is set by
+ // some other caller
+ if (policy.template.equals(templateCarrier) || policy.template.equals(templateMobile)) {
policy.limitBytes = NetworkPolicy.LIMIT_DISABLED;
policy.inferred = false;
policy.clearSnooze();
diff --git a/services/core/java/com/android/server/notification/NotificationHistoryDatabase.java b/services/core/java/com/android/server/notification/NotificationHistoryDatabase.java
index 18da33c..fdb93a8 100644
--- a/services/core/java/com/android/server/notification/NotificationHistoryDatabase.java
+++ b/services/core/java/com/android/server/notification/NotificationHistoryDatabase.java
@@ -103,7 +103,7 @@
IntentFilter deletionFilter = new IntentFilter(ACTION_HISTORY_DELETION);
deletionFilter.addDataScheme(SCHEME_DELETION);
- mContext.registerReceiver(mFileCleaupReceiver, deletionFilter);
+ mContext.registerReceiver(mFileCleanupReceiver, deletionFilter);
}
public void init() {
@@ -329,6 +329,12 @@
}
}
+ public void unregisterFileCleanupReceiver() {
+ if(mContext != null) {
+ mContext.unregisterReceiver(mFileCleanupReceiver);
+ }
+ }
+
private static long safeParseLong(String fileName) {
// AtomicFile will create copies of the numeric files with ".new" and ".bak"
// over the course of its processing. If these files still exist on boot we need to clean
@@ -340,7 +346,7 @@
}
}
- private final BroadcastReceiver mFileCleaupReceiver = new BroadcastReceiver() {
+ private final BroadcastReceiver mFileCleanupReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
diff --git a/services/core/java/com/android/server/notification/NotificationHistoryManager.java b/services/core/java/com/android/server/notification/NotificationHistoryManager.java
index 69a7ce90..1aae6c3 100644
--- a/services/core/java/com/android/server/notification/NotificationHistoryManager.java
+++ b/services/core/java/com/android/server/notification/NotificationHistoryManager.java
@@ -272,6 +272,7 @@
private void disableHistory(NotificationHistoryDatabase userHistory, @UserIdInt int userId) {
userHistory.disableHistory();
+ userHistory.unregisterFileCleanupReceiver();
mUserPendingHistoryDisables.put(userId, false);
mHistoryEnabled.put(userId, false);
diff --git a/services/core/java/com/android/server/policy/LegacyGlobalActions.java b/services/core/java/com/android/server/policy/LegacyGlobalActions.java
index 5b48abb..5e4c801 100644
--- a/services/core/java/com/android/server/policy/LegacyGlobalActions.java
+++ b/services/core/java/com/android/server/policy/LegacyGlobalActions.java
@@ -135,7 +135,7 @@
filter.addAction(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
filter.addAction(Intent.ACTION_SCREEN_OFF);
filter.addAction(TelephonyManager.ACTION_EMERGENCY_CALLBACK_MODE_CHANGED);
- context.registerReceiver(mBroadcastReceiver, filter);
+ context.registerReceiverAsUser(mBroadcastReceiver, UserHandle.ALL, filter, null, null);
mHasTelephony =
context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_TELEPHONY);
diff --git a/services/tests/servicestests/assets/NetworkPolicyManagerServiceTest/netpolicy/network-policy-mobile.xml b/services/tests/servicestests/assets/NetworkPolicyManagerServiceTest/netpolicy/network-policy-mobile.xml
new file mode 100644
index 0000000..d1357e7
--- /dev/null
+++ b/services/tests/servicestests/assets/NetworkPolicyManagerServiceTest/netpolicy/network-policy-mobile.xml
@@ -0,0 +1,6 @@
+<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
+<policy-list version="12" restrictBackground="false">
+ <network-policy networkTemplate="1" subscriberId="466977604504520" cycleStart="2020-01-09T00:00+08:00[Asia/Taipei]" cyclePeriod="P1M" warningBytes="2147483648" limitBytes="-1" lastWarningSnooze="-1" lastLimitSnooze="-1" metered="true" inferred="true" />
+</policy-list>
+<whitelist />
+
diff --git a/services/tests/servicestests/assets/NetworkPolicyManagerServiceTest/netpolicy/network-policy-wifi-with-subscriberId-match-rule-all-and-templateMetered-no.xml b/services/tests/servicestests/assets/NetworkPolicyManagerServiceTest/netpolicy/network-policy-wifi-with-subscriberId-match-rule-all-and-templateMetered-no.xml
new file mode 100644
index 0000000..60d7d25
--- /dev/null
+++ b/services/tests/servicestests/assets/NetworkPolicyManagerServiceTest/netpolicy/network-policy-wifi-with-subscriberId-match-rule-all-and-templateMetered-no.xml
@@ -0,0 +1,5 @@
+<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
+<policy-list version="13" restrictBackground="false">
+<network-policy networkTemplate="4" subscriberIdMatchRule="1" networkId="TEST_SSID" templateMetered="0" cycleStart="2020-01-09T00:00+08:00[Asia/Taipei]" cyclePeriod="P1M" warningBytes="2147483648" limitBytes="-1" lastWarningSnooze="-1" lastLimitSnooze="-1" metered="true" inferred="true" />
+</policy-list>
+<whitelist />
diff --git a/services/tests/servicestests/src/com/android/server/net/NetworkPolicyManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/net/NetworkPolicyManagerServiceTest.java
index d041eec..fa65b07 100644
--- a/services/tests/servicestests/src/com/android/server/net/NetworkPolicyManagerServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/net/NetworkPolicyManagerServiceTest.java
@@ -50,10 +50,12 @@
import static android.net.NetworkPolicyManager.uidRulesToString;
import static android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK;
import static android.net.NetworkStats.IFACE_ALL;
+import static android.net.NetworkStats.METERED_NO;
+import static android.net.NetworkStats.METERED_YES;
import static android.net.NetworkStats.SET_ALL;
import static android.net.NetworkStats.TAG_ALL;
import static android.net.NetworkStats.TAG_NONE;
-import static android.net.NetworkTemplate.buildTemplateMobileAll;
+import static android.net.NetworkTemplate.buildTemplateCarrierMetered;
import static android.net.NetworkTemplate.buildTemplateWifi;
import static android.net.TrafficStats.MB_IN_BYTES;
import static android.telephony.CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED;
@@ -229,7 +231,8 @@
private static final int TEST_NET_ID = 24;
private static NetworkTemplate sTemplateWifi = buildTemplateWifi(TEST_SSID);
- private static NetworkTemplate sTemplateMobileAll = buildTemplateMobileAll(TEST_IMSI);
+ private static NetworkTemplate sTemplateCarrierMetered =
+ buildTemplateCarrierMetered(TEST_IMSI);
/**
* Path on assets where files used by {@link NetPolicyXml} are located.
@@ -450,7 +453,7 @@
verify(mNetworkManager).registerObserver(networkObserver.capture());
mNetworkObserver = networkObserver.getValue();
- NetworkPolicy defaultPolicy = mService.buildDefaultMobilePolicy(0, "");
+ NetworkPolicy defaultPolicy = mService.buildDefaultCarrierPolicy(0, "");
mDefaultWarningBytes = defaultPolicy.warningBytes;
mDefaultLimitBytes = defaultPolicy.limitBytes;
}
@@ -1229,7 +1232,7 @@
reset(mTelephonyManager, mNetworkManager, mNotifManager);
TelephonyManager tmSub = expectMobileDefaults();
- mService.snoozeLimit(NetworkTemplate.buildTemplateMobileAll(TEST_IMSI));
+ mService.snoozeLimit(NetworkTemplate.buildTemplateCarrierMetered(TEST_IMSI));
mService.updateNetworks();
verify(tmSub, atLeastOnce()).setPolicyDataEnabled(true);
@@ -1482,7 +1485,7 @@
assertEquals(mDefaultLimitBytes, actualLimitBytes);
}
- private PersistableBundle setupUpdateMobilePolicyCycleTests() throws RemoteException {
+ private PersistableBundle setupUpdateCarrierPolicyCycleTests() throws RemoteException {
when(mConnManager.getAllNetworkStateSnapshots())
.thenReturn(new ArrayList<NetworkStateSnapshot>());
@@ -1490,19 +1493,19 @@
PersistableBundle bundle = CarrierConfigManager.getDefaultConfig();
when(mCarrierConfigManager.getConfigForSubId(FAKE_SUB_ID)).thenReturn(bundle);
- setNetworkPolicies(buildDefaultFakeMobilePolicy());
+ setNetworkPolicies(buildDefaultFakeCarrierPolicy());
return bundle;
}
@Test
- public void testUpdateMobilePolicyCycleWithNullConfig() throws RemoteException {
+ public void testUpdateCarrierPolicyCycleWithNullConfig() throws RemoteException {
when(mConnManager.getAllNetworkStateSnapshots())
.thenReturn(new ArrayList<NetworkStateSnapshot>());
setupTelephonySubscriptionManagers(FAKE_SUB_ID, FAKE_SUBSCRIBER_ID);
when(mCarrierConfigManager.getConfigForSubId(FAKE_SUB_ID)).thenReturn(null);
- setNetworkPolicies(buildDefaultFakeMobilePolicy());
+ setNetworkPolicies(buildDefaultFakeCarrierPolicy());
// smoke test to make sure no errors are raised
mServiceContext.sendBroadcast(
new Intent(ACTION_CARRIER_CONFIG_CHANGED)
@@ -1513,8 +1516,8 @@
}
@Test
- public void testUpdateMobilePolicyCycleWithInvalidConfig() throws RemoteException {
- PersistableBundle bundle = setupUpdateMobilePolicyCycleTests();
+ public void testUpdateCarrierPolicyCycleWithInvalidConfig() throws RemoteException {
+ PersistableBundle bundle = setupUpdateCarrierPolicyCycleTests();
// Test with an invalid CarrierConfig, there should be no changes or crashes.
bundle.putInt(CarrierConfigManager.KEY_MONTHLY_DATA_CYCLE_DAY_INT, -100);
bundle.putLong(CarrierConfigManager.KEY_DATA_WARNING_THRESHOLD_BYTES_LONG, -100);
@@ -1529,8 +1532,8 @@
}
@Test
- public void testUpdateMobilePolicyCycleWithDefaultConfig() throws RemoteException {
- PersistableBundle bundle = setupUpdateMobilePolicyCycleTests();
+ public void testUpdateCarrierPolicyCycleWithDefaultConfig() throws RemoteException {
+ PersistableBundle bundle = setupUpdateCarrierPolicyCycleTests();
// Test that we respect the platform values when told to
bundle.putInt(CarrierConfigManager.KEY_MONTHLY_DATA_CYCLE_DAY_INT,
DATA_CYCLE_USE_PLATFORM_DEFAULT);
@@ -1548,11 +1551,11 @@
}
@Test
- public void testUpdateMobilePolicyCycleWithUserOverrides() throws RemoteException {
- PersistableBundle bundle = setupUpdateMobilePolicyCycleTests();
+ public void testUpdateCarrierPolicyCycleWithUserOverrides() throws RemoteException {
+ PersistableBundle bundle = setupUpdateCarrierPolicyCycleTests();
// inferred = false implies that a user manually modified this policy.
- NetworkPolicy policy = buildDefaultFakeMobilePolicy();
+ NetworkPolicy policy = buildDefaultFakeCarrierPolicy();
policy.inferred = false;
setNetworkPolicies(policy);
@@ -1571,8 +1574,8 @@
}
@Test
- public void testUpdateMobilePolicyCycleUpdatesDataCycle() throws RemoteException {
- PersistableBundle bundle = setupUpdateMobilePolicyCycleTests();
+ public void testUpdateCarrierPolicyCycleUpdatesDataCycle() throws RemoteException {
+ PersistableBundle bundle = setupUpdateCarrierPolicyCycleTests();
bundle.putInt(CarrierConfigManager.KEY_MONTHLY_DATA_CYCLE_DAY_INT, 31);
bundle.putLong(CarrierConfigManager.KEY_DATA_WARNING_THRESHOLD_BYTES_LONG, 9999);
@@ -1586,8 +1589,8 @@
}
@Test
- public void testUpdateMobilePolicyCycleDisableThresholds() throws RemoteException {
- PersistableBundle bundle = setupUpdateMobilePolicyCycleTests();
+ public void testUpdateCarrierPolicyCycleDisableThresholds() throws RemoteException {
+ PersistableBundle bundle = setupUpdateCarrierPolicyCycleTests();
bundle.putInt(CarrierConfigManager.KEY_MONTHLY_DATA_CYCLE_DAY_INT, 31);
bundle.putLong(CarrierConfigManager.KEY_DATA_WARNING_THRESHOLD_BYTES_LONG,
@@ -1603,8 +1606,8 @@
}
@Test
- public void testUpdateMobilePolicyCycleRevertsToDefault() throws RemoteException {
- PersistableBundle bundle = setupUpdateMobilePolicyCycleTests();
+ public void testUpdateCarrierPolicyCycleRevertsToDefault() throws RemoteException {
+ PersistableBundle bundle = setupUpdateCarrierPolicyCycleTests();
bundle.putInt(CarrierConfigManager.KEY_MONTHLY_DATA_CYCLE_DAY_INT, 31);
bundle.putLong(CarrierConfigManager.KEY_DATA_WARNING_THRESHOLD_BYTES_LONG,
@@ -1774,7 +1777,7 @@
@Test
public void testSetNetworkPolicies_withNullPolicies_doesNotThrow() {
NetworkPolicy[] policies = new NetworkPolicy[3];
- policies[1] = buildDefaultFakeMobilePolicy();
+ policies[1] = buildDefaultFakeCarrierPolicy();
setNetworkPolicies(policies);
assertNetworkPolicyEquals(DEFAULT_CYCLE_DAY, mDefaultWarningBytes, mDefaultLimitBytes,
@@ -1820,7 +1823,8 @@
// Set warning to 7KB and limit to 10KB.
setNetworkPolicies(new NetworkPolicy(
- sTemplateMobileAll, CYCLE_DAY, TIMEZONE_UTC, 7000L, 10000L, true));
+ sTemplateCarrierMetered, CYCLE_DAY, TIMEZONE_UTC, 7000L, 10000L,
+ true));
postMsgAndWaitForCompletion();
// Verifies that remaining quotas are set to providers.
@@ -1971,6 +1975,40 @@
}
}
+ @Test
+ @NetPolicyXml("network-policy-mobile.xml")
+ public void testStartToSupportCarrierUsagePolicy() throws Exception {
+ NetworkPolicy[] policies = mService.getNetworkPolicies(
+ mServiceContext.getOpPackageName());
+ assertEquals("Unexpected number of network policies", 1, policies.length);
+ NetworkPolicy actualPolicy = policies[0];
+ assertEquals("Unexpected template match rule in network policies",
+ NetworkTemplate.MATCH_CARRIER,
+ actualPolicy.template.getMatchRule());
+ assertEquals("Unexpected subscriberId match rule in network policies",
+ NetworkTemplate.SUBSCRIBER_ID_MATCH_RULE_EXACT,
+ actualPolicy.template.getSubscriberIdMatchRule());
+ assertEquals("Unexpected template meteredness in network policies",
+ METERED_YES, actualPolicy.template.getMeteredness());
+ }
+
+ @Test
+ @NetPolicyXml("network-policy-wifi-with-subscriberId-match-rule-all-and-templateMetered-no.xml")
+ public void testSupportedCarrierUsagePolicy() throws Exception {
+ NetworkPolicy[] policies = mService.getNetworkPolicies(
+ mServiceContext.getOpPackageName());
+ assertEquals("Unexpected number of network policies", 1, policies.length);
+ NetworkPolicy actualPolicy = policies[0];
+ assertEquals("Unexpected template match rule in network policies",
+ NetworkTemplate.MATCH_WIFI,
+ actualPolicy.template.getMatchRule());
+ assertEquals("Unexpected subscriberId match rule in network policies",
+ NetworkTemplate.SUBSCRIBER_ID_MATCH_RULE_ALL,
+ actualPolicy.template.getSubscriberIdMatchRule());
+ assertEquals("Unexpected template meteredness in network policies",
+ METERED_NO, actualPolicy.template.getMeteredness());
+ }
+
private String formatBlockedStateError(int uid, int rule, boolean metered,
boolean backgroundRestricted) {
return String.format(
@@ -2023,8 +2061,8 @@
return nc;
}
- private NetworkPolicy buildDefaultFakeMobilePolicy() {
- NetworkPolicy p = mService.buildDefaultMobilePolicy(FAKE_SUB_ID, FAKE_SUBSCRIBER_ID);
+ private NetworkPolicy buildDefaultFakeCarrierPolicy() {
+ NetworkPolicy p = mService.buildDefaultCarrierPolicy(FAKE_SUB_ID, FAKE_SUBSCRIBER_ID);
// set a deterministic cycle date
p.cycleRule = new RecurrenceRule(
p.cycleRule.start.withDayOfMonth(DEFAULT_CYCLE_DAY),
@@ -2032,9 +2070,9 @@
return p;
}
- private static NetworkPolicy buildFakeMobilePolicy(int cycleDay, long warningBytes,
+ private static NetworkPolicy buildFakeCarrierPolicy(int cycleDay, long warningBytes,
long limitBytes, boolean inferred) {
- final NetworkTemplate template = buildTemplateMobileAll(FAKE_SUBSCRIBER_ID);
+ final NetworkTemplate template = buildTemplateCarrierMetered(FAKE_SUBSCRIBER_ID);
return new NetworkPolicy(template, cycleDay, TimeZone.getDefault().getID(), warningBytes,
limitBytes, SNOOZE_NEVER, SNOOZE_NEVER, true, inferred);
}
@@ -2045,8 +2083,8 @@
mServiceContext.getOpPackageName());
assertEquals("Unexpected number of network policies", 1, policies.length);
NetworkPolicy actualPolicy = policies[0];
- NetworkPolicy expectedPolicy = buildFakeMobilePolicy(expectedCycleDay, expectedWarningBytes,
- expectedLimitBytes, expectedInferred);
+ NetworkPolicy expectedPolicy = buildFakeCarrierPolicy(expectedCycleDay,
+ expectedWarningBytes, expectedLimitBytes, expectedInferred);
assertEquals(expectedPolicy, actualPolicy);
}
diff --git a/services/tests/servicestests/src/com/android/server/usage/AppStandbyControllerTests.java b/services/tests/servicestests/src/com/android/server/usage/AppStandbyControllerTests.java
index 1ced467..9860d51 100644
--- a/services/tests/servicestests/src/com/android/server/usage/AppStandbyControllerTests.java
+++ b/services/tests/servicestests/src/com/android/server/usage/AppStandbyControllerTests.java
@@ -92,6 +92,7 @@
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
+import java.util.Random;
import java.util.Set;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
@@ -137,6 +138,8 @@
/** Mock variable used in {@link MyInjector#isPackageInstalled(String, int, int)} */
private static boolean isPackageInstalled = true;
+ private static final Random sRandom = new Random();
+
private MyInjector mInjector;
private AppStandbyController mController;
@@ -238,7 +241,7 @@
@Override
File getDataSystemDirectory() {
- return new File(getContext().getFilesDir(), Long.toString(Math.randomLongInternal()));
+ return new File(getContext().getFilesDir(), Long.toString(sRandom.nextLong()));
}
@Override
diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java
index b3e3522..15ad5bc 100644
--- a/telephony/java/android/telephony/CarrierConfigManager.java
+++ b/telephony/java/android/telephony/CarrierConfigManager.java
@@ -3581,6 +3581,13 @@
"emergency_number_prefix_string_array";
/**
+ * Indicates whether carrier treats "*67" or "*82" as a temporary mode CLIR.
+ * @hide
+ */
+ public static final String KEY_CARRIER_SUPPORTS_CALLER_ID_VERTICAL_SERVICE_CODES_BOOL =
+ "carrier_supports_caller_id_vertical_service_codes_bool";
+
+ /**
* Smart forwarding config. Smart forwarding is a feature to configure call forwarding to a
* different SIM in the device when one SIM is not reachable. The config here specifies a smart
* forwarding component that will launch UI for changing the configuration. An empty string
@@ -4910,6 +4917,7 @@
1 /* Roaming Indicator Off */
});
sDefaults.putStringArray(KEY_EMERGENCY_NUMBER_PREFIX_STRING_ARRAY, new String[0]);
+ sDefaults.putBoolean(KEY_CARRIER_SUPPORTS_CALLER_ID_VERTICAL_SERVICE_CODES_BOOL, false);
sDefaults.putBoolean(KEY_USE_USIM_BOOL, false);
sDefaults.putBoolean(KEY_SHOW_WFC_LOCATION_PRIVACY_POLICY_BOOL, false);
sDefaults.putBoolean(KEY_AUTO_CANCEL_CS_REJECT_NOTIFICATION, true);
@@ -4951,7 +4959,7 @@
sDefaults.putStringArray(KEY_MISSED_INCOMING_CALL_SMS_ORIGINATOR_STRING_ARRAY,
new String[0]);
sDefaults.putStringArray(KEY_APN_PRIORITY_STRING_ARRAY, new String[] {
- "default:0", "enterprise:1", "mms:2", "supl:2", "dun:2", "hipri:3", "fota:2",
+ "enterprise:0", "default:1", "mms:2", "supl:2", "dun:2", "hipri:3", "fota:2",
"ims:2", "cbs:2", "ia:2", "emergency:2", "mcx:3", "xcap:3"
});
sDefaults.putStringArray(KEY_MISSED_INCOMING_CALL_SMS_PATTERN_STRING_ARRAY, new String[0]);
diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java
index 1860ecb..4cc6c3d 100644
--- a/telephony/java/android/telephony/TelephonyManager.java
+++ b/telephony/java/android/telephony/TelephonyManager.java
@@ -59,7 +59,6 @@
import android.os.IBinder;
import android.os.ParcelFileDescriptor;
import android.os.PersistableBundle;
-import android.os.Process;
import android.os.RemoteException;
import android.os.ResultReceiver;
import android.os.SystemProperties;
@@ -414,10 +413,6 @@
return null;
}
- private boolean isSystemProcess() {
- return Process.myUid() == Process.SYSTEM_UID;
- }
-
/**
* Post a runnable to the BackgroundThread.
*
@@ -4196,19 +4191,12 @@
try {
IPhoneSubInfo info = getSubscriberInfoService();
if (info == null) {
- Rlog.e(TAG, "IMSI error: Subscriber Info is null");
- if (!isSystemProcess()) {
- throw new RuntimeException("IMSI error: Subscriber Info is null");
- }
- return;
+ throw new RuntimeException("IMSI error: Subscriber Info is null");
}
int subId = getSubId(SubscriptionManager.getDefaultDataSubscriptionId());
info.resetCarrierKeysForImsiEncryption(subId, mContext.getOpPackageName());
} catch (RemoteException ex) {
- Rlog.e(TAG, "getCarrierInfoForImsiEncryption RemoteException" + ex);
- if (!isSystemProcess()) {
- ex.rethrowAsRuntimeException();
- }
+ Rlog.e(TAG, "Telephony#getCarrierInfoForImsiEncryption RemoteException" + ex);
}
}
@@ -5247,17 +5235,11 @@
try {
final ITelephony telephony = getITelephony();
if (telephony == null) {
- if (!isSystemProcess()) {
- throw new RuntimeException("Telephony service unavailable");
- }
return;
}
telephony.sendDialerSpecialCode(mContext.getOpPackageName(), inputCode);
} catch (RemoteException ex) {
- // This could happen if binder process crashes.
- if (!isSystemProcess()) {
- ex.rethrowAsRuntimeException();
- }
+ Rlog.e(TAG, "Telephony#sendDialerSpecialCode RemoteException" + ex);
}
}
@@ -9534,9 +9516,7 @@
throw new IllegalStateException("telephony service is null.");
}
} catch (RemoteException ex) {
- if (!isSystemProcess()) {
- ex.rethrowAsRuntimeException();
- }
+ Rlog.e(TAG, "Telephony#getMobileProvisioningUrl RemoteException" + ex);
}
return null;
}
@@ -9687,7 +9667,8 @@
}
/**
- * Sets the roaming mode for CDMA phone to the given mode {@code mode}.
+ * Sets the roaming mode for CDMA phone to the given mode {@code mode}. If the phone is not
+ * CDMA capable, this method does nothing.
*
* <p>If this object has been created with {@link #createForSubscriptionId}, applies to the
* given subId. Otherwise, applies to {@link SubscriptionManager#getDefaultSubscriptionId()}
@@ -9710,6 +9691,7 @@
@SystemApi
@RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
public void setCdmaRoamingMode(@CdmaRoamingMode int mode) {
+ if (getPhoneType() != PHONE_TYPE_CDMA) return;
try {
ITelephony telephony = getITelephony();
if (telephony != null) {
@@ -9790,7 +9772,8 @@
}
/**
- * Sets the subscription mode for CDMA phone to the given mode {@code mode}.
+ * Sets the subscription mode for CDMA phone to the given mode {@code mode}. If the phone is not
+ * CDMA capable, this method does nothing.
*
* @param mode CDMA subscription mode.
* @throws SecurityException if the caller does not have the permission.
@@ -9809,6 +9792,7 @@
@SystemApi
@RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
public void setCdmaSubscriptionMode(@CdmaSubscription int mode) {
+ if (getPhoneType() != PHONE_TYPE_CDMA) return;
try {
ITelephony telephony = getITelephony();
if (telephony != null) {
@@ -13371,9 +13355,7 @@
return service.isDataEnabledForApn(apnType, getSubId(), pkgForDebug);
}
} catch (RemoteException ex) {
- if (!isSystemProcess()) {
- ex.rethrowAsRuntimeException();
- }
+ Rlog.e(TAG, "Telephony#isDataEnabledForApn RemoteException" + ex);
}
return false;
}
@@ -13393,9 +13375,7 @@
return service.isApnMetered(apnType, getSubId());
}
} catch (RemoteException ex) {
- if (!isSystemProcess()) {
- ex.rethrowAsRuntimeException();
- }
+ Rlog.e(TAG, "Telephony#isApnMetered RemoteException" + ex);
}
return true;
}
@@ -13455,9 +13435,7 @@
service.setSystemSelectionChannels(specifiers, getSubId(), aidlConsumer);
}
} catch (RemoteException ex) {
- if (!isSystemProcess()) {
- ex.rethrowAsRuntimeException();
- }
+ Rlog.e(TAG, "Telephony#setSystemSelectionChannels RemoteException" + ex);
}
}
@@ -13485,9 +13463,7 @@
throw new IllegalStateException("telephony service is null.");
}
} catch (RemoteException ex) {
- if (!isSystemProcess()) {
- ex.rethrowAsRuntimeException();
- }
+ Rlog.e(TAG, "Telephony#getSystemSelectionChannels RemoteException" + ex);
}
return new ArrayList<>();
}
@@ -13516,9 +13492,7 @@
return service.isMvnoMatched(getSubId(), mvnoType, mvnoMatchData);
}
} catch (RemoteException ex) {
- if (!isSystemProcess()) {
- ex.rethrowAsRuntimeException();
- }
+ Rlog.e(TAG, "Telephony#matchesCurrentSimOperator RemoteException" + ex);
}
return false;
}
@@ -13922,10 +13896,7 @@
service.setMobileDataPolicyEnabledStatus(getSubId(), policy, enabled);
}
} catch (RemoteException ex) {
- // This could happen if binder process crashes.
- if (!isSystemProcess()) {
- ex.rethrowAsRuntimeException();
- }
+ Rlog.e(TAG, "Telephony#setMobileDataPolicyEnabled RemoteException" + ex);
}
}
@@ -13946,10 +13917,7 @@
return service.isMobileDataPolicyEnabled(getSubId(), policy);
}
} catch (RemoteException ex) {
- // This could happen if binder process crashes.
- if (!isSystemProcess()) {
- ex.rethrowAsRuntimeException();
- }
+ Rlog.e(TAG, "Telephony#isMobileDataPolicyEnabled RemoteException" + ex);
}
return false;
}
@@ -14453,9 +14421,7 @@
throw new IllegalStateException("telephony service is null.");
}
} catch (RemoteException ex) {
- if (!isSystemProcess()) {
- ex.rethrowAsRuntimeException();
- }
+ Rlog.e(TAG, "Telephony#getEquivalentHomePlmns RemoteException" + ex);
}
return Collections.emptyList();
@@ -14549,9 +14515,7 @@
throw new IllegalStateException("telephony service is null.");
}
} catch (RemoteException ex) {
- if (!isSystemProcess()) {
- ex.rethrowAsRuntimeException();
- }
+ Rlog.e(TAG, "Telephony#isRadioInterfaceCapabilitySupported RemoteException" + ex);
}
return false;
}
diff --git a/test-base/Android.bp b/test-base/Android.bp
index b58aa11..97ebba6 100644
--- a/test-base/Android.bp
+++ b/test-base/Android.bp
@@ -55,6 +55,7 @@
hiddenapi_additional_annotations: [
"android.test.base-hiddenapi-annotations",
],
+ dist_group: "android",
}
// Build the android.test.base_static library
diff --git a/test-mock/Android.bp b/test-mock/Android.bp
index 107292c..460a26d 100644
--- a/test-mock/Android.bp
+++ b/test-mock/Android.bp
@@ -48,6 +48,7 @@
],
compile_dex: true,
default_to_stubs: true,
+ dist_group: "android",
}
// Make the current.txt available for use by the cts/tests/signature tests.
diff --git a/test-runner/Android.bp b/test-runner/Android.bp
index c380ae3..0f56bb3 100644
--- a/test-runner/Android.bp
+++ b/test-runner/Android.bp
@@ -52,6 +52,7 @@
compile_dex: true,
default_to_stubs: true,
+ dist_group: "android",
}
// Build the android.test.runner-minus-junit library
diff --git a/tools/aapt2/SdkConstants.cpp b/tools/aapt2/SdkConstants.cpp
index e8873bf..7546e41 100644
--- a/tools/aapt2/SdkConstants.cpp
+++ b/tools/aapt2/SdkConstants.cpp
@@ -27,7 +27,7 @@
static ApiVersion sDevelopmentSdkLevel = 10000;
static const auto sDevelopmentSdkCodeNames = std::unordered_set<StringPiece>({
- "Q", "R", "S"
+ "Q", "R", "S", "T"
});
static const std::vector<std::pair<uint16_t, ApiVersion>> sAttrIdMap = {